From b6e3fc970bf4bae1b63532731670dd650f5ef0e0 Mon Sep 17 00:00:00 2001 From: kemonine Date: Wed, 8 Jul 2020 21:39:32 +0000 Subject: [PATCH 001/250] Initial docker file creation --- Dockerfile | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a177288 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM node:latest + +COPY . /opt/fipamo +WORKDIR /opt/fipamo + +RUN npm install pm2 -g \ + && npm install . + +EXPOSE 2314 + +VOLUME /opt/fipamo/public +VOLUME /opt/fipamo/content +VOLUME /opt/fipamo/site +VOLUME /opt/fipamo/config.json +VOLUME /opt/fipamo/site-settings.json + +ENTRYPOINT ["/usr/local/bin/npm"] +CMD ["start", "--", "--no-daemon"] -- 2.25.1 From 575fea388bedcd52976054dc8b5ffce8713c25f1 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 14 Jul 2020 13:39:51 -0700 Subject: [PATCH 002/250] tweaked init form style, redirects to login when set up complete --- brain/views/init.pug | 16 ++++++++-------- src/com/Base.js | 4 ++-- src/styles/main/_forms.styl | 4 ++++ src/styles/main/_index.styl | 16 +++++++++++++--- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/brain/views/init.pug b/brain/views/init.pug index 97441d5..9dd7189 100644 --- a/brain/views/init.pug +++ b/brain/views/init.pug @@ -3,29 +3,29 @@ block main-content #dash-index #dash-index-wrapper .dash-init#dash-init - h1 HI! Let's get you set up, champ. - h2 Just a few questions to get started br form#init-form + h1 What up. + p Just fill these in and it'll get you started. label What's your handle? br - input(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") + input.large(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") br label Let's get that email br - input(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") + input.large(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") br label Let's get a password br - input(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") + input.large(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") br label And let's confirm that password br - input(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") + input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") br label And finally, a title br - input(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") + input.large(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") br - button#init-blog(data-action='blog-init' type='submit') LETSGO + button#init-blog(data-action='blog-init' type='submit') SET IT UP diff --git a/src/com/Base.js b/src/com/Base.js index e938466..312e208 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -68,8 +68,8 @@ export default class Base { } else { notify.alert(response.message, true); setTimeout(() => { - //window.location = '/@/dashboard'; - }, 500); + window.location = '/@/dashboard'; + }, 700); } }) .catch(err => { diff --git a/src/styles/main/_forms.styl b/src/styles/main/_forms.styl index 0505c2d..3f60c8e 100644 --- a/src/styles/main/_forms.styl +++ b/src/styles/main/_forms.styl @@ -25,6 +25,10 @@ button, input[type=submit] cursor pointer border 0 +input.large + font-size 1.4em + padding 10px + select font 1em $monoType border 1px solid $secondary diff --git a/src/styles/main/_index.styl b/src/styles/main/_index.styl index 83d85b3..e3d6543 100644 --- a/src/styles/main/_index.styl +++ b/src/styles/main/_index.styl @@ -24,12 +24,22 @@ form background $white - padding 10px - input[type=email], input[type=password], input[type=text] + padding 15px + h1 + color $primary + p + color $primary - 60% + border-top 1px solid $primary + border-bottom 1px solid $primary + padding 10px 0 10px 0 + input.large[type=email], input[type=password], input[type=text] margin-bottom 15px + margin-top 5px button height 30px - width 100px + width 120px + margin 0 auto + display block #dash-login width 100% -- 2.25.1 From ad09a61ab7d93067575888c21eb0c71f8c790ce4 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 20 Jul 2020 13:02:47 -0700 Subject: [PATCH 003/250] added directory check to init when making index md file --- brain/api/v1/auth.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/brain/api/v1/auth.js b/brain/api/v1/auth.js index b7a9c25..91888cb 100644 --- a/brain/api/v1/auth.js +++ b/brain/api/v1/auth.js @@ -206,13 +206,15 @@ router.post('/init', function (req, res) { '---\n' + index.content; - fs.writeFile('content/pages/index.md', init) - .then(() => { - console.log('index file created'); - }) - .catch(err => { - console.log('ERROR', err); - }); + fs.ensureDir('content/pages/').then(() => { + fs.writeFile('content/pages/index.md', init) + .then(() => { + //console.log('index file created'); + }) + .catch(() => { + //console.log('ERROR', err); + }); + }); }); res.json({ -- 2.25.1 From cff38d338ff4780dc722a3669ede4e4fec9a082f Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 20 Jul 2020 13:38:57 -0700 Subject: [PATCH 004/250] merged tag render fix from beta branch --- brain/data/Render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index e49e6c9..951541c 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -188,7 +188,7 @@ export default class Render { //TODO: filter for deleted and unpublished pages if ( - page.metedata.deleted === false && + page.metadata.deleted === false && page.metadata.published === true ) { if (_.includes(page.metadata.tags, tag.tag_name)) { -- 2.25.1 From b6f89e22b8846e22cbbdba42c79e8c7c983a2d25 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 20 Jul 2020 13:51:51 -0700 Subject: [PATCH 005/250] do not add index to recent pages list --- brain/data/Render.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 951541c..1ad557f 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -48,7 +48,11 @@ export default class Render { pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); const page = pages[index]; - if (page.metadata.deleted === false && page.metadata.published === true) { + if ( + page.metadata.deleted === false && + page.metadata.published === true && + page.metadata.layout !== 'index' + ) { if (recent.length < config.global.display_limit) { recent.push({ title: page.metadata.title, -- 2.25.1 From e386322f7e1e7a51d318df7e3573fd0ab33537f3 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 20 Jul 2020 14:28:58 -0700 Subject: [PATCH 006/250] imported tag rendering fix from beta release branch --- brain/data/Render.js | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 1ad557f..2e53947 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -46,23 +46,21 @@ export default class Render { }); for (let index = 0; index < pages.length; index++) { pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); - const page = pages[index]; - if ( - page.metadata.deleted === false && - page.metadata.published === true && - page.metadata.layout !== 'index' - ) { - if (recent.length < config.global.display_limit) { - recent.push({ - title: page.metadata.title, - slug: page.metadata.slug, - feature: page.metadata.feature, - created: moment(page.metadata.created).fromNow(), - path: page.metadata.path - }); - display_count = ++display_count; + if (page.metadata.deleted === false && page.metadata.published === true) { + if (page.metadata.layout != 'index') { + if (recent.length < config.global.display_limit) { + recent.push({ + title: page.metadata.title, + slug: page.metadata.slug, + feature: page.metadata.feature, + created: moment(page.metadata.created).fromNow(), + path: page.metadata.path + }); + display_count = ++display_count; + } } + let writeFile, template; let path = @@ -104,7 +102,6 @@ export default class Render { }); } buffed = new StringUtils().decodeHTML(buffed); - let html = md.render(buffed, { html: true, xhtmlOut: true }); let file = pug.renderFile(template, { title: page.metadata.title, @@ -172,6 +169,7 @@ export default class Render { } }) .catch(err => { + //console.log('ERROR', err); reject(err); }); }); -- 2.25.1 From b970974ab9af7a94aa6cb09ffad139ad000fe124 Mon Sep 17 00:00:00 2001 From: Are0h Date: Tue, 21 Jul 2020 20:50:10 +0200 Subject: [PATCH 007/250] Update 'README.md' --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index d27f668..3ce0631 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,3 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. -## So here's what you need to use Fipamo -You'll need at least `Node 10.16.0` and `PM2` is you want to use Fipamo to serve your html, css and js files. If you want to contribute to the project, you're gonna need `nodemon` for you dev environment. - -Once you have all of that taken care of, run `npm install` and go to `https://yourdomain/@/dashboard` start your set up. Yup. That's it. - -- 2.25.1 From ff76cfbf31455b825e7aa9248168d5838b0496b6 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 21 Jul 2020 11:57:56 -0700 Subject: [PATCH 008/250] added docs links readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3ce0631..6d0a7a8 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,7 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. +Check the (WIP) Docs to get you started. +![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) +![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) +![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) -- 2.25.1 From df246db551fe542161e78cc9935d4931de686b22 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 21 Jul 2020 12:00:37 -0700 Subject: [PATCH 009/250] more readme edits --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6d0a7a8..da82e99 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. -Check the (WIP) Docs to get you started. -![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) -![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) -![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) +##Check the (WIP) Docs to get you started. \n +![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) \n +![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) \n +![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) \n -- 2.25.1 From 24aaffa13e449d5936ce80845ad4ef7b7ca77c87 Mon Sep 17 00:00:00 2001 From: Are0h Date: Tue, 21 Jul 2020 21:02:46 +0200 Subject: [PATCH 010/250] Update 'README.md' --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index da82e99..b9760a3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. -##Check the (WIP) Docs to get you started. \n +##Check the (WIP) Docs to get you started.
![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) \n ![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) \n ![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) \n -- 2.25.1 From ffb7fca50a7d5eb300d759a694a623ca315e489e Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 21 Jul 2020 12:04:01 -0700 Subject: [PATCH 011/250] added line breaks to readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b9760a3..7f18b3f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. -##Check the (WIP) Docs to get you started.
-![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) \n -![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) \n -![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) \n +## Check the (WIP) Docs to get you started.
+![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start)
+![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install)
+![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
-- 2.25.1 From 45e2a7f89177af3015883fb2f9c2561bec1a5836 Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 22 Jul 2020 13:24:26 -0700 Subject: [PATCH 012/250] imported index template edit from beta branch --- site/init/index-template.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/site/init/index-template.md b/site/init/index-template.md index 0da8a99..6e23de4 100644 --- a/site/init/index-template.md +++ b/site/init/index-template.md @@ -17,8 +17,12 @@ slug: index --- # F**k Yes -You're up and running here are a few notes to get you started. +If you're seeing this, you're up and running. NICE WORK! -One more layout check. +From here, feel free to start dropping pages to your heart's content. -This page should stay on the root of pages +For some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) + +All good? Feel free to edit this page to whatever you want! + +YOU'RE THE CAPTAIN NOW. -- 2.25.1 From 2bdaf7008864605defd7637e9020f246a5daecba Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 23 Jul 2020 13:14:21 -0700 Subject: [PATCH 013/250] added basic reindexing method for dates to Utils --- brain/data/Utils.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/brain/data/Utils.js b/brain/data/Utils.js index 498ff20..e58ee6e 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -94,6 +94,9 @@ export default class Utils { } render.publishArchive(archive); } + reindexPages(pages) { + //let byDate = _.sortBy(pages, ['created']); + } moveAssets() { settings .load(SETTINGS_FILE) -- 2.25.1 From 2ba21b0b2e4e6b8b7ea597c2971faec6f6790a6b Mon Sep 17 00:00:00 2001 From: Are0h Date: Thu, 23 Jul 2020 23:15:03 +0200 Subject: [PATCH 014/250] updated readme to fix links --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7f18b3f..be8ea43 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. ## Check the (WIP) Docs to get you started.
-![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start)
-![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install)
-![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
+![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) + +![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) + +![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) -- 2.25.1 From fcc973869623c54aa9ce0e6a13a76d9d44ceb771 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 23 Jul 2020 15:12:39 -0700 Subject: [PATCH 015/250] fixed readme links --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index be8ea43..a151d38 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. ## Check the (WIP) Docs to get you started.
-![Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) - -![Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) - -![Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) +[Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) +[Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) +[Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) -- 2.25.1 From f6b0207c3d6c5dd0b11492e921ad9197b853c66a Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 23 Jul 2020 15:13:39 -0700 Subject: [PATCH 016/250] got damn line breaks --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a151d38..57dd11c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,6 @@ The Fipamo project was born from a need for a simple, easy to use no data blog p Because nobody has time for all that. ## Check the (WIP) Docs to get you started.
-[Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start) -[Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install) -[Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) +[Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start)
+[Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install)
+[Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
-- 2.25.1 From f32a2ab9bb4e6ff397f963eedf5115b7b9eb021f Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 3 Aug 2020 12:53:25 -0700 Subject: [PATCH 017/250] site port now configurable, removed kit from frame, fixed nav sort --- brain/data/Settings.js | 1 + brain/views/frame.pug | 2 +- init.js | 3 +- package-lock.json | 53 ++------------------------------ package.json | 10 +++--- site/init/settings-template.json | 3 +- src/com/controllers/NavIndex.js | 1 + 7 files changed, 14 insertions(+), 59 deletions(-) diff --git a/brain/data/Settings.js b/brain/data/Settings.js index a38e608..1325320 100644 --- a/brain/data/Settings.js +++ b/brain/data/Settings.js @@ -21,6 +21,7 @@ export default class Settings { let payload = req.body; //so payload matches loaded config payload.global.display_limit = result.settings.global.display_limit; + payload.global.port = result.settings.global.port; payload.global.last_backup = result.settings.global.last_backup; let user = req.session.user; let found = _.find(result.folks, { id: user.id }); diff --git a/brain/views/frame.pug b/brain/views/frame.pug index de0b9a2..65f715b 100644 --- a/brain/views/frame.pug +++ b/brain/views/frame.pug @@ -29,7 +29,7 @@ html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") -if(status) include partials/dash-nav block main-content - script(src='/assets/scripts/dashkit.min.js' type="text/javascript") + //script(src='/assets/scripts/dashkit.min.js' type="text/javascript") script(src='/assets/scripts/dash.min.js' type="text/javascript") diff --git a/init.js b/init.js index 871dc78..e040ec7 100644 --- a/init.js +++ b/init.js @@ -7,12 +7,13 @@ var app = require('./brain/app'); var debug = require('debug')('fipamo:server'); var http = require('http'); +var config = require('./site/settings.json'); /** * Get port from environment and store in Express. */ -var port = normalizePort(process.env.PORT || '2314'); +var port = normalizePort(process.env.PORT || config.global.port); app.set('port', port); /** diff --git a/package-lock.json b/package-lock.json index 46aa195..b584eab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2522,11 +2522,6 @@ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" }, - "browser-split": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz", - "integrity": "sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E=" - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -2883,14 +2878,6 @@ "safe-buffer": "^5.0.1" } }, - "class-list": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz", - "integrity": "sha1-m5dFGSxBebXaCg12M2WOPHDXlss=", - "requires": { - "indexof": "0.0.1" - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -5241,15 +5228,6 @@ } } }, - "hyperscript": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-1.0.7.tgz", - "integrity": "sha1-2I7TxRk0xtb6NbKr/XwA8QCCD2U=", - "requires": { - "browser-split": "0.0.0", - "class-list": "~0.1.0" - } - }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -5299,11 +5277,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inflection": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", @@ -5635,11 +5608,6 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "jquery-browserify": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jquery-browserify/-/jquery-browserify-1.8.1.tgz", - "integrity": "sha1-DeqddBpPQRWuGYDEUxsiUCmRoBU=" - }, "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", @@ -5897,9 +5865,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.clone": { "version": "4.5.0", @@ -6715,11 +6683,6 @@ "has": "^1.0.3" } }, - "observable": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/observable/-/observable-1.3.1.tgz", - "integrity": "sha1-PSogOxQw2vak1tNvI2zBPm7Vu04=" - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -8760,16 +8723,6 @@ "socks": "~2.2.0" } }, - "sortable": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sortable/-/sortable-2.0.0.tgz", - "integrity": "sha1-NLNUK0KQTFm4RU9VFIoPT2AYaUM=", - "requires": { - "hyperscript": "~1.0.1", - "jquery-browserify": "~1.8.1", - "observable": "~1.3.1" - } - }, "sortablejs": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", diff --git a/package.json b/package.json index 6e53b21..bb3f193 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "fipamo", - "version": "0.0.1", + "name": "fipamo-development", + "version": "1.1.0", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", @@ -11,8 +11,7 @@ "dev": "nodemon -r esm init.js --ignore node_modules/ -e js", "debug": "nodemon inspect -r esm init.js --ignore node_modules/ -e js", "prettier-watch": "npx onchange '**/*.js' -- npx prettier --write {{changed}}", - "watch": "stylus -w -o public/assets/css src/styles/dash.styl & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts", - "build-back-kit": "uglifyjs src/libraries/highlight.pack.js node_modules/sortablejs/Sortable.min.js node_modules/scramble-text/dist/ScrambleText.min.js node_modules/reframe.js/dist/reframe.min.js -c -o public/assets/scripts/dashkit.min.js" + "watch": "stylus -w -o public/assets/css src/styles/dash.styl & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" }, "engines": { "node": ">=10.16.0" @@ -33,7 +32,7 @@ "highlight.js": "^9.18.1", "jsdom": "^12.2.0", "jsonwebtoken": "^8.5.1", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mailgun-js": "^0.18.0", "markdown-it": "^8.4.1", "markdown-yaml-metadata-parser": "^2.0.5", @@ -48,7 +47,6 @@ "request": "^2.88.2", "sanitize-html": "^1.26.0", "serve-favicon": "latest", - "sortable": "^2.0.0", "sortablejs": "^1.10.2", "tiny-date-picker": "^3.2.8", "uuid": "^3.4.0" diff --git a/site/init/settings-template.json b/site/init/settings-template.json index af7afdb..37dfb1b 100644 --- a/site/init/settings-template.json +++ b/site/init/settings-template.json @@ -8,7 +8,8 @@ "renderOnSave": "false", "theme": "default-light", "display_limit": 5, - "last_backup": null + "last_backup": null, + "port": 2314 }, "library_stats": { "current_index": 1 diff --git a/src/com/controllers/NavIndex.js b/src/com/controllers/NavIndex.js index 7c82d74..8135dda 100644 --- a/src/com/controllers/NavIndex.js +++ b/src/com/controllers/NavIndex.js @@ -2,6 +2,7 @@ import FipamoAdminAPI from '../../libraries/FipamoAdminAPI'; import NavActions from '../actions/NavActions'; import * as DataEvent from '../events/DataEvent'; import Notifications from '../ui/Notifications'; +import Sortable from 'sortablejs'; const notify = new Notifications(); const admin = new FipamoAdminAPI(); export default class NavIndex { -- 2.25.1 From 287b227d2c54cbc908c865aa864ea814183128a2 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 4 Aug 2020 12:20:25 -0700 Subject: [PATCH 018/250] added pm2 to dependancy list so it does not need to be installed globally --- package-lock.json | 920 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +- 2 files changed, 915 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b584eab..9decaaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "fipamo", - "version": "0.0.1", + "name": "fipamo-development", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1133,6 +1133,41 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@opencensus/core": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", + "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + } + }, + "@opencensus/propagation-b3": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", + "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", + "requires": { + "@opencensus/core": "^0.0.8", + "uuid": "^3.2.1" + }, + "dependencies": { + "@opencensus/core": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", + "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", + "requires": { + "continuation-local-storage": "^3.2.1", + "log-driver": "^1.2.7", + "semver": "^5.5.0", + "shimmer": "^1.2.0", + "uuid": "^3.2.1" + } + } + } + }, "@parcel/fs": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", @@ -1200,6 +1235,275 @@ "physical-cpu-count": "^2.0.0" } }, + "@pm2/agent": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.4.tgz", + "integrity": "sha512-cZLwaoLa45FRuetKCcoI3kHnnQ7VMLpZnmVom04MoK0cpY/RxcSarkCHSCu9V+pdARwxx96QrWdrtAJdw97dng==", + "requires": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.1.1", + "eventemitter2": "~5.0.1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "^3.2.0", + "pm2-axon-rpc": "^0.5.0", + "proxy-agent": "~3.1.1", + "semver": "~7.2.0", + "ws": "~7.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "semver": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", + "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "ws": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", + "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "@pm2/agent-node": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@pm2/agent-node/-/agent-node-1.1.10.tgz", + "integrity": "sha512-xRcrk7OEwhS3d/227/kKGvxgmbIi6Yyp27FzGlFNermEKhgddmFaRnmd7GRLIsBM/KB28NrwflBZulzk/mma6g==", + "requires": { + "debug": "^3.1.0", + "eventemitter2": "^5.0.1", + "proxy-agent": "^3.0.3", + "ws": "^6.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@pm2/io": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.5.tgz", + "integrity": "sha512-CY/a6Nw72vrlp/FPx38l4jfEHp4gNEbo8i+WlSJ2cnWO6VE6CKmnC1zb4yQLvdP8f3EuzzoOBZVq6aGN20M82Q==", + "requires": { + "@opencensus/core": "0.0.9", + "@opencensus/propagation-b3": "0.0.8", + "@pm2/agent-node": "^1.1.10", + "async": "~2.6.1", + "debug": "4.1.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "6.3.0", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "dependencies": { + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@pm2/js-api": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.0.tgz", + "integrity": "sha512-ZgM/0yI8s3FRyxP01wI5UzDrVTecS/SmD98z25C9fsHo2Wz3JB1DtS4uIBlPopq2/R5HIQynTUJPDNn4qo1d/Q==", + "requires": { + "async": "^2.6.3", + "axios": "^0.19.0", + "debug": "~3.2.6", + "eventemitter2": "^6.3.1", + "ws": "^7.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "eventemitter2": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", + "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" + } + } + }, + "@pm2/pm2-version-check": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.3.tgz", + "integrity": "sha512-SBuYsh+o35knItbRW97vl5/5nEc5c5DYP7PxjyPLOfmm9bMaDsVeATXjXMBy6+KLlyrYWHZxGbfXe003NnHClg==", + "requires": { + "debug": "^4.1.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -1296,12 +1600,30 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" + }, + "amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", + "requires": { + "amp": "0.3.1" + } + }, "animejs": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.0.tgz", "integrity": "sha512-zhtGl5cS0G2f5DfciMO8uwWpnx06nfFnHlXYYXHBazHep1Lyd6kEtBQP+9hpYKE0dBZjIigHp9VpMO95ZfXQJQ==", "dev": true }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1524,6 +1846,15 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, + "async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "requires": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + } + }, "async-series": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/async-series/-/async-series-0.0.1.tgz", @@ -1555,6 +1886,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2349,6 +2688,11 @@ "file-uri-to-path": "1.0.0" } }, + "blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2843,6 +3187,11 @@ "is-regex": "^1.0.3" } }, + "charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -2916,6 +3265,60 @@ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", "dev": true }, + "cli-tableau": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "requires": { + "chalk": "3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -3122,6 +3525,15 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "requires": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -3254,6 +3666,14 @@ "sha.js": "^2.4.8" } }, + "cron": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", + "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", + "requires": { + "moment-timezone": "^0.5.x" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3607,6 +4027,11 @@ "whatwg-url": "^7.0.0" } }, + "dayjs": { + "version": "1.8.32", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.32.tgz", + "integrity": "sha512-V91aTRu5btP+uzGHaaOfodckEfBWhmi9foRP7cauAO1PTB8+tZ9o0Jec7q6TIIRY1N4q1IfiKsZunkB/AEWqMQ==" + }, "deasync": { "version": "0.1.20", "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", @@ -3972,6 +4397,14 @@ } } }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "requires": { + "shimmer": "^1.2.0" + } + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -3983,6 +4416,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "enquirer": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", + "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", + "requires": { + "ansi-colors": "^3.2.1" + } + }, "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -4053,6 +4494,11 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-regexp": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz", + "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -4210,6 +4656,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" + }, "events": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", @@ -4555,6 +5006,11 @@ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" + }, "file-js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", @@ -4649,6 +5105,24 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -5453,8 +5927,7 @@ "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 + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -5468,7 +5941,6 @@ "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" } @@ -5805,6 +6277,11 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -5942,6 +6419,11 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -6271,11 +6753,24 @@ "minimist": "^1.2.5" } }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + }, "moment": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" }, + "moment-timezone": { + "version": "0.5.31", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", + "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", + "requires": { + "moment": ">= 2.9.0" + } + }, "morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -6323,6 +6818,11 @@ "xtend": "^4.0.0" } }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", @@ -6520,8 +7020,7 @@ "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 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-url": { "version": "3.3.0", @@ -6563,6 +7062,22 @@ "set-blocking": "~2.0.0" } }, + "nssocket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=", + "requires": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "dependencies": { + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + } + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -7089,6 +7604,19 @@ "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pidusage": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz", + "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==", + "requires": { + "safe-buffer": "^5.1.2" + } + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -7117,6 +7645,303 @@ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" }, + "pm2": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.4.0.tgz", + "integrity": "sha512-uEY3ShP5O5d7VBx4r0QhVjWAgjyhazenIl0fhxyVr+aDMWSa3hpD5RpvkGJMiX8z3nDrBBWCSU7TYth1sdbJkA==", + "requires": { + "@pm2/agent": "~1.0.2", + "@pm2/io": "~4.3.5", + "@pm2/js-api": "~0.6.0", + "@pm2/pm2-version-check": "^1.0.3", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.3.0", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "cron": "1.8.2", + "dayjs": "~1.8.25", + "debug": "4.1.1", + "enquirer": "2.3.5", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "2.0.18", + "pm2-axon": "3.3.0", + "pm2-axon-rpc": "0.5.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "promptly": "^2", + "ps-list": "6.3.0", + "semver": "^7.2", + "source-map-support": "0.5.16", + "sprintf-js": "1.1.2", + "systeminformation": "^4.23.3", + "vizion": "0.2.13", + "yamljs": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "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==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "pm2-axon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-3.3.0.tgz", + "integrity": "sha512-dAFlFYRuFbFjX7oAk41zT+dx86EuaFX/TgOp5QpUKRKwxb946IM6ydnoH5sSTkdI2pHSVZ+3Am8n/l0ocr7jdQ==", + "requires": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^3.0", + "escape-regexp": "0.0.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pm2-axon-rpc": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.5.1.tgz", + "integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==", + "requires": { + "debug": "^3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pm2-deploy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "requires": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + } + }, + "pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=", + "requires": { + "charm": "~0.1.1" + } + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -7712,6 +8537,14 @@ "with-callback": "^1.0.2" } }, + "promptly": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=", + "requires": { + "read": "^1.0.4" + } + }, "proper-lockfile": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", @@ -7767,6 +8600,11 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" }, + "ps-list": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz", + "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -8018,6 +8856,14 @@ "strip-json-comments": "~2.0.1" } }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "requires": { + "mute-stream": "~0.0.4" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -8235,6 +9081,16 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-in-the-middle": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz", + "integrity": "sha512-p/ICV8uMlqC4tjOYabLMxAWCIKa0YUQgZZ6KDM0xgXJNgdGQ1WmL2A07TwmrZw+wi6ITUFKzH5v3n+ENEyXVkA==", + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.12.0" + } + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -8312,6 +9168,11 @@ "inherits": "^2.0.1" } }, + "run-series": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz", + "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -8550,6 +9411,11 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -9121,6 +9987,12 @@ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" }, + "systeminformation": { + "version": "4.26.10", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.26.10.tgz", + "integrity": "sha512-bO4FIzrjESAfh4KHwkUJym3jvKtJ4oJ2PG0BBQGBmKa0pF2oanpkB7CF4ZsSX7vfp3+GKaLzioVwpV/3Tyk+lQ==", + "optional": true + }, "tar": { "version": "4.4.13", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", @@ -9311,6 +10183,11 @@ } } }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -9330,6 +10207,11 @@ "safe-buffer": "^5.0.1" } }, + "tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=" + }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -9762,6 +10644,21 @@ "extsprintf": "^1.2.0" } }, + "vizion": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/vizion/-/vizion-0.2.13.tgz", + "integrity": "sha1-ExTN7is0EW+fWxJIU2+V2/zW718=", + "requires": { + "async": "1.5" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + } + } + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", @@ -9978,6 +10875,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, + "yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "requires": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + } + }, "yargs": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", diff --git a/package.json b/package.json index bb3f193..0ac3475 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "multer": "latest", "nodemailer": "^6.4.8", "nodemailer-mailgun-transport": "^1.4.0", + "pm2": "^4.4.0", "pug": "^3.0.0", "reframe.js": "^2.2.8", "request": "^2.88.2", @@ -63,4 +64,4 @@ "scramble-text": "0.0.8", "stylus": "^0.54.7" } -} \ No newline at end of file +} -- 2.25.1 From ef6add4be02a5aeeef4da55806cea56f7a0316af Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 6 Aug 2020 12:15:25 -0700 Subject: [PATCH 019/250] added nodemon to dev dependecies so it doesnt have to installed globally --- package-lock.json | 896 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 897 insertions(+) diff --git a/package-lock.json b/package-lock.json index 9decaaa..baeeb19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1499,6 +1499,21 @@ "debug": "^4.1.1" } }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -1619,6 +1634,49 @@ "integrity": "sha512-zhtGl5cS0G2f5DfciMO8uwWpnx06nfFnHlXYYXHBazHep1Lyd6kEtBQP+9hpYKE0dBZjIigHp9VpMO95ZfXQJQ==", "dev": true }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2805,6 +2863,112 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3105,6 +3269,44 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + } + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -3217,6 +3419,12 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -3250,6 +3458,12 @@ } } }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -3370,6 +3584,15 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3476,6 +3699,37 @@ "typedarray": "^0.0.6" } }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "connect-flash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", @@ -3706,6 +3960,12 @@ "randomfill": "^1.0.3" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, "css": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", @@ -4077,6 +4337,15 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -4104,6 +4373,12 @@ } } }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -4346,6 +4621,12 @@ "readable-stream": "^2.0.2" } }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -4416,6 +4697,15 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "enquirer": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", @@ -4489,6 +4779,12 @@ "es6-promise": "^4.0.3" } }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5280,6 +5576,15 @@ "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-uri": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", @@ -5357,12 +5662,40 @@ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", "dev": true }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -5456,6 +5789,12 @@ } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -5624,6 +5963,12 @@ } } }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -5727,6 +6072,12 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, "ignore-walk": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", @@ -5745,6 +6096,18 @@ "resolve-from": "^3.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -5845,6 +6208,15 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-color-stop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", @@ -5954,6 +6326,22 @@ "html-tags": "^1.0.0" } }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -5980,6 +6368,12 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6058,6 +6452,12 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -6169,6 +6569,12 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -6271,12 +6677,30 @@ "safe-buffer": "^5.0.1" } }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "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 }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, "lazy": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", @@ -6442,6 +6866,12 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", @@ -6675,6 +7105,12 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -6991,6 +7427,140 @@ } } }, + "nodemon": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz", + "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==", + "dev": true, + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^4.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "nopt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", @@ -7306,6 +7876,12 @@ "os-tmpdir": "^1.0.0" } }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -7369,6 +7945,26 @@ "thunkify": "^2.1.2" } }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -8498,6 +9094,12 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "prettier": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", @@ -8615,6 +9217,12 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -8749,11 +9357,30 @@ "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "purgecss": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", @@ -8978,6 +9605,24 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -9117,6 +9762,15 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9229,6 +9883,23 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -10014,6 +10685,12 @@ } } }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, "terser": { "version": "3.17.0", "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", @@ -10106,6 +10783,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -10138,6 +10821,26 @@ "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -10225,6 +10928,12 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", @@ -10239,6 +10948,15 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "uc.micro": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", @@ -10402,6 +11120,26 @@ } } }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "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" + } + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10464,6 +11202,15 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "unit-compare": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", @@ -10534,6 +11281,79 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, + "update-notifier": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -10566,6 +11386,15 @@ } } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -10765,6 +11594,55 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "with": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", @@ -10836,6 +11714,18 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.0.tgz", @@ -10844,6 +11734,12 @@ "async-limiter": "~1.0.0" } }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", diff --git a/package.json b/package.json index 0ac3475..29f4307 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "animejs": "^3.2.0", "babel-preset-env": "^1.7.0", "bulma.styl": "^0.6.11", + "nodemon": "^2.0.4", "parcel": "^1.12.4", "prettier": "^2.0.5", "scramble-text": "0.0.8", -- 2.25.1 From fd97aca57a4a4c643dd82cd05986d542bd6bceeb Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 6 Aug 2020 12:19:14 -0700 Subject: [PATCH 020/250] updated version number --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 29f4307..2df1506 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.1.0", + "version": "1.1.5", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", @@ -65,4 +65,4 @@ "scramble-text": "0.0.8", "stylus": "^0.54.7" } -} +} \ No newline at end of file -- 2.25.1 From c90797433da1a1cb60d8279f87d4e9943dbdb160 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 6 Aug 2020 12:48:09 -0700 Subject: [PATCH 021/250] package json clean up --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index baeeb19..16fcdb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.1.0", + "version": "1.1.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2df1506..9cf0572 100644 --- a/package.json +++ b/package.json @@ -65,4 +65,4 @@ "scramble-text": "0.0.8", "stylus": "^0.54.7" } -} \ No newline at end of file +} -- 2.25.1 From 682bc32a4653496206e19cb9577db977d692211c Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 13 Aug 2020 12:53:51 -0700 Subject: [PATCH 022/250] added back up functionality and ability to download latest back up, latest backup displayed in settings --- brain/api/v1/settings.js | 53 ++++++++++++++++++++++++++++ brain/data/Utils.js | 25 +++++++++++++ brain/routes/dash/settings.js | 2 ++ brain/views/settings.pug | 17 ++++++++- package-lock.json | 5 +++ package.json | 1 + src/com/controllers/SettingsIndex.js | 17 +++++++++ src/com/events/DataEvent.js | 1 + src/libraries/FipamoAdminAPI.js | 22 +++++++++++- src/styles/main/_settings.styl | 4 ++- 10 files changed, 144 insertions(+), 3 deletions(-) diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js index ee31887..825d517 100644 --- a/brain/api/v1/settings.js +++ b/brain/api/v1/settings.js @@ -4,6 +4,8 @@ import Render from '../../data/Render'; import Settings, { SETTINGS_FILE, SETTINGS_FOLKS } from '../../data/Settings'; import Navigation from '../../data/Navigation'; import Book from '../../data/Book'; +import Utils from '../../data/Utils'; +import { util } from 'prettier'; const express = require('express'); const router = express.Router(); const multer = require('multer'); @@ -15,6 +17,7 @@ const render = new Render(); const book = new Book(); const settings = new Settings(); const nav = new Navigation(); +const utils = new Utils(); const uploadPath = './public/assets/images/user/' + moment().format('YYYY') + '/' + moment().format('MM'); @@ -204,6 +207,56 @@ router.post('/add-feature-background', background_upload, (req, res) => { }); } }); + +/*** + CREATE BACK UP +*/ +router.post('/create-backup', (req, res) => { + auth.authCheck(req) + .then(() => { + utils + .createBackup() + .then(() => { + res.json({ + type: DataEvent.API_BACKUP_CREATE, + message: "You're backed up. Hi fives" + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +router.get('/download-backup', (req, res) => { + var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param + var fileName = 'backup.zip'; // The default name the browser will use + + res.download(filePath, fileName); + //Make secure + /* + auth.authCheck(req) + .then(() => { + + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); + */ +}); + module.exports = router; function getBookData() { diff --git a/brain/data/Utils.js b/brain/data/Utils.js index e58ee6e..d70e2cb 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -7,6 +7,7 @@ const render = new Render(); const stringUtils = new StringUtils(); const moment = require('moment'); const fs = require('fs-extra'); +const AdmZip = require('adm-zip'); export default class Utils { constructor() {} @@ -130,4 +131,28 @@ export default class Utils { //console.log('ERROR', err); }); } + createBackup() { + //let self = this; + var response; + return new Promise(resolve => { + var zip = new AdmZip(); + zip.addLocalFolder('public', 'public/'); + zip.addLocalFolder('content/pages', 'pages/'); + zip.addLocalFile('site/folks.json', 'settings/'); + zip.addLocalFile('site/settings.json', 'settings/'); + zip.addLocalFile('site/tags.json', 'settings/'); + zip.writeZip('public/backup.zip'); + fs.readJSON('site/settings.json').then(settings => { + settings.global.last_backup = moment(Date.now()).format(); + fs.writeJSON('site/settings.json', settings); + }); + + response = { + type: '', + message: 'BACKUP CREATED' + }; + + resolve(response); + }); + } } diff --git a/brain/routes/dash/settings.js b/brain/routes/dash/settings.js index e4fe38c..afcbd58 100644 --- a/brain/routes/dash/settings.js +++ b/brain/routes/dash/settings.js @@ -4,6 +4,7 @@ const router = express.Router(); const FileHound = require('filehound'); const fs = require('fs-extra'); const settings = new Settings(); +const moment = require('moment'); var config = []; //-------------------------- // SETTINGS @@ -39,6 +40,7 @@ router.get('/', function (req, res) { status: true, themes: themes, settings: config, + last_backup: moment(config.global.last_backup).fromNow(), member: memberInfo[0] }); } else { diff --git a/brain/views/settings.pug b/brain/views/settings.pug index 69acc7f..7b49fb9 100644 --- a/brain/views/settings.pug +++ b/brain/views/settings.pug @@ -38,7 +38,22 @@ block main-content input(type='text', name='base-url' id='settings-url', placeholder='url', value=settings.global.base_url, autofocus) input(type='text', name='base-title' id='settings-title', placeholder='site title', value=settings.global.title, autofocus) textarea(id="settings-desc" type='text', name='settings_desc' class='settings-dec', placeholder='description stuff', autofocus) - =settings.global.descriptions + =settings.global.descriptions + #member-utils.columns + #util-1.column + label MEMBER UTILS + br + button#create-backup CREATE BACKUP + br + -if(settings.global.last_backup != null) + br + | The last back up was + a(href='/api/v1/settings/download-backup')= last_backup + -else + br + span No back ups. Frowny face. + #util-2.column + SOMETHING #option-settings.columns #theme-settings.column label THEMES diff --git a/package-lock.json b/package-lock.json index 16fcdb2..3702ace 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1590,6 +1590,11 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==" }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" + }, "agent-base": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", diff --git a/package.json b/package.json index 9cf0572..9eb6439 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "node": ">=10.16.0" }, "dependencies": { + "adm-zip": "^0.4.16", "bcrypt": "^5.0.0", "bluebird": "^3.7.2", "body-parser": "latest", diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js index 1e8e7fd..74842a3 100644 --- a/src/com/controllers/SettingsIndex.js +++ b/src/com/controllers/SettingsIndex.js @@ -77,6 +77,10 @@ export default class SettingsIndex { for (i = 0, length = mailBtn.length; i < length; i++) { mailBtn[i].addEventListener('click', e => this.handleMailOptions(e)); } + //handle backup + document + .getElementById('create-backup') + .addEventListener('click', e => this.handleBackup(e)); } //-------------------------- // event handlers @@ -169,4 +173,17 @@ export default class SettingsIndex { notify.alert(err, false); }); } + handleBackup(e) { + e.preventDefault(); + e.stopPropagation(); + let task = { task: 'create_backup' }; + admin + .createBackup(task) + .then(r => { + notify.alert(r.message, true); + }) + .catch(err => { + notify.alert(err, false); + }); + } } diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index 77b1fc0..1b86762 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -27,6 +27,7 @@ export const API_PAGE_WRITE = 'writingItDown'; export const API_PAGE_CREATE = 'writingNewEntry'; export const API_PAGE_DELETE = 'erasingPage'; export const API_SETTINGS_WRITE = 'savingSettings'; +export const API_BACKUP_CREATE = 'createBackup'; export const API_IMAGES_UPLOAD = 'uploadProfileImages'; export const API_RENDER_PAGES = 'renderPages'; export const API_INIT = 'blogInit'; diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index fedcfe4..80f33a4 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -18,6 +18,8 @@ export const API_UPLOAD_AVATAR = '/api/v1/settings/add-avatar'; export const API_UPLOAD_BACKGROUND = '/api/v1/settings/add-feature-background'; export const API_PUBLISH_PAGES = '/api/v1/settings/publish-pages'; export const API_NAV_SYNC = '/api/v1/settings/nav-sync'; +export const API_CREATE_BACKUP = '/api/v1/settings/create-backup'; +export const API_DOWNLOAD_BACKUP = '/api/v1/settings/download-backup'; export const API_SEND_MAIL = '/api/v1/mailer'; import * as DataEvent from '../com/events/DataEvent'; export default class APIUtils { @@ -188,6 +190,23 @@ export default class APIUtils { }); }); } + createBackup(data) { + return new Promise((resolve, reject) => { + this._request( + API_CREATE_BACKUP, + DataEvent.API_BACKUP_CREATE, + REQUEST_TYPE_POST, + CONTENT_TYPE_JSON, + data + ) + .then(result => { + resolve(result); + }) + .catch(err => { + reject(err); + }); + }); + } //-------------------------- // private //-------------------------- @@ -218,7 +237,8 @@ export default class APIUtils { eventType === DataEvent.API_IMAGES_UPLOAD || eventType === DataEvent.API_SETTINGS_WRITE || eventType === DataEvent.API_PAGE_DELETE || - eventType === DataEvent.API_RENDER_PAGES + eventType === DataEvent.API_RENDER_PAGES || + eventType === DataEvent.API_BACKUP_CREATE ) request.setRequestHeader('x-access-token', self.token); diff --git a/src/styles/main/_settings.styl b/src/styles/main/_settings.styl index 28e8481..cefd5e4 100644 --- a/src/styles/main/_settings.styl +++ b/src/styles/main/_settings.styl @@ -58,7 +58,7 @@ width 100% height 45px - #member-settings, #site-settings, #option-settings + #member-settings, #site-settings, #option-settings, #member-utils background $primary padding 5px border-radius 5px 0 5px 0 @@ -66,6 +66,8 @@ label font-family $monoType color $white + span + color $secondary input width 95% -- 2.25.1 From 1fa21322fb22db493e420feedf5f3ffcf5658133 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 14 Aug 2020 12:57:16 -0700 Subject: [PATCH 023/250] cleaned up backups on front end and backend --- brain/api/v1/settings.js | 28 ++++++++++++---------------- brain/views/settings.pug | 10 +++++----- src/com/controllers/SettingsIndex.js | 8 ++++++-- src/com/events/DataEvent.js | 1 + src/libraries/FipamoAdminAPI.js | 20 ++++++++++++-------- src/styles/main/_settings.styl | 6 ++++++ 6 files changed, 42 insertions(+), 31 deletions(-) diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js index 825d517..4e98eb0 100644 --- a/brain/api/v1/settings.js +++ b/brain/api/v1/settings.js @@ -5,7 +5,6 @@ import Settings, { SETTINGS_FILE, SETTINGS_FOLKS } from '../../data/Settings'; import Navigation from '../../data/Navigation'; import Book from '../../data/Book'; import Utils from '../../data/Utils'; -import { util } from 'prettier'; const express = require('express'); const router = express.Router(); const multer = require('multer'); @@ -54,6 +53,7 @@ router.post('/sync', (req, res) => { .catch(err => { res.json({ type: DataEvent.REQUEST_LAME, + error: err.message, message: "Uh oh. Settings didn't take, sport" }); }); @@ -238,23 +238,19 @@ router.post('/create-backup', (req, res) => { }); router.get('/download-backup', (req, res) => { - var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param - var fileName = 'backup.zip'; // The default name the browser will use + if (req.session.user) { + var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param + var fileName = 'backup.zip'; // The default name the browser will use - res.download(filePath, fileName); - //Make secure - /* - auth.authCheck(req) - .then(() => { - - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); + res.download(filePath, fileName); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" }); - */ + } + + //Move to route? }); module.exports = router; diff --git a/brain/views/settings.pug b/brain/views/settings.pug index 7b49fb9..0d8286c 100644 --- a/brain/views/settings.pug +++ b/brain/views/settings.pug @@ -41,19 +41,19 @@ block main-content =settings.global.descriptions #member-utils.columns #util-1.column - label MEMBER UTILS + label BACKUP TOOLS br button#create-backup CREATE BACKUP br -if(settings.global.last_backup != null) - br - | The last back up was - a(href='/api/v1/settings/download-backup')= last_backup + .backup-meta + | The last back up was created + a(href='/api/v1/settings/download-backup')= last_backup -else br span No back ups. Frowny face. #util-2.column - SOMETHING + label MAINTENANCE #option-settings.columns #theme-settings.column label THEMES diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js index 74842a3..a2afefd 100644 --- a/src/com/controllers/SettingsIndex.js +++ b/src/com/controllers/SettingsIndex.js @@ -81,6 +81,7 @@ export default class SettingsIndex { document .getElementById('create-backup') .addEventListener('click', e => this.handleBackup(e)); + document.getElementById('get-backup').addEventListener('click', e => this.handleBackup(e)); } //-------------------------- // event handlers @@ -176,9 +177,12 @@ export default class SettingsIndex { handleBackup(e) { e.preventDefault(); e.stopPropagation(); - let task = { task: 'create_backup' }; + let task; + e.target.id === 'create-backup' + ? (task = { task: 'create_backup' }) + : (task = { task: 'get_backup' }); admin - .createBackup(task) + .handleBackup(task) .then(r => { notify.alert(r.message, true); }) diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index 1b86762..2fe83f9 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -28,6 +28,7 @@ export const API_PAGE_CREATE = 'writingNewEntry'; export const API_PAGE_DELETE = 'erasingPage'; export const API_SETTINGS_WRITE = 'savingSettings'; export const API_BACKUP_CREATE = 'createBackup'; +export const API_BACKUP_DOWNLOAD = 'downloadBackup'; export const API_IMAGES_UPLOAD = 'uploadProfileImages'; export const API_RENDER_PAGES = 'renderPages'; export const API_INIT = 'blogInit'; diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 80f33a4..1745e7c 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -190,15 +190,19 @@ export default class APIUtils { }); }); } - createBackup(data) { + handleBackup(data) { return new Promise((resolve, reject) => { - this._request( - API_CREATE_BACKUP, - DataEvent.API_BACKUP_CREATE, - REQUEST_TYPE_POST, - CONTENT_TYPE_JSON, - data - ) + var url, event, method; + if (data.task === 'create_backup') { + url = API_CREATE_BACKUP; + event = DataEvent.API_BACKUP_CREATE; + method = REQUEST_TYPE_POST; + } else { + url = API_DOWNLOAD_BACKUP; + event = DataEvent.API_BACKUP_DOWNLOAD; + method = REQUEST_TYPE_GET; + } + this._request(url, event, method, CONTENT_TYPE_JSON, data) .then(result => { resolve(result); }) diff --git a/src/styles/main/_settings.styl b/src/styles/main/_settings.styl index cefd5e4..a862ad7 100644 --- a/src/styles/main/_settings.styl +++ b/src/styles/main/_settings.styl @@ -74,6 +74,12 @@ margin 0 5px 10px 0 height 30px padding 10px + .backup-meta + background $primary - 60% + color $white + padding 8px + border-radius 3px + margin 5px 0 0 0 width 100% margin 20px auto -- 2.25.1 From 11b93e34515135cb0c9ee6d80590adeb9e508e9c Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 17 Aug 2020 15:05:10 -0700 Subject: [PATCH 024/250] back up method restores public blog images, site settings and markdown pages --- brain/api/v1/settings.js | 47 ---------------------------- brain/app.js | 2 ++ brain/data/Utils.js | 43 +++++++++++++++++++++++-- brain/views/settings.pug | 5 ++- src/com/controllers/SettingsIndex.js | 17 ++++++---- src/com/events/DataEvent.js | 1 + src/libraries/FipamoAdminAPI.js | 35 +++++++++++++++------ src/styles/main/_settings.styl | 3 ++ 8 files changed, 86 insertions(+), 67 deletions(-) diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js index 4e98eb0..080c726 100644 --- a/brain/api/v1/settings.js +++ b/brain/api/v1/settings.js @@ -4,7 +4,6 @@ import Render from '../../data/Render'; import Settings, { SETTINGS_FILE, SETTINGS_FOLKS } from '../../data/Settings'; import Navigation from '../../data/Navigation'; import Book from '../../data/Book'; -import Utils from '../../data/Utils'; const express = require('express'); const router = express.Router(); const multer = require('multer'); @@ -16,7 +15,6 @@ const render = new Render(); const book = new Book(); const settings = new Settings(); const nav = new Navigation(); -const utils = new Utils(); const uploadPath = './public/assets/images/user/' + moment().format('YYYY') + '/' + moment().format('MM'); @@ -208,51 +206,6 @@ router.post('/add-feature-background', background_upload, (req, res) => { } }); -/*** - CREATE BACK UP -*/ -router.post('/create-backup', (req, res) => { - auth.authCheck(req) - .then(() => { - utils - .createBackup() - .then(() => { - res.json({ - type: DataEvent.API_BACKUP_CREATE, - message: "You're backed up. Hi fives" - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -router.get('/download-backup', (req, res) => { - if (req.session.user) { - var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param - var fileName = 'backup.zip'; // The default name the browser will use - - res.download(filePath, fileName); - } else { - res.json({ - type: DataEvent.REQUEST_LAME, - message: "You're not logged in, champ" - }); - } - - //Move to route? -}); - module.exports = router; function getBookData() { diff --git a/brain/app.js b/brain/app.js index b4260b1..0d56a48 100644 --- a/brain/app.js +++ b/brain/app.js @@ -51,12 +51,14 @@ var pages = require('./api/v1/pages'); var setting = require('./api/v1/settings'); var mailer = require('./api/v1/mailer'); var auth = require('./api/v1/auth'); +var backup = require('./api/v1/backup'); // API PATHS app.use('/api/v1/page', pages); app.use('/api/v1/settings', setting); app.use('/api/v1/auth', auth); app.use('/api/v1/mailer', mailer); +app.use('/api/v1/backup', backup); // PAGES app.use('/@/dashboard', dash); app.use('/@/dashboard/page', page); diff --git a/brain/data/Utils.js b/brain/data/Utils.js index d70e2cb..962ea6f 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -136,12 +136,12 @@ export default class Utils { var response; return new Promise(resolve => { var zip = new AdmZip(); - zip.addLocalFolder('public', 'public/'); - zip.addLocalFolder('content/pages', 'pages/'); + zip.addLocalFolder('public/assets/images/blog', 'public/assets/images/blog'); + zip.addLocalFolder('content/pages', 'content/pages/'); zip.addLocalFile('site/folks.json', 'settings/'); zip.addLocalFile('site/settings.json', 'settings/'); zip.addLocalFile('site/tags.json', 'settings/'); - zip.writeZip('public/backup.zip'); + zip.writeZip('content/backup.zip'); fs.readJSON('site/settings.json').then(settings => { settings.global.last_backup = moment(Date.now()).format(); fs.writeJSON('site/settings.json', settings); @@ -155,4 +155,41 @@ export default class Utils { resolve(response); }); } + + restoreBackup(file) { + //var response; + return new Promise((resolve, reject) => { + var zip = new AdmZip(file.buffer); + zip.extractEntryTo('settings/settings.json', 'site', false, true); + zip.extractEntryTo('settings/folks.json', 'site', false, true); + zip.extractEntryTo('settings/tags.json', 'site', false, true); + zip.getEntries().forEach(function (entry) { + var entryName = entry.entryName; + var list = entryName.split('/'); + if (list[0] === 'public') { + if (list[6]) { + zip.extractEntryTo( + entryName, + 'public/assets/images/blog/' + list[4] + '/' + list[5], + false, + true + ); + } + } + if (list[0] === 'content') { + if (list[4]) { + zip.extractEntryTo( + entryName, + 'content/pages/' + list[2] + '/' + list[3], + false, + true + ); + } + zip.extractEntryTo('content/pages/index.md', 'content/pages', false, true); + } + }); + + resolve(); + }); + } } diff --git a/brain/views/settings.pug b/brain/views/settings.pug index 0d8286c..9b7c3e6 100644 --- a/brain/views/settings.pug +++ b/brain/views/settings.pug @@ -48,10 +48,13 @@ block main-content -if(settings.global.last_backup != null) .backup-meta | The last back up was created - a(href='/api/v1/settings/download-backup')= last_backup + a(href='/api/v1/backup/download')= last_backup + br -else br span No back ups. Frowny face. + button#restore-backup(for='backup-upload') RESTORE BACKUP + input(id="backup-upload" type="file" name="backup-upload") #util-2.column label MAINTENANCE #option-settings.columns diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js index a2afefd..93016f4 100644 --- a/src/com/controllers/SettingsIndex.js +++ b/src/com/controllers/SettingsIndex.js @@ -42,6 +42,9 @@ export default class SettingsIndex { document.getElementById('background').addEventListener('click', () => { document.getElementById('background-upload').click(); }); + document.getElementById('restore-backup').addEventListener('click', () => { + document.getElementById('backup-upload').click(); + }); document.getElementById('avatar-upload').addEventListener( 'change', e => { @@ -56,6 +59,13 @@ export default class SettingsIndex { }, false ); + document.getElementById('backup-upload').addEventListener( + 'change', + e => { + self.handleBackup(e); + }, + false + ); //handle privacy toggle //document //.getElementById('privacy-toggle') @@ -81,7 +91,6 @@ export default class SettingsIndex { document .getElementById('create-backup') .addEventListener('click', e => this.handleBackup(e)); - document.getElementById('get-backup').addEventListener('click', e => this.handleBackup(e)); } //-------------------------- // event handlers @@ -177,12 +186,8 @@ export default class SettingsIndex { handleBackup(e) { e.preventDefault(); e.stopPropagation(); - let task; - e.target.id === 'create-backup' - ? (task = { task: 'create_backup' }) - : (task = { task: 'get_backup' }); admin - .handleBackup(task) + .handleBackup(e.target.id, e.target.files) .then(r => { notify.alert(r.message, true); }) diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index 2fe83f9..f053afb 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -29,6 +29,7 @@ export const API_PAGE_DELETE = 'erasingPage'; export const API_SETTINGS_WRITE = 'savingSettings'; export const API_BACKUP_CREATE = 'createBackup'; export const API_BACKUP_DOWNLOAD = 'downloadBackup'; +export const API_BACKUP_RESTORE = 'downloadBackup'; export const API_IMAGES_UPLOAD = 'uploadProfileImages'; export const API_RENDER_PAGES = 'renderPages'; export const API_INIT = 'blogInit'; diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 1745e7c..694fd36 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -18,8 +18,9 @@ export const API_UPLOAD_AVATAR = '/api/v1/settings/add-avatar'; export const API_UPLOAD_BACKGROUND = '/api/v1/settings/add-feature-background'; export const API_PUBLISH_PAGES = '/api/v1/settings/publish-pages'; export const API_NAV_SYNC = '/api/v1/settings/nav-sync'; -export const API_CREATE_BACKUP = '/api/v1/settings/create-backup'; -export const API_DOWNLOAD_BACKUP = '/api/v1/settings/download-backup'; +export const API_CREATE_BACKUP = '/api/v1/backup/create'; +export const API_DOWNLOAD_BACKUP = '/api/v1/backup/download'; +export const API_RESTORE_BACKUP = '/api/v1/backup/restore'; export const API_SEND_MAIL = '/api/v1/mailer'; import * as DataEvent from '../com/events/DataEvent'; export default class APIUtils { @@ -190,19 +191,32 @@ export default class APIUtils { }); }); } - handleBackup(data) { + handleBackup(id, files) { return new Promise((resolve, reject) => { - var url, event, method; - if (data.task === 'create_backup') { + var url, event, method, type, data; + + if (id === 'create-backup') { url = API_CREATE_BACKUP; event = DataEvent.API_BACKUP_CREATE; method = REQUEST_TYPE_POST; + type = CONTENT_TYPE_JSON; + data = { task: 'create_backup' }; } else { - url = API_DOWNLOAD_BACKUP; - event = DataEvent.API_BACKUP_DOWNLOAD; - method = REQUEST_TYPE_GET; + url = API_RESTORE_BACKUP; + event = DataEvent.API_BACKUP_RESTORE; + method = REQUEST_TYPE_POST; + type = CONTENT_TYPE_FORM; + data = new FormData(); + for (var i = 0; i < files.length; i++) { + var file = files[i]; + // Check the file type. + if (!file.type.match('application.zip')) { + continue; + } + data.append('backup_upload', file, file.name); + } } - this._request(url, event, method, CONTENT_TYPE_JSON, data) + this._request(url, event, method, type, data) .then(result => { resolve(result); }) @@ -242,7 +256,8 @@ export default class APIUtils { eventType === DataEvent.API_SETTINGS_WRITE || eventType === DataEvent.API_PAGE_DELETE || eventType === DataEvent.API_RENDER_PAGES || - eventType === DataEvent.API_BACKUP_CREATE + eventType === DataEvent.API_BACKUP_CREATE || + eventType === DataEvent.API_BACKUP_RESTORE ) request.setRequestHeader('x-access-token', self.token); diff --git a/src/styles/main/_settings.styl b/src/styles/main/_settings.styl index a862ad7..a8910e7 100644 --- a/src/styles/main/_settings.styl +++ b/src/styles/main/_settings.styl @@ -74,6 +74,9 @@ margin 0 5px 10px 0 height 30px padding 10px + input#backup-upload + visibility hidden + display none .backup-meta background $primary - 60% color $white -- 2.25.1 From 96e7fddcdff81eb6fe74f3581d85fdd23902855a Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 17 Aug 2020 15:11:00 -0700 Subject: [PATCH 025/250] git ignore update --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index af2a7fe..3abe600 100644 --- a/.gitignore +++ b/.gitignore @@ -21,5 +21,4 @@ site/settings.json site/folks.json site/pages.json site/tags.json -site/_backup *.DS_Store -- 2.25.1 From efb20eeeb3ba92d7ef5229f9fc1321b1696d1612 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 17 Aug 2020 15:12:34 -0700 Subject: [PATCH 026/250] fixed git ignore remant blocking new api path --- .gitignore | 1 - brain/api/v1/backup.js | 90 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 brain/api/v1/backup.js diff --git a/.gitignore b/.gitignore index 3abe600..1ef94b5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ node_modules/ .sass-cache/ .cache/ .nova/ -/* !public/ public/* !public/favicon.ico diff --git a/brain/api/v1/backup.js b/brain/api/v1/backup.js new file mode 100644 index 0000000..b3d857c --- /dev/null +++ b/brain/api/v1/backup.js @@ -0,0 +1,90 @@ +import * as DataEvent from '../../../src/com/events/DataEvent'; +import Auth from '../../data/Auth'; +import Utils from '../../data/Utils'; +const express = require('express'); +const router = express.Router(); +const multer = require('multer'); +const auth = new Auth(); +const utils = new Utils(); + +var backup_upload = multer().array('backup_upload'); + +/*** + CREATE BACK UP +*/ +router.post('/create', (req, res) => { + auth.authCheck(req) + .then(() => { + utils + .createBackup() + .then(() => { + res.json({ + type: DataEvent.API_BACKUP_CREATE, + message: "You're backed up. Hi fives" + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +/*** + RETRIEVE BACKUP +*/ +router.get('/download', (req, res) => { + if (req.session.user) { + var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param + var fileName = 'backup.zip'; // The default name the browser will use + + res.download(filePath, fileName); + } else { + res.json({ + type: DataEvent.REQUEST_LAME, + message: "You're not logged in, champ" + }); + } + + //Move to route? +}); + +/*** + RESTORE BACKUP +*/ + +router.post('/restore', backup_upload, (req, res) => { + auth.authCheck(req) + .then(() => { + utils + .restoreBackup(req.files[0]) + .then(() => { + res.json({ + type: DataEvent.API_BACKUP_RESTORE, + message: 'Settings, files and pages restored. Nice work.' + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: 'Backup not restored. Uh oh.' + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + +module.exports = router; -- 2.25.1 From 126361fca86bf48fdf88b21b0b191eff3cd7176a Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 18 Aug 2020 15:47:04 -0700 Subject: [PATCH 027/250] updated init with empty config fix, added site restore by verifying backup file --- brain/api/v1/backup.js | 17 +++++ brain/data/Auth.js | 27 ++++++++ brain/data/Utils.js | 107 +++++++++++++++++++++++--------- brain/views/init.pug | 72 +++++++++++++-------- init.js | 9 ++- src/com/Base.js | 48 ++++++++++++++ src/libraries/FipamoAdminAPI.js | 19 ++++++ src/styles/main/_index.styl | 5 +- 8 files changed, 248 insertions(+), 56 deletions(-) diff --git a/brain/api/v1/backup.js b/brain/api/v1/backup.js index b3d857c..4f92bb5 100644 --- a/brain/api/v1/backup.js +++ b/brain/api/v1/backup.js @@ -8,6 +8,7 @@ const auth = new Auth(); const utils = new Utils(); var backup_upload = multer().array('backup_upload'); +var backup_restore = multer().any(); /*** CREATE BACK UP @@ -87,4 +88,20 @@ router.post('/restore', backup_upload, (req, res) => { }); }); +router.post('/init-restore', backup_restore, (req, res) => { + utils + .verifyBackup(req.files[0], req.body) + .then(response => { + res.json({ + type: response.type, + message: response.message + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); module.exports = router; diff --git a/brain/data/Auth.js b/brain/data/Auth.js index cb734f7..8d4d282 100644 --- a/brain/data/Auth.js +++ b/brain/data/Auth.js @@ -1,6 +1,7 @@ import * as DataEvent from '../../src/com/events/DataEvent'; const bCrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); +const _ = require('lodash'); export default class Auth { //-------------------------- @@ -64,6 +65,32 @@ export default class Auth { }); } + verifyCredentials(config, credentials) { + return new Promise((resolve, reject) => { + var found = _.find(config, { handle: credentials.handle }); + var response; + if (found) { + if (!this.isValidPassword(found, credentials.pass)) { + response = { + type: DataEvent.REQUEST_LAME, + message: 'CHECK YOUR PASSWORD' + }; + reject(response); + } + + response = { type: DataEvent.REQUEST_GOOD, message: 'Backup Verified. Restoring' }; + resolve(response); + } else { + response = { type: DataEvent.REQUEST_LAME, message: 'Handle not found, boss' }; + reject(response); + } + }); + } + + isValidPassword(user, password) { + return bCrypt.compareSync(password, user.password); + } + /** * Checks to make sure received token matches * @parameter token: created token diff --git a/brain/data/Utils.js b/brain/data/Utils.js index 962ea6f..39f2742 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -2,12 +2,15 @@ import Settings, { SETTINGS_FILE } from './Settings'; import Render from './Render'; import StringUtils from '../../src/com/utils/StringUtils'; import _ from 'lodash'; +import Auth from '../data/Auth'; +import DataEvent from '../../src/com/events/DataEvent'; const settings = new Settings(); const render = new Render(); const stringUtils = new StringUtils(); const moment = require('moment'); const fs = require('fs-extra'); const AdmZip = require('adm-zip'); +const auth = new Auth(); export default class Utils { constructor() {} @@ -157,39 +160,87 @@ export default class Utils { } restoreBackup(file) { - //var response; + var response; return new Promise((resolve, reject) => { var zip = new AdmZip(file.buffer); - zip.extractEntryTo('settings/settings.json', 'site', false, true); - zip.extractEntryTo('settings/folks.json', 'site', false, true); - zip.extractEntryTo('settings/tags.json', 'site', false, true); - zip.getEntries().forEach(function (entry) { - var entryName = entry.entryName; - var list = entryName.split('/'); - if (list[0] === 'public') { - if (list[6]) { - zip.extractEntryTo( - entryName, - 'public/assets/images/blog/' + list[4] + '/' + list[5], - false, - true - ); + try { + zip.extractEntryTo('settings/settings.json', 'site', false, true); + zip.extractEntryTo('settings/folks.json', 'site', false, true); + zip.extractEntryTo('settings/tags.json', 'site', false, true); + zip.getEntries().forEach(function (entry) { + var entryName = entry.entryName; + var list = entryName.split('/'); + if (list[0] === 'public') { + if (list[6]) { + zip.extractEntryTo( + entryName, + 'public/assets/images/blog/' + list[4] + '/' + list[5], + false, + true + ); + } } - } - if (list[0] === 'content') { - if (list[4]) { - zip.extractEntryTo( - entryName, - 'content/pages/' + list[2] + '/' + list[3], - false, - true - ); + if (list[0] === 'content') { + if (list[4]) { + zip.extractEntryTo( + entryName, + 'content/pages/' + list[2] + '/' + list[3], + false, + true + ); + } + zip.extractEntryTo('content/pages/index.md', 'content/pages', false, true); } - zip.extractEntryTo('content/pages/index.md', 'content/pages', false, true); - } - }); + }); - resolve(); + resolve(); + } catch (error) { + response = { + type: error, + message: 'ERROR READING BACKUP' + }; + reject(response); + } + }); + } + + verifyBackup(file, body) { + var response; + var zip = new AdmZip(file.buffer); + var credentials = { handle: body.restore_member_handle, pass: body.restore_member_pass }; + var self = this; + return new Promise((resolve, reject) => { + try { + let folks = JSON.parse(zip.readAsText('settings/folks.json')); + auth.verifyCredentials(folks, credentials) + .then(r => { + //resolve(r); + self.restoreBackup(file) + .then(() => { + response = { + type: '', + message: 'RESTORE COMPLETE' + }; + resolve(response); + }) + .catch(err => { + response = { + type: 'error', + message: 'ERROR RESTORING BACKUP' + }; + }); + }) + .catch(err => { + reject(err); + }); + } catch (error) { + response = { + type: 'error', + message: 'ERROR READING BACKUP FILE' + }; + + reject(response); + } }); } } diff --git a/brain/views/init.pug b/brain/views/init.pug index 9dd7189..02fe5a1 100644 --- a/brain/views/init.pug +++ b/brain/views/init.pug @@ -2,30 +2,52 @@ extends frame block main-content #dash-index #dash-index-wrapper - .dash-init#dash-init + .dash-init#dash-init + br + form#init-form + h1 What up. + p Just fill these in and it'll get you started. + label What's your handle? br - form#init-form - h1 What up. - p Just fill these in and it'll get you started. - label What's your handle? - br - input.large(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") - br - label Let's get that email - br - input.large(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") - br - label Let's get a password - br - input.large(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") - br - label And let's confirm that password - br - input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") - br - label And finally, a title - br - input.large(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") - br - button#init-blog(data-action='blog-init' type='submit') SET IT UP + input.large(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") + br + label Let's get that email + br + input.large(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") + br + label Let's get a password + br + input.large(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") + br + label And let's confirm that password + br + input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") + br + label And finally, a title + br + input.large(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") + br + button#init-blog(data-action='blog-init' type='submit') SET IT UP + .option + button.init-option#init-switch-restore OR RESTORE FROM BACKUP + + .dash-restore#dash-restore + form#init-restore + h1 Restore backup. + p Let's verify your backup + label What's your handle? + br + input.large(type='text', name='restore_member_handle' id='restore_member_handle', placeholder="What\'s your handle?") + br + label Let's get a password + br + input.large(type='password', name='restore_member_pass' id='restore_member_pass', placeholder="Password Please") + br + label Backup File + br + input(id="backup-upload" type="file" name="backup-upload") + br + button#blog-restore(data-action='blog-restore' type='submit') RESTORE + .option + button.init-option#init-switch-fresh OR INSTALL FRESH SITE diff --git a/init.js b/init.js index e040ec7..7f7bc94 100644 --- a/init.js +++ b/init.js @@ -7,13 +7,18 @@ var app = require('./brain/app'); var debug = require('debug')('fipamo:server'); var http = require('http'); -var config = require('./site/settings.json'); /** * Get port from environment and store in Express. */ -var port = normalizePort(process.env.PORT || config.global.port); +try { + var configPort = require('./site/settings.json').global.port; +} catch (err) { + console.log('settings.json not found, assuming this is a first run...'); +} + +var port = normalizePort(configPort || process.env.PORT || 2314); app.set('port', port); /** diff --git a/src/com/Base.js b/src/com/Base.js index 312e208..4c47011 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -1,10 +1,12 @@ import FipamoApi from '../libraries/FipamoAPI'; +import FipamoAdminAPI from '../libraries/FipamoAdminAPI'; import DataUitls from './utils/DataUtils'; import * as DataEvent from './events/DataEvent'; import DashManager from './controllers/DashManager'; import Notfications from './ui/Notifications'; const api = new FipamoApi(); +const admin = new FipamoAdminAPI(); const data = new DataUitls(); const notify = new Notfications(); @@ -21,6 +23,10 @@ export default class Base { //-------------------------- start() { if (document.getElementById('dash-form') || document.getElementById('dash-init')) { + var options = document.getElementsByClassName('init-option'); + for (let index = 0; index < options.length; index++) { + options[index].addEventListener('click', e => this.handleOptions(e)); + } if (document.getElementById('dash-form')) { document .getElementById('login-btn') @@ -29,6 +35,9 @@ export default class Base { document .getElementById('init-blog') .addEventListener('click', e => this.handleSetup(e)); + document + .getElementById('blog-restore') + .addEventListener('click', e => this.handleRestore(e)); } } else { new DashManager(); @@ -76,4 +85,43 @@ export default class Base { notify.alert(err, false); }); } + handleRestore(e) { + e.stopPropagation(); + e.preventDefault(); + var form = document.getElementById('init-restore'); + admin + .handleInitRestore(form) + .then(response => { + if (response.type === DataEvent.REQUEST_LAME) { + notify.alert(response.message, false); + } else { + notify.alert(response.message, true); + setTimeout(() => { + //window.location = '/@/dashboard'; + }, 700); + } + }) + .catch(err => { + notify.alert(err, false); + }); + } + handleOptions(e) { + e.stopPropagation(); + e.preventDefault(); + let init = document.getElementById('dash-init'); + let restore = document.getElementById('dash-restore'); + if (e.target.id === 'init-switch-restore') { + init.style.display = 'none'; + init.style.visibility = 'hidden'; + + restore.style.display = 'block'; + restore.style.visibility = 'visible'; + } else { + init.style.display = 'block'; + init.style.visibility = 'visible'; + + restore.style.display = 'none'; + restore.style.visibility = 'hidden'; + } + } } diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 694fd36..7436dec 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -21,6 +21,7 @@ export const API_NAV_SYNC = '/api/v1/settings/nav-sync'; export const API_CREATE_BACKUP = '/api/v1/backup/create'; export const API_DOWNLOAD_BACKUP = '/api/v1/backup/download'; export const API_RESTORE_BACKUP = '/api/v1/backup/restore'; +export const API_INIT_RESTORE_BACKUP = '/api/v1/backup/init-restore'; export const API_SEND_MAIL = '/api/v1/mailer'; import * as DataEvent from '../com/events/DataEvent'; export default class APIUtils { @@ -225,6 +226,24 @@ export default class APIUtils { }); }); } + handleInitRestore(form) { + return new Promise((resolve, reject) => { + var url, event, method, type, data; + + url = API_INIT_RESTORE_BACKUP; + event = DataEvent.API_BACKUP_RESTORE; + method = REQUEST_TYPE_POST; + type = CONTENT_TYPE_FORM; + data = new FormData(form); + this._request(url, event, method, type, data) + .then(result => { + resolve(result); + }) + .catch(err => { + reject(err); + }); + }); + } //-------------------------- // private //-------------------------- diff --git a/src/styles/main/_index.styl b/src/styles/main/_index.styl index e3d6543..03d905f 100644 --- a/src/styles/main/_index.styl +++ b/src/styles/main/_index.styl @@ -14,7 +14,7 @@ height 100% margin 0 auto - .dash-init + .dash-init, .dash-restore width 100% max-width 900px margin 0 auto @@ -40,6 +40,9 @@ width 120px margin 0 auto display block + .dash-restore + display: none; + visibility hidden; #dash-login width 100% -- 2.25.1 From c91166a1aa768b78bff2513c4ff5fe847cb9d45e Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 24 Aug 2020 12:39:22 -0700 Subject: [PATCH 028/250] minor touchups --- brain/data/Render.js | 10 +++++++++- brain/data/Utils.js | 5 ++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 2e53947..201bd2a 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -139,7 +139,7 @@ export default class Render { type: DataEvent.PAGES_RENDERED, message: 'All Pages Rendered. Sweet.' }; - //utils.moveAssets(); + //move theme assets to public when pages are rendered new Utils().moveAssets(); resolve(response); } @@ -174,6 +174,10 @@ export default class Render { }); }); } + /** + * Method to extract, group and render tags in page + * @parameter pages: payload for site pages + */ publishTags(pages) { let self = this; return new Promise((resolve, reject) => { @@ -241,6 +245,10 @@ export default class Render { }); }); } + /** + * Method to build page that lists all active pages, organized by year and month + * @parameter pages: payload for site pages + */ publishArchive(archive) { settings .load(SETTINGS_FILE) diff --git a/brain/data/Utils.js b/brain/data/Utils.js index 39f2742..f4d0d1f 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -3,7 +3,6 @@ import Render from './Render'; import StringUtils from '../../src/com/utils/StringUtils'; import _ from 'lodash'; import Auth from '../data/Auth'; -import DataEvent from '../../src/com/events/DataEvent'; const settings = new Settings(); const render = new Render(); const stringUtils = new StringUtils(); @@ -213,7 +212,7 @@ export default class Utils { try { let folks = JSON.parse(zip.readAsText('settings/folks.json')); auth.verifyCredentials(folks, credentials) - .then(r => { + .then(() => { //resolve(r); self.restoreBackup(file) .then(() => { @@ -225,7 +224,7 @@ export default class Utils { }) .catch(err => { response = { - type: 'error', + type: err, message: 'ERROR RESTORING BACKUP' }; }); -- 2.25.1 From ad1ff0e44a86d6418f21d41e31d73b141dc2f404 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 1 Sep 2020 14:25:22 -0700 Subject: [PATCH 029/250] patched view fixes from beta-branch --- brain/views/init.pug | 7 +++---- brain/views/partials/options.pug | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/brain/views/init.pug b/brain/views/init.pug index 02fe5a1..7069493 100644 --- a/brain/views/init.pug +++ b/brain/views/init.pug @@ -1,5 +1,5 @@ extends frame -block main-content +block main-content #dash-index #dash-index-wrapper .dash-init#dash-init @@ -21,7 +21,7 @@ block main-content br label And let's confirm that password br - input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Email Confirm") + input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Password Confirm") br label And finally, a title br @@ -30,7 +30,7 @@ block main-content button#init-blog(data-action='blog-init' type='submit') SET IT UP .option button.init-option#init-switch-restore OR RESTORE FROM BACKUP - + .dash-restore#dash-restore form#init-restore h1 Restore backup. @@ -50,4 +50,3 @@ block main-content button#blog-restore(data-action='blog-restore' type='submit') RESTORE .option button.init-option#init-switch-fresh OR INSTALL FRESH SITE - diff --git a/brain/views/partials/options.pug b/brain/views/partials/options.pug index cb07f21..bfe7555 100644 --- a/brain/views/partials/options.pug +++ b/brain/views/partials/options.pug @@ -1,13 +1,13 @@ #post-options - button#option-menu-pin.option-inactive.post-option-btn(data-active= status[0]) + button#option-menu-pin.option-inactive.post-option-btn(data-active= status[0], title='Pin to Menu') svg#option-page-icon(viewBox="0 0 20 20" class="icons") use#option-page-icon(xlink:href='/assets/images/global/sprite.svg#entypo-pin') - button#option-feature.option-inactive.post-option-btn(data-active= status[1]) + button#option-feature.option-inactive.post-option-btn(data-active= status[1], title='Feature') svg#option-feature-icon(viewBox="0 0 20 20" class="icons") use#option-feature-icon(xlink:href='/assets/images/global/sprite.svg#entypo-star') - button#option-published.option-inactive.post-option-btn(data-active= status[2]) + button#option-published.option-inactive.post-option-btn(data-active= status[2], title='Publish') svg#option-published-icon(viewBox="0 0 20 20" class="icons") use#option-published-icon(xlink:href='/assets/images/global/sprite.svg#entypo-globe') //button#option-preview.option-inactive(data-active="false") svg#option-preview-icon(viewBox="0 0 20 20" class="icons") - use#option-preview-icon(xlink:href='/assets/images/global/sprite.svg#entypo-eye') \ No newline at end of file + use#option-preview-icon(xlink:href='/assets/images/global/sprite.svg#entypo-eye') -- 2.25.1 From d404925bcfef31eb4d4be0642ce5ccc64fca9a2f Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 1 Sep 2020 14:27:06 -0700 Subject: [PATCH 030/250] aligned with latest beta release --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9eb6439..0184f18 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.1.5", + "version": "1.2.1", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", @@ -66,4 +66,4 @@ "scramble-text": "0.0.8", "stylus": "^0.54.7" } -} +} \ No newline at end of file -- 2.25.1 From ba92cf5f615faa5a1af77bd97bbe0c43c4900d5b Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 1 Sep 2020 14:53:13 -0700 Subject: [PATCH 031/250] fixed bug that was saving setting feature background url incorrectly --- brain/data/Settings.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/brain/data/Settings.js b/brain/data/Settings.js index 1325320..fc9829e 100644 --- a/brain/data/Settings.js +++ b/brain/data/Settings.js @@ -50,7 +50,9 @@ export default class Settings { } if (!_.isEqual(result.settings.global, payload.global)) { let bg = payload.global.background; - payload.global.background = bg.substr(21, bg.length); + let chunks = bg.split('/'); + let strip = chunks[0] + '/' + chunks[1] + chunks[2]; + payload.global.background = bg.substr(strip.length + 1, bg.length); result.settings.global = payload.global; needToUpdate = true; } else { -- 2.25.1 From 812be36edbb135a19506aea9fb19cfb7afe50cc5 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 1 Sep 2020 14:54:09 -0700 Subject: [PATCH 032/250] bumped version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0184f18..82e7662 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.2.1", + "version": "1.2.2", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", -- 2.25.1 From d9d004468ad8b26ca4332f86c1c456c7123ec531 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 4 Sep 2020 13:33:32 -0700 Subject: [PATCH 033/250] opn graph meta edits, log out made public, improved notifications --- brain/data/Render.js | 3 ++ brain/routes/dash/index.js | 9 +++--- brain/views/frame.pug | 12 +++++-- brain/views/partials/dash-nav.pug | 3 ++ src/com/Base.js | 2 ++ src/com/controllers/NavIndex.js | 2 ++ src/com/controllers/PageEditor.js | 1 + src/com/controllers/SettingsIndex.js | 4 +++ src/com/ui/Notifications.js | 48 ++++++++++++++++++++-------- src/styles/main/_structure.styl | 26 +++++++++++---- 10 files changed, 83 insertions(+), 27 deletions(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 201bd2a..3c3116f 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -103,9 +103,12 @@ export default class Render { } buffed = new StringUtils().decodeHTML(buffed); let html = md.render(buffed, { html: true, xhtmlOut: true }); + //add open graph meta variables let file = pug.renderFile(template, { title: page.metadata.title, default_bg: page.metadata.feature, + image: page.metadata.feature, + keywords: page.metadata.tags, content: html, tags: tags, menu: config.menu, diff --git a/brain/routes/dash/index.js b/brain/routes/dash/index.js index 1b582c8..beaa0ac 100644 --- a/brain/routes/dash/index.js +++ b/brain/routes/dash/index.js @@ -54,10 +54,9 @@ router.get('/', function (req, res) { //-------------------------- // Logout //-------------------------- -router.post('/logout', function (req, res) { - req.logout(); - return res.json({ - message: 'LOGGED OUT' - }); +router.get('/logout', (req, res) => { + //req.logout(); + req.session.destroy(); + res.redirect('/@/dashboard'); }); module.exports = router; diff --git a/brain/views/frame.pug b/brain/views/frame.pug index 65f715b..5d299ff 100644 --- a/brain/views/frame.pug +++ b/brain/views/frame.pug @@ -12,11 +12,17 @@ html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") //meta(name="twitter:image" content="https://thetwelfth.house/base-assets/images/current.png") link(rel='stylesheet', href="/assets/css/dash.css", type='text/css') body - #notifications.notifications + #notifications.notifications.notify-close #notifyMessage.notifyMessage - .notify-icon + .notify-icon#notify-good svg(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-bell') + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-flirt') + .notify-icon#notify-lame + svg(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-sad') + .notify-icon#notify-working + svg(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-cog') p#message-text This is a message .main-container#main-content section#dash-index-content diff --git a/brain/views/partials/dash-nav.pug b/brain/views/partials/dash-nav.pug index e966ec9..a52be7c 100644 --- a/brain/views/partials/dash-nav.pug +++ b/brain/views/partials/dash-nav.pug @@ -2,3 +2,6 @@ a#settings(href="/@/dashboard/settings") Settings | . a#navigation(href="/@/dashboard/navigation") Navigation + | . + + a#navigation(href="/@/dashboard/logout") Log Out diff --git a/src/com/Base.js b/src/com/Base.js index 4c47011..52a8f6e 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -50,11 +50,13 @@ export default class Base { e.stopPropagation(); e.preventDefault(); let authForm = data.formDataToJSON(document.getElementById('login')); + notify.alert('Looking, hold up', null); api.login(authForm) .then(response => { if (response.type === DataEvent.REQUEST_LAME) { notify.alert(response.message, false); } else { + notify.alert(response.message, true); e.target.innerHTML = response.message; setTimeout(() => { window.location = '/@/dashboard'; diff --git a/src/com/controllers/NavIndex.js b/src/com/controllers/NavIndex.js index 8135dda..0e4b5d3 100644 --- a/src/com/controllers/NavIndex.js +++ b/src/com/controllers/NavIndex.js @@ -19,6 +19,7 @@ export default class NavIndex { Sortable.create(document.getElementById('nav-pages'), { onUpdate: () => { new NavActions().syncMenu().then(data => { + notify.alert('Updating Menu', null); admin.syncNav(data).then(r => { if (r.type == DataEvent.MENU_UPDATED) { notify.alert(r.message, true); @@ -45,6 +46,7 @@ export default class NavIndex { new NavActions().removeItem(id); new NavActions().syncMenu().then(data => { data.remove = e.target.getAttribute('data-uuid'); + notify.alert('Editing Menu', null); admin.syncNav(data).then(r => { if (r.type == DataEvent.MENU_UPDATED) { notify.alert(r.message, true); diff --git a/src/com/controllers/PageEditor.js b/src/com/controllers/PageEditor.js index de11ebd..be4e7fb 100644 --- a/src/com/controllers/PageEditor.js +++ b/src/com/controllers/PageEditor.js @@ -134,6 +134,7 @@ export default class PostEditor { new PageActions() .collectInfo(document.getElementById('featured-image-upload').files[0]) .then(page => { + notify.alert('Writing down changes', null); admin .pageActions(task, page) .then(r => { diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js index 93016f4..9899004 100644 --- a/src/com/controllers/SettingsIndex.js +++ b/src/com/controllers/SettingsIndex.js @@ -23,6 +23,7 @@ export default class SettingsIndex { new SettingsActions() .getInfo() .then(data => { + notify.alert('Saving Settings', null); admin.syncSettings(data).then(r => { if (r.type == DataEvent.SETTINGS_UPDATED) { notify.alert(r.message, true); @@ -155,6 +156,7 @@ export default class SettingsIndex { } } handleImageUpload(type, files) { + notify.alert('Uploading Image... ', null); admin .imageUpload(type, files) .then(r => { @@ -174,6 +176,7 @@ export default class SettingsIndex { e.preventDefault(); e.stopPropagation(); let task = { task: 'publish all pages' }; + notify.alert('Publishing site...', null); admin .publishSite(task) .then(r => { @@ -186,6 +189,7 @@ export default class SettingsIndex { handleBackup(e) { e.preventDefault(); e.stopPropagation(); + notify.alert('Creating backup', null); admin .handleBackup(e.target.id, e.target.files) .then(r => { diff --git a/src/com/ui/Notifications.js b/src/com/ui/Notifications.js index 598515a..6f8fc75 100644 --- a/src/com/ui/Notifications.js +++ b/src/com/ui/Notifications.js @@ -1,7 +1,10 @@ import anime from 'animejs/lib/anime.es.js'; const notifcation = document.getElementById('notifications'); -const message = document.getElementById('notifyMessage'); const messageText = document.getElementById('message-text'); +const iconGood = document.getElementById('notify-good'); +const iconLame = document.getElementById('notify-lame'); +const iconWorking = document.getElementById('notify-working'); + export default class Notfications { //-------------------------- // constructor @@ -12,26 +15,44 @@ export default class Notfications { //-------------------------- alert(text, status) { - messageText.innerHTML = text; - notifcation.style.display = 'flex'; + //notifcation.style.display = 'flex'; + iconWorking.style.display = 'none'; + iconGood.style.display = 'none'; + iconLame.style.display = 'none'; var color = ''; - status ? (color = '#32cd32') : (color = '#F64747'); + if (status !== null) { + if (status) { + color = '#32cd32'; + iconWorking.style.display = 'none'; + iconGood.style.display = 'block'; + } else { + color = '#F64747'; + iconWorking.style.display = 'none'; + iconLame.style.display = 'block'; + } + } else { + color = '#200317'; + iconWorking.style.display = 'block'; + } + + notifcation.classList.remove('notify-close'); + notifcation.classList.add('notify-open'); + messageText.innerHTML = text; anime({ targets: messageText, backgroundColor: color, easing: 'easeInOutQuint', - duration: 500, + duration: 700, complete: () => { - setTimeout(() => { - anime({ - targets: messageText, - backgroundColor: '#374857', - easing: 'easeOutQuint', - duration: 500 - }); - }, 1000); + if (status !== null) { + setTimeout(() => { + notifcation.classList.add('notify-close'); + notifcation.classList.remove('notify-open'); + }, 1000); + } } }); + /* anime({ targets: message, marginTop: '-20px', @@ -53,6 +74,7 @@ export default class Notfications { }, 1000); } }); + */ } //-------------------------- diff --git a/src/styles/main/_structure.styl b/src/styles/main/_structure.styl index 71beb7a..bf9685d 100644 --- a/src/styles/main/_structure.styl +++ b/src/styles/main/_structure.styl @@ -2,6 +2,7 @@ html, body background-color $primary - 60% font 400 1em $baseType height 100% + perspective: 1000px a font 300 1em $baseType @@ -21,20 +22,24 @@ svg.icons z-index 2000 height 10% width 100% - display none + display block align-items center justify-content center padding 0 - margin 0 + margin 0 + transform-origin: 50% 0; + transition all 0.5s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); #notifyMessage - margin-top: 0px; - padding-top -125px + margin 0 auto + //padding-top -125px height 50px; width 500px display: flex; align-items center justify-content center - opacity: 0 + opacity: 1 + #notify-good, #notify-lame, #notify-working + display: none .notify-icon background $black padding 8px 5px 5px 5px @@ -45,7 +50,7 @@ svg.icons border 2px solid $white p color $white - background $highlight + background $primary - 60% width 400px height 28px padding 15px 0 0 5px @@ -56,6 +61,15 @@ svg.icons .icons fill $white +.notify-close + transform-style preserve-3d + + transform: rotateX(-120deg) + +.notify-open + transform-style preserve-3d + //-origin: 50% 0; + transform: rotateX(0deg) .blog-container width 100% -- 2.25.1 From 04f77806ac77e9c6a0b1afc3e201c4799d8ccfb8 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 4 Sep 2020 14:28:05 -0700 Subject: [PATCH 034/250] notifications position fix, bumped version number --- brain/views/frame.pug | 4 ++-- package.json | 2 +- src/com/ui/Notifications.js | 14 +++++++++----- src/styles/main/_structure.styl | 12 ++++++------ 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/brain/views/frame.pug b/brain/views/frame.pug index 5d299ff..21282d7 100644 --- a/brain/views/frame.pug +++ b/brain/views/frame.pug @@ -12,8 +12,8 @@ html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") //meta(name="twitter:image" content="https://thetwelfth.house/base-assets/images/current.png") link(rel='stylesheet', href="/assets/css/dash.css", type='text/css') body - #notifications.notifications.notify-close - #notifyMessage.notifyMessage + #notifications.notifications + #notifyMessage.notifyMessage.notify-close .notify-icon#notify-good svg(viewBox="0 0 20 20" class="icons") use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-flirt') diff --git a/package.json b/package.json index 82e7662..b0f0e62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.2.2", + "version": "1.2.3", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", diff --git a/src/com/ui/Notifications.js b/src/com/ui/Notifications.js index 6f8fc75..dde0f84 100644 --- a/src/com/ui/Notifications.js +++ b/src/com/ui/Notifications.js @@ -1,5 +1,6 @@ import anime from 'animejs/lib/anime.es.js'; const notifcation = document.getElementById('notifications'); +const notify = document.getElementById('notifyMessage'); const messageText = document.getElementById('message-text'); const iconGood = document.getElementById('notify-good'); const iconLame = document.getElementById('notify-lame'); @@ -15,7 +16,7 @@ export default class Notfications { //-------------------------- alert(text, status) { - //notifcation.style.display = 'flex'; + notifcation.style.display = 'block'; iconWorking.style.display = 'none'; iconGood.style.display = 'none'; iconLame.style.display = 'none'; @@ -35,8 +36,8 @@ export default class Notfications { iconWorking.style.display = 'block'; } - notifcation.classList.remove('notify-close'); - notifcation.classList.add('notify-open'); + notify.classList.remove('notify-close'); + notify.classList.add('notify-open'); messageText.innerHTML = text; anime({ targets: messageText, @@ -46,8 +47,11 @@ export default class Notfications { complete: () => { if (status !== null) { setTimeout(() => { - notifcation.classList.add('notify-close'); - notifcation.classList.remove('notify-open'); + notify.addEventListener('transitionend', () => { + notifcation.style.display = 'none'; + }); + notify.classList.add('notify-close'); + notify.classList.remove('notify-open'); }, 1000); } } diff --git a/src/styles/main/_structure.styl b/src/styles/main/_structure.styl index bf9685d..158a604 100644 --- a/src/styles/main/_structure.styl +++ b/src/styles/main/_structure.styl @@ -2,7 +2,6 @@ html, body background-color $primary - 60% font 400 1em $baseType height 100% - perspective: 1000px a font 300 1em $baseType @@ -18,19 +17,21 @@ svg.icons fill $secondary #notifications + perspective 1000px position fixed z-index 2000 height 10% width 100% - display block + display none align-items center justify-content center padding 0 margin 0 - transform-origin: 50% 0; - transition all 0.5s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); + + #notifyMessage margin 0 auto + transition all 0.5s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); //padding-top -125px height 50px; width 500px @@ -38,6 +39,7 @@ svg.icons align-items center justify-content center opacity: 1 + transform-origin: 50% 0; #notify-good, #notify-lame, #notify-working display: none .notify-icon @@ -63,12 +65,10 @@ svg.icons .notify-close transform-style preserve-3d - transform: rotateX(-120deg) .notify-open transform-style preserve-3d - //-origin: 50% 0; transform: rotateX(0deg) .blog-container width 100% -- 2.25.1 From dd70fa1348f0b415c4e4ec93805237074445c5bd Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 4 Sep 2020 16:13:45 -0700 Subject: [PATCH 035/250] fix for notification animation bug --- brain/views/frame.pug | 2 +- src/com/ui/Notifications.js | 78 ++++++++++++++++----------------- src/styles/main/_structure.styl | 13 +++--- 3 files changed, 47 insertions(+), 46 deletions(-) diff --git a/brain/views/frame.pug b/brain/views/frame.pug index 21282d7..e72b6c8 100644 --- a/brain/views/frame.pug +++ b/brain/views/frame.pug @@ -13,7 +13,7 @@ html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") link(rel='stylesheet', href="/assets/css/dash.css", type='text/css') body #notifications.notifications - #notifyMessage.notifyMessage.notify-close + #notifyMessage.notifyMessage .notify-icon#notify-good svg(viewBox="0 0 20 20" class="icons") use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-flirt') diff --git a/src/com/ui/Notifications.js b/src/com/ui/Notifications.js index dde0f84..ed1d0e1 100644 --- a/src/com/ui/Notifications.js +++ b/src/com/ui/Notifications.js @@ -16,10 +16,10 @@ export default class Notfications { //-------------------------- alert(text, status) { - notifcation.style.display = 'block'; iconWorking.style.display = 'none'; iconGood.style.display = 'none'; iconLame.style.display = 'none'; + var color = ''; if (status !== null) { if (status) { @@ -35,50 +35,50 @@ export default class Notfications { color = '#200317'; iconWorking.style.display = 'block'; } - - notify.classList.remove('notify-close'); - notify.classList.add('notify-open'); messageText.innerHTML = text; + anime({ - targets: messageText, - backgroundColor: color, + targets: notifcation, + marginTop: '0', easing: 'easeInOutQuint', - duration: 700, + duration: 10, complete: () => { - if (status !== null) { - setTimeout(() => { - notify.addEventListener('transitionend', () => { - notifcation.style.display = 'none'; - }); - notify.classList.add('notify-close'); - notify.classList.remove('notify-open'); - }, 1000); - } + anime({ + targets: notify, + rotateX: '0', + easing: 'easeInOutQuint', + duration: 700 + }); + anime({ + targets: messageText, + backgroundColor: color, + easing: 'easeInOutQuint', + duration: 700, + complete: () => { + setTimeout(() => { + if (status !== null) { + anime({ + targets: notify, + rotateX: '-120', + easing: 'easeInOutQuint', + duration: 700, + complete: () => { + anime({ + targets: notifcation, + marginTop: '-55', + easing: 'easeInOutQuint', + delay: 700, + duration: 50 + }); + //notifcation.style.display = 'none'; + } + }); + } + }, 1000); + } + }); } }); - /* - anime({ - targets: message, - marginTop: '-20px', - easing: 'easeInOutQuint', - duration: 500, - opacity: 1, - complete: () => { - setTimeout(() => { - anime({ - targets: message, - marginTop: '-125px', - easing: 'easeOutQuint', - duration: 500, - opacity: 0, - complete: () => { - notifcation.style.display = 'none'; - } - }); - }, 1000); - } - }); - */ } //-------------------------- diff --git a/src/styles/main/_structure.styl b/src/styles/main/_structure.styl index 158a604..548a994 100644 --- a/src/styles/main/_structure.styl +++ b/src/styles/main/_structure.styl @@ -20,18 +20,17 @@ svg.icons perspective 1000px position fixed z-index 2000 - height 10% + height 55x width 100% - display none + display block align-items center justify-content center padding 0 - margin 0 - - + margin-top: -55px + margin 0 #notifyMessage margin 0 auto - transition all 0.5s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); + transition all 0.6s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); //padding-top -125px height 50px; width 500px @@ -39,6 +38,8 @@ svg.icons align-items center justify-content center opacity: 1 + transform-style preserve-3d + transform: rotateX(-120deg) transform-origin: 50% 0; #notify-good, #notify-lame, #notify-working display: none -- 2.25.1 From 62b974404068a6b907b3c3adc2e4d2752b761d7c Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 4 Sep 2020 16:27:20 -0700 Subject: [PATCH 036/250] state error with notifications fix --- src/styles/main/_structure.styl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/styles/main/_structure.styl b/src/styles/main/_structure.styl index 548a994..1eec698 100644 --- a/src/styles/main/_structure.styl +++ b/src/styles/main/_structure.styl @@ -20,14 +20,13 @@ svg.icons perspective 1000px position fixed z-index 2000 - height 55x + height 55px width 100% display block align-items center justify-content center padding 0 margin-top: -55px - margin 0 #notifyMessage margin 0 auto transition all 0.6s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); -- 2.25.1 From 92a516994986b6834b9b8e0810faef0141b6bfb9 Mon Sep 17 00:00:00 2001 From: Ro Date: Sat, 5 Sep 2020 09:58:28 -0700 Subject: [PATCH 037/250] fix for saving uploaded image url in pages, type tweak for dashboard --- brain/api/v1/pages.js | 12 +++++++++--- src/styles/main/_typography.styl | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/brain/api/v1/pages.js b/brain/api/v1/pages.js index f74a689..ce37dad 100644 --- a/brain/api/v1/pages.js +++ b/brain/api/v1/pages.js @@ -134,12 +134,18 @@ router.post('/write/:task?', feature_upload, (req, res) => { : (task = DataEvent.API_PAGE_WRITE); if (req.files.length > 0) { var path = req.files[0].path; + //console.log('NEW FEATURE URL', path); feature = '/' + path.substring(7, path.length); } else { var url = body.feature_image; - url != null || url != undefined || url != '' - ? (feature = url.substring(21, url.length)) - : (feature = ''); + //switch this to the new feature path edit + if (url != null || url != undefined || url != '') { + let chunks = url.split('/'); + let strip = chunks[0] + '/' + chunks[1] + chunks[2]; + feature = url.substr(strip.length + 1, url.length); + } else { + feature = ''; + } } body.feature = feature; body.deleted = false; diff --git a/src/styles/main/_typography.styl b/src/styles/main/_typography.styl index d06b037..444889f 100644 --- a/src/styles/main/_typography.styl +++ b/src/styles/main/_typography.styl @@ -100,7 +100,7 @@ url('fonts/Apercu-Mono.svg?#Apercu') format('svg') $baseType = Helvetica, Arial, sans-serif; -$monoType = 'Andale Mono' +$monoType = monospace, courier h1, h2, h3 color $white -- 2.25.1 From a407eeb9beb1f2f910783786e16a8d1d00ad2b80 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 8 Sep 2020 11:56:39 -0700 Subject: [PATCH 038/250] just tidying up a bit --- brain/data/Book.js | 2 +- package.json | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/brain/data/Book.js b/brain/data/Book.js index 59e6d08..3c4918d 100644 --- a/brain/data/Book.js +++ b/brain/data/Book.js @@ -51,7 +51,7 @@ export default class Book { //TODO: Duct tape solution until something better created //make check against menu to see if page should be marked as menu item - //if it doesnt' exist in menu change, edit page to + //if it doesn't exist in menu change, edit page to let page = _.find(pages, list => { return list.metadata.uuid === id; }); diff --git a/package.json b/package.json index b0f0e62..67d9903 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,8 @@ "scripts": { "start": "pm2 --node-args='-r esm' start init.js", "stop": "pm2 stop init.js", - "dev": "nodemon -r esm init.js --ignore node_modules/ -e js", - "debug": "nodemon inspect -r esm init.js --ignore node_modules/ -e js", - "prettier-watch": "npx onchange '**/*.js' -- npx prettier --write {{changed}}", + "dev": "node -r esm init.js --ignore node_modules/ -e js", + "debug": "node inspect -r esm init.js --ignore node_modules/ -e js", "watch": "stylus -w -o public/assets/css src/styles/dash.styl & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" }, "engines": { -- 2.25.1 From 16486d771f7e0d3d3280c90daa9c4f30a1da7c2e Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 20 Sep 2020 16:43:28 -0700 Subject: [PATCH 039/250] re-added nodemon to dev and debug scripts --- package-lock.json | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3702ace..e917b27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.1.5", + "version": "1.2.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 67d9903..1e0a158 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "scripts": { "start": "pm2 --node-args='-r esm' start init.js", "stop": "pm2 stop init.js", - "dev": "node -r esm init.js --ignore node_modules/ -e js", - "debug": "node inspect -r esm init.js --ignore node_modules/ -e js", + "dev": "nodemon -r esm init.js --ignore node_modules/ -e js", + "debug": "nodemon inspect -r esm init.js --ignore node_modules/ -e js", "watch": "stylus -w -o public/assets/css src/styles/dash.styl & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" }, "engines": { -- 2.25.1 From 2788e64e3b0bbe5d1eff73b791849f3fcdbabcdb Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 21 Sep 2020 14:19:16 -0700 Subject: [PATCH 040/250] converted stylus files to sass, removed stylus dependencies --- .prettierignore | 2 +- brain/data/Utils.js | 2 + package-lock.json | 657 ++++++++++++++++-- package.json | 12 +- src/styles/dash.sass | 43 ++ src/styles/dash.styl | 81 --- src/styles/main/_calendar.sass | 242 +++++++ src/styles/main/_calendar.styl | 245 ------- src/styles/main/_colors.sass | 17 + src/styles/main/_colors.styl | 19 - ...-highlight.styl => _editor-highlight.sass} | 36 +- src/styles/main/_editor.sass | 95 +++ src/styles/main/_editor.styl | 95 --- src/styles/main/_error.sass | 22 + src/styles/main/_error.styl | 22 - src/styles/main/_forms.sass | 58 ++ src/styles/main/_forms.styl | 57 -- src/styles/main/_index.sass | 251 +++++++ src/styles/main/_index.styl | 255 ------- src/styles/main/_mixins.sass | 16 + src/styles/main/_mixins.styl | 11 - src/styles/main/_navigation.sass | 62 ++ src/styles/main/_navigation.styl | 62 -- src/styles/main/_normalize.sass | 197 ++++++ src/styles/main/_normalize.styl | 196 ------ src/styles/main/_posts.sass | 384 ++++++++++ src/styles/main/_posts.styl | 388 ----------- src/styles/main/_settings.sass | 176 +++++ src/styles/main/_settings.styl | 176 ----- src/styles/main/_structure.sass | 161 +++++ src/styles/main/_structure.styl | 164 ----- src/styles/main/_typography.sass | 18 + src/styles/main/_typography.styl | 119 ---- 33 files changed, 2366 insertions(+), 1975 deletions(-) create mode 100644 src/styles/dash.sass delete mode 100644 src/styles/dash.styl create mode 100644 src/styles/main/_calendar.sass delete mode 100644 src/styles/main/_calendar.styl create mode 100644 src/styles/main/_colors.sass delete mode 100644 src/styles/main/_colors.styl rename src/styles/main/{_editor-highlight.styl => _editor-highlight.sass} (63%) create mode 100644 src/styles/main/_editor.sass delete mode 100644 src/styles/main/_editor.styl create mode 100644 src/styles/main/_error.sass delete mode 100644 src/styles/main/_error.styl create mode 100644 src/styles/main/_forms.sass delete mode 100644 src/styles/main/_forms.styl create mode 100644 src/styles/main/_index.sass delete mode 100644 src/styles/main/_index.styl create mode 100644 src/styles/main/_mixins.sass delete mode 100644 src/styles/main/_mixins.styl create mode 100644 src/styles/main/_navigation.sass delete mode 100644 src/styles/main/_navigation.styl create mode 100644 src/styles/main/_normalize.sass delete mode 100644 src/styles/main/_normalize.styl create mode 100644 src/styles/main/_posts.sass delete mode 100644 src/styles/main/_posts.styl create mode 100644 src/styles/main/_settings.sass delete mode 100644 src/styles/main/_settings.styl create mode 100644 src/styles/main/_structure.sass delete mode 100644 src/styles/main/_structure.styl create mode 100644 src/styles/main/_typography.sass delete mode 100644 src/styles/main/_typography.styl diff --git a/.prettierignore b/.prettierignore index c673d93..d63847e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,6 @@ .babelrc README.md *.pug -*.styl +*.sass *.json diff --git a/brain/data/Utils.js b/brain/data/Utils.js index f4d0d1f..071ab38 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -98,6 +98,7 @@ export default class Utils { render.publishArchive(archive); } reindexPages(pages) { + conosle.log('PAGES'); //let byDate = _.sortBy(pages, ['created']); } moveAssets() { @@ -128,6 +129,7 @@ export default class Utils { //console.log('Copy completed!'); } ); + //TODO: Add method to move new logo to public from theme upload }) .catch(() => { //console.log('ERROR', err); diff --git a/package-lock.json b/package-lock.json index e917b27..7733c1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1111,6 +1111,75 @@ } } }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", + "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -1585,6 +1654,12 @@ } } }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "acorn-walk": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", @@ -1890,6 +1965,12 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.6.tgz", "integrity": "sha512-nHiuV14upVGl7MWwFUYbzJ6YlfwWS084CU9EA8HajfYQjMSli5TQi3UTRygGF58LFWVkXxS1rbgRhROEqlQkXg==" }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", @@ -3214,6 +3295,12 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "bulma": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.0.tgz", + "integrity": "sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ==", + "dev": true + }, "bulma.styl": { "version": "0.6.11", "resolved": "https://registry.npmjs.org/bulma.styl/-/bulma.styl-0.6.11.tgz", @@ -3971,18 +4058,6 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -4074,15 +4149,6 @@ } } }, - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "requires": { - "css": "^2.0.0" - } - }, "css-select": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", @@ -4817,6 +4883,274 @@ "source-map": "~0.6.1" } }, + "eslint": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", + "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "eslint-import-resolver-node": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", @@ -4919,6 +5253,16 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==" }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, "eslint-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", @@ -4937,11 +5281,70 @@ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, + "espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -5312,6 +5715,15 @@ "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "file-js": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", @@ -5406,6 +5818,34 @@ "locate-path": "^2.0.0" } }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", @@ -5548,6 +5988,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -6596,6 +7042,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -7290,6 +7742,12 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "needle": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", @@ -8075,6 +8533,23 @@ } } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -9128,6 +9603,12 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -9864,6 +10345,15 @@ "xtend": "^4.0.1" } }, + "sass": { + "version": "1.26.11", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.11.tgz", + "integrity": "sha512-W1l/+vjGjIamsJ6OnTe0K37U2DBO/dgsv2Z4c89XQ8ZOO6l/VwkqwLSqoYzJeJs6CLuGSTRWc91GbQFL3lvrvw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -10120,6 +10610,25 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, "smart-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", @@ -10590,45 +11099,6 @@ } } }, - "stylus": { - "version": "0.54.7", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", - "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", - "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.3", - "mkdirp": "~0.5.x", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.0.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -10669,6 +11139,52 @@ "integrity": "sha512-bO4FIzrjESAfh4KHwkUJym3jvKtJ4oJ2PG0BBQGBmKa0pF2oanpkB7CF4ZsSX7vfp3+GKaLzioVwpV/3Tyk+lQ==", "optional": true }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "tar": { "version": "4.4.13", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", @@ -10715,6 +11231,12 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -11664,6 +12186,12 @@ "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=" }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -11719,6 +12247,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", diff --git a/package.json b/package.json index 1e0a158..2b5c5ae 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,12 @@ "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", - "theme": "default-dark", "scripts": { "start": "pm2 --node-args='-r esm' start init.js", "stop": "pm2 stop init.js", "dev": "nodemon -r esm init.js --ignore node_modules/ -e js", "debug": "nodemon inspect -r esm init.js --ignore node_modules/ -e js", - "watch": "stylus -w -o public/assets/css src/styles/dash.styl & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" + "watch": "sass --watch src/styles:public/assets/css & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" }, "engines": { "node": ">=10.16.0" @@ -58,11 +57,12 @@ "@babel/preset-env": "^7.10.2", "animejs": "^3.2.0", "babel-preset-env": "^1.7.0", - "bulma.styl": "^0.6.11", + "bulma": "^0.9.0", + "eslint": "^7.9.0", "nodemon": "^2.0.4", "parcel": "^1.12.4", "prettier": "^2.0.5", - "scramble-text": "0.0.8", - "stylus": "^0.54.7" + "sass": "^1.26.11", + "scramble-text": "0.0.8" } -} \ No newline at end of file +} diff --git a/src/styles/dash.sass b/src/styles/dash.sass new file mode 100644 index 0000000..d007988 --- /dev/null +++ b/src/styles/dash.sass @@ -0,0 +1,43 @@ +@use "sass:color" + +//Bulma +@import '../../node_modules/bulma/sass/utilities/_all' +@import '../../node_modules/bulma/sass/grid/columns' + +//Colors +@import 'main/_colors' + +//Mixins +@import 'main/_mixins' + +//Normalize +@import 'main/_normalize' + +//Typography +@import 'main/_typography' + +//Main Structure +@import 'main/_structure' + +//Index +@import 'main/_index' + +//Settings +@import 'main/_settings' + +//Error +@import 'main/_error' + +//Navigation +@import 'main/_navigation' + +//Forms +@import 'main/_forms' + +//Posts +@import 'main/_posts' + +//Editor +@import 'main/_calendar' +@import 'main/_editor' +@import 'main/_editor-highlight' diff --git a/src/styles/dash.styl b/src/styles/dash.styl deleted file mode 100644 index 6c99863..0000000 --- a/src/styles/dash.styl +++ /dev/null @@ -1,81 +0,0 @@ -/** -------------------------------- --- Bulma -------------------------------- -* */ -@import '../../node_modules/bulma.styl/stylus/utilities/_all' -@import '../../node_modules/bulma.styl/stylus/grid/columns' -/** -------------------------------- --- Colors -------------------------------- -* */ -@import 'main/_colors' -/** -------------------------------- --- Mixins -------------------------------- -* */ -@import 'main/_mixins' -/** -------------------------------- --- Normalize -------------------------------- -* */ -@import 'main/_normalize' -/** -------------------------------- --- Typography -------------------------------- -* */ -@import 'main/_typography' -/** -------------------------------- --- Main Structures -------------------------------- -* */ -@import 'main/_structure' -/** -------------------------------- --- Index -------------------------------- -* */ -@import 'main/_index' -/** -------------------------------- --- Settings -------------------------------- -* */ -@import 'main/_settings' - /** -------------------------------- --- Error -------------------------------- -* */ -@import 'main/_error' -/** -------------------------------- --- Navigation -------------------------------- -* */ -@import 'main/_navigation' -/** -------------------------------- --- Forms -------------------------------- -* */ -@import 'main/_forms' -/** -------------------------------- --- Blog -------------------------------- -* */ -@import 'main/_posts' -/** -------------------------------- --- Editor -------------------------------- -* */ -@import 'main/_calendar' -@import 'main/_editor' -@import 'main/_editor-highlight' diff --git a/src/styles/main/_calendar.sass b/src/styles/main/_calendar.sass new file mode 100644 index 0000000..d1d72dd --- /dev/null +++ b/src/styles/main/_calendar.sass @@ -0,0 +1,242 @@ +// TINY DATE +.dp-modal + position: fixed + top: 0 + left: 0 + right: 0 + bottom: 0 + // background rgba(255, 255, 255, 0.75) + @include background-opacity(color.adjust($primary, $lightness: -70%), 0.75) + z-index: 2000 + +.dp + position: relative + background: $primary + box-shadow: 2px 2px 16px rgba(0, 0, 0, 0.25) + line-height: 1.4 + border-radius: 4px + max-height: 400px + z-index: 5000 + padding-top: 6px + overflow: hidden + -webkit-tap-highlight-color: transparent + +.dp:before + content: ' ' + height: 6px + position: absolute + top: 0 + left: 0 + right: 0 + background: $highlight + // background linear-gradient(-90deg, #3B99FC 0%, #8AEFC8 100%) + +.dp-permanent .dp + padding-top: 0 + border: 1px solid #EEE + box-shadow: none + +.dp-permanent .dp:before + display: none + +.dp-cal + min-height: 300px + +.dp-below + position: absolute + font-size: 0.8em + width: 400px + max-width: 90vw + +.dp-permanent + position: relative + font-size: 0.8em + width: 400px + max-width: 100vw + +.dp-permanent .dp + z-index: 0 + +.dp-modal .dp + position: absolute + top: 50% + left: 50% + max-width: 600px + width: calc(100% - 4em) + transform: translate(-50%, -50%) + animation: slide-up 0.3s forwards + +.dp-months + padding: 24px + +.dp-years + box-sizing: border-box + max-height: 400px + padding: 8px 0 + /* HACK for Chrome on Android */ + overflow: auto !important + +.dp-cal-month, .dp-cal-year, .dp-day, .dp-month, .dp-year + box-sizing: border-box + text-align: center + text-decoration: none + position: relative + color: $white + border-radius: 2px + border: 0 + background: transparent + +.dp-cal-header + position: relative + text-align: center + padding-bottom: 16px + background: color.adjust($primary, $lightness: -10%) + +.dp-next, .dp-prev + position: absolute + width: 30px + height: 30px + overflow: hidden + top: 14px + color: color.adjust($primary, $lightness: -50%) + border-radius: 2px + border: 0 + background: transparent + +.dp-next:focus, .dp-prev:focus, .dp-next:hover, .dp-prev:hover + outline: none + color: inherit + +.dp-prev + left: 24px + +.dp-next + right: 24px + +.dp-prev:before, .dp-next:before + content: '' + border: 2px solid + width: 10px + height: 10px + display: inline-block + transform: rotate(-45deg) + transition: border-color 0.2s + margin: 9px 0 40px 4px + +.dp-prev:before + border-right: 0 + border-bottom: 0 + +.dp-next:before + border-left: 0 + border-top: 0 + margin-left: 0 + margin-right: 4px + +.dp-cal-month, .dp-cal-year + display: inline-block + font-size: 1.4em + padding: 16px 8px 8px + outline: none + +.dp-cal-footer + text-align: center + background: color.adjust($primary, $lightness: -10%) + +.dp-day-today:after + content: '' + height: 0 + width: 0 + border: 7px solid $highlight + border-bottom-color: transparent + border-left-color: transparent + position: absolute + top: 0 + right: 0 + +.dp-close, .dp-clear, .dp-today + box-sizing: border-box + display: inline-block + width: 33% + padding: 8px + text-decoration: none + color: color.adjust($primary, $lightness: -50%) + border: 0 + background: transparent + +.dp-permanent .dp-close, .dp-permanent .dp-clear + display: none + +.dp-close:active, .dp-clear:active, .dp-today:active, .dp-next:active, .dp-prev:active, .dp-cal-month:active, .dp-cal-year:active + background: $highlight + color: $white + +@media screen and (min-device-width: 1200px) + .dp-close:hover, .dp-close:focus, .dp-clear:hover, .dp-clear:focus, .dp-today:hover, .dp-today:focus, .dp-next:hover, .dp-next:focus, .dp-prev:hover, .dp-prev:focus, .dp-cal-month:focus, .dp-cal-month:hover, .dp-cal-year:hover, .dp-cal-year:focus + background: $highlight + color: $white + +.dp-col-header, .dp-day + width: 14.28571429% + display: inline-block + padding: 8px + text-align: center + +.dp-col-header + color: #AAA + text-transform: uppercase + font-weight: 300 + font-size: 0.8em + padding: 8px 0 + +.dp-month + width: 33% + display: inline-block + padding: 8px + +.dp-year + display: block + padding: 8px 40px + width: 100% + +.dp-edge-day + color: #AAA + +.dp-day:hover, .dp-month:hover, .dp-year:hover, .dp-current:focus, .dp-current, .dp-day:focus, .dp-month:focus, .dp-year:focus + outline: none + background: color.adjust($primary, $lightness: -40%) + color: $white + +.dp-selected:hover, .dp-selected:focus, .dp-selected + background: $highlight + color: color.adjust($primary, $lightness: -60%) + +.dp-day-disabled + background: transparent + color: #DDD + +.dp-day-disabled:focus, .dp-day-disabled:hover + background: #DDD + +.dp-focuser + position: absolute + z-index: 0 + top: 50% + left: 50% + +// Responsive +@media (max-width: 480px), (max-height: 480px) + .dp-modal .dp + font-size: 0.9em + width: auto + width: 100% + + .dp-day-of-week, .dp-day + padding: 8px + +@keyframes slide-up + 0% + transform: translate(-50%, 100%) + + 100% + transform: translate(-50%, -50%) \ No newline at end of file diff --git a/src/styles/main/_calendar.styl b/src/styles/main/_calendar.styl deleted file mode 100644 index cfd3fba..0000000 --- a/src/styles/main/_calendar.styl +++ /dev/null @@ -1,245 +0,0 @@ -// TINY DATE -.dp-modal - position fixed - top 0 - left 0 - right 0 - bottom 0 - // background rgba(255, 255, 255, 0.75) - background-opacity($primary - 70%, 0.75) - z-index 2000 - -.dp - position relative - background $primary // #FFF - box-shadow 2px 2px 16px rgba(0, 0, 0, 0.25) - line-height 1.4 - border-radius 4px - max-height 400px - z-index 5000 - padding-top 6px - overflow hidden - -webkit-tap-highlight-color transparent - -.dp:before - content ' ' - height 6px - position absolute - top 0 - left 0 - right 0 - background $highlight - // background linear-gradient(-90deg, #3B99FC 0%, #8AEFC8 100%) - -.dp-permanent .dp - padding-top 0 - border 1px solid #EEE - box-shadow none - -.dp-permanent .dp:before - display none - -.dp-cal - min-height 300px - -.dp-below - position absolute - font-size 0.8em - width 400px - max-width 90vw - -.dp-permanent - position relative - font-size 0.8em - width 400px - max-width 100vw - -.dp-permanent .dp - z-index 0 - -.dp-modal .dp - position absolute - top 50% - left 50% - max-width 600px - width calc(100% - 4em) - transform translate(-50%, -50%) - animation slide-up 0.3s forwards - -.dp-months - padding 24px - -.dp-years - box-sizing border-box - max-height 400px - padding 8px 0 - overflow auto !important /* HACK for Chrome on Android */ - -.dp-cal-month, .dp-cal-year, .dp-day, .dp-month, .dp-year - box-sizing border-box - text-align center - text-decoration none - position relative - color $white - border-radius 2px - border 0 - background transparent - -.dp-cal-header - position relative - text-align center - padding-bottom 16px - background $primary - 10% - -.dp-next, .dp-prev - position absolute - width 30px - height 30px - overflow hidden - top 14px - color $primary - 50% - border-radius 2px - border 0 - background transparent - -.dp-next:focus, .dp-prev:focus, .dp-next:hover, .dp-prev:hover - outline none - color inherit - -.dp-prev - left 24px - -.dp-next - right 24px - -.dp-prev:before, .dp-next:before - content '' - border 2px solid - width 10px - height 10px - display inline-block - transform rotate(-45deg) - transition border-color 0.2s - margin 9px 0 40px 4px - -.dp-prev:before - border-right 0 - border-bottom 0 - -.dp-next:before - border-left 0 - border-top 0 - margin-left 0 - margin-right 4px - -.dp-cal-month, .dp-cal-year - display inline-block - font-size 1.4em - padding 16px 8px 8px - outline none - -.dp-cal-footer - text-align center - background $primary - 10% - -.dp-day-today:after - content '' - height 0 - width 0 - border 7px solid $highlight - border-bottom-color transparent - border-left-color transparent - position absolute - top 0 - right 0 - -.dp-close, .dp-clear, .dp-today - box-sizing border-box - display inline-block - width 33% - padding 8px - text-decoration none - color $primary - 50% - border 0 - background transparent - -.dp-permanent .dp-close, .dp-permanent .dp-clear - display none - -.dp-close:active, .dp-clear:active, .dp-today:active, .dp-next:active, .dp-prev:active, .dp-cal-month:active, .dp-cal-year:active - background $highlight - color $white - -@media screen and (min-device-width: 1200px) - .dp-close:hover, .dp-close:focus, .dp-clear:hover, .dp-clear:focus, .dp-today:hover, .dp-today:focus, .dp-next:hover, .dp-next:focus, .dp-prev:hover, .dp-prev:focus, .dp-cal-month:focus, .dp-cal-month:hover, .dp-cal-year:hover, .dp-cal-year:focus - background $highlight - color $white - -.dp-col-header, .dp-day - width 14.28571429% - display inline-block - padding 8px - text-align center - -.dp-col-header - color #AAA - text-transform uppercase - font-weight 300 - font-size 0.8em - padding 8px 0 - -.dp-month - width 33% - display inline-block - padding 8px - -.dp-year - display block - padding 8px 40px - width 100% - -.dp-edge-day - color #AAA - -.dp-day:hover, .dp-month:hover, .dp-year:hover, .dp-current:focus, .dp-current, .dp-day:focus, .dp-month:focus, .dp-year:focus - outline none - background $primary - 40% - color $white - -.dp-selected:hover, .dp-selected:focus, .dp-selected - background $highlight - color $primary - 60% - -.dp-day-disabled - background transparent - color #DDD - -.dp-day-disabled:focus, .dp-day-disabled:hover - background #DDD - -.dp-focuser - position absolute - z-index 0 - top 50% - left 50% - -/** -------------------------------- --- Responsive -------------------------------- -* */ -@media (max-width: 480px), (max-height: 480px) - .dp-modal .dp - font-size 0.9em - width auto - width 100% - - .dp-day-of-week, .dp-day - padding 8px - -@keyframes slide-up - 0% - transform translate(-50%, 100%) - - 100% - transform translate(-50%, -50%) \ No newline at end of file diff --git a/src/styles/main/_colors.sass b/src/styles/main/_colors.sass new file mode 100644 index 0000000..75d8b08 --- /dev/null +++ b/src/styles/main/_colors.sass @@ -0,0 +1,17 @@ +$primary: #374857 +//$primary = #200317; deep sexy purple +$secondary: #b2cce5 +$tertiary: #f5ab35 +$highlight: #fc6399 +$white: #f2f1ef +$grey: #abb7b7 +$black: #32302f + +//editor colors +$eventCool: #32cd32 +$eventLame: #F64747 + +$editorPrimary: #fde3a7 +$editorSecondary: #ffa07a +$editorTertiary: #89c4f4 +$editorString: #f6dd74 diff --git a/src/styles/main/_colors.styl b/src/styles/main/_colors.styl deleted file mode 100644 index ff59d1d..0000000 --- a/src/styles/main/_colors.styl +++ /dev/null @@ -1,19 +0,0 @@ -$primary = #374857; -//$primary = #200317; deep sexy purple -$secondary = #b2cce5; -$tertiary = #f5ab35; -$highlight = #fc6399; -$white = #f2f1ef; -$grey = #abb7b7; -$black = #32302f; - -//editor colors -$eventCool = #32cd32 -$eventLame = #F64747 - -$editorPrimary = #fde3a7; -$editorSecondary = #ffa07a; -$editorTertiary = #89c4f4; -$editorString = #f6dd74; - -//Bulma overrides diff --git a/src/styles/main/_editor-highlight.styl b/src/styles/main/_editor-highlight.sass similarity index 63% rename from src/styles/main/_editor-highlight.styl rename to src/styles/main/_editor-highlight.sass index 0161aa1..9cf733a 100644 --- a/src/styles/main/_editor-highlight.styl +++ b/src/styles/main/_editor-highlight.sass @@ -1,46 +1,46 @@ .hljs - display block - overflow-x auto - padding 0.5em - background $primary - 5% + display: block + overflow-x: auto + padding: 0.5em + background: color.adjust($primary, $lightness: -6%) .hljs, .hljs-subst - color #ebdbb2 + color: #ebdbb2 .hljs-deletion, .hljs-formula, .hljs-keyword .hljs-selector-tag - color $editorPrimary - font-style italic + color: $editorPrimary + font-style: italic .hljs-link - color $highlight + color: $highlight .hljs-built_in, .hljs-emphasis, .hljs-name, .hljs-quote, .hljs-strong, .hljs-title, .hljs-variable - color $editorSecondary + color: $editorSecondary .hljs-attr, .hljs-params, .hljs-template-tag, .hljs-type - color $editorTertiary + color: $editorTertiary .hljs-builtin-name, .hljs-doctag, .hljs-literal, .hljs-number - color #8f3f71 + color: #8f3f71 .hljs-code, .hljs-meta, .hljs-regexp, .hljs-selector-id, .hljs-template-variable - color $tertiary + color: $tertiary .hljs-addition, .hljs-meta-string, .hljs-section, .hljs-selector-attr, .hljs-selector-class, .hljs-string, .hljs-symbol - color $editorString + color: $editorString .hljs-attribute, .hljs-bullet, .hljs-class, .hljs-function, .hljs-function .hljs-keyword, .hljs-meta-keyword, .hljs-selector-pseudo, .hljs-tag - color $primary + 50% + color: color.adjust($primary, $lightness: 50%) .hljs-comment - color #928374 + color: #928374 .hljs-link_label, .hljs-literal, .hljs-number - color #d3869b + color: #d3869b .hljs-comment, .hljs-emphasis - font-style italic + font-style: italic .hljs-section, .hljs-strong, .hljs-tag - font-weight normal + font-weight: normal diff --git a/src/styles/main/_editor.sass b/src/styles/main/_editor.sass new file mode 100644 index 0000000..782a3e6 --- /dev/null +++ b/src/styles/main/_editor.sass @@ -0,0 +1,95 @@ +#edit-control + // margin 10px + top: 1px + border-radius: 3px + // background-opacity($primary - 10%, 0.50) + width: 100% + max-width: 880px + margin-top: 30px + z-index: 2000 + + button:nth-child(1) + border-radius: 3px 0 0 3px + button:nth-child(10) + border-radius: 0 3px 3px 0 + + button + background: $secondary + width: 10% + height: 39px + @include object-transitions(0.3s) + margin: 0 + border-radius: 0 + display: inline-block + vertical-align: top + text-align: center + button:hover + background: color.adjust($secondary, $lightness: -20%) + + #option-update + padding: 5px 5px 1px 5px + display: inline-block + vertical-align: top + text-align: center + + .icon-hide + display: none + visibility: hidden + + .submit-start + background: $white + + svg + fill: $eventCool + + .submit-cool + background: $eventCool + + svg + fill: $white + + .submit-delete + background: $eventLame !important + + svg + fill: $white !important + + + + #option-date + height: 30px + padding-top: 6px + + svg + margin: -13px 5px 0 0 + display: inline-block + vertical-align: top + fill: $white + + .content-editor-btn-icon + padding: 5px 5px 1px 5px + // border-radius 20px + color: $primary + + svg + fill: $primary + + .content-editor-btn-text + padding: 5px + // border-radius 20px + color: $primary + + #option-bold + font-weight: bold + text-decoration: none + + #option-italic + font-weight: bold + text-decoration: none + font-style: italic + + #option-strikethrough + font-weight: bold + text-decoration: line-through + font-style: italic + diff --git a/src/styles/main/_editor.styl b/src/styles/main/_editor.styl deleted file mode 100644 index a69a29f..0000000 --- a/src/styles/main/_editor.styl +++ /dev/null @@ -1,95 +0,0 @@ -#edit-control - // margin 10px - top 1px - border-radius 3px - // background-opacity($primary - 10%, 0.50) - width 100% - max-width 880px - margin-top 30px - z-index 2000 - - button:nth-child(1) - border-radius 3px 0 0 3px - button:nth-child(10) - border-radius 0 3px 3px 0 - - button - background $secondary - width 10% - height 39px - object-transitions(0.3s) - margin 0 - border-radius 0 - display inline-block - vertical-align top - text-align center - button:hover - background: $secondary - 20% - - #option-update - padding 5px 5px 1px 5px - display inline-block - vertical-align top - text-align center - - .icon-hide - display none - visibility hidden - - .submit-start - background $white - - svg - fill $eventCool - - .submit-cool - background $eventCool - - svg - fill $white - - .submit-delete - background $eventLame !important - - svg - fill $white !important - - - - #option-date - height 30px - padding-top 6px - - svg - margin -13px 5px 0 0 - display inline-block - vertical-align top - fill $white - - .content-editor-btn-icon - padding 5px 5px 1px 5px - // border-radius 20px - color $primary - - svg - fill $primary - - .content-editor-btn-text - padding 5px - // border-radius 20px - color $primary - - #option-bold - font-weight bold - text-decoration none - - #option-italic - font-weight bold - text-decoration none - font-style italic - - #option-strikethrough - font-weight bold - text-decoration line-through - font-style italic - diff --git a/src/styles/main/_error.sass b/src/styles/main/_error.sass new file mode 100644 index 0000000..448b4cb --- /dev/null +++ b/src/styles/main/_error.sass @@ -0,0 +1,22 @@ +#error-index + width: 100% + max-width: 900px + margin: 0 auto + padding: 10px + height: 100% + z-index: 10 + position: relative + label#title + font-size: 100px + color: $highlight + font-weight: 500 + + label#message + font-size: 50px + color: $tertiary + font-weight: 500 + + label#error + font-size: 25px + color: $eventLame + font-weight: 500 \ No newline at end of file diff --git a/src/styles/main/_error.styl b/src/styles/main/_error.styl deleted file mode 100644 index 25dbf64..0000000 --- a/src/styles/main/_error.styl +++ /dev/null @@ -1,22 +0,0 @@ - #error-index - width 100% - max-width 900px - margin 0 auto; - padding: 10px - height 100% - z-index 10 - position relative - label#title - font-size 100px - color $highlight - font-weight: 500 - - label#message - font-size 50px - color $tertiary - font-weight: 500 - - label#error - font-size 25px - color $eventLame - font-weight: 500 \ No newline at end of file diff --git a/src/styles/main/_forms.sass b/src/styles/main/_forms.sass new file mode 100644 index 0000000..690e242 --- /dev/null +++ b/src/styles/main/_forms.sass @@ -0,0 +1,58 @@ +form + display: inline-block + +input[type=email], input[type=password], input[type=text] + border: 0 + border-radius: 5px + padding: 5px + margin: 10px 5px 0 0 + font: 15px monospace + display: inline-block + background: color.adjust($primary, $lightness: -50%) + color: $white + +textarea + border: 0 + border-radius: 3px + color: $white + font: 15px monospace + +button, input[type=submit] + background: $highlight + color: color.adjust($primary, $lightness: -30%) + font: 14px $baseType + border-radius: 5px + position: relative + cursor: pointer + border: 0 + padding: 5px 5px 0 5px + @include object_transitions(.3s) + font: 15px monospace + +select + font: 14px monospace + border: 1px solid $secondary + -webkit-appearance: none + -moz-appearance: none + appearance: none + color: $primary + +::-webkit-input-placeholder + font: 14px monospace + color: color.adjust($primary, $lightness: 50%) + +:-moz-placeholder + /* Firefox 18- */ + font: 14px monospace + color: color.adjust($primary, $lightness: 50%) + +::-moz-placeholder + /* Firefox 19+ */ + font: 14px monospace + color: color.adjust($primary, $lightness: 50%) + +:-ms-input-placeholder + font: 14px monospace + color: color.adjust($primary, $lightness: 50%) + + diff --git a/src/styles/main/_forms.styl b/src/styles/main/_forms.styl deleted file mode 100644 index 3f60c8e..0000000 --- a/src/styles/main/_forms.styl +++ /dev/null @@ -1,57 +0,0 @@ -form - display inline-block - -input[type=email], input[type=password], input[type=text] - border 0 - border-radius 3px - padding 5px - font 1em $monoType - display inline-block - background-color $primary - 60% - color $secondary - -textarea - border 0 - border-radius 3px - color $type02 - font 1em $monoType - -button, input[type=submit] - background $highlight - color $primary - 60% - font 1em $monoType - border-radius 3px - position relative - cursor pointer - border 0 - -input.large - font-size 1.4em - padding 10px - -select - font 1em $monoType - border 1px solid $secondary - -webkit-appearance none - -moz-appearance none - appearance none - // background: url(http://www.stackoverflow.com/favicon.ico) 96% / 15% no-repeat #000; - color $primary - -::-webkit-input-placeholder - font 1em $monoType - color $secondary - -:-moz-placeholder - /* Firefox 18- */ - font 1em $monoType - color $secondary - -::-moz-placeholder - /* Firefox 19+ */ - font 1em $monoType - color $secondary - -:-ms-input-placeholder - font 1em $monoType - color $secondary diff --git a/src/styles/main/_index.sass b/src/styles/main/_index.sass new file mode 100644 index 0000000..fd7bcd6 --- /dev/null +++ b/src/styles/main/_index.sass @@ -0,0 +1,251 @@ +#dash-index-content + width: 100% + height: 100% + margin: 0 auto + + #dash-index + width: 100% + height: 100% + z-index: 10 + position: relative + + #dash-index-wrapper + width: 100% + height: 100% + margin: 0 auto + + .dash-init, .dash-restore + width: 100% + max-width: 900px + margin: 0 auto + color: $secondary + label + color: $primary + + form + background: $white + padding: 15px + h1 + color: $primary + p + color: color.adjust($primary, $lightness: -60%) + border-top: 1px solid $primary + border-bottom: 1px solid $primary + padding: 10px 0 10px 0 + input.large[type=email], input[type=password], input[type=text] + margin-bottom: 15px + margin-top: 5px + button + height: 30px + width: 120px + margin: 0 auto + display: block + .dash-restore + display: none + visibility: hidden + + #dash-login + width: 100% + max-width: 900px + margin: 0 auto + + #dash-form + width: 300px + padding: 0.75em + background: $primary + border-radius: 3px + + input + width: 290px + margin: 0 0 10px 0 + height: 30px + + button + width: 300px + + #dash-menu + padding: 10px + width: 90% + max-width: 900px + margin: 50px auto + + a + display: inline-block + vertical-align: top + background: color.adjust($primary, $lightness: -60%) + width: 30% + padding: 5px + border-radius: 3px + color: $white + margin: 0 10px 10px 0 + + &:hover + background: color.adjust($primary, $lightness: -60%) + + svg + display: inline-block + vertical-align: top + fill: $white + + label + display: inline-block + margin-top: 5px + width: 85% + text-align: center + cursor: pointer + + #dash-recent + width: 100% + max-width: 900px + height: 100% + padding: 5px 0 0 0 + margin: 0 auto + + #recent-list + padding: 0.75em + position: relative + + .recent-header + height: 50px + + h3 + vertical-align: top + display: inline-block + width: 50% + + .index-menu + width: 50% + text-align: right + vertical-align: top + display: inline-block + margin: 24px 0 24px 0 + right: 10px + color: $white + + a + text-decoration-color: $highlight + + a.post-link + font-size: 1.5em + font-weight: 300 + display: inline-block + border-radius: 3px + vertical-align: top + text-decoration: none + position: relative + + label + font-size: 1.4em + font-weight: 700 + color: $white + padding: 5px + vertical-align: top + display: inline-block + word-wrap: break-word + width: 100% + text-align: center + @include text-drop-shadow($black, 1, 2px, 2px, 0) + + span + vertical-align: top + margin: 0 auto + width: 300px + display: block + font-family: $monoType + font-size: 0.5em + padding: 7px + color: $white + text-align: center + //background $primary - 60% + border-radius: 0 0 3px 3px + + div + width: 100% + position: absolute + bottom: 0 + border-radius: 0 0 3px 3px + //background-opacity($black, .35) + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%) + + #options + display: block + vertical-align: top + width: 300px + position: relative + text-align: center + margin: 0 auto + background: none + .item-options + border-radius: 3px + margin: 5px + display: inline-block + .item-options[data-active='false'] + width: 65px + background: color.adjust($primary, $lightness: -60%) + color: $white + + .item-options[data-active='true'] + width: 70px + background: color.adjust($tertiary, $lightness: 20%) + color: color.adjust($primary, $lightness: -60%) + + a:nth-child(3) + width: 100% + margin-bottom: 20px + height: 500px + + a:nth-child(4) + width: 49% + height: 275px + margin: 0 15px 15px 0 + + a:nth-child(5) + width: 49% + height: 550px + + a:nth-child(6) + width: 49% + height: 550px + margin :-260px 15px 0 0 + + a:nth-child(7) + width: 49% + height: 275px + margin: 15px 0 0 0 + +//Reponsive +@media only screen and (max-width: 768px) + #dash-index-content + #dash-index + #dash-index-wrapper + #dash-recent + #recent-list + a:nth-child(4), a:nth-child(6) + width: 48.9% + +@media only screen and (max-width: 640px) + #dash-index-content + #dash-index + #dash-index-wrapper + #dash-recent + #recent-list + a:nth-child(4), a:nth-child(6) + width: 48.5% + +@media only screen and (max-width: 480px) + #dash-index-content + #dash-index + #dash-index-wrapper + #dash-recent + #recent-list + .recent-header + h3 + width: 40% + + .index-menu + width: 60% + + a:nth-child(3), a:nth-child(4), a:nth-child(5), a:nth-child(6), a:nth-child(7) + width: 100% + margin: 15px 0 0 0 + height: 400px diff --git a/src/styles/main/_index.styl b/src/styles/main/_index.styl deleted file mode 100644 index 03d905f..0000000 --- a/src/styles/main/_index.styl +++ /dev/null @@ -1,255 +0,0 @@ -#dash-index-content - width 100% - height 100% - margin 0 auto - - #dash-index - width 100% - height 100% - z-index 10 - position relative - - #dash-index-wrapper - width 100% - height 100% - margin 0 auto - - .dash-init, .dash-restore - width 100% - max-width 900px - margin 0 auto - color $secondary - label - color $primary - - form - background $white - padding 15px - h1 - color $primary - p - color $primary - 60% - border-top 1px solid $primary - border-bottom 1px solid $primary - padding 10px 0 10px 0 - input.large[type=email], input[type=password], input[type=text] - margin-bottom 15px - margin-top 5px - button - height 30px - width 120px - margin 0 auto - display block - .dash-restore - display: none; - visibility hidden; - - #dash-login - width 100% - max-width 900px - margin 0 auto - - #dash-form - width 300px - padding 0.75em - background $primary - border-radius 3px - - input - width 290px - margin 0 0 10px 0 - height 30px - - button - width 300px - - #dash-menu - padding 10px - width 90% - max-width 900px - margin 50px auto - - a - display inline-block - vertical-align top - background $primary - 60% - width 30% - padding 5px - border-radius 3px - color $white - margin 0 10px 10px 0 - - &:hover - background $primary - 50% - - svg - display inline-block - vertical-align top - fill $white - - label - display inline-block - margin-top 5px - width 85% - text-align center - cursor pointer - - #dash-recent - width 100% - max-width 900px - height 100% - padding 5px 0 0 0 - margin 0 auto - - #recent-list - padding 0.75em - position relative - - .recent-header - height 50px - - h3 - vertical-align top - display inline-block - width 50% - - .index-menu - width 50% - text-align right - vertical-align top - display inline-block - margin 24px 0 24px 0 - right 10px - color $white - - a - text-decoration-color $highlight - - a.post-link - font-size 1.5em - font-weight 300 - display inline-block - border-radius 3px - vertical-align top - text-decoration none - position relative - - label - font-size 1.4em - font-weight 700 - color $white - padding 5px - vertical-align top - display inline-block - word-wrap break-word - width 100% - text-align center - text-drop-shadow($black, 1, 2px, 2px, 0) - - span - vertical-align top - margin 0 auto - width 300px - display block - font-family $monoType - font-size 0.5em - padding 7px - color $white - text-align: center - //background $primary - 60% - border-radius 0 0 3px 3px - - div - width 100% - position absolute - bottom 0 - border-radius 0 0 3px 3px - //background-opacity($black, .35) - background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%); - - #options - display block - vertical-align: top - width 300px - position relative - text-align: center - margin 0 auto - background none - .item-options - border-radius 3px - margin 5px - display inline-block - .item-options[data-active='false'] - width 65px - background $primary - 60% - color $white - - .item-options[data-active='true'] - width 70px - background $tertiary + 50% - color $primary - 60% - - a:nth-child(3) - width 100% - margin-bottom 20px - height 500px - - a:nth-child(4) - width 49% - height 275px - margin 0 15px 15px 0 - - a:nth-child(5) - width 49% - height 550px - - a:nth-child(6) - width 49% - height 550px - margin -260px 15px 0 0 - - a:nth-child(7) - width 49% - height 275px - margin 15px 0 0 0 - -/** -------------------------------- --- Responsive -------------------------------- -* */ -@media only screen and (max-width: 768px) - #dash-index-content - #dash-index - #dash-index-wrapper - #dash-recent - #recent-list - a:nth-child(4), a:nth-child(6) - width 48.9% - -@media only screen and (max-width: 640px) - #dash-index-content - #dash-index - #dash-index-wrapper - #dash-recent - #recent-list - a:nth-child(4), a:nth-child(6) - width 48.5% - -@media only screen and (max-width: 480px) - #dash-index-content - #dash-index - #dash-index-wrapper - #dash-recent - #recent-list - .recent-header - h3 - width 40% - - .index-menu - width 60% - - a:nth-child(3), a:nth-child(4), a:nth-child(5), a:nth-child(6), a:nth-child(7) - width 100% - margin 15px 0 0 0 - height 400px diff --git a/src/styles/main/_mixins.sass b/src/styles/main/_mixins.sass new file mode 100644 index 0000000..b3af067 --- /dev/null +++ b/src/styles/main/_mixins.sass @@ -0,0 +1,16 @@ +@mixin text-drop-shadow($rgb_value, $opacity, $offsetX, $offsetY, $blur) + text-shadow: $offsetX $offsetY $blur rgba($rgb_value, $opacity) + +@mixin object-transitions($rate) + -moz-transition: all $rate linear + -webkit-transition: all $rate linear + -o-transition: all $rate linear + transition: all $rate linear + + +@mixin background-opacity($rgb_value, $opacity) + background: rgba($rgb_value, $opacity) + +@mixin custom-header($weight, $size, $line_height, $color) + font: $weight $size/$line_height $bodyTypeSans + color: $color \ No newline at end of file diff --git a/src/styles/main/_mixins.styl b/src/styles/main/_mixins.styl deleted file mode 100644 index 92fc286..0000000 --- a/src/styles/main/_mixins.styl +++ /dev/null @@ -1,11 +0,0 @@ -text-drop-shadow(rgb-value, opacity, offsetX, offsetY, blur) - text-shadow offsetX offsetY blur rgba(rgb-value, opacity) - -object-transitions(rate) - -moz-transition all rate linear - -webkit-transition all rate linear - -o-transition all rate linear - transition all rate linear - -background-opacity(rgb-value, opacity) - background rgba(rgb-value, opacity) diff --git a/src/styles/main/_navigation.sass b/src/styles/main/_navigation.sass new file mode 100644 index 0000000..1c57a11 --- /dev/null +++ b/src/styles/main/_navigation.sass @@ -0,0 +1,62 @@ +#nav-index + width: 100% + max-width: 900px + margin: 0 auto + + #nav-index-wrapper + padding: 0.75rem + + #nav-pages + .nav-item + display: block + width: 98% + background: $primary + border-radius: 3px + color: $white + height: 30px + padding: 10px + margin: 0 0 10px 0 + font-size: 1.5em + cursor: move + + label + display: inline-block + vertical-align: middle + padding: 0 + margin: -15px 0 0 10px + cursor: move + + #nav-btns + float: right + + button + font-size: 0.8em + margin: 0 0 0 10px + +@media only screen and (max-width: 375px) + #nav-index + #nav-index-wrapper + #nav-pages + .nav-item + width: 94.5% + font-size: 1em + + label + width: 47% + vertical-align: top + margin-top: 0px + line-height: 1em + +@media only screen and (max-width: 320px) + #nav-index + #nav-index-wrapper + #nav-pages + .nav-item + width: 94.5% + font-size: 1em + + label + width: 37% + vertical-align: top + margin-top: 0px + line-height: 1em diff --git a/src/styles/main/_navigation.styl b/src/styles/main/_navigation.styl deleted file mode 100644 index 4bffd84..0000000 --- a/src/styles/main/_navigation.styl +++ /dev/null @@ -1,62 +0,0 @@ -#nav-index - width 100% - max-width 900px - margin 0 auto - - #nav-index-wrapper - padding 0.75rem - - #nav-pages - .nav-item - display block - width 98% - background $primary - border-radius 3px - color $white - height 30px - padding 10px - margin 0 0 10px 0 - font-size 1.5em - cursor move - - label - display inline-block - vertical-align middle - padding 0 - margin -15px 0 0 10px - cursor move - - #nav-btns - float right - - button - font-size 0.8em - margin 0 0 0 10px - -@media only screen and (max-width: 375px) - #nav-index - #nav-index-wrapper - #nav-pages - .nav-item - width 94.5% - font-size 1em - - label - width 47% - vertical-align top - margin-top 0px - line-height 1em - -@media only screen and (max-width: 320px) - #nav-index - #nav-index-wrapper - #nav-pages - .nav-item - width 94.5% - font-size 1em - - label - width 37% - vertical-align top - margin-top 0px - line-height 1em diff --git a/src/styles/main/_normalize.sass b/src/styles/main/_normalize.sass new file mode 100644 index 0000000..a751a9c --- /dev/null +++ b/src/styles/main/_normalize.sass @@ -0,0 +1,197 @@ +html + line-height: 1.15 + -ms-text-size-adjust: 100% + -webkit-text-size-adjust: 100% + +body + margin: 0 + +article, +aside, +footer, +header, +nav, +section + display: block + +h1 + font-size: 2em + margin: 0.67em 0 + line-height: 1em + +figcaption, +figure, +main + display: block + +figure + margin: 1em 40px + +hr + box-sizing: content-box + height: 0 + overflow: visible + +pre + font-family: monospace, monospace + font-size: 1em +a + background-color: transparent + -webkit-text-decoration-skip: objects + +a:active, +a:hover + outline-width: 0 + +abbr[title] + border-bottom: none + text-decoration: underline + text-decoration: underline dotted + +b, +strong + font-weight: inherit + font-weight: bolder + +code, +kbd, +samp + font-family: monospace, monospace + font-size: 1em + +dfn + font-style: italic + +mark + background-color: #ff0 + color: #000 + +small + font-size: 80% + +sub, +sup + font-size: 60% + line-height: 0 + position: relative + vertical-align: baseline + +sub + bottom: -0.25em + +sup + top: -0.55em + background: $primary + color: $primary + border-radius: 2px + padding: 0 2px 0 2px + margin: 0 2px 0 0 + +audio, +video + display: inline-block + +audio + &:not([controls]) + display: none + height: 0 + +img + border-style: none + +svg + &:not(:root) + overflow: hidden + +button, +input, +optgroup, +select, +textarea + font-family: sans-serif + font-size: 100% + line-height: 1.15 + margin: 0 + +button, +input + overflow: visible + +button, +select + text-transform: none + +button, html [type="button"], +[type="reset"], +[type="submit"] + -webkit-appearance: button + +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner + border-style: none + padding: 0 + +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring, +button:-moz-focusring + outline: 1px dotted ButtonText + +fieldset + border: 1px solid #c0c0c0 + margin: 0 2px + padding: 0.35em 0.625em 0.75em + +legend + box-sizing: border-box + color: inherit + display: table + max-width: 100% + padding: 0 + white-space: normal + +progress + display: inline-block + vertical-align: baseline + +textarea + overflow: auto + +[type="checkbox"], +[type="radio"] + box-sizing: border-box + padding: 0 + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button + height: auto + +[type="search"] + -webkit-appearance: textfield + outline-offset: -2px + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration + -webkit-appearance: none + +::-webkit-file-upload-button + -webkit-appearance: button + font: inherit + +details, +menu + display: block + +summary + display: list-item + +canvas + display: inline-block + +template + display: none + +[hidden] + display: none diff --git a/src/styles/main/_normalize.styl b/src/styles/main/_normalize.styl deleted file mode 100644 index 87daf2c..0000000 --- a/src/styles/main/_normalize.styl +++ /dev/null @@ -1,196 +0,0 @@ -html - line-height 1.15 - -ms-text-size-adjust 100% - -webkit-text-size-adjust 100% - -body - margin 0 - -article, -aside, -footer, -header, -nav, -section - display block - -h1 - font-size 2em - margin 0.67em 0 - -figcaption, -figure, -main - display block - -figure - margin 1em 40px - -hr - box-sizing content-box - height 0 - overflow visible - -pre - font-family monospace, monospace - font-size 1em -a - background-color transparent - -webkit-text-decoration-skip objects - -a:active, -a:hover - outline-width 0 - -abbr[title] - border-bottom none - text-decoration underline - text-decoration underline dotted - -b, -strong - font-weight inherit - font-weight bolder - -code, -kbd, -samp - font-family monospace, monospace - font-size 1em - -dfn - font-style italic - -mark - background-color #ff0 - color #000 - -small - font-size 80% - -sub, -sup - font-size 60% - line-height 0 - position relative - vertical-align baseline - -sub - bottom -0.25em - -sup - top -0.55em - background lightness($primary, 80%) - color $primary - border-radius: 2px; - padding 0 2px 0 2px - margin: 0 2px 0 0 - -audio, -video - display inline-block - -audio - &:not([controls]) - display none - height 0 - -img - border-style none - -svg - &:not(:root) - overflow hidden - -button, -input, -optgroup, -select, -textarea - font-family sans-serif - font-size 100% - line-height 1.15 - margin 0 - -button, -input - overflow visible - -button, -select - text-transform none - -button, html [type="button"], -[type="reset"], -[type="submit"] - -webkit-appearance button - -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner, -button::-moz-focus-inner - border-style none - padding 0 - -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring, -button:-moz-focusring - outline 1px dotted ButtonText - -fieldset - border 1px solid #c0c0c0 - margin 0 2px - padding 0.35em 0.625em 0.75em - -legend - box-sizing border-box - color inherit - display table - max-width 100% - padding 0 - white-space normal - -progress - display inline-block - vertical-align baseline - -textarea - overflow auto - -[type="checkbox"], -[type="radio"] - box-sizing border-box - padding 0 - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button - height auto - -[type="search"] - -webkit-appearance textfield - outline-offset -2px - -[type="search"]::-webkit-search-cancel-button, -[type="search"]::-webkit-search-decoration - -webkit-appearance none - -::-webkit-file-upload-button - -webkit-appearance button - font inherit - -details, -menu - display block - -summary - display list-item - -canvas - display inline-block - -template - display none - -[hidden] - display none diff --git a/src/styles/main/_posts.sass b/src/styles/main/_posts.sass new file mode 100644 index 0000000..38526e8 --- /dev/null +++ b/src/styles/main/_posts.sass @@ -0,0 +1,384 @@ +#post-index + width: 100% + max-width: 900px + margin: 0 auto + + #post-index-wrapper + padding: 0.75rem + overflow: hidden + + #post-index-menu + color: $white + + a + text-decoration-color: $highlight + + a.add-new-post + display: inline-block + background: $highlight + border-radius: 3px + padding: 3px + color: $white + text-align: center + margin-bottom: 10px + float: right + + .current-filter + color: $highlight + text-decoration-color: $secondary + + #posts-list + margin: 20px 0 0 0 + + a.page-link + background: $white + display: inline-block + vertical-align: top + width: 100% + text-decoration: none + margin: 0 0 20px 0 + border-radius: 3px + overflow: hidden + color: color.adjust($primary, $lightness: -60%) + + label + font-size: 2em + font-weight: 500 + padding: 10px + display: inline-block + vertical-align: top + width: 100% + + span + display: inline-block + vertical-align: top + font-size: 0.8em + font-family: $monoType + width: 50% + padding: 0 0 0 10px + + div.page-bg + width: 100% + height: 350px + background-color: $highlight + position: relative + #meta + width: 100% + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%) + border-radius: 3px + margin: auto + bottom: 0 + position: absolute + padding: 0 0 20px 0 + span + color: $white + text-align: center + margin: 0 auto + display: block + + label + font-size: 1.4em + font-weight: 700 + color: $white + padding: 5px + vertical-align: top + display: inline-block + word-wrap: break-word + width: 100% + text-align: center + @include text-drop-shadow($black, 1, 2px, 2px, 0) + #options + margin: 0 auto + width: 275px + .meta-options + border-radius: 3px + margin: 5px + display: inline-block + text-align: center + padding: 2px + .meta-options[data-active='false'] + width: 70px + background: color.adjust($primary, $lightness: -60%) + color: $white + + .meta-options[data-active='true'] + width: 75px + background: color.adjust($tertiary, $lightness: 60%) + color: color.adjust($primary, $lightness: -60%) + + p + padding: 5px 10px 5px 10px + font-size: 1.2em + font-weight: 400 + .paginate + width: 260px + display: block + margin: 0 auto + a + display: inline-block + vertical-align: top + span.count + text-align: center + padding: 5px + margin-top: -2px + display: inline-block + width: 200px + font-size: 1.5em + color: $tertiary + + +#post-edit-index + width: 100% + overflow: hidden + + #post-edit-index-wrapper + width: 100% + + #post-header + // width 100% + + background: $highlight + #post-header-wrapper + max-width: 900px + margin: 0 auto + padding: 0.75rem + label + color: $white + font-size: 0.8em + font-family: $monoType + font-weight: 600 + span + color: color.adjust($primary, $lightness: -60%) + font-size: 1.5em + + #post-title + #post_title + background: color.adjust($highlight, $lightness: 10%) + font-family: $baseType + width: 97.6% + height: 80px + font-size: 2em + color: color.adjust($primary, $lightness: -60%) + padding: 5px + margin: 0 0 5px 0 + + + #calendar-icon + background: color.adjust($primary, $lightness: -15%) + border-radius: 3px 0 0 3px + display: inline-block + padding: 5.2px + color: $secondary + + #post-meta + #post_tags + background: color.adjust($highlight, $lightness: 10%) + font-family: $baseType + width: 97.6% + height: 80px + color: color.adjust($primary, $lightness: -60%) + padding: 5px + margin: 0 0 5px 0 + + #post-options + display: inline-block + vertical-align: top + width: 100% + padding: 0 + + button:nth-child(1) + border-radius: 3px 0 0 3px + + button:nth-child(4) + border-radius: 0 3px 3px 0 + + button + width: 33.3% + height: 39px + @include object-transitions(0.3s) + margin: 0 + border-radius: 0 + display: inline-block + vertical-align: top + text-align: center + + button[data-active='false'] + background: color.adjust($primary, $lightness: -60%) + svg + fill: $white + + button[data-active='true'] + background: color.adjust($tertiary, $lightness: 5%) + svg + fill: color.adjust($primary, $lightness: -60%) + + #featured-image-upload, #post-image-upload + display: none + + #post-feature + width: 100% + + #featured-image-drop + display: flex + align-items: center + justify-content: center + width: 100% + min-height: 200px + background: color.adjust($primary, $lightness: -50%) + color: $primary + vertical-align: middle + font-family: $monoType + + label + cursor: pointer + + img + width: 100% + margin: 0 + padding: 0 + + #featured-new-image-btn + position: absolute + margin: 20px + + #new-feature-upload + padding-top: 4px + background: $white + + svg + fill: $highlight + + #edit-post + width: 100% + max-width: 880px + margin: 0 auto + + #edit-post-wrapper + //width 98.7% + max-width: 900px + border-radius: 5px + //background $primary - 10% + margin: 40px 0 40px 0 + overflow: hidden + + pre + margin: 0 + code + font-family: $monoType + padding: 5px + border-radius: 5px + line-height: 1.6em + font-size: 1.25em + color: $editorPrimary + word-wrap: normal + white-space: pre-wrap + line-break: normal + -webkit-line-break: normal + -o-line-break: normal + -moz-line-break: normal + display: inline-block + width: 100% + max-width: 900px + min-height: 200px + +//Responsive +@media only screen and (max-width: 800px) + #post-edit-index + #post-edit-index-wrapper + #post-header + #post-title + #post-date + width: 37.6% + +@media only screen and (max-width: 768px) + #post-edit-index + #post-edit-index-wrapper + #post-header + #post-title + #post-date + width: 43.1% + + #post-meta + #edit-control + max-width: 100% + + button + width: 9.91% + +@media only screen and (max-width: 640px) + #post-edit-index + #post-edit-index-wrapper + #post-header + #post-title + #post-date + width: 42% + +@media only screen and (max-width: 480px) + #post-index + #post-index-wrapper + #post-index-menu + a + font-size: 0.95em + + label + display: none + visibility: hidden + + #post-edit-index + #post-edit-index-wrapper + #post-header + #post-title + #post-options + margin: 5px 0 0 0 + width: 100% + padding: 0 + + #post-date + width: 89.2% + + #post-meta + #edit-control + button + width: 9.91% + +@media only screen and (max-width: 320px) + #post-index + #post-index-wrapper + #post-index-menu + a + font-size: 0.95em + + label + display: none + visibility: hidden + + #post-edit-index + #post-edit-index-wrapper + #post-header + #post-title + #post_title + width: 96.4% + + #post-options + margin: 5px 0 0 0 + width: 100% + padding: 0 + + #post-date + width: 83.1% + + #post-meta + #post_tags + width: 96.4% + + #edit-control + .content-editor-btn-icon + svg.icons + width: 20px + + .post-sumbit-btn + svg.icons + width: 20px + + button + width: 10% diff --git a/src/styles/main/_posts.styl b/src/styles/main/_posts.styl deleted file mode 100644 index 852d723..0000000 --- a/src/styles/main/_posts.styl +++ /dev/null @@ -1,388 +0,0 @@ -#post-index - width 100% - max-width 900px - margin 0 auto - - #post-index-wrapper - padding 0.75rem - overflow hidden - - #post-index-menu - color $white - - a - text-decoration-color $highlight - - a.add-new-post - display inline-block - background $highlight - border-radius 3px - padding 3px - color $white - text-align center - margin-bottom 10px - float right - - .current-filter - color $highlight - text-decoration-color $secondary - - #posts-list - margin 20px 0 0 0 - - a.page-link - background $white - display inline-block - vertical-align top - width 100% - text-decoration none - margin 0 0 20px 0 - border-radius 3px - overflow hidden - color $primary - 60% - - label - font-size 2em - font-weight 500 - padding 10px - display inline-block - vertical-align top - width 100% - - span - display inline-block - vertical-align top - font-size 0.8em - font-family $monoType - width 50% - padding 0 0 0 10px - - div.page-bg - width 100% - height 350px - background-color $highlight - position relative - #meta - width 100% - background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%); - border-radius 3px - margin auto - bottom 0 - position absolute - padding 0 0 20px 0 - span - color $white - text-align center - margin 0 auto - display block - - label - font-size 1.4em - font-weight 700 - color $white - padding 5px - vertical-align top - display inline-block - word-wrap break-word - width 100% - text-align center - text-drop-shadow($black, 1, 2px, 2px, 0) - #options - margin 0 auto - width: 275px - .meta-options - border-radius 3px - margin 5px - display inline-block - text-align: center - padding 2px - .meta-options[data-active='false'] - width 70px - background $primary - 60% - color $white - - .meta-options[data-active='true'] - width 75px - background $tertiary + 50% - color $primary - 60% - - p - padding 5px 10px 5px 10px - font-size 1.2em - font-weight 400 - .paginate - width 260px - display block - margin 0 auto - a - display inline-block - vertical-align: top - span.count - text-align center - padding 5px - margin-top -2px - display inline-block - width 200px - font-size: 1.5em - color $tertiary - - -#post-edit-index - width 100% - overflow hidden - - #post-edit-index-wrapper - width 100% - - #post-header - // width 100% - - background $highlight - #post-header-wrapper - max-width 900px - margin 0 auto - padding 0.75rem - label - color: $white - font-size: 0.8em - font-family $monoType - font-weight 600 - span - color color $primary - 60% - font-size 1.5em - - #post-title - #post_title - background $highlight + 10% - font-family $baseType - width 97.6% - height 80px - font-size 2em - color $primary - 60% - padding 5px - margin 0 0 5px 0 - - - #calendar-icon - background $primary - 15% - border-radius 3px 0 0 3px - display inline-block - padding 5.2px - color $secondary - - #post-meta - #post_tags - background $highlight + 10% - font-family $baseType - width 97.6% - height 80px - color $primary - 60% - padding 5px - margin 0 0 5px 0 - - #post-options - display inline-block - vertical-align top - width 100% - padding 0 - - button:nth-child(1) - border-radius 3px 0 0 3px - - button:nth-child(4) - border-radius 0 3px 3px 0 - - button - width 33.3% - height 39px - object-transitions(0.3s) - margin 0 - border-radius 0 - display inline-block - vertical-align top - text-align center - - button[data-active='false'] - background $primary - 60% - svg - fill $white - - button[data-active='true'] - background $tertiary + 50% - svg - fill $primary - 60% - - #featured-image-upload, #post-image-upload - display none - - #post-feature - width 100% - - #featured-image-drop - display flex - align-items center - justify-content center - width 100% - min-height 200px - background $primary - 50% - color $primary - vertical-align middle - font-family $monoType - - label - cursor pointer - - img - width 100% - margin 0 - padding 0 - - #featured-new-image-btn - position absolute - margin 20px - - #new-feature-upload - padding-top 4px - background $white - - svg - fill $highlight - - #edit-post - width 100% - max-width 880px - margin 0 auto - - #edit-post-wrapper - //width 98.7% - max-width 900px - border-radius 5px - //background $primary - 10% - margin: 40px 0 40px 0 - overflow hidden - - pre - margin 0 - code - font-family $monoType - padding 5px - border-radius 5px - line-height 1.6em - font-size 1.25em - color $editorPrimary - word-wrap normal - white-space pre-wrap - line-break normal - -webkit-line-break normal - -o-line-break normal - -moz-line-break normal - display inline-block - width 100% - max-width 900px - min-height 200px - -/** -------------------------------- --- Responsive -------------------------------- -* */ -@media only screen and (max-width: 800px) - #post-edit-index - #post-edit-index-wrapper - #post-header - #post-title - #post-date - width 37.6% - -@media only screen and (max-width: 768px) - #post-edit-index - #post-edit-index-wrapper - #post-header - #post-title - #post-date - width 43.1% - - #post-meta - #edit-control - max-width 100% - - button - width 9.91% - -@media only screen and (max-width: 640px) - #post-edit-index - #post-edit-index-wrapper - #post-header - #post-title - #post-date - width 42% - -@media only screen and (max-width: 480px) - #post-index - #post-index-wrapper - #post-index-menu - a - font-size 0.95em - - label - display none - visibility hidden - - #post-edit-index - #post-edit-index-wrapper - #post-header - #post-title - #post-options - margin 5px 0 0 0 - width 100% - padding 0 - - #post-date - width 89.2% - - #post-meta - #edit-control - button - width 9.91% - -@media only screen and (max-width: 320px) - #post-index - #post-index-wrapper - #post-index-menu - a - font-size 0.95em - - label - display none - visibility hidden - - #post-edit-index - #post-edit-index-wrapper - #post-header - #post-title - #post_title - width 96.4% - - #post-options - margin 5px 0 0 0 - width 100% - padding 0 - - #post-date - width 83.1% - - #post-meta - #post_tags - width 96.4% - - #edit-control - .content-editor-btn-icon - svg.icons - width 20px - - .post-sumbit-btn - svg.icons - width 20px - - button - width 10% diff --git a/src/styles/main/_settings.sass b/src/styles/main/_settings.sass new file mode 100644 index 0000000..4d53d12 --- /dev/null +++ b/src/styles/main/_settings.sass @@ -0,0 +1,176 @@ +#settings-actions + position: fixed + width: 40% + margin-top: -85px + left: 50% + margin-left: -20% + #buttons + width: 155px + margin: 0 auto + button + //width 30% + margin: 5px + svg + fill: $white + button[data-render='false'] + background: color.adjust($primary, $lightness: -60%) + svg + fill: $white + + button[data-render='true'] + background: color.adjust($tertiary, $lightness: 60%) + svg + fill: color.adjust($primary, $lightness: -60%) + + +#site-background + margin: 0 0 10px 0 + + img + width: 100% + // border 5px solid $white + border-radius: 0 + overflow: hidden + cursor: pointer + + label + position: absolute + color: $white + margin: 5px + background: color.adjust($primary, $lightness: -60%) + padding: 5px + border-radius: 3px + + input + visibility: hidden + display: none + +#settings-index + width: 94% + max-width: 900px + margin: 0 auto + + #settings-index-wrapper + padding: 0.75rem + + button + margin-top: 5px + width: 100% + height: 45px + + #member-settings, #site-settings, #option-settings, #member-utils + background: $primary + padding: 5px + border-radius: 5px 0 5px 0 + + label + font-family: $monoType + color: $white + span + color: $secondary + + input + width: 95% + margin: 0 5px 10px 0 + height: 30px + padding: 10px + input#backup-upload + visibility: hidden + display: none + .backup-meta + background: color.adjust($primary, $lightness: -60%) + color: $white + padding: 8px + border-radius: 3px + margin: 5px 0 0 0 + + width: 100% + margin: 20px auto + + #member-avatar-drop + display: inline-block + margin: 0 0 10px 0 + + img + width: 100% + // border 5px solid $white + border-radius: 5px + overflow: hidden + cursor: pointer + display: block + margin-bottom: 2px + + input + visibility: hidden + display: none + #privacy-toggle + width: 50% + #render-toggle + width: 50% + + #member-info + vertical-align: top + display: inline-block + width: 100% + + input + width: 95% + margin: 0 5px 10px 0 + + textarea + background: color.adjust($primary, $lightness: -60%) + width: 95% + height: 155px + color: $secondary + padding: 10px + + #option-settings + #theme-settings + a + width: 95% + margin: 0 5px 5px 0 + height: 25px + padding: 10px + display: inline-block + + a[data-enabled='false'] + background: color.adjust($primary, $lightness: -60%) + color: $secondary + border-radius: 3px + + a[data-enabled='true'] + background: $secondary + color: $primary + border-radius: 3px + + svg + fill: $primary + display: inline-block + float: right + + #mail-settings + min-height: 240px + + a.mail-option + float: right + font-family: $monoType + font-size: 0.9em + border-radius: 3px + text-decoration: none + margin: 0 0 0 5px + // padding: 1px + + a.mail-option[data-enabled='true'] + color: $highlight + + a.mail-option[data-enabled='false'] + color: $white + + input + // width 94% + margin: 0 5px 5px 0 + vertical-align: top + + div[data-enabled='false'] + display: none + visibility: hidden \ No newline at end of file diff --git a/src/styles/main/_settings.styl b/src/styles/main/_settings.styl deleted file mode 100644 index a8910e7..0000000 --- a/src/styles/main/_settings.styl +++ /dev/null @@ -1,176 +0,0 @@ -#settings-actions - position fixed - width 40% - margin-top -85px - left 50% - margin-left -20% - #buttons - width 155px - margin 0 auto - button - //width 30% - margin 5px - svg - fill $white - button[data-render='false'] - background $primary - 60% - svg - fill $white - - button[data-render='true'] - background $tertiary + 50% - svg - fill $primary - 60% - - -#site-background - margin 0 0 10px 0 - - img - width 100% - // border 5px solid $white - border-radius 0 - overflow hidden - cursor pointer - - label - position absolute - color $white - margin 5px - background $primary - 60% - padding 5px - border-radius 3px - - input - visibility hidden - display none - -#settings-index - width 94% - max-width 900px - margin 0 auto - - #settings-index-wrapper - padding 0.75rem - - button - margin-top 5px - width 100% - height 45px - - #member-settings, #site-settings, #option-settings, #member-utils - background $primary - padding 5px - border-radius 5px 0 5px 0 - - label - font-family $monoType - color $white - span - color $secondary - - input - width 95% - margin 0 5px 10px 0 - height 30px - padding 10px - input#backup-upload - visibility hidden - display none - .backup-meta - background $primary - 60% - color $white - padding 8px - border-radius 3px - margin 5px 0 0 0 - - width 100% - margin 20px auto - - #member-avatar-drop - display inline-block - margin 0 0 10px 0 - - img - width 100% - // border 5px solid $white - border-radius 5px - overflow hidden - cursor pointer - display block - margin-bottom 2px - - input - visibility hidden - display none - #privacy-toggle - width 50% - #render-toggle - width 50% - - #member-info - vertical-align top - display inline-block - width 100% - - input - width 95% - margin 0 5px 10px 0 - - textarea - background $primary - 60% - width 95% - height 155px - color $secondary - padding 10px - - #option-settings - #theme-settings - a - width 95% - margin 0 5px 5px 0 - height 25px - padding 10px - display inline-block - - a[data-enabled='false'] - background $primary - 60% - color $secondary - border-radius 3px - - a[data-enabled='true'] - background $secondary - color $primary - border-radius 3px - - svg - fill $primary - display inline-block - float right - - #mail-settings - min-height 240px - - a.mail-option - float right - font-family $monoType - font-size 0.9em - border-radius 3px - text-decoration none - margin 0 0 0 5px - // padding: 1px - - a.mail-option[data-enabled='true'] - color $highlight - - a.mail-option[data-enabled='false'] - color $white - - input - // width 94% - margin 0 5px 5px 0 - vertical-align top - - div[data-enabled='false'] - display none - visibility hidden \ No newline at end of file diff --git a/src/styles/main/_structure.sass b/src/styles/main/_structure.sass new file mode 100644 index 0000000..33d5ebd --- /dev/null +++ b/src/styles/main/_structure.sass @@ -0,0 +1,161 @@ +html, body + background-color: color.adjust($primary, $lightness: -20%) + font: 400 1em $baseType + height: 100% + +a + font: 300 1em $baseType + color: $secondary + text-decoration: underline + @include object-transitions(0.1s) + + &:hover + color: color.adjust($secondary, $lightness: 10%) + +svg.icons + width: 25px + fill: $secondary + +#notifications + perspective: 1000px + position: fixed + z-index: 2000 + height: 55px + width: 100% + display: block + align-items: center + justify-content: center + padding: 0 + margin-top: -55px + #notifyMessage + margin: 0 auto + //ks-easing( "out-back" ); + transition: all 0.6s cubic-bezier(.83,.05,.28,1.0) + //padding-top -125px + height: 50px + width: 500px + display: flex + align-items: center + justify-content: center + opacity: 1 + transform-style: preserve-3d + transform: rotateX(-120deg) + transform-origin: 50% 0 + #notify-good, #notify-lame, #notify-working + display: none + .notify-icon + background: $black + padding: 8px 5px 5px 5px + border-radius: 5px 0 0 5px + height: 30px + width: 30px + text-align: center + border: 2px solid $white + p + color: $white + background: color.adjust($primary, $lightness: -60%) + width: 400px + height: 28px + padding: 15px 0 0 5px + border-radius: 0 5px 5px 0 + border: 2px solid $white + text-align: center + + .icons + fill: $white + +.notify-close + transform-style: preserve-3d + transform: rotateX(-120deg) + +.notify-open + transform-style: preserve-3d + transform: rotateX(0deg) +.blog-container + width: 100% + +.main-container + margin: 0 auto + z-index: 10 + position: relative + + section + header + width: 100% + max-width: 900px + margin: 0 auto + + #wrapper + padding: 0.75rem + + #left, #right + width: 50% + display: inline-block + vertical-align: top + + #the-logo + width: 40px + + #right + text-align: right + color: $white + + a + text-decoration-color: $highlight + font-weight: 400 + + label#the-title + font-size: 1.2em + font-weight: 400 + color: $tertiary + text-decoration: none + display: block + line-height: 0.8 + // word-break: break-all; + + #dash-menu + text-align: right + +/* Mozilla based browsers */ +::-moz-selection + background-color: $highlight + color: $white + +/* Works in Safari */ +::selection + background-color: $highlight + color: $white + +/* Works in Opera */ +::-o-selection + background-color: $highlight + color: $white + +::-ms-selection + background-color: $highlight + color: $white + +/* Works in Internet Explorer */ +::-webkit-selection + background-color: $highlight + color: $white + +//Responsive +@media only screen and (max-width: 800px) + .main-container + section + header + #wrapper + #left, #right + display: inline-block + +@media only screen and (max-width: 480px) + .main-container + section + header + #wrapper + #left + width: 30% + + #right + width: 70% diff --git a/src/styles/main/_structure.styl b/src/styles/main/_structure.styl deleted file mode 100644 index 1eec698..0000000 --- a/src/styles/main/_structure.styl +++ /dev/null @@ -1,164 +0,0 @@ -html, body - background-color $primary - 60% - font 400 1em $baseType - height 100% - -a - font 300 1em $baseType - color $secondary - text-decoration underline - object-transitions(0.1s) - - &:hover - color $secondary + 10% - -svg.icons - width 25px - fill $secondary - -#notifications - perspective 1000px - position fixed - z-index 2000 - height 55px - width 100% - display block - align-items center - justify-content center - padding 0 - margin-top: -55px - #notifyMessage - margin 0 auto - transition all 0.6s cubic-bezier(.83,.05,.28,1.0)//ks-easing( "out-back" ); - //padding-top -125px - height 50px; - width 500px - display: flex; - align-items center - justify-content center - opacity: 1 - transform-style preserve-3d - transform: rotateX(-120deg) - transform-origin: 50% 0; - #notify-good, #notify-lame, #notify-working - display: none - .notify-icon - background $black - padding 8px 5px 5px 5px - border-radius 5px 0 0 5px - height 30px - width 30px - text-align center - border 2px solid $white - p - color $white - background $primary - 60% - width 400px - height 28px - padding 15px 0 0 5px - border-radius 0 5px 5px 0 - border 2px solid $white - text-align center - - .icons - fill $white - -.notify-close - transform-style preserve-3d - transform: rotateX(-120deg) - -.notify-open - transform-style preserve-3d - transform: rotateX(0deg) -.blog-container - width 100% - -.main-container - margin 0 auto - z-index 10 - position relative - - section - header - width 100% - max-width 900px - margin 0 auto - - #wrapper - padding 0.75rem - - #left, #right - width 50% - display inline-block - vertical-align top - - #the-logo - width 40px - - #right - text-align right - color $white - - a - text-decoration-color $highlight - font-weight: 400 - - label#the-title - font-size 1.2em - font-weight 400 - color $tertiary - text-decoration none - display block - line-height 0.8 - // word-break: break-all; - - #dash-menu - text-align right - -/* Mozilla based browsers */ -::-moz-selection - background-color $highlight - color $white - -/* Works in Safari */ -::selection - background-color $highlight - color $white - -/* Works in Opera */ -::-o-selection - background-color $highlight - color $white - -::-ms-selection - background-color $highlight - color $white - -/* Works in Internet Explorer */ -::-webkit-selection - background-color $highlight - color $white - -/** -------------------------------- --- Responsive -------------------------------- -* */ -@media only screen and (max-width: 800px) - .main-container - section - header - #wrapper - #left, #right - display inline-block - -@media only screen and (max-width: 480px) - .main-container - section - header - #wrapper - #left - width 30% - - #right - width 70% diff --git a/src/styles/main/_typography.sass b/src/styles/main/_typography.sass new file mode 100644 index 0000000..f570246 --- /dev/null +++ b/src/styles/main/_typography.sass @@ -0,0 +1,18 @@ +$baseType: Helvetica, Arial, sans-serif +$monoType: monospace, courier + +h1, h2, h3 + color: $white + +h1 + font-size: 2em + font-weight: 400 + +h2 + font-size: 1.75em + font-weight: 400 + +h3 + font-size: 1.5em + font-weight: 300 + diff --git a/src/styles/main/_typography.styl b/src/styles/main/_typography.styl deleted file mode 100644 index 444889f..0000000 --- a/src/styles/main/_typography.styl +++ /dev/null @@ -1,119 +0,0 @@ -@font-face - font-weight 300 - font-style normal - font-family 'Apercu' - src url('fonts/Apercu-Light.eot'), - url('fonts/Apercu-Light.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-Light.woff2') format('woff2'), - url('fonts/Apercu-Light.woff') format('woff'), - url('fonts/Apercu-Light.ttf') format('truetype'), - url('fonts/Apercu-Light.svg?#Apercu') format('svg') - -@font-face - font-weight 300 - font-style italic - font-family 'Apercu' - src url('fonts/Apercu-LightItalic.eot'), - url('fonts/Apercu-LightItalic.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-LightItalic.woff2') format('woff2'), - url('fonts/Apercu-LightItalic.woff') format('woff'), - url('fonts/Apercu-LightItalic.ttf') format('truetype'), - url('fonts/Apercu-LightItalic.svg?#Apercu') format('svg') - -@font-face - font-weight 400 - font-style normal - font-family 'Apercu' - src url('fonts/Apercu.eot'), - url('fonts/Apercu.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu.woff2') format('woff2'), - url('fonts/Apercu.woff') format('woff'), - url('fonts/Apercu.ttf') format('truetype'), - url('fonts/Apercu.svg?#Apercu') format('svg') - -@font-face - font-weight 400 - font-style italic - font-family 'Apercu' - src url('fonts/Apercu-Italic.eot'), - url('fonts/Apercu-Italic.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-Italic.woff2') format('woff2'), - url('fonts/Apercu-Italic.woff') format('woff'), - url('fonts/Apercu-Italic.ttf') format('truetype'), - url('fonts/Apercu-Italic.svg?#Apercu') format('svg') - -@font-face - font-weight 500 - font-style normal - font-family 'Apercu' - src url('fonts/Apercu-Medium.eot'), - url('fonts/Apercu-Medium.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-Medium.woff2') format('woff2'), - url('fonts/Apercu-Medium.woff') format('woff'), - url('fonts/Apercu-Medium.ttf') format('truetype'), - url('fonts/Apercu-Medium.svg?#Apercu') format('svg') - -@font-face - font-weight 500 - font-style italic - font-family 'Apercu' - src url('fonts/Apercu-MediumItalic.eot'), - url('fonts/Apercu-MediumItalic.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-MediumItalic.woff2') format('woff2'), - url('fonts/Apercu-MediumItalic.woff') format('woff'), - url('fonts/Apercu-MediumItalic.ttf') format('truetype'), - url('fonts/Apercu-MediumItalic.svg?#Apercu') format('svg') - -@font-face - font-weight 600 - font-style normal - font-weight bold - font-family 'Apercu' - src url('fonts/Apercu-Bold.eot'), - url('fonts/Apercu-Bold.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-Bold.woff2') format('woff2'), - url('fonts/Apercu-Bold.woff') format('woff'), - url('fonts/Apercu-Bold.ttf') format('truetype'), - url('fonts/Apercu-Bold.svg?#Apercu') format('svg') - -@font-face - font-weight 600 - font-style italic - font-weight bold - font-family 'Apercu' - src url('fonts/Apercu-BoldItalic.eot'), - url('fonts/Apercu-BoldItalic.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-BoldItalic.woff2') format('woff2'), - url('fonts/Apercu-BoldItalic.woff') format('woff'), - url('fonts/Apercu-BoldItalic.ttf') format('truetype'), - url('fonts/Apercu-Bold.svg?#Apercu') format('svg') - -@font-face - font-weight 400 - font-style normal - font-family 'Apercu-Mono' - src url('fonts/Apercu-Mono.eot'), - url('fonts/Apercu-Mono.eot?#iefix') format('embedded-opentype'), - url('fonts/Apercu-Mono.woff2') format('woff2'), - url('fonts/Apercu-Mono.woff') format('woff'), - url('fonts/Apercu-Mono.ttf') format('truetype'), - url('fonts/Apercu-Mono.svg?#Apercu') format('svg') - -$baseType = Helvetica, Arial, sans-serif; -$monoType = monospace, courier - -h1, h2, h3 - color $white - -h1 - font-size 2em - font-weight 400 - -h2 - font-size 1.75em - font-weight 400 - -h3 - font-size 1.5em - font-weight 300 - -- 2.25.1 From 7df3d22a29b3f89b1ee686b982bfb58dd5765d97 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 21 Sep 2020 19:41:49 -0700 Subject: [PATCH 041/250] color tweaks, fixed settings header cutting of action buttons isssue, updated monospace font list --- src/styles/main/_forms.sass | 21 +++++++++++---------- src/styles/main/_settings.sass | 4 ++-- src/styles/main/_structure.sass | 1 + src/styles/main/_typography.sass | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/styles/main/_forms.sass b/src/styles/main/_forms.sass index 690e242..8bdf6de 100644 --- a/src/styles/main/_forms.sass +++ b/src/styles/main/_forms.sass @@ -6,20 +6,21 @@ input[type=email], input[type=password], input[type=text] border-radius: 5px padding: 5px margin: 10px 5px 0 0 - font: 15px monospace + font: 15px $monoType display: inline-block - background: color.adjust($primary, $lightness: -50%) + background: color.adjust($primary, $lightness: -20%) color: $white textarea border: 0 border-radius: 3px color: $white - font: 15px monospace + font: 15px $monoType + ackground: color.adjust($primary, $lightness: -20%) button, input[type=submit] background: $highlight - color: color.adjust($primary, $lightness: -30%) + color: color.adjust($primary, $lightness: -20%) font: 14px $baseType border-radius: 5px position: relative @@ -27,10 +28,10 @@ button, input[type=submit] border: 0 padding: 5px 5px 0 5px @include object_transitions(.3s) - font: 15px monospace + font: 15px $monoType select - font: 14px monospace + font: 14px $monoType border: 1px solid $secondary -webkit-appearance: none -moz-appearance: none @@ -38,21 +39,21 @@ select color: $primary ::-webkit-input-placeholder - font: 14px monospace + font: 14px $monoType color: color.adjust($primary, $lightness: 50%) :-moz-placeholder /* Firefox 18- */ - font: 14px monospace + font: 14px $monoType color: color.adjust($primary, $lightness: 50%) ::-moz-placeholder /* Firefox 19+ */ - font: 14px monospace + font: 14px $monoType color: color.adjust($primary, $lightness: 50%) :-ms-input-placeholder - font: 14px monospace + font: 14px $monoType color: color.adjust($primary, $lightness: 50%) diff --git a/src/styles/main/_settings.sass b/src/styles/main/_settings.sass index 4d53d12..7a87add 100644 --- a/src/styles/main/_settings.sass +++ b/src/styles/main/_settings.sass @@ -78,7 +78,7 @@ visibility: hidden display: none .backup-meta - background: color.adjust($primary, $lightness: -60%) + background: color.adjust($primary, $lightness: -20%) color: $white padding: 8px border-radius: 3px @@ -118,7 +118,7 @@ margin: 0 5px 10px 0 textarea - background: color.adjust($primary, $lightness: -60%) + background: color.adjust($primary, $lightness: -20%) width: 95% height: 155px color: $secondary diff --git a/src/styles/main/_structure.sass b/src/styles/main/_structure.sass index 33d5ebd..46ddc0a 100644 --- a/src/styles/main/_structure.sass +++ b/src/styles/main/_structure.sass @@ -92,6 +92,7 @@ svg.icons width: 50% display: inline-block vertical-align: top + min-height: 60px #the-logo width: 40px diff --git a/src/styles/main/_typography.sass b/src/styles/main/_typography.sass index f570246..00a834a 100644 --- a/src/styles/main/_typography.sass +++ b/src/styles/main/_typography.sass @@ -1,5 +1,5 @@ $baseType: Helvetica, Arial, sans-serif -$monoType: monospace, courier +$monoType: "Lucida Console", Monaco, monospace h1, h2, h3 color: $white -- 2.25.1 From 1130bcabdb5c461a6fd9537ed902c3558f072888 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 29 Sep 2020 22:26:30 +0000 Subject: [PATCH 042/250] pages re-indexing up and running, added button to settings under MAINTENANCE tab --- brain/api/v1/settings.js | 27 ++++++++++++++++++- brain/data/Book.js | 40 ++++++++++++++++++++++++++++ brain/data/Settings.js | 28 +++++++++++++++++-- brain/data/Utils.js | 4 --- brain/views/settings.pug | 4 ++- src/com/controllers/SettingsIndex.js | 19 +++++++++++++ src/com/events/DataEvent.js | 1 + src/libraries/FipamoAdminAPI.js | 22 ++++++++++++++- 8 files changed, 136 insertions(+), 9 deletions(-) diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js index 080c726..d191368 100644 --- a/brain/api/v1/settings.js +++ b/brain/api/v1/settings.js @@ -67,7 +67,7 @@ router.post('/sync', (req, res) => { router.post('/nav-sync', (req, res) => { auth.authCheck(req) .then(() => { - // find removoed menu item page and set menu to false + // find removed menu item page and set menu to false book.getPage(req.body.remove).then(page => { let body = page.metadata; body.content = page.content; @@ -206,6 +206,31 @@ router.post('/add-feature-background', background_upload, (req, res) => { } }); +router.post('/reindex', (req, res) => { + auth.authCheck(req) + .then(() => { + book.reindexPages(req) + .then(response => { + //reset settings index + settings.resetLibraryIndex(response.count + 1); + //return success to front end + res.json(response); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); + }) + .catch(err => { + res.json({ + type: err.type, + message: err.message + }); + }); +}); + module.exports = router; function getBookData() { diff --git a/brain/data/Book.js b/brain/data/Book.js index 3c4918d..33b4fdb 100644 --- a/brain/data/Book.js +++ b/brain/data/Book.js @@ -227,6 +227,46 @@ export default class Book { }); } + reindexPages(req) { + var response = ''; + var self = this; + return new Promise((resolve, reject) => { + self.getPage() + .then(pages => { + let sorted = []; + for (let i = 0; i < pages.length; i++) { + let body = pages[i].metadata; + body.content = pages[i].content; + sorted.push(body); + } + //resorts pages by date created + let byDate = _.sortBy(sorted, page => { + return page.created; + }); + //reassigns id sequentially based on sorted pages + for (let index = 0; index < byDate.length; index++) { + byDate[index].id = index; + self.editPage( + byDate[index], + index, + DataEvent.API_PAGE_WRITE, + req.session.user + ); + } + response = { + type: DataEvent.API_REINDEX_PAGES, + message: 'Pages re-sorted. Easy peasy.', + count: byDate.length + }; + resolve(response); + }) + .catch(err => { + response = { type: DataEvent.PAGE_ERROR, message: err }; + reject(response); + }); + }); + } + //-------------------------- // event handlers //-------------------------- diff --git a/brain/data/Settings.js b/brain/data/Settings.js index fc9829e..95e8c86 100644 --- a/brain/data/Settings.js +++ b/brain/data/Settings.js @@ -122,8 +122,32 @@ export default class Settings { updatePageIndex() { fs.readJSON('site/settings.json').then(settings => { settings.library_stats.current_index = ++settings.library_stats.current_index; - //settings.library_stats.total_pages = ++settings.library_stats.total_pages; - fs.writeJSON('site/settings.json', settings); + setTimeout(() => { + //TODO: Duct tape solution until something better created + fs.writeJSON('site/settings.json', settings) + .then(() => { + //console.log('ALL TO THE GOOD'); + }) + .catch(() => { + //.log('ERR', err); + }); + }, 100); + }); + } + + resetLibraryIndex(index) { + fs.readJSON('site/settings.json').then(settings => { + settings.library_stats.current_index = index; + setTimeout(() => { + //TODO: Duct tape solution until something better created + fs.writeJSON('site/settings.json', settings) + .then(() => { + //console.log('ALL TO THE GOOD'); + }) + .catch(() => { + //.log('ERR', err); + }); + }, 100); }); } load(fileToLoad) { diff --git a/brain/data/Utils.js b/brain/data/Utils.js index 071ab38..fcbb6b8 100644 --- a/brain/data/Utils.js +++ b/brain/data/Utils.js @@ -97,10 +97,6 @@ export default class Utils { } render.publishArchive(archive); } - reindexPages(pages) { - conosle.log('PAGES'); - //let byDate = _.sortBy(pages, ['created']); - } moveAssets() { settings .load(SETTINGS_FILE) diff --git a/brain/views/settings.pug b/brain/views/settings.pug index 9b7c3e6..523bd1e 100644 --- a/brain/views/settings.pug +++ b/brain/views/settings.pug @@ -56,7 +56,9 @@ block main-content button#restore-backup(for='backup-upload') RESTORE BACKUP input(id="backup-upload" type="file" name="backup-upload") #util-2.column - label MAINTENANCE + label MAINTENANCE + br + button#reindex-pages REINDEX PAGES #option-settings.columns #theme-settings.column label THEMES diff --git a/src/com/controllers/SettingsIndex.js b/src/com/controllers/SettingsIndex.js index 9899004..ee3b892 100644 --- a/src/com/controllers/SettingsIndex.js +++ b/src/com/controllers/SettingsIndex.js @@ -92,6 +92,10 @@ export default class SettingsIndex { document .getElementById('create-backup') .addEventListener('click', e => this.handleBackup(e)); + + document + .getElementById('reindex-pages') + .addEventListener('click', e => this.handleReindex(e)); } //-------------------------- // event handlers @@ -199,4 +203,19 @@ export default class SettingsIndex { notify.alert(err, false); }); } + + handleReindex(e) { + e.preventDefault(); + e.stopPropagation(); + let task = { task: 'cleanup pages indexes' }; + notify.alert('Cleaning up page indexes', null); + admin + .handleReindex(task) + .then(r => { + notify.alert(r.message, true); + }) + .catch(err => { + notify.alert(err, false); + }); + } } diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index f053afb..2958cad 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -32,6 +32,7 @@ export const API_BACKUP_DOWNLOAD = 'downloadBackup'; export const API_BACKUP_RESTORE = 'downloadBackup'; export const API_IMAGES_UPLOAD = 'uploadProfileImages'; export const API_RENDER_PAGES = 'renderPages'; +export const API_REINDEX_PAGES = 'reindexPages'; export const API_INIT = 'blogInit'; export const API_INIT_GOOD = 'blogInitGood'; export const API_INIT_LAME = 'blogInitLame'; diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 7436dec..d34b1d7 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -18,6 +18,7 @@ export const API_UPLOAD_AVATAR = '/api/v1/settings/add-avatar'; export const API_UPLOAD_BACKGROUND = '/api/v1/settings/add-feature-background'; export const API_PUBLISH_PAGES = '/api/v1/settings/publish-pages'; export const API_NAV_SYNC = '/api/v1/settings/nav-sync'; +export const API_REINDEX_PAGES = '/api/v1/settings/reindex'; export const API_CREATE_BACKUP = '/api/v1/backup/create'; export const API_DOWNLOAD_BACKUP = '/api/v1/backup/download'; export const API_RESTORE_BACKUP = '/api/v1/backup/restore'; @@ -244,6 +245,24 @@ export default class APIUtils { }); }); } + + handleReindex(data) { + return new Promise((resolve, reject) => { + this._request( + API_REINDEX_PAGES, + DataEvent.API_REINDEX_PAGES, + REQUEST_TYPE_POST, + CONTENT_TYPE_JSON, + data + ) + .then(result => { + resolve(result); + }) + .catch(err => { + reject(err); + }); + }); + } //-------------------------- // private //-------------------------- @@ -276,7 +295,8 @@ export default class APIUtils { eventType === DataEvent.API_PAGE_DELETE || eventType === DataEvent.API_RENDER_PAGES || eventType === DataEvent.API_BACKUP_CREATE || - eventType === DataEvent.API_BACKUP_RESTORE + eventType === DataEvent.API_BACKUP_RESTORE || + eventType === DataEvent.API_REINDEX_PAGES ) request.setRequestHeader('x-access-token', self.token); -- 2.25.1 From fdde95482295197cce05972a2657c6991739634e Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 1 Oct 2020 13:04:08 -0700 Subject: [PATCH 043/250] fixed marking index as feature bug --- brain/data/Render.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 3c3116f..57660e5 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -41,7 +41,8 @@ export default class Render { return ( page.metadata.deleted === false && page.metadata.published === true && - page.metadata.featured === true + page.metadata.featured === true && + page.metadata.layout !== 'index' ); }); for (let index = 0; index < pages.length; index++) { -- 2.25.1 From ca481d2b919e8ac42a2aecd35611e46e4541ff18 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 1 Oct 2020 13:53:44 -0700 Subject: [PATCH 044/250] added notification for adding images in post editor, added animation to working icon --- brain/views/frame.pug | 5 +++-- src/com/controllers/PageEditor.js | 3 +++ src/styles/main/_structure.sass | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/brain/views/frame.pug b/brain/views/frame.pug index e72b6c8..e137b12 100644 --- a/brain/views/frame.pug +++ b/brain/views/frame.pug @@ -21,8 +21,9 @@ html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") svg(viewBox="0 0 20 20" class="icons") use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-sad') .notify-icon#notify-working - svg(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-cog') + #notify-working-box + svg(viewBox="0 0 20 20" class="icons") + use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-cog') p#message-text This is a message .main-container#main-content section#dash-index-content diff --git a/src/com/controllers/PageEditor.js b/src/com/controllers/PageEditor.js index be4e7fb..89baabd 100644 --- a/src/com/controllers/PageEditor.js +++ b/src/com/controllers/PageEditor.js @@ -225,13 +225,16 @@ export default class PostEditor { } handleImageUpload(type, files) { let self = this; + notify.alert('Uploading Image', null); admin .imageUpload(type, files) .then(r => { if (r.type == DataEvent.POST_IMAGE_ADDED) self.editor.notify(EditorEvent.EDITOR_UPLOAD_POST_IMAGE, r.url); + notify.alert('Image Added to Entry', true); }) .catch(() => { + notify.alert('Uh oh. Image not added', false); //console.log('ERROR', err); }); } diff --git a/src/styles/main/_structure.sass b/src/styles/main/_structure.sass index 46ddc0a..9fcf94b 100644 --- a/src/styles/main/_structure.sass +++ b/src/styles/main/_structure.sass @@ -42,7 +42,22 @@ svg.icons transform: rotateX(-120deg) transform-origin: 50% 0 #notify-good, #notify-lame, #notify-working - display: none + display: block + #notify-working-box + -webkit-animation: spin 2s linear infinite + -moz-animation: spin 2s linear infinite + animation: spin 2s linear infinite + @-moz-keyframes spin + 100% + -moz-transform: rotate(360deg) + @-webkit-keyframes spin + 100% + -webkit-transform: rotate(360deg) + @keyframes spin + 100% + -webkit-transform: rotate(360deg) + transform: rotate(360deg) + .notify-icon background: $black padding: 8px 5px 5px 5px -- 2.25.1 From 1d7f4a20f7a6af86d1aa9d187ba37452700c4dd8 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 1 Oct 2020 14:10:26 -0700 Subject: [PATCH 045/250] updated version number, format fix for file --- package-lock.json | 2445 +++++++++++++++++++++-------------- package.json | 2 +- src/com/events/AuthEvent.js | 25 +- 3 files changed, 1464 insertions(+), 1008 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7733c1f..76e6cc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/cli": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.10.1.tgz", - "integrity": "sha512-cVB+dXeGhMOqViIaZs3A9OUAe4pKw4SBNdMw6yHJMYR7s4TB+Cei7ThquV/84O19PdIFWuwe03vxxES0BHUm5g==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", + "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", "dev": true, "requires": { "chokidar": "^2.1.8", @@ -15,7 +15,7 @@ "convert-source-map": "^1.1.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.0.0", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "make-dir": "^2.1.0", "slash": "^2.0.0", "source-map": "^0.5.0" @@ -30,18 +30,18 @@ } }, "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.10.1" + "@babel/highlight": "^7.10.4" } }, "@babel/compat-data": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", - "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", "dev": true, "requires": { "browserslist": "^4.12.0", @@ -50,100 +50,201 @@ } }, "@babel/core": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", - "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.2", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helpers": "^7.10.1", - "@babel/parser": "^7.10.2", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.2", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", "json5": "^2.1.2", - "lodash": "^4.17.13", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true } } }, "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "dev": true, "requires": { - "@babel/types": "^7.10.2", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true } } }, "@babel/helper-annotate-as-pure": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", - "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", - "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.3.tgz", - "integrity": "sha512-vkxmuFvmovtqTZknyMGj9+uQAZzz5Z9mrbnkJnPkaYGfKTaSsYcjQdXP0lgrWLVh8wU6bCjOmXOpx+kqUi+S5Q==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/types": "^7.10.3" + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/helper-validator-identifier": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", - "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", "dev": true }, "@babel/types": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz", - "integrity": "sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.3", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, @@ -156,23 +257,48 @@ } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", - "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz", + "integrity": "sha512-Vc4aPJnRZKWfzeCBsqTBnzulVNjABVdahSPhtdMD3Vs80ykx4a87jTHtF/VR+alSrDmNvat7l13yrRHauGcHVw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-module-imports": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.11.5" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.1", + "@babel/compat-data": "^7.10.4", "browserslist": "^4.12.0", "invariant": "^2.2.4", "levenary": "^1.1.1", @@ -180,179 +306,536 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", - "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", - "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-explode-assignable-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", - "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "dev": true, "requires": { - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-hoist-variables": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", - "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", - "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-module-imports": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", - "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", - "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", "dev": true }, "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "lodash": "^4.17.13" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", - "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/types": "^7.11.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helper-validator-identifier": { @@ -361,37 +844,95 @@ "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" }, "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/helpers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", - "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + } } }, "@babel/parser": { @@ -400,115 +941,136 @@ "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", - "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", - "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", - "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -521,12 +1083,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -538,13 +1100,22 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-flow": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", - "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { @@ -557,12 +1128,21 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -575,12 +1155,12 @@ } }, "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -611,435 +1191,456 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", - "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", - "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz", - "integrity": "sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", + "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-flow": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", - "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.1", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.3.tgz", - "integrity": "sha512-Y21E3rZmWICRJnvbGVmDLDZ8HfNDIwjGF3DXYHx1le0v0mIHCs0Gv5SavyW5Z/jgAHLaAoJPiwt+Dr7/zZKcOQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.10.3", - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.3", - "@babel/plugin-syntax-jsx": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", - "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==", - "dev": true - } + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", - "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", - "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", - "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", + "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.1", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-proposal-async-generator-functions": "^7.10.1", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-class-properties": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.1", - "@babel/plugin-transform-computed-properties": "^7.10.1", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.1", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.1", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.1", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.2", + "@babel/types": "^7.11.5", "browserslist": "^4.12.0", "core-js-compat": "^3.6.2", "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1050,48 +1651,110 @@ } }, "@babel/runtime": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", - "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" }, "dependencies": { "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true } } }, "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "dev": true + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } } }, "@babel/types": { @@ -1156,22 +1819,6 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -1899,14 +2546,15 @@ } }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" }, "dependencies": { "bn.js": { @@ -2238,13 +2886,13 @@ }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, @@ -2518,7 +3166,7 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, @@ -2623,12 +3271,6 @@ "caniuse-lite": "^1.0.30000844", "electron-to-chromium": "^1.3.47" } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true } } }, @@ -2843,9 +3485,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", "dev": true }, "body-parser": { @@ -3172,16 +3814,16 @@ } }, "browserify-sign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", - "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.2", + "elliptic": "^6.5.3", "inherits": "^2.0.4", "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", @@ -3231,29 +3873,15 @@ } }, "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "version": "4.14.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", + "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001079", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001079.tgz", - "integrity": "sha512-2KaYheg0iOY+CMmDuAB3DHehrXhhb4OZU4KBVGDr/YKyYAcpudaiUQ9PJ9rxrPlKEoJ3ATasQ5AN48MqpwS43Q==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.465", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.465.tgz", - "integrity": "sha512-K/lUeT3NLAsJ5SHRDhK3/zd0tw7OUllYD8w+fTOXm6ljCPsp2qq+vMzxpLo8u1M27ZjZAjRbsA6rirvne2nAMQ==", - "dev": true - } + "caniuse-lite": "^1.0.30001135", + "electron-to-chromium": "^1.3.571", + "escalade": "^3.1.0", + "node-releases": "^1.1.61" } }, "buffer": { @@ -3296,15 +3924,9 @@ "dev": true }, "bulma": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.0.tgz", - "integrity": "sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ==", - "dev": true - }, - "bulma.styl": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/bulma.styl/-/bulma.styl-0.6.11.tgz", - "integrity": "sha512-CWtETgVM6vdg9b4TTFoVrj0nwSlzfyTHXGE2Kj+CATDlADDnZ5PZuKWBAUowGDnLvLHQJh9PANCpIZDBhwJ23A==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.1.tgz", + "integrity": "sha512-LSF69OumXg2HSKl2+rN0/OEXJy7WFEb681wtBlNS/ulJYR27J3rORHibdXZ6GVb/vyUzzYK/Arjyh56wjbFedA==", "dev": true }, "busboy": { @@ -3412,6 +4034,14 @@ "dev": true, "requires": { "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } } }, "caller-path": { @@ -3424,9 +4054,9 @@ } }, "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -3448,9 +4078,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000903", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000903.tgz", - "integrity": "sha512-T1XVJEpGCoaq7MDw7/6hCdYUukmSaS+1l/OQJkLtw7Cr2+/+d67tNGKEbyiqf7Ck8x6EhNFUxjYFXXka0N/w5g==", + "version": "1.0.30001141", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001141.tgz", + "integrity": "sha512-EHfInJHoQTmlMdVZrEc5gmwPc0zyN/hVufmGHPbVNQwlk7tJfCmQ2ysRZMY2MeleBivALUTyyxXnQjK18XrVpA==", "dev": true }, "caret-pos": { @@ -3625,51 +4255,6 @@ } } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -3955,6 +4540,16 @@ "parse-json": "^4.0.0" }, "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -3964,17 +4559,23 @@ "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true } } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" }, "dependencies": { "bn.js": { @@ -4021,16 +4622,14 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-browserify": { @@ -4186,14 +4785,13 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", - "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { "cssesc": "^3.0.0", - "fastparse": "^1.1.2", - "regexpu-core": "^4.6.0" + "fastparse": "^1.1.2" } }, "css-tree": { @@ -4207,9 +4805,9 @@ } }, "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.1.tgz", + "integrity": "sha512-wHOppVDKl4vTAOWzJt5Ek37Sgd9qq1Bmj/T1OjvicWbU5W7ru7Pqbn0Jdqii3Drx/h+dixHKXNhZYx7blthL7g==", "dev": true }, "cssesc": { @@ -4396,12 +4994,6 @@ } } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -4721,9 +5313,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.82", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.82.tgz", - "integrity": "sha512-NI4nB2IWGcU4JVT1AE8kBb/dFor4zjLHMLsOROPahppeHrR0FG5uslxMmkp/thO1MvPjM2xhlKoY29/I60s0ew==", + "version": "1.3.576", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz", + "integrity": "sha512-uSEI0XZ//5ic+0NdOqlxp0liCD44ck20OAGyLMSymIWTEAtHKVJi6JM18acOnRgUgX7Q65QqnI+sNncNvIy8ew==", "dev": true }, "elliptic": { @@ -4791,9 +5383,9 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "envinfo": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", - "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", "dev": true }, "err-code": { @@ -4850,6 +5442,12 @@ "es6-promise": "^4.0.3" } }, + "escalade": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", + "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==", + "dev": true + }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -4884,9 +5482,9 @@ } }, "eslint": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", - "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.10.0.tgz", + "integrity": "sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -4897,7 +5495,7 @@ "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", + "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^1.3.0", "espree": "^7.3.0", @@ -4969,17 +5567,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -5034,16 +5621,6 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5068,45 +5645,18 @@ "word-wrap": "^1.2.3" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -5139,15 +5689,6 @@ "requires": { "prelude-ls": "^1.2.1" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -5366,9 +5907,9 @@ "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "evp_bytestokey": { @@ -6015,12 +6556,6 @@ "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", @@ -6352,19 +6887,19 @@ "dev": true }, "htmlnano": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", - "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.6.tgz", + "integrity": "sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ==", "dev": true, "requires": { "cssnano": "^4.1.10", "normalize-html-whitespace": "^1.0.0", - "posthtml": "^0.12.0", - "posthtml-render": "^1.1.5", - "purgecss": "^1.4.0", + "posthtml": "^0.13.1", + "posthtml-render": "^1.2.2", + "purgecss": "^2.3.0", "svgo": "^1.3.2", - "terser": "^4.3.9", - "uncss": "^0.17.2" + "terser": "^4.8.0", + "uncss": "^0.17.3" }, "dependencies": { "commander": { @@ -6373,14 +6908,73 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "posthtml": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz", - "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==", + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "posthtml-parser": "^0.4.2", - "posthtml-render": "^1.2.2" + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "posthtml": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.3.tgz", + "integrity": "sha512-5NL2bBc4ihAyoYnY0EAQrFQbJNE1UdvgC1wjYts0hph7jYeU2fa5ki3/9U45ce9V6M1vLMEgUX2NXe/bYL+bCQ==", + "dev": true, + "requires": { + "posthtml-parser": "^0.5.0", + "posthtml-render": "^1.2.3" + } + }, + "posthtml-parser": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.5.0.tgz", + "integrity": "sha512-BsZFAqOeX9lkJJPKG2JmGgtm6t++WibU7FeS40FNNGZ1KS2szRSRQ8Wr2JLvikDgAecrQ/9V4sjugTAin2+KVw==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "terser": { @@ -6538,13 +7132,13 @@ } }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "import-lazy": { @@ -7857,9 +8451,9 @@ } }, "node-releases": { - "version": "1.1.58", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", - "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "version": "1.1.61", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", + "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", "dev": true }, "nodemailer": { @@ -8513,6 +9107,19 @@ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -8522,6 +9129,36 @@ "minimist": "^1.2.0" } }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "ws": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", @@ -8540,25 +9177,16 @@ "dev": true, "requires": { "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -8611,9 +9239,9 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -8707,15 +9335,6 @@ "find-up": "^2.1.0" } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, "platform": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", @@ -9050,9 +9669,9 @@ } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.4.tgz", + "integrity": "sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw==", "dev": true, "requires": { "postcss": "^7.0.27", @@ -9453,14 +10072,15 @@ } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "dev": true, "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, "postcss-svgo": { @@ -9564,9 +10184,9 @@ } }, "posthtml-render": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", - "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.3.tgz", + "integrity": "sha512-rGGayND//VwTlsYKNqdILsA7U/XP0WJa6SMcdAEoqc2WRM5QExplGg/h9qbTuHz7mc2PvaXU+6iNxItvr5aHMg==", "dev": true }, "prelude-ls": { @@ -9581,9 +10201,9 @@ "dev": true }, "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", "dev": true }, "private": { @@ -9868,15 +10488,23 @@ } }, "purgecss": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", - "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", "dev": true, "requires": { - "glob": "^7.1.3", - "postcss": "^7.0.14", - "postcss-selector-parser": "^6.0.0", - "yargs": "^14.0.0" + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } } }, "q": { @@ -10032,9 +10660,9 @@ } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", "dev": true }, "regenerate-unicode-properties": { @@ -10053,13 +10681,12 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -10078,9 +10705,9 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -10206,12 +10833,6 @@ "tough-cookie": ">=2.3.3" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, "require-in-the-middle": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz", @@ -10222,12 +10843,6 @@ "resolve": "^1.12.0" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -10237,9 +10852,9 @@ } }, "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -10320,7 +10935,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -10563,18 +11178,18 @@ "dev": true }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shimmer": { @@ -10785,12 +11400,12 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "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.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -11605,6 +12220,17 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, "saxes": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", @@ -12099,20 +12725,14 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -12197,51 +12817,6 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12302,12 +12877,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -12321,112 +12890,6 @@ "argparse": "^1.0.7", "glob": "^7.0.5" } - }, - "yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", - "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } } diff --git a/package.json b/package.json index 2b5c5ae..7f13f58 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fipamo-development", - "version": "1.2.3", + "version": "1.2.4", "private": true, "description": "The most chill blog framework ever.", "repository": "https://code.playvicio.us/Are0h/Fipamo", diff --git a/src/com/events/AuthEvent.js b/src/com/events/AuthEvent.js index a32338c..81fd0fc 100644 --- a/src/com/events/AuthEvent.js +++ b/src/com/events/AuthEvent.js @@ -1,4 +1,4 @@ -export const MEMBER_STATUS = "memberStatus"; +export const MEMBER_STATUS = 'memberStatus'; export const LOGIN_STATUS = 'loginStatus'; export const SUPPORTER_FOUND = 'SUPPORTER FOUND'; export const SUPPORTER_LISTED = 'SUPPORTER LISTED'; @@ -10,19 +10,12 @@ export const MEMBER_LOGIN_LAME = 'MEMBER LOGIN LAME'; export const MEMBER_EXISTS = 'USER ALREADY EXISTS'; export const MEMBER_LOGIN_MISSING = 'Missing credentials'; - - -class AuthEvent -{ - - //-------------------------- - // methods - //-------------------------- - - - - //-------------------------- - // event handlers - //-------------------------- +class AuthEvent { + //-------------------------- + // methods + //-------------------------- + //-------------------------- + // event handlers + //-------------------------- } -export default new AuthEvent +export default new AuthEvent(); -- 2.25.1 From 31feb32f960068bf3e45d8ea27c8e8f50460ccad Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 9 Oct 2020 11:10:26 -0700 Subject: [PATCH 046/250] grapped patch from beta release for broken archive links --- brain/data/Render.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/brain/data/Render.js b/brain/data/Render.js index 57660e5..576e6c5 100644 --- a/brain/data/Render.js +++ b/brain/data/Render.js @@ -204,7 +204,8 @@ export default class Render { if (_.includes(page.metadata.tags, tag.tag_name)) { pageList.push({ title: page.metadata.title, - slug: page.metadata.slug + slug: page.metadata.slug, + path: page.metadata.path }); } } -- 2.25.1 From 125256838ce6a16a33d7528d657b7b1b56f8b6d1 Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 11 Nov 2020 13:01:47 -0800 Subject: [PATCH 047/250] clean up to move nodejs-archive-branch --- .gitignore | 1 + src/com/events/DataEvent.js | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 1ef94b5..c7aa07b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ site/folks.json site/pages.json site/tags.json *.DS_Store +config.codekit3 diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index 2958cad..0f28bef 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -1,3 +1,4 @@ +export const AUTH_STATUS = 'getAuthStatus'; export const REQUEST_GOOD = 'requestGood'; export const REQUEST_LAME = 'requestLame'; export const API_REQUEST_GOOD = 'apiUseAuthorized'; -- 2.25.1 From 05ff48a51c966f144afd9814e481621e55e0e7b7 Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 11 Nov 2020 15:22:58 -0800 Subject: [PATCH 048/250] begin transition to php environment for rebuild --- .prettierignore | 1 + .prettierrc | 1 - brain/api/v1/auth.js | 235 - brain/api/v1/backup.js | 107 - brain/api/v1/mailer.js | 83 - brain/api/v1/pages.js | 268 - brain/api/v1/settings.js | 250 - brain/app.js | 94 - brain/data/Auth.js | 105 - brain/data/Book.js | 273 - brain/data/Navigation.js | 75 - brain/data/Render.js | 304 - brain/data/Settings.js | 184 - brain/data/Utils.js | 243 - brain/routes/dash/index.js | 62 - brain/routes/dash/nav.js | 79 - brain/routes/dash/pages.js | 172 - brain/routes/dash/settings.js | 94 - brain/views/book-index.pug | 57 - brain/views/email/base.pug | 94 - brain/views/error.pug | 8 - brain/views/frame.pug | 42 - brain/views/index.pug | 9 - brain/views/init.pug | 52 - brain/views/navigation.pug | 16 - brain/views/page-edit.pug | 57 - brain/views/partials/dash-nav.pug | 7 - brain/views/partials/editor.pug | 37 - brain/views/partials/front.pug | 30 - brain/views/partials/login.pug | 7 - brain/views/partials/mailforms.pug | 25 - brain/views/partials/options.pug | 13 - brain/views/settings.pug | 94 - config/folks.json | 1 + {site => config}/init/folks-template.json | 0 {site => config}/init/index-template.md | 0 {site => config}/init/settings-template.json | 0 config/settings.json | 1 + config/tags.json | 1 + index.php | 1 + init.js | 92 - package-lock.json | 12895 ----------------- package.json | 68 - 43 files changed, 5 insertions(+), 16232 deletions(-) delete mode 100644 brain/api/v1/auth.js delete mode 100644 brain/api/v1/backup.js delete mode 100644 brain/api/v1/mailer.js delete mode 100644 brain/api/v1/pages.js delete mode 100644 brain/api/v1/settings.js delete mode 100644 brain/app.js delete mode 100644 brain/data/Auth.js delete mode 100644 brain/data/Book.js delete mode 100644 brain/data/Navigation.js delete mode 100644 brain/data/Render.js delete mode 100644 brain/data/Settings.js delete mode 100644 brain/data/Utils.js delete mode 100644 brain/routes/dash/index.js delete mode 100644 brain/routes/dash/nav.js delete mode 100644 brain/routes/dash/pages.js delete mode 100644 brain/routes/dash/settings.js delete mode 100644 brain/views/book-index.pug delete mode 100644 brain/views/email/base.pug delete mode 100644 brain/views/error.pug delete mode 100644 brain/views/frame.pug delete mode 100644 brain/views/index.pug delete mode 100644 brain/views/init.pug delete mode 100644 brain/views/navigation.pug delete mode 100644 brain/views/page-edit.pug delete mode 100644 brain/views/partials/dash-nav.pug delete mode 100644 brain/views/partials/editor.pug delete mode 100644 brain/views/partials/front.pug delete mode 100644 brain/views/partials/login.pug delete mode 100644 brain/views/partials/mailforms.pug delete mode 100644 brain/views/partials/options.pug delete mode 100644 brain/views/settings.pug create mode 100644 config/folks.json rename {site => config}/init/folks-template.json (100%) rename {site => config}/init/index-template.md (100%) rename {site => config}/init/settings-template.json (100%) create mode 100644 config/settings.json create mode 100644 config/tags.json create mode 100644 index.php delete mode 100644 init.js delete mode 100644 package-lock.json delete mode 100644 package.json diff --git a/.prettierignore b/.prettierignore index d63847e..5f65a20 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,4 +3,5 @@ README.md *.pug *.sass *.json +*.php diff --git a/.prettierrc b/.prettierrc index 8b8bad9..747edfe 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,7 +5,6 @@ "insertPragma": false, "jsxBracketSameLine": false, "jsxSingleQuote": true, - "parser": "babel", "proseWrap": "preserve", "requirePragma": false, "semi": true, diff --git a/brain/api/v1/auth.js b/brain/api/v1/auth.js deleted file mode 100644 index 91888cb..0000000 --- a/brain/api/v1/auth.js +++ /dev/null @@ -1,235 +0,0 @@ -import * as DataEvent from '../../../src/com/events/DataEvent'; -import mdparser from 'markdown-yaml-metadata-parser'; -const uuidv4 = require('uuid/v4'); -const express = require('express'); -const router = express.Router(); -const bcrypt = require('bcrypt'); -const jwt = require('jsonwebtoken'); -const fs = require('fs-extra'); -const _ = require('lodash'); -const crypto = require('crypto'); // for setting up new accounts -const secret_key = '58d5aeec3c604e2837aef70bc1606f35131ab8fea9731925558f5acfaa00da60'; -const moment = require('moment'); - -/** - * Get Auth Status - */ -router.get('/', function (req, res) { - var token = req.headers['x-access-token']; - if (!token) return res.status(401).send({ auth: false, message: 'No token provided.' }); - - jwt.verify(token, 'super-secret-string', function (err, decoded) { - if (err) - return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' }); - res.status(200).send(decoded); - }); -}); - -/** - * Get Auth Status - */ -router.get('/status', function (req, res) { - if (req.session.user) { - let session = req.session; - res.json({ - type: DataEvent.API_REQUEST_GOOD, - message: 'Auth is Good', - token: session.hashToken - }); - } else { - res.json({ - type: DataEvent.API_REQUEST_LAME, - message: 'NOT AUTHORIZED' - }); - } -}); -/** - * Login Member and return token - */ -router.post('/login', function (req, res) { - fs.readJson('site/folks.json').then(folks => { - let found = _.find(folks, { handle: req.body.handle }); - if (found) { - if (!isValidPassword(found, req.body.password)) { - res.json({ - type: DataEvent.REQUEST_LAME, - message: 'CHECK YOUR PASSWORD' - }); - } - - let token = jwt.sign({ id: found.id }, found.key, { - expiresIn: 86400 // expires in 24 hours - }); - - let session = req.session; - session.user = found; - session.token = token; - session.hashToken = hashToken(token); - res.json({ - type: DataEvent.REQUEST_GOOD, - message: 'Welcome Back', - token: session.hashToken - }); - } else { - res.json({ - type: DataEvent.REQUEST_LAME, - message: 'Need to see some id, champ.' - }); - } - }); -}); - -/** - * Initial Site Setup - */ -router.post('/init', function (req, res) { - let body = req.body; - let re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; - // check email - if (!re.test(body.new_member_email)) { - res.json({ - type: DataEvent.API_INIT_LAME, - message: 'Need a valid email address' - }); - } - //check handle is being passed - if (body.new_member_handle === null || body.new_member_handle === '') { - res.json({ - type: DataEvent.API_INIT_LAME, - message: 'No handle. Kinda need that.' - }); - } - // check password match - if ( - body.new_member_pass !== body.new_member_pass2 || - body.new_member_pass === '' || - body.new_member_pass2 === '' - ) { - res.json({ - type: DataEvent.API_INIT_LAME, - message: 'Passwords do not match.' - }); - } - - if (body.new_member_title === null || body.new_member_title === '') { - res.json({ - type: DataEvent.API_INIT_LAME, - message: 'No title. Gotta call it something.' - }); - } - - let key = crypto - .createHash('sha256') - .update(body.new_member_pass + secret_key) - .digest('hex'); - - // set up config files - fs.readJson('site/init/settings-template.json').then(fresh => { - fresh.global.title = body.new_member_title; - fs.writeJSON('site/settings.json', fresh); - }); - - fs.readJson('site/init/folks-template.json').then(folks => { - folks[0].id = 1; - folks[0].handle = body.new_member_handle; - folks[0].email = body.new_member_email; - folks[0].password = bcrypt.hashSync(body.new_member_pass, bcrypt.genSaltSync(10), null); - folks[0].key = key; - folks[0].role = 'hnic'; - folks[0].created = moment(Date.now()).format(); - folks[0].updated = moment(Date.now()).format(); - fs.writeJSON('site/folks.json', folks); - }); - - fs.writeJson('site/tags.json', { tags: [] }); - - //set up index file as first page - - fs.readFile('site/init/index-template.md', { encoding: 'utf8' }).then(file => { - let index = mdparser(file); - let data = index.metadata; - data.uuid = uuidv4(); - data.path = moment().format('YYYY') + '/' + moment().format('MM'); - data.author = body.new_member_handle; - data.created = moment(Date.now()).format(); - data.updated = moment(Date.now()).format(); - - var init = - '---\n' + - 'id: ' + - data.id + - '\n' + - 'uuid: ' + - data.uuid + - '\n' + - 'title: ' + - data.title + - '\n' + - 'feature: ' + - data.feature + - '\n' + - 'path: ' + - moment(Date.now()).format('YYYY') + - '/' + - moment(Date.now()).format('MM') + - '\n' + - 'layout: ' + - 'index' + - '\n' + - 'tags: ' + - data.tags + - '\n' + - 'author: ' + - body.new_member_handle + - '\n' + - 'created: ' + - moment(Date.now()).format() + - '\n' + - 'updated: ' + - moment(Date.now()).format() + - '\n' + - 'deleted: ' + - 'false' + - '\n' + - 'menu: ' + - data.menu + - '\n' + - 'featured: ' + - data.featured + - '\n' + - 'published: ' + - data.published + - '\n' + - 'slug: ' + - data.slug + - '\n' + - '---\n' + - index.content; - - fs.ensureDir('content/pages/').then(() => { - fs.writeFile('content/pages/index.md', init) - .then(() => { - //console.log('index file created'); - }) - .catch(() => { - //console.log('ERROR', err); - }); - }); - }); - - res.json({ - type: DataEvent.API_INIT_GOOD, - message: 'All Set Up' - }); -}); - -//router.post('/logout', function(req, res) {}); -module.exports = router; - -function isValidPassword(user, password) { - return bcrypt.compareSync(password, user.password); -} - -function hashToken(token) { - return bcrypt.hashSync(token, bcrypt.genSaltSync(10), null); -} diff --git a/brain/api/v1/backup.js b/brain/api/v1/backup.js deleted file mode 100644 index 4f92bb5..0000000 --- a/brain/api/v1/backup.js +++ /dev/null @@ -1,107 +0,0 @@ -import * as DataEvent from '../../../src/com/events/DataEvent'; -import Auth from '../../data/Auth'; -import Utils from '../../data/Utils'; -const express = require('express'); -const router = express.Router(); -const multer = require('multer'); -const auth = new Auth(); -const utils = new Utils(); - -var backup_upload = multer().array('backup_upload'); -var backup_restore = multer().any(); - -/*** - CREATE BACK UP -*/ -router.post('/create', (req, res) => { - auth.authCheck(req) - .then(() => { - utils - .createBackup() - .then(() => { - res.json({ - type: DataEvent.API_BACKUP_CREATE, - message: "You're backed up. Hi fives" - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -/*** - RETRIEVE BACKUP -*/ -router.get('/download', (req, res) => { - if (req.session.user) { - var filePath = 'content/backup.zip'; // Or format the path using the `id` rest param - var fileName = 'backup.zip'; // The default name the browser will use - - res.download(filePath, fileName); - } else { - res.json({ - type: DataEvent.REQUEST_LAME, - message: "You're not logged in, champ" - }); - } - - //Move to route? -}); - -/*** - RESTORE BACKUP -*/ - -router.post('/restore', backup_upload, (req, res) => { - auth.authCheck(req) - .then(() => { - utils - .restoreBackup(req.files[0]) - .then(() => { - res.json({ - type: DataEvent.API_BACKUP_RESTORE, - message: 'Settings, files and pages restored. Nice work.' - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: 'Backup not restored. Uh oh.' - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -router.post('/init-restore', backup_restore, (req, res) => { - utils - .verifyBackup(req.files[0], req.body) - .then(response => { - res.json({ - type: response.type, - message: response.message - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); -module.exports = router; diff --git a/brain/api/v1/mailer.js b/brain/api/v1/mailer.js deleted file mode 100644 index 998d1c7..0000000 --- a/brain/api/v1/mailer.js +++ /dev/null @@ -1,83 +0,0 @@ -import Settings, { SETTINGS_FILE } from '../../data/Settings'; -import Auth from '../../data/Auth'; -var express = require('express'); -var router = express.Router(); -var nodemailer = require('nodemailer'); -var mg = require('nodemailer-mailgun-transport'); -const pug = require('pug'); -const settings = new Settings(); -const auth = new Auth(); -router.post('/', function (req, res) { - auth.authCheck(req) - .then(() => { - settings - .load(SETTINGS_FILE) - .then(settings => { - let transport = ''; - var auth = ''; - switch (settings.email.active) { - case 'option-smtp': - auth = { - host: settings.email.smtp.domain, - port: 587, - secure: false, - auth: { - type: 'login', - user: settings.email.smtp, - pass: settings.email.smtp.password - } - }; - transport = nodemailer.createTransport(auth); - break; - case 'option-mg': - auth = { - auth: { - api_key: settings.email.mailgun.key, - domain: settings.email.mailgun.domain - } - }; - transport = nodemailer.createTransport(mg(auth)); - break; - } - let render = pug.compileFile('brain/views/email/base.pug'); - let html = render({ - title: settings.global.title, - header: 'a note from ' + settings.global.title, - content: req.body.content, - footer: 'powered by fipamo' - }); - transport.sendMail( - { - from: 'control@playvico.us', - to: req.session.user.email, // An array if you have multiple recipients. - subject: 'Hey beautiful', - //You can use "html:" to send HTML email content. It's magic! - html: html - //You can use "text:" to send plain-text content. It's oldschool! - //text: 'Mailgun rocks, pow pow!' - }, - function (err, info) { - if (err) { - res.json({ - message: 'MAIL ERROR', - desc: err - }); - } else { - //console.log(info); - res.json({ - message: 'MAIL SENT', - desc: info - }); - } - } - ); - }) - .catch(() => { - //console.error(err); - }); - }) - .catch(err => { - res.json(err); - }); -}); -module.exports = router; diff --git a/brain/api/v1/pages.js b/brain/api/v1/pages.js deleted file mode 100644 index ce37dad..0000000 --- a/brain/api/v1/pages.js +++ /dev/null @@ -1,268 +0,0 @@ -import Book from '../../data/Book'; -import Auth from '../../data/Auth'; -import Settings, { SETTINGS_FILE } from '../../data/Settings'; -import * as DataEvent from '../../../src/com/events/DataEvent'; -import Render from '../../data/Render'; -const express = require('express'); -const router = express.Router(); -const multer = require('multer'); -const fs = require('fs-extra'); -const moment = require('moment'); -const book = new Book(); -const auth = new Auth(); -const settings = new Settings(); -const render = new Render(); -const _ = require('lodash'); -const uploadPath = - './public/assets/images/blog/' + moment().format('YYYY') + '/' + moment().format('MM'); - -var storage = multer.diskStorage({ - destination: function (req, file, cb) { - fs.ensureDir(uploadPath, () => { - // dir has now been created, including the directory it is to be placed in - cb(null, uploadPath); - }); - }, - filename: function (req, file, cb) { - var splice = file.originalname.split(':'); - cb(null, splice[0]); - } -}); - -var feature_upload = multer({ - storage: storage -}).array('feature_image'); -var post_upload = multer({ - storage: storage -}).array('post_image'); - -/** - * Retrieves a page of a published entries - * @public - */ -router.get('/published/:pageNum?', (req, res) => { - //console.log('PAGE NUM', req.params.pageNum); - let pageNum = req.params.pageNum; - if (pageNum === null || pageNum === '' || !pageNum) pageNum = 1; - let pages = []; - book.getPage().then(result => { - result.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); - let displayed = _.filter(result, page => { - return ( - page.metadata.deleted === false && - page.metadata.published === true && - page.metadata.layout != 'index' - ); - }); - var pageLimit = 6; - var count = Math.ceil(displayed.length / pageLimit); - if (pageNum > count || isNaN(pageNum)) - res.json({ type: DataEvent.REQUEST_LAME, message: "That page doesn't exist, champ." }); - var rangeIndex = pageNum * pageLimit - pageLimit; - - let meta = []; - - for (let index = 0; index < pageLimit; index++) { - const page = displayed[index + rangeIndex]; - try { - if ( - page.metadata.id != null && - page.metadata.deleted === false && - page.metadata.published === true - ) { - let entry = page.metadata; - entry.content = page.content; - //console.log('ENTRY', entry); - pages.push({ - page: entry, - displayDate: moment(page.metadata.created).fromNow() - }); - } - } catch (e) { - //console.log("NO POST", e) - } - } - meta.push({ currentPage: pageNum, totalPages: count }); - let data = { pages: pages, meta: meta }; - res.json({ - type: DataEvent.REQUEST_GOOD, - message: 'This is Page ' + pageNum + ' of ' + count, - data: data - }); - }); -}); - -/** - * Retrieves single entry - * @public - */ - -router.get('/single/:id', (req, res) => { - let id = req.params.id; - if (id === null || id === '') - res.json({ type: DataEvent.REQUEST_LAME, message: " Nah, this isn't here." }); - book.getPage(id) - .then(page => { - let entry = page.metadata; - entry.content = page.content; - res.json({ - type: DataEvent.REQUEST_GOOD, - message: 'Found it. Here you go.', - data: entry - }); - }) - .catch(err => { - res.json({ - type: DataEvent.REQUEST_LAME, - message: "This doesn't seem to be here, homie.", - err: err.message - }); - }); -}); - -/** - * Add/Update Page - */ -router.post('/write/:task?', feature_upload, (req, res) => { - auth.authCheck(req) - .then(() => { - let body = _.mapValues(req.body); - let feature = ''; - let task = ''; - req.params.task === 'new' - ? (task = DataEvent.API_PAGE_CREATE) - : (task = DataEvent.API_PAGE_WRITE); - if (req.files.length > 0) { - var path = req.files[0].path; - //console.log('NEW FEATURE URL', path); - feature = '/' + path.substring(7, path.length); - } else { - var url = body.feature_image; - //switch this to the new feature path edit - if (url != null || url != undefined || url != '') { - let chunks = url.split('/'); - let strip = chunks[0] + '/' + chunks[1] + chunks[2]; - feature = url.substr(strip.length + 1, url.length); - } else { - feature = ''; - } - } - body.feature = feature; - body.deleted = false; - //if title changes, get rid of a pages with old title - if (body.current_title !== body.slug) { - let path = - moment(body.created).format('YYYY') + '/' + moment(body.created).format('MM'); - - //remove html page - fs.unlink('public/' + path + '/' + body.current_title + '.html') - .then() - .catch(() => { - //console.log('HTML ERROR', err); - }); - - //remove markdown - fs.unlink('content/pages/' + path + '/' + body.current_title + '.md') - .then() - .catch(() => { - //console.log('MD ERROR', err); - }); - } - book.editPage(body, body.page_uuid, task, req.session.user) - .then(result => { - if (result.type === DataEvent.PAGE_ADDED) { - settings.updatePageIndex(); - } - //load all page data and render if render on save flag is set in settings file - getBookData() - .then(result => { - if (result.settings.global.renderOnSave === 'true') { - render - .publishAll( - result.pages, - result.settings.global.theme, - req.session.user.handle - ) - .then(response => { - res.json({ - type: response.type, - message: response.message - }); - }) - .catch(err => { - res.json({ - type: DataEvent.PAGES_NOT_RENDERED, - message: 'Uh oh. Pages not rendered, sport', - error: err - }); - }); - } else { - //console.log('DONT RENDER PAGES'); - } - }) - .catch(() => { - //console.log(); - }); - res.json(result); - }) - .catch(err => { - res.json(err); - }); - }) - .catch(err => { - res.json(err); - }); -}); - -/** - * Soft deletes Page - */ - -router.post('/delete', (req, res) => { - auth.authCheck(req) - .then(() => { - book.editPage([], req.body.id, DataEvent.API_PAGE_DELETE, req.session.user) - .then(result => { - //remove item from menu in settings - res.json(result); - }) - .catch(err => { - res.json(err); - }); - }) - .catch(err => { - res.json(err); - }); -}); - -/** - * Uploads image from a Page content - */ - -router.post('/add-post-image', post_upload, function (req, res) { - //console.log(req.body); - var image = req.files[0].path; - return res.json({ - type: DataEvent.POST_IMAGE_ADDED, - message: 'Added Image', - url: '/' + image.substr(7, image.length) - }); -}); - -module.exports = router; - -function getBookData() { - return new Promise((resolve, reject) => { - let getSettings = settings.load(SETTINGS_FILE); - let getBook = book.getPage(); - Promise.all([getSettings, getBook]) - .then(result => { - const [settings, pages] = result; - let data = { settings: settings, pages: pages }; - resolve(data); - }) - .catch(err => { - reject(err); - }); - }); -} diff --git a/brain/api/v1/settings.js b/brain/api/v1/settings.js deleted file mode 100644 index d191368..0000000 --- a/brain/api/v1/settings.js +++ /dev/null @@ -1,250 +0,0 @@ -import * as DataEvent from '../../../src/com/events/DataEvent'; -import Auth from '../../data/Auth'; -import Render from '../../data/Render'; -import Settings, { SETTINGS_FILE, SETTINGS_FOLKS } from '../../data/Settings'; -import Navigation from '../../data/Navigation'; -import Book from '../../data/Book'; -const express = require('express'); -const router = express.Router(); -const multer = require('multer'); -const fs = require('fs-extra'); -const moment = require('moment'); -const _ = require('lodash'); -const auth = new Auth(); -const render = new Render(); -const book = new Book(); -const settings = new Settings(); -const nav = new Navigation(); -const uploadPath = - './public/assets/images/user/' + moment().format('YYYY') + '/' + moment().format('MM'); - -var storage = multer.diskStorage({ - destination: function (req, file, cb) { - fs.ensureDir(uploadPath, () => { - // dir has now been created, including the directory it is to be placed in - cb(null, uploadPath); - }); - }, - filename: function (req, file, cb) { - var splice = file.originalname.split(':'); - cb(null, splice[0]); - } -}); -var avatar_upload = multer({ - storage: storage -}).array('avatar_upload'); -var background_upload = multer({ - storage: storage -}).array('background_upload'); -//** SYNC POSTS */ -router.post('/sync', (req, res) => { - auth.authCheck(req) - .then(() => { - settings - .sync(req, res) - .then(() => { - res.json({ - type: DataEvent.SETTINGS_UPDATED, - message: 'Settings Saved' - }); - }) - .catch(err => { - res.json({ - type: DataEvent.REQUEST_LAME, - error: err.message, - message: "Uh oh. Settings didn't take, sport" - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -router.post('/nav-sync', (req, res) => { - auth.authCheck(req) - .then(() => { - // find removed menu item page and set menu to false - book.getPage(req.body.remove).then(page => { - let body = page.metadata; - body.content = page.content; - body.menu = false; - book.editPage(body, body.uuid, DataEvent.API_PAGE_WRITE, req.session.user); - }); - nav.sync(req.body) - .then(response => { - res.json({ - type: response.type, - message: response.message - }); - }) - .catch(err => { - res.json({ - type: DataEvent.REQUEST_LAME, - message: err - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -router.post('/publish-pages', (req, res) => { - auth.authCheck(req) - .then(() => { - getBookData() - .then(result => { - render - .publishAll( - result.pages, - result.settings.global.theme, - req.session.user.handle - ) - .then(response => { - res.json({ - type: response.type, - message: response.message - }); - }) - .catch(err => { - res.json({ - type: DataEvent.PAGES_NOT_RENDERED, - message: 'Uh oh. Pages not rendered, sport', - error: err - }); - }); - }) - .catch(err => { - res.json({ - type: DataEvent.PAGES_NOT_RENDERED, - message: 'Uh oh. Pages not rendered, sport', - error: err - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -/*** - UPLOAD AVATAR -*/ - -router.post('/add-avatar', avatar_upload, (req, res) => { - if (req.session.user) { - let user = req.session.user; - settings - .load(SETTINGS_FOLKS) - .then(folks => { - let found = _.find(folks, { handle: user.handle }); - if (found) { - var index = found.id - 1; - var path = req.files[0].path; - var image = path.substr(7, path.length); - folks[index].avi = '/' + image; - fs.writeJson('site/folks.json', folks); - user.avi = '/' + image; - res.json({ - type: DataEvent.AVATAR_UPLOADED, - message: 'Changed avi. You look great.', - url: '/' + image - }); - } - }) - .catch(() => { - res.json({ - type: DataEvent.REQUEST_LAME, - message: 'Members Not found' - }); - }); - } else { - res.json({ - type: DataEvent.REQUEST_LAME, - message: "You're not logged in, champ" - }); - } -}); - -/*** - UPLOAD FEATURE BACKGROUND -*/ - -router.post('/add-feature-background', background_upload, (req, res) => { - if (req.session.user) { - settings - .load(SETTINGS_FILE) - .then(settings => { - var path = req.files[0].path; - var image = path.substr(7, path.length); - settings.global.background = '/' + image; - fs.writeJson('site/settings.json', settings); - res.json({ - type: DataEvent.SITE_BACKGROUND_UPLOADED, - message: 'Background Uploaded', - url: '/' + image - }); - }) - .catch(() => { - //console.log('ERROR', err); - }); - } else { - res.json({ - type: DataEvent.REQUEST_LAME, - message: "You're not logged in, champ" - }); - } -}); - -router.post('/reindex', (req, res) => { - auth.authCheck(req) - .then(() => { - book.reindexPages(req) - .then(response => { - //reset settings index - settings.resetLibraryIndex(response.count + 1); - //return success to front end - res.json(response); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); - }) - .catch(err => { - res.json({ - type: err.type, - message: err.message - }); - }); -}); - -module.exports = router; - -function getBookData() { - return new Promise((resolve, reject) => { - let getSettings = settings.load(SETTINGS_FILE); - let getBook = book.getPage(); - Promise.all([getSettings, getBook]) - .then(result => { - const [settings, pages] = result; - let data = { settings: settings, pages: pages }; - resolve(data); - }) - .catch(err => { - reject(err); - }); - }); -} diff --git a/brain/app.js b/brain/app.js deleted file mode 100644 index 0d56a48..0000000 --- a/brain/app.js +++ /dev/null @@ -1,94 +0,0 @@ -var express = require('express'); -var path = require('path'); -//var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); -var session = require('express-session'); -var MemoryStore = require('memorystore')(session); -var flash = require('connect-flash'); -var app = express(); -// favicon stuff -//app.use(favicon(path.join(__dirname, 'favicons', 'favicon.ico'))); - -// view engine setup -app.set('views', path.join(__dirname, './views')); -app.set('view engine', 'pug'); -app.use(logger('dev')); - -app.use(bodyParser.json({ limit: '50mb' })); -app.use( - bodyParser.urlencoded({ - extended: false, - limit: '50mb' - }) -); -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, '../public'), { extensions: ['html'] })); - -app.use( - session({ - store: new MemoryStore({ - checkPeriod: 86400000 // prune expired entries every 24h - }), - secret: '1KqZ18W8KskE1iSw', - saveUninitialized: false, - resave: false, - cookie: { - maxAge: 608800000 - } - }) -); -app.use(flash()); -//sections -//var front = require('./routes/front/index')(session); -var dash = require('./routes/dash/index'); -var page = require('./routes/dash/pages'); -var settings = require('./routes/dash/settings'); -var nav = require('./routes/dash/nav'); -//api -var pages = require('./api/v1/pages'); -var setting = require('./api/v1/settings'); -var mailer = require('./api/v1/mailer'); -var auth = require('./api/v1/auth'); -var backup = require('./api/v1/backup'); -// API PATHS - -app.use('/api/v1/page', pages); -app.use('/api/v1/settings', setting); -app.use('/api/v1/auth', auth); -app.use('/api/v1/mailer', mailer); -app.use('/api/v1/backup', backup); -// PAGES -app.use('/@/dashboard', dash); -app.use('/@/dashboard/page', page); -app.use('/@/dashboard/settings', settings); -app.use('/@/dashboard/navigation', nav); -// catch 404 and forward to error handler -app.use(function (req, res, next) { - var err = new Error('Not Found'); - err.status = 404; - next(err); -}); -// error handlers -// development error handler -// will print stacktrace -if (app.get('env') === 'development') { - app.use(function (err, req, res) { - res.status(err.status || 500); - res.render('error', { - message: err.message, - error: err - }); - }); -} -// production error handler -// no stacktraces leaked to user -app.use(function (err, req, res) { - res.status(err.status || 500); - res.render('error', { - message: err.message, - error: {} - }); -}); -module.exports = app; diff --git a/brain/data/Auth.js b/brain/data/Auth.js deleted file mode 100644 index 8d4d282..0000000 --- a/brain/data/Auth.js +++ /dev/null @@ -1,105 +0,0 @@ -import * as DataEvent from '../../src/com/events/DataEvent'; -const bCrypt = require('bcrypt'); -const jwt = require('jsonwebtoken'); -const _ = require('lodash'); - -export default class Auth { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - start() {} - - /** - * Makes sure access token is legit - * @parameter req - */ - - authCheck(req) { - let self = this; - return new Promise((resolve, reject) => { - let hash = req.headers['x-access-token']; - let response = []; - //check to see if user is logged in - if (!req.session.user) { - response = { - status: false, - type: DataEvent.API_REQUEST_LAME, - message: "You're not logged in, champ." - }; - reject(response); - } - - //Checks if token is a proper hash, if not reject - if (!self.isTokenValid(req.session.token, hash)) { - response = { - status: false, - type: DataEvent.API_REQUEST_LAME, - message: 'No Token Present. Auth Blocked' - }; - reject(response); - //res.json(); - } else { - var member = req.session.user; - jwt.verify(req.session.token, member.key, function (err, decoded) { - if (err) { - response = { - status: false, - type: DataEvent.API_REQUEST_LAME, - message: 'Invalid Token. Auth Blocked' - }; - reject(response); - } - response = { - status: true, - type: DataEvent.API_REQUEST_GOOD, - message: 'Token Verified', - token: decoded - }; - resolve(response); - }); - } - }); - } - - verifyCredentials(config, credentials) { - return new Promise((resolve, reject) => { - var found = _.find(config, { handle: credentials.handle }); - var response; - if (found) { - if (!this.isValidPassword(found, credentials.pass)) { - response = { - type: DataEvent.REQUEST_LAME, - message: 'CHECK YOUR PASSWORD' - }; - reject(response); - } - - response = { type: DataEvent.REQUEST_GOOD, message: 'Backup Verified. Restoring' }; - resolve(response); - } else { - response = { type: DataEvent.REQUEST_LAME, message: 'Handle not found, boss' }; - reject(response); - } - }); - } - - isValidPassword(user, password) { - return bCrypt.compareSync(password, user.password); - } - - /** - * Checks to make sure received token matches - * @parameter token: created token - * @parameter hashedToken: encrypted token - */ - isTokenValid(token, hashedToken) { - return bCrypt.compareSync(token, hashedToken); - } - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/brain/data/Book.js b/brain/data/Book.js deleted file mode 100644 index 33b4fdb..0000000 --- a/brain/data/Book.js +++ /dev/null @@ -1,273 +0,0 @@ -import fh from 'filehound'; -import fs from 'fs-extra'; -import metadataParser from 'markdown-yaml-metadata-parser'; -import _ from 'lodash'; -import * as DataEvent from '../../src/com/events/DataEvent'; -import Navigation from './Navigation'; -import Utils from './Utils'; -const moment = require('moment'); -const nav = new Navigation(); -const utils = new Utils(); - -/** - * Class for handling blog content pages - */ - -export default class Book { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - start() {} - /** - * Retrieves single page or pages - * @parameter id: optional id if requesting a single Page - */ - getPage(id) { - return new Promise((resolve, reject) => { - fh.create() - .paths('content/pages') - .ext('md') - .find() - .then(files => { - let pages = []; - for (let index = 0; index < files.length; index++) { - fs.readFile(files[index], { encoding: 'utf8' }, (err, file) => { - pages.push(metadataParser(file)); - }); - } - if (id === null || id === null || id === undefined) { - setTimeout(() => { - //TODO: Duct tape solution until something better created - utils.organizeTags(pages); - utils.organizeArchive(pages); - resolve(pages); - }, 100); - } else { - setTimeout(() => { - //TODO: Duct tape solution until something better created - - //make check against menu to see if page should be marked as menu item - //if it doesn't exist in menu change, edit page to - let page = _.find(pages, list => { - return list.metadata.uuid === id; - }); - resolve(page); - }, 100); - } - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Edits single page based on id and task - * @parameter body: object that contains all page information - * @parameter id: identifier for page being edited - * @parameter task: type of task being performed - listed in DataEvents Class /src/com/events - * @parameter user: object contain user information - */ - editPage(body, id, task, user) { - return new Promise((resolve, reject) => { - let self = this; - let response = []; - switch (task) { - case DataEvent.API_PAGE_CREATE: - case DataEvent.API_PAGE_WRITE: - var layout = 'page'; - var path = ''; - fs.ensureDir( - 'content/pages/' + - moment(body.created).format('YYYY') + - '/' + - moment(body.created).format('MM') + - '/' - ).then(() => { - if (body.menu === 'true') { - body.path = - moment(body.created).format('YYYY') + - '/' + - moment(body.created).format('MM'); - nav.editMenu(DataEvent.MENU_ADD_ITEM, body, user); - } else { - nav.editMenu(DataEvent.MENU_DELETE_ITEM, body, user); - } - if (body.layout !== 'page') layout = body.layout; - if (body.layout === null || body.layout === 'null') layout = 'page'; - var pageWrite = - '---\n' + - 'id: ' + - body.id + - '\n' + - 'uuid: ' + - body.uuid + - '\n' + - 'title: ' + - body.title + - '\n' + - 'feature: ' + - body.feature + - '\n' + - 'path: ' + - moment(body.created).format('YYYY') + - '/' + - moment(body.created).format('MM') + - '\n' + - 'layout: ' + - layout + - '\n' + - 'tags: ' + - body.tags + - '\n' + - 'author: ' + - user.handle + - '\n' + - 'created: ' + - moment(body.created).format() + - '\n' + - 'updated: ' + - moment(Date.now()).format() + - '\n' + - 'deleted: ' + - body.deleted + - '\n' + - 'menu: ' + - body.menu + - '\n' + - 'featured: ' + - body.featured + - '\n' + - 'published: ' + - body.published + - '\n' + - 'slug: ' + - body.slug + - '\n' + - '---\n' + - body.content; - layout === 'index' - ? (path = 'content/pages/index.md') - : (path = - 'content/pages/' + - moment(body.created).format('YYYY') + - '/' + - moment(body.created).format('MM') + - '/' + - body.slug + - '.md'); - fs.writeFile(path, pageWrite, err => { - // throws an error, you could also catch it here - - if (err) { - response = { type: DataEvent.PAGE_ERROR, message: err }; - reject(response); - } - - // success case, the file was saved - if (task === DataEvent.API_PAGE_CREATE) { - // if new file, update settings index and page count - response = { - type: DataEvent.PAGE_ADDED, - message: 'New Page Created', - id: body.uuid - }; - resolve(response); - } else { - response = { - type: DataEvent.PAGE_UPDATED, - message: 'Page saved. Nice Work' - }; - resolve(response); - } - }); - }); - - break; - case DataEvent.API_PAGE_DELETE: - this.getPage(id) - .then(page => { - let body = _.mapValues(page.metadata); - - body.content = page.content; - body.deleted = moment(Date.now()).format(); - body.menu = false; - - self.editPage(body, body.uuid, DataEvent.API_PAGE_WRITE, user) - .then(() => { - let item = { - title: body.title, - id: body.id, - slug: body.slug, - uuid: body.uuid - }; - nav.editMenu(DataEvent.MENU_DELETE_ITEM, item); - - response = { - type: DataEvent.PAGE_DELETED, - message: 'Page deleted, sport', - data: { uuid: body.uuid } - }; - resolve(response); - }) - .catch(err => { - response = { type: DataEvent.PAGE_ERROR, message: err }; - reject(response); - }); - }) - .catch(err => { - response = { type: DataEvent.PAGE_ERROR, message: err }; - reject(response); - }); - break; - } - }); - } - - reindexPages(req) { - var response = ''; - var self = this; - return new Promise((resolve, reject) => { - self.getPage() - .then(pages => { - let sorted = []; - for (let i = 0; i < pages.length; i++) { - let body = pages[i].metadata; - body.content = pages[i].content; - sorted.push(body); - } - //resorts pages by date created - let byDate = _.sortBy(sorted, page => { - return page.created; - }); - //reassigns id sequentially based on sorted pages - for (let index = 0; index < byDate.length; index++) { - byDate[index].id = index; - self.editPage( - byDate[index], - index, - DataEvent.API_PAGE_WRITE, - req.session.user - ); - } - response = { - type: DataEvent.API_REINDEX_PAGES, - message: 'Pages re-sorted. Easy peasy.', - count: byDate.length - }; - resolve(response); - }) - .catch(err => { - response = { type: DataEvent.PAGE_ERROR, message: err }; - reject(response); - }); - }); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/brain/data/Navigation.js b/brain/data/Navigation.js deleted file mode 100644 index a30b8d9..0000000 --- a/brain/data/Navigation.js +++ /dev/null @@ -1,75 +0,0 @@ -import fs from 'fs-extra'; -import _ from 'lodash'; -import * as DataEvent from '../../src/com/events/DataEvent'; -import Settings, { SETTINGS_FILE } from './Settings'; -const settings = new Settings(); - -export default class Navigation { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - sync(body) { - return new Promise((resolve, reject) => { - let response = []; - settings - .load(SETTINGS_FILE) - .then(settings => { - let payload = body; - settings.menu = payload.nav; - fs.writeJson('site/settings.json', settings) - .then(() => { - response = { - type: DataEvent.SETTINGS_UPDATED, - message: 'Menu order saved, champ' - }; - resolve(response); - }) - .catch(err => { - response = { - type: DataEvent.REQUEST_LAME, - message: err - }; - reject(response); - }); - }) - .catch(err => { - response = { - type: DataEvent.REQUEST_LAME, - message: err - }; - reject(response); - }); - }); - } - - editMenu(task, item) { - settings.load(SETTINGS_FILE).then(settings => { - switch (task) { - case DataEvent.MENU_ADD_ITEM: - settings.menu.push({ - title: item.title, - id: item.id, - slug: item.slug, - uuid: item.uuid, - path: item.path - }); - break; - case DataEvent.MENU_DELETE_ITEM: - settings.menu = _.remove(settings.menu, m => { - return m.uuid != item.uuid; - }); - - break; - } - fs.writeJSON(SETTINGS_FILE, settings); - }); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/brain/data/Render.js b/brain/data/Render.js deleted file mode 100644 index 576e6c5..0000000 --- a/brain/data/Render.js +++ /dev/null @@ -1,304 +0,0 @@ -import * as DataEvent from '../../src/com/events/DataEvent'; -import StringUtils from '../../src/com/utils/StringUtils'; -import Settings, { SETTINGS_FILE, SETTINGS_TAG } from './Settings'; -import fs from 'fs-extra'; -import sanitize from 'sanitize-html'; -import Utils from './Utils'; -const pug = require('pug'); -const md = require('markdown-it')('commonmark'); -const _ = require('lodash'); -const moment = require('moment'); -const settings = new Settings(); - -export default class Render { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - start() {} - - /** - * Renders all pages from markdown to html - * @parameter pages: payload for site pages - * @parameter theme: current theme being used as defined in settings - */ - publishAll(pages, theme, author) { - return new Promise((resolve, reject) => { - settings - .load(SETTINGS_FILE) - .then(config => { - let response = []; - let count = _.filter(pages, page => { - return page.metadata.deleted === false && page.metadata.published === true; - }).length; - let rendered = 0; - let display_count = 0; - let recent = []; - let featured = _.filter(pages, page => { - return ( - page.metadata.deleted === false && - page.metadata.published === true && - page.metadata.featured === true && - page.metadata.layout !== 'index' - ); - }); - for (let index = 0; index < pages.length; index++) { - pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); - const page = pages[index]; - if (page.metadata.deleted === false && page.metadata.published === true) { - if (page.metadata.layout != 'index') { - if (recent.length < config.global.display_limit) { - recent.push({ - title: page.metadata.title, - slug: page.metadata.slug, - feature: page.metadata.feature, - created: moment(page.metadata.created).fromNow(), - path: page.metadata.path - }); - display_count = ++display_count; - } - } - - let writeFile, template; - - let path = - 'public/' + - moment(page.metadata.created).format('YYYY') + - '/' + - moment(page.metadata.created).format('MM') + - '/'; - if (page.metadata.layout === 'index') { - template = 'content/themes/' + theme + '/index.pug'; - writeFile = 'public/index.html'; - } else { - writeFile = path + page.metadata.slug + '.html'; - template = 'content/themes/' + theme + '/page.pug'; - } - - let buffed = sanitize(page.content, { - allowedTags: ['del', 'a', 'iframe', 'img'], - allowedAttributes: { - a: ['href', 'name', 'target'], - img: ['src'], - iframe: [ - 'height', - 'width', - 'src', - 'frameborder', - 'allow', - 'allowfullscreen' - ] - } - }); - let bag = page.metadata.tags.split(','); - let tags = []; - for (let index = 0; index < bag.length; index++) { - let tag = bag[index].trim(); - tags.push({ - label: bag[index], - slug: new StringUtils().cleanString(tag) - }); - } - buffed = new StringUtils().decodeHTML(buffed); - let html = md.render(buffed, { html: true, xhtmlOut: true }); - //add open graph meta variables - let file = pug.renderFile(template, { - title: page.metadata.title, - default_bg: page.metadata.feature, - image: page.metadata.feature, - keywords: page.metadata.tags, - content: html, - tags: tags, - menu: config.menu, - recent_posts: recent, - featured_posts: featured, - meta: { - who: author, - when: moment(page.metadata.created).fromNow(), - tags: tags - }, - welcome_message: page.metadata.title - }); - - fs.ensureDir(path).then(() => { - fs.writeFile(writeFile, file, err => { - // throws an error, you could also catch it here - if (err) { - response = { - type: DataEvent.PAGES_NOT_RENDERED, - message: err - }; - reject(response); - } - - // success case, the file was saved - }); - }); - rendered = ++rendered; - if (rendered === count) { - response = { - type: DataEvent.PAGES_RENDERED, - message: 'All Pages Rendered. Sweet.' - }; - //move theme assets to public when pages are rendered - new Utils().moveAssets(); - resolve(response); - } - } else { - if (count === 0) { - response = { - type: DataEvent.PAGES_RENDERED, - message: 'No page rendering needed' - }; - resolve(response); - } - //check to see if deleted pages have been renderered and delete them - if (page.metadata.layout !== 'index') { - fs.unlink( - 'public/' + - page.metadata.path + - '/' + - page.metadata.slug + - '.html' - ) - .then() - .catch(() => { - //console.log('ERROR', err); - }); - } - } - } - }) - .catch(err => { - //console.log('ERROR', err); - reject(err); - }); - }); - } - /** - * Method to extract, group and render tags in page - * @parameter pages: payload for site pages - */ - publishTags(pages) { - let self = this; - return new Promise((resolve, reject) => { - self.loadRenderData() - .then(result => { - let tags = result.tags.tags; - let renderList = []; - for (let index = 0; index < tags.length; index++) { - let tag = tags[index]; - //console.log('**TAG**', tag.tag_name); - var pageList = []; - for (let i = 0; i < pages.length; i++) { - let page = pages[i]; - - //TODO: filter for deleted and unpublished pages - if ( - page.metadata.deleted === false && - page.metadata.published === true - ) { - if (_.includes(page.metadata.tags, tag.tag_name)) { - pageList.push({ - title: page.metadata.title, - slug: page.metadata.slug, - path: page.metadata.path - }); - } - } - } - renderList.push({ tag: tag.tag_name, tag_list: pageList, slug: tag.slug }); - } - let response = []; - for (let index = 0; index < renderList.length; index++) { - let item = renderList[index]; - let file = pug.renderFile( - 'content/themes/' + result.settings.global.theme + '/tags.pug', - { - title: item.tag, - default_bg: result.settings.global.background, - content_tags: 'THESE ARE TAGS', - tag_list: item.tag_list, - menu: result.settings.menu - } - ); - fs.ensureDir('public/tags', () => { - fs.writeFile('public/tags/' + item.slug + '.html', file, err => { - // throws an error, you could also catch it here - if (err) { - response = { - type: DataEvent.TAG_PAGES_NOT_RENDERED, - message: err - }; - reject(response); - } - // success case, the file was saved - response = { - type: DataEvent.TAG_PAGES_RENDERED, - message: 'Tag Pages ready to go. Good job.' - }; - resolve(response); - }); - }); - } - }) - .catch(err => { - reject(err); - }); - }); - } - /** - * Method to build page that lists all active pages, organized by year and month - * @parameter pages: payload for site pages - */ - publishArchive(archive) { - settings - .load(SETTINGS_FILE) - .then(settings => { - let file = pug.renderFile( - 'content/themes/' + settings.global.theme + '/archive.pug', - { - title: 'ARCHIVES', - default_bg: settings.global.background, - content_tags: 'COLD STORAGE', - archives: archive, - menu: settings.menu - } - ); - - fs.writeFile('public/archives.html', file, err => { - // throws an error, you could also catch it here - if (err) { - //console.log('ERROR', err); - //response = { type: DataEvent.TAG_PAGES_NOT_RENDERED, message: err }; - } - // success case, the file was saved - }); - }) - .catch(() => { - //console.log(err); - }); - } - loadRenderData() { - return new Promise((resolve, reject) => { - let getSettings = settings.load(SETTINGS_FILE); - let getTags = settings.load(SETTINGS_TAG); - Promise.all([getSettings, getTags]) - .then(result => { - const [settings, tags] = result; - let data = { settings: settings, tags: tags }; - resolve(data); - }) - .catch(err => { - reject(err); - }); - }); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/brain/data/Settings.js b/brain/data/Settings.js deleted file mode 100644 index 95e8c86..0000000 --- a/brain/data/Settings.js +++ /dev/null @@ -1,184 +0,0 @@ -import * as DataEvent from '../../src/com/events/DataEvent'; -import fs from 'fs-extra'; -const _ = require('lodash'); -export const SETTINGS_FILE = 'site/settings.json'; -export const SETTINGS_FOLKS = 'site/folks.json'; -export const SETTINGS_TAG = 'site/tags.json'; - -export default class Settings { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - sync(req) { - let self = this; - return new Promise((resolve, reject) => { - self.loadConfigData() - .then(result => { - let payload = req.body; - //so payload matches loaded config - payload.global.display_limit = result.settings.global.display_limit; - payload.global.port = result.settings.global.port; - payload.global.last_backup = result.settings.global.last_backup; - let user = req.session.user; - let found = _.find(result.folks, { id: user.id }); - let needToUpdate = false; - let response = []; - if (found) { - let index = found.id - 1; - if ( - result.folks[index].handle != payload.member.handle || - result.folks[index].email != payload.member.email - ) { - user.handle = payload.member.handle; - user.email = payload.member.email; - result.folks[index].handle = payload.member.handle; - result.folks[index].email = payload.member.email; - fs.writeJson('site/folks.json', result.folks); - } else { - //no need to save - } - } else { - let response = { - type: DataEvent.REQUEST_LAME, - message: "You're not logged in, champ" - }; - reject(response); - } - if (!_.isEqual(result.settings.global, payload.global)) { - let bg = payload.global.background; - let chunks = bg.split('/'); - let strip = chunks[0] + '/' + chunks[1] + chunks[2]; - payload.global.background = bg.substr(strip.length + 1, bg.length); - result.settings.global = payload.global; - needToUpdate = true; - } else { - //no need to save - } - - if (!_.isEqual(result.settings.email, payload.email)) { - result.settings.email = payload.email; - needToUpdate = true; - } else { - //no need to save - } - - if (needToUpdate) { - fs.writeJson('site/settings.json', result.settings) - .then(() => { - response = { - type: DataEvent.SETTINGS_UPDATED, - message: 'Settings Saved' - }; - resolve(response); - }) - .catch(() => { - //console.error(err); - }); - } else { - //no need to update - } - }) - .catch(err => { - reject(err); - }); - }); - } - saveTags(tags) { - let self = this; - return new Promise((resolve, reject) => { - self.load(SETTINGS_TAG) - .then(config => { - if (!_.isEqual(config.tags, tags)) { - config.tags = tags; - fs.writeJson('site/tags.json', config) - .then(() => { - let response = { - type: DataEvent.SETTINGS_UPDATED, - message: 'Settings Saved' - }; - resolve(response); - }) - .catch(err => { - reject(err); - }); - } else { - let response = { - type: DataEvent.SETTINGS_NOT_UPDATED, - message: 'Settings Already Saved' - }; - resolve(response); - } - }) - .catch(err => { - reject(err); - }); - }); - } - - updatePageIndex() { - fs.readJSON('site/settings.json').then(settings => { - settings.library_stats.current_index = ++settings.library_stats.current_index; - setTimeout(() => { - //TODO: Duct tape solution until something better created - fs.writeJSON('site/settings.json', settings) - .then(() => { - //console.log('ALL TO THE GOOD'); - }) - .catch(() => { - //.log('ERR', err); - }); - }, 100); - }); - } - - resetLibraryIndex(index) { - fs.readJSON('site/settings.json').then(settings => { - settings.library_stats.current_index = index; - setTimeout(() => { - //TODO: Duct tape solution until something better created - fs.writeJSON('site/settings.json', settings) - .then(() => { - //console.log('ALL TO THE GOOD'); - }) - .catch(() => { - //.log('ERR', err); - }); - }, 100); - }); - } - load(fileToLoad) { - return new Promise((resolve, reject) => { - fs.readJSON(fileToLoad) - .then(file => { - resolve(file); - }) - .catch(err => { - reject(err); - }); - }); - } - - loadConfigData() { - return new Promise((resolve, reject) => { - let getSettings = this.load(SETTINGS_FILE); - let getFolks = this.load(SETTINGS_FOLKS); - Promise.all([getSettings, getFolks]) - .then(result => { - const [settings, folks] = result; - let data = { settings: settings, folks: folks }; - resolve(data); - }) - .catch(err => { - reject(err); - }); - }); - } - - //-------------------------- - // event handlers - //-------------------------- -} diff --git a/brain/data/Utils.js b/brain/data/Utils.js deleted file mode 100644 index fcbb6b8..0000000 --- a/brain/data/Utils.js +++ /dev/null @@ -1,243 +0,0 @@ -import Settings, { SETTINGS_FILE } from './Settings'; -import Render from './Render'; -import StringUtils from '../../src/com/utils/StringUtils'; -import _ from 'lodash'; -import Auth from '../data/Auth'; -const settings = new Settings(); -const render = new Render(); -const stringUtils = new StringUtils(); -const moment = require('moment'); -const fs = require('fs-extra'); -const AdmZip = require('adm-zip'); -const auth = new Auth(); - -export default class Utils { - constructor() {} - - /** - * Retrieves single page or pages - * @parameter pages: payload of pages - */ - organizeTags(pages) { - let tags = []; - for (let index = 0; index < pages.length; index++) { - const page = pages[index]; - let temp = []; - temp = page.metadata.tags.split(','); - for (let i = 0; i < temp.length; i++) { - let label = temp[i].trim(); - if (!_.find(tags, { tag_name: label })) { - tags.push({ - tag_name: label, - slug: stringUtils.cleanString(label), - count: 1 - }); - } else { - _.find(tags, { tag_name: label }).count++; - } - } - } - tags = _.orderBy(tags, ['tag_name'], ['asc']); - - settings.saveTags(tags).then(() => { - render - .publishTags(pages) - .then(() => { - //console.log(response); - }) - .catch(() => { - //console.log(err); - }); - }); - } - organizeArchive(pages) { - let years = []; - let archive = []; - for (let index = 0; index < pages.length; index++) { - let page = pages[index].metadata; - if (page.layout !== 'index') { - let year = moment(page.created).format('YYYY'); - if (!_.find(years, { year: year })) { - years.push({ year: year, count: 1 }); - } else { - _.find(years, { year: year }).count++; - } - } - } - years.sort((a, b) => parseFloat(b.year) - parseFloat(a.year)); - for (let index = 0; index < years.length; index++) { - let item = years[index]; - let sorted = []; - let filtered = _.filter(pages, page => { - return moment(page.metadata.created).format('YYYY') === item.year; - }); - for (let index = 0; index < filtered.length; index++) { - let obj = filtered[index].metadata; - let month = moment(obj.created).format('MM'); - if (!_.find(sorted, { month: month })) { - sorted.push({ - month: month, - full_month: moment(obj.created).format('MMMM'), - count: 1, - pages: _.filter(pages, page => { - return ( - moment(page.metadata.created).format('YYYY') === item.year && - moment(page.metadata.created).format('MM') === month && - page.metadata.deleted === false && - page.metadata.published === true && - page.metadata.layout !== 'index' - ); - }) - }); - } else { - _.find(sorted, { month: month }).count++; - } - } - archive.push({ year: item.year, year_data: sorted }); - } - render.publishArchive(archive); - } - moveAssets() { - settings - .load(SETTINGS_FILE) - .then(settings => { - //move css assets to public directory - fs.copy( - 'content/themes/' + settings.global.theme + '/assets/css', - 'public/assets/css', - function (err) { - if (err) { - //console.log('An error occured while copying the folder.', err); - //return console.error(err); - } - //console.log('Copy completed!'); - } - ); - //move js assets to public directory - fs.copy( - 'content/themes/' + settings.global.theme + '/assets/scripts', - 'public/assets/scripts', - function (err) { - if (err) { - //console.log('An error occured while copying the folder.', err); - //return console.error(err); - } - //console.log('Copy completed!'); - } - ); - //TODO: Add method to move new logo to public from theme upload - }) - .catch(() => { - //console.log('ERROR', err); - }); - } - createBackup() { - //let self = this; - var response; - return new Promise(resolve => { - var zip = new AdmZip(); - zip.addLocalFolder('public/assets/images/blog', 'public/assets/images/blog'); - zip.addLocalFolder('content/pages', 'content/pages/'); - zip.addLocalFile('site/folks.json', 'settings/'); - zip.addLocalFile('site/settings.json', 'settings/'); - zip.addLocalFile('site/tags.json', 'settings/'); - zip.writeZip('content/backup.zip'); - fs.readJSON('site/settings.json').then(settings => { - settings.global.last_backup = moment(Date.now()).format(); - fs.writeJSON('site/settings.json', settings); - }); - - response = { - type: '', - message: 'BACKUP CREATED' - }; - - resolve(response); - }); - } - - restoreBackup(file) { - var response; - return new Promise((resolve, reject) => { - var zip = new AdmZip(file.buffer); - try { - zip.extractEntryTo('settings/settings.json', 'site', false, true); - zip.extractEntryTo('settings/folks.json', 'site', false, true); - zip.extractEntryTo('settings/tags.json', 'site', false, true); - zip.getEntries().forEach(function (entry) { - var entryName = entry.entryName; - var list = entryName.split('/'); - if (list[0] === 'public') { - if (list[6]) { - zip.extractEntryTo( - entryName, - 'public/assets/images/blog/' + list[4] + '/' + list[5], - false, - true - ); - } - } - if (list[0] === 'content') { - if (list[4]) { - zip.extractEntryTo( - entryName, - 'content/pages/' + list[2] + '/' + list[3], - false, - true - ); - } - zip.extractEntryTo('content/pages/index.md', 'content/pages', false, true); - } - }); - - resolve(); - } catch (error) { - response = { - type: error, - message: 'ERROR READING BACKUP' - }; - reject(response); - } - }); - } - - verifyBackup(file, body) { - var response; - var zip = new AdmZip(file.buffer); - var credentials = { handle: body.restore_member_handle, pass: body.restore_member_pass }; - var self = this; - return new Promise((resolve, reject) => { - try { - let folks = JSON.parse(zip.readAsText('settings/folks.json')); - auth.verifyCredentials(folks, credentials) - .then(() => { - //resolve(r); - self.restoreBackup(file) - .then(() => { - response = { - type: '', - message: 'RESTORE COMPLETE' - }; - resolve(response); - }) - .catch(err => { - response = { - type: err, - message: 'ERROR RESTORING BACKUP' - }; - }); - }) - .catch(err => { - reject(err); - }); - } catch (error) { - response = { - type: 'error', - message: 'ERROR READING BACKUP FILE' - }; - - reject(response); - } - }); - } -} diff --git a/brain/routes/dash/index.js b/brain/routes/dash/index.js deleted file mode 100644 index beaa0ac..0000000 --- a/brain/routes/dash/index.js +++ /dev/null @@ -1,62 +0,0 @@ -import Book from '../../data/Book'; -import Settings, { SETTINGS_FILE } from '../../data/Settings'; -const express = require('express'); -const moment = require('moment'); -const router = express.Router(); -const book = new Book(); -const settings = new Settings(); -const indexLimit = 5; - -//-------------------------- -// Index -//-------------------------- -router.get('/', function (req, res) { - settings - .load(SETTINGS_FILE) - .then(config => { - book.getPage().then(result => { - result.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); - let indexPages = []; - let indexCount = 0; - result.forEach(page => { - if ( - typeof page.metadata.deleted === 'undefined' || - page.metadata.deleted === false - ) { - if (indexCount === indexLimit) return; - indexPages.push({ - page: page, - date: moment(page.metadata.created).fromNow() - }); - ++indexCount; - } - }); - let pageData = []; - if (req.session.user) { - pageData = { title: config.global.title, status: true, pages: indexPages }; - } else { - pageData = { title: config.global.title, status: false, pages: indexPages }; - } - - res.render('index', pageData); - }); - }) - .catch(err => { - if (err.code === 'ENOENT') { - let setupData = { title: 'Fipamo Set up' }; - res.render('init', setupData); - } else { - res.render('error', { error: err }); - } - }); -}); - -//-------------------------- -// Logout -//-------------------------- -router.get('/logout', (req, res) => { - //req.logout(); - req.session.destroy(); - res.redirect('/@/dashboard'); -}); -module.exports = router; diff --git a/brain/routes/dash/nav.js b/brain/routes/dash/nav.js deleted file mode 100644 index 56bbbc2..0000000 --- a/brain/routes/dash/nav.js +++ /dev/null @@ -1,79 +0,0 @@ -import Book from '../../../brain/data/Book'; -import Settings, { SETTINGS_FILE } from '../../data/Settings'; -const express = require('express'); -const router = express.Router(); -const _ = require('lodash'); -//const settings = require('../../../site/settings.json'); -const book = new Book(); -const settings = new Settings(); -//-------------------------- -// SETTINGS -//-------------------------- -router.get('/', function (req, res) { - if (req.session.user) { - settings - .load(SETTINGS_FILE) - .then(settings => { - var nav = []; - book.getPage() - .then(pages => { - if (settings.menu.length === 0) { - for (let index = 0; index < pages.length; index++) { - let item = pages[index].metadata; - if (item.menu) { - nav.push({ - id: item.id, - uuid: item.uuid, - title: item.title, - slug: item.slug, - path: item.path - }); - } - } - } else { - let newpages = []; - nav = settings.menu; - for (let index = 0; index < pages.length; index++) { - let item = pages[index].metadata; - if (item.menu) - newpages.push({ - id: item.id, - uuid: item.uuid, - title: item.title, - slug: item.slug, - path: item.path - }); - } - for (let i = 0; i < newpages.length; i++) { - if (_.find(nav, { uuid: newpages[i].uuid })) { - //menu item already exists - } else { - nav.push({ - id: newpages[i].id, - uuid: newpages[i].uuid, - title: newpages[i].title, - slug: newpages[i].slug, - path: newpages[i].path - }); - } - } - } - res.render('navigation', { - menu: nav, - welcome: 'Edit Navigation', - status: true, - title: 'Dashboard | Navigation' - }); - }) - .catch(err => { - res.render('error', { error: err }); - }); - }) - .catch(err => { - res.render('error', { error: err }); - }); - } else { - res.redirect('/@/dashboard'); - } -}); -module.exports = router; diff --git a/brain/routes/dash/pages.js b/brain/routes/dash/pages.js deleted file mode 100644 index 463a94a..0000000 --- a/brain/routes/dash/pages.js +++ /dev/null @@ -1,172 +0,0 @@ -import Book from '../../data/Book'; -const express = require('express'); -const router = express.Router(); -const moment = require('moment'); -const book = new Book(); -const uuidv4 = require('uuid/v4'); -const fs = require('fs-extra'); -//-------------------------- -// POSTS -//-------------------------- -router.get('/list/:filter?/:page?', function (req, res) { - var pageNum = req.params.page; - var filter = req.params.filter; - if (pageNum == '' || pageNum == null) pageNum = 1; - if (filter == '' || filter == null) filter = 'all'; - if (req.session.user) { - book.getPage() - .then(pages => { - pages.sort((a, b) => parseFloat(b.metadata.id) - parseFloat(a.metadata.id)); - let all = []; - let deleted = []; - let published = []; - let menu = []; - let featured = []; - for (let index = 0; index < pages.length; index++) { - let item = pages[index].metadata; - if (typeof item.deleted === 'undefined' || item.deleted === false) { - all.push({ - page: pages[index].metadata, - date: moment(pages[index].metadata.created).fromNow() - }); - if (item.published == true) - published.push({ - page: pages[index].metadata, - date: moment(pages[index].metadata.created).fromNow() - }); - if (item.menu == true) - menu.push({ - page: pages[index].metadata, - date: moment(pages[index].metadata.created).fromNow() - }); - if (item.featured == true) - featured.push({ - page: pages[index].metadata, - date: moment(pages[index].metadata.created).fromNow() - }); - } else { - deleted.push({ - page: pages[index].metadata, - date: moment(pages[index].metadata.created).fromNow() - }); - } - } - var filtered; - switch (filter) { - case 'published': - filtered = published; - break; - case 'deleted': - filtered = deleted; - break; - default: - filtered = all; - break; - } - var count = Math.ceil(filtered.length / 6); - var pageItems = []; - var itemLimit = 6; - var rangeStart = pageNum * itemLimit - itemLimit; - for (var i = 0; i < itemLimit; i++) { - try { - if (filtered[i + rangeStart].page.id != null) { - pageItems.push({ - page: filtered[i + rangeStart].page, - date: moment(filtered[i + rangeStart].page.created).fromNow() - }); - } - } catch (e) { - //console.log("NO POST", e) - } - } - res.render('book-index', { - title: 'Dashbord | Book', - welcome: 'Your pages', - items: pageItems, - page_info: { - all: all.length, - deleted: deleted.length, - published: published.length, - pages: pages.length, - featured: featured.length - }, - page_index: pageNum, - page_count: count, - postFilter: filter, - status: true - }); - }) - .then(() => { - //console.log(value); - }) - .catch(err => { - res.render('error', { error: err }); - }); - } else { - res.redirect('/@/dashboard'); - } -}); - -//-------------------------- -// BLOG POST ADD DISPLAY -//-------------------------- -router.get('/add/new', function (req, res) { - if (req.session.user) { - //need to grab a few copy of settings for the lastest index - fs.readJSON('site/settings.json') - .then(config => { - res.render('page-edit', { - id: config.library_stats.current_index, - uuid: uuidv4(), - title: 'Add New Page', - user_status: true, - welcome: 'Add New Page', - date: moment(Date.now()).format('YYYY MMM DD'), - page: [], - rawDate: moment(Date.now()).format(), - status: ['false', 'false', 'false'], - edit: false - }); - }) - .catch(err => { - res.render('error', { error: err }); - }); - } else { - res.redirect('/@/dashboard'); - } -}); -//-------------------------- -// BLOG POST EDIT DISPLAY -//-------------------------- -router.get('/edit/:id', function (req, res) { - var id = req.params.id; - if (req.session.user) { - book.getPage(id) - .then(page => { - res.render('page-edit', { - id: page.metadata.id, - uuid: page.metadata.uuid, - title: 'Edit Page', - welcome: 'Edit Page', - page: page.metadata, - date: moment(page.metadata.created).format('YYYY MMM DD HH:mm'), - layout: page.metadata.layout, - rawDate: page.metadata.created, - content: page.content, - feature: page.metadata.feature, - status: [ - String(page.metadata.menu), - String(page.metadata.featured), - String(page.metadata.published) - ], - edit: true - }); - }) - .catch(err => { - res.render('error', { error: err }); - }); - } else { - res.redirect('/@/dashboard'); - } -}); -module.exports = router; diff --git a/brain/routes/dash/settings.js b/brain/routes/dash/settings.js deleted file mode 100644 index afcbd58..0000000 --- a/brain/routes/dash/settings.js +++ /dev/null @@ -1,94 +0,0 @@ -import Settings, { SETTINGS_FILE } from '../../data/Settings'; -const express = require('express'); -const router = express.Router(); -const FileHound = require('filehound'); -const fs = require('fs-extra'); -const settings = new Settings(); -const moment = require('moment'); -var config = []; -//-------------------------- -// SETTINGS -//-------------------------- -router.get('/', function (req, res) { - settings - .load(SETTINGS_FILE) - .then(obj => { - config = obj; - }) - .catch(err => { - res.render('error', { error: err }); - }); - loadThemes() - .then(themes => { - if (req.session.user) { - let memberInfo = []; - let user = req.session.user; - memberInfo.push({ - handle: user.handle, - email: user.email, - avi: user.avi - }); - themes.sort(function (a, b) { - var textA = a.theme.name.toUpperCase(); - var textB = b.theme.name.toUpperCase(); - return textA < textB ? -1 : textA > textB ? 1 : 0; - }); - - res.render('settings', { - title: 'Dashboard | Settings', - welcome: 'Your Settings', - status: true, - themes: themes, - settings: config, - last_backup: moment(config.global.last_backup).fromNow(), - member: memberInfo[0] - }); - } else { - res.redirect('/@/dashboard'); - } - }) - .catch(err => { - res.render('error', { error: err }); - }); -}); -module.exports = router; - -function loadThemes() { - return new Promise((resolve, reject) => { - settings - .load(SETTINGS_FILE) - .then(settings => { - FileHound.create() - .paths('content/themes') - .ext('json') - .find() - .then(files => { - let themes = []; - for (let index = 0; index < files.length; index++) { - fs.readJSON(files[index], (err, theme) => { - if (theme.name == settings.global.theme) { - themes.push({ - theme: theme, - current: 'true' - }); - } else { - themes.push({ - theme: theme, - current: 'false' - }); - } - }); - } - setTimeout(() => { - resolve(themes); - }, 200); - }) - .catch(err => { - reject(err); - }); - }) - .catch(err => { - reject(err); - }); - }); -} diff --git a/brain/views/book-index.pug b/brain/views/book-index.pug deleted file mode 100644 index e53eaa3..0000000 --- a/brain/views/book-index.pug +++ /dev/null @@ -1,57 +0,0 @@ -extends frame -block main-content - #post-index - #post-index-wrapper - #post-index-menu - - if(postFilter=='all') - a.current-filter(href="/@/dashboard/page/list/all")= "All Pages ("+page_info.all+")" - - else - a(href="/@/dashboard/page/list/all")= "All Pages ("+page_info.all+")" - | . - - if(postFilter=='published') - a.current-filter(href="/@/dashboard/page/list/published")= "Published ("+page_info.published+")" - - else - a(href="/@/dashboard/page/list/published")= "Published ("+page_info.published+")" - | . - - if(postFilter=='deleted') - a.current-filter(href="/@/dashboard/page/list/deleted")= "Deleted ("+page_info.deleted+")" - - else - a(href="/@/dashboard/page/list/deleted")= "Deleted ("+page_info.deleted+")" - - a.add-new-post(href="/@/dashboard/page/add/new") + - label Create New Post - #posts-list - - var index = 0; - - for ( index; index < items.length; index++) - a.page-link(href="/@/dashboard/page/edit/"+items[index].page.uuid id=items[index].uuid) - div.page-bg(style="background: #fc6399 url("+items[index].page.feature+") no-repeat center center / cover") - #meta - - var menu = String(items[index].page.menu) - - var published = String(items[index].page.published) - - var featured = String(items[index].page.featured) - span= items[index].date - label= items[index].page.title - br - #options - span.meta-options(data-active=menu) MENU ITEM - span.meta-options(data-active=published) PUBLISHED - span.meta-options(data-active=featured) FEATURED - - - - var next = parseInt(page_index, 10) + 1 - - var prev = parseInt(page_index, 10) - 1 - - if(next > page_count) next = 1 - - if(prev <= 0) prev = page_count - - if(page_count > 1) - br - .paginate - a.page-btns(href="/@/dashboard/page/list/"+postFilter+"/"+prev) - svg(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-chevron-left') - - span.count= "PAGE "+page_index+" OF "+page_count - - a.page-btns(href="/@/dashboard/page/list/"+postFilter+"/"+next) - svg(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-chevron-right') - diff --git a/brain/views/email/base.pug b/brain/views/email/base.pug deleted file mode 100644 index 8c0005a..0000000 --- a/brain/views/email/base.pug +++ /dev/null @@ -1,94 +0,0 @@ -doctype strict -head - meta(http-equiv='Content-Type' content='text/html; charset=utf-8') - meta(name='viewport' content='width=device-width, initial-scale=1.0') - title #{title} - style(type='text/css'). - /* reset */ - #outlook a { - padding: 0; - } - /* Force Outlook to provide a "view in browser" menu link. */ - .ExternalClass { - width: 100%; - } - /* Force Hotmail to display emails at full width */ - .ExternalClass, - .ExternalClass p, - .ExternalClass span, - .ExternalClass font, - .ExternalClass td, - .ExternalClass div { - line-height: 100%; - } - /* Forces Hotmail to display normal line spacing. More on that: http://www.emailonacid.com/forum/viewthread/43/ */ - p { - margin: 0; - padding: 0; - font-size: 0px; - line-height: 0px; - } - /* squash Exact Target injected paragraphs */ - table td { - border-collapse: collapse; - } - /* Outlook 07, 10 padding issue fix */ - table { - border-collapse: collapse; - mso-table-lspace: 0pt; - mso-table-rspace: 0pt; - } - /* remove spacing around Outlook 07, 10 tables */ - /* bring inline */ - img { - display: block; - outline: none; - text-decoration: none; - -ms-interpolation-mode: bicubic; - } - a img { - border: none; - } - a { - text-decoration: none; - color: #000001; - } - /* text link */ - a.phone { - text-decoration: none; - color: #000001 !important; - pointer-events: auto; - cursor: default; - } - /* phone link, use as wrapper on phone numbers */ - span { - font-size: 13px; - line-height: 17px; - font-family: monospace; - color: #000001; - } - //if gte mso 9 - style. - /* Target Outlook 2007 and 2010 */ -// body wrapper -table(cellpadding='0' cellspacing='0' border='0' style='margin:0; padding:0; width:100%; line-height: 100% !important;') - tr - td(valign='top') - // edge wrapper - table(cellpadding='0' cellspacing='0' border='0' align='center' width='600' style='background: #374857;') - tr - td(valign='top' style='vertical-align: top;') - // ///////////////////////////////////////////////////// - table(cellpadding='0' cellspacing='0' border='0' align='center' style='width:100%') - tr - td(valign='top' style='vertical-align: top;text-align: center; padding: 10px') - span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#f5ab35; font-size:20px; font-weight: bold;') - | #{header} - tr - td(valign='top' style='vertical-align: top; background: #161d23; padding:10px;') - span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#cecece; font-size:16px;') - | #{content} - tr - td(valign='top' style='vertical-align: top; padding: 10px;') - span(style='font-family: Arial,Helvetica Neue,Helvetica,sans-serif; color:#b2cce5; font-size:12px;') - | #{footer} diff --git a/brain/views/error.pug b/brain/views/error.pug deleted file mode 100644 index b3cb2b1..0000000 --- a/brain/views/error.pug +++ /dev/null @@ -1,8 +0,0 @@ -extends frame -block main-content - #error-index - br - label#message Ok, so this is... awkward - br - label#error= error - diff --git a/brain/views/frame.pug b/brain/views/frame.pug deleted file mode 100644 index e137b12..0000000 --- a/brain/views/frame.pug +++ /dev/null @@ -1,42 +0,0 @@ -doctype html -html(xmlns='http://www.w3.org/1999/xhtml', lang='en', xml:lang="en") - head - title= title - meta(content="text/html;charset=utf-8", http-equiv="Content-Type") - meta(meta content="utf-8", http-equiv="encoding") - meta(name='viewport', content='width=device-width, initial-scale=1.0') - meta(name="keywords" content="") - meta(name="description" content="") - meta(http-equiv="content-type", content="text/html; charset=utf-8") - //meta(property="og:image" content="https://thetwelfth.house/base-assets/images/current.png") - //meta(name="twitter:image" content="https://thetwelfth.house/base-assets/images/current.png") - link(rel='stylesheet', href="/assets/css/dash.css", type='text/css') - body - #notifications.notifications - #notifyMessage.notifyMessage - .notify-icon#notify-good - svg(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-flirt') - .notify-icon#notify-lame - svg(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-emoji-sad') - .notify-icon#notify-working - #notify-working-box - svg(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-cog') - p#message-text This is a message - .main-container#main-content - section#dash-index-content - header#header - #wrapper - #left - a(href="/@/dashboard") - img#the-logo(src="/assets/images/global/the-logo.svg") - #right - -if(status) - include partials/dash-nav - block main-content - //script(src='/assets/scripts/dashkit.min.js' type="text/javascript") - script(src='/assets/scripts/dash.min.js' type="text/javascript") - - diff --git a/brain/views/index.pug b/brain/views/index.pug deleted file mode 100644 index 9841fe8..0000000 --- a/brain/views/index.pug +++ /dev/null @@ -1,9 +0,0 @@ -extends frame -block main-content - #dash-index - #dash-index-wrapper - -if(!status) - include partials/login - -else - include partials/front - diff --git a/brain/views/init.pug b/brain/views/init.pug deleted file mode 100644 index 7069493..0000000 --- a/brain/views/init.pug +++ /dev/null @@ -1,52 +0,0 @@ -extends frame -block main-content - #dash-index - #dash-index-wrapper - .dash-init#dash-init - br - form#init-form - h1 What up. - p Just fill these in and it'll get you started. - label What's your handle? - br - input.large(type='text', name='new_member_handle' id='new_member_handle', placeholder="What\'s your handle?") - br - label Let's get that email - br - input.large(type='text', name='new_member_email' id='new_member_email', placeholder="Email Please") - br - label Let's get a password - br - input.large(type='password', name='new_member_pass' id='new_member_pass', placeholder="Password Please") - br - label And let's confirm that password - br - input.large(type='password', name='new_member_pass2' id='new_member_pass2', placeholder="Password Confirm") - br - label And finally, a title - br - input.large(type='text', name='new_member_title' id='new_member_title', placeholder="Site Title Please") - br - button#init-blog(data-action='blog-init' type='submit') SET IT UP - .option - button.init-option#init-switch-restore OR RESTORE FROM BACKUP - - .dash-restore#dash-restore - form#init-restore - h1 Restore backup. - p Let's verify your backup - label What's your handle? - br - input.large(type='text', name='restore_member_handle' id='restore_member_handle', placeholder="What\'s your handle?") - br - label Let's get a password - br - input.large(type='password', name='restore_member_pass' id='restore_member_pass', placeholder="Password Please") - br - label Backup File - br - input(id="backup-upload" type="file" name="backup-upload") - br - button#blog-restore(data-action='blog-restore' type='submit') RESTORE - .option - button.init-option#init-switch-fresh OR INSTALL FRESH SITE diff --git a/brain/views/navigation.pug b/brain/views/navigation.pug deleted file mode 100644 index b843ad1..0000000 --- a/brain/views/navigation.pug +++ /dev/null @@ -1,16 +0,0 @@ -extends frame -block main-content - #nav-index - #nav-index-wrapper - #nav-pages - - var index = 0; - - for ( index; index < menu.length; index++) - .nav-item(id=menu[index].id, data-slug=menu[index].slug, data-uuid=menu[index].uuid, data-path=menu[index].path) - svg#item-arrows(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-select-arrows') - label - = menu[index].title - #nav-btns - button.nav-btn#edit-item(data-id=menu[index].uuid) EDIT - button.nav-btn#remove-item(data-id=menu[index].id, data-uuid=menu[index].uuid) REMOVE - diff --git a/brain/views/page-edit.pug b/brain/views/page-edit.pug deleted file mode 100644 index 1f30294..0000000 --- a/brain/views/page-edit.pug +++ /dev/null @@ -1,57 +0,0 @@ -extends frame -block main-content - #post-edit-index(data-index=id data-uuid=uuid data-layout=layout data-slug=page.slug) - #post-edit-index-wrapper - //h2 EDIT - =post_title - #post-feature - //label FEATURE IMAGE - if(post_feature == 'null') - #featured-image-drop - | DRAG AND DROP IMAGE OR - label(for="featured-image-upload") CLICK TO CHOOSE - - else - #featured-new-image-btn - button#new-feature-upload - svg#new-feature-upload(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-image-inverted') - #featured-image-drop - img#featured-image(src=page.feature) - #post-header - #post-header-wrapper.columns - #post-title.column - label TITLE - textarea(id="post_title" type='text', name='post_title' class='post-edit', placeholder='title', required, autofocus) - =page.title - - label CREATED - br - span(id="post-date" type="text" value=date data-raw=rawDate)= date - //#calendar-icon - svg(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-calendar') - //input(id="post-date" type="text" value=date data-raw=rawDate) - - #post-meta.column - label TAGS - textarea(id='post_tags' type='text', name='post_tags' class='form-control', placeholder='tags [comma seperated]', autofocus) - =page.tags - // file inputs for image uploads - label OPTIONS - br - include partials/options - input(id="featured-image-upload" type="file" name="featured-image-upload") - input(id="post-image-upload" type="file" name="post-image-upload") - #edit-post - include partials/editor - #edit-post-wrapper - pre - code#edit-post-text(contenteditable="true") !{content} - - - - - - - diff --git a/brain/views/partials/dash-nav.pug b/brain/views/partials/dash-nav.pug deleted file mode 100644 index a52be7c..0000000 --- a/brain/views/partials/dash-nav.pug +++ /dev/null @@ -1,7 +0,0 @@ -#dash-menu - a#settings(href="/@/dashboard/settings") Settings - | . - a#navigation(href="/@/dashboard/navigation") Navigation - | . - - a#navigation(href="/@/dashboard/logout") Log Out diff --git a/brain/views/partials/editor.pug b/brain/views/partials/editor.pug deleted file mode 100644 index f3de507..0000000 --- a/brain/views/partials/editor.pug +++ /dev/null @@ -1,37 +0,0 @@ -#edit-control - button#edit-bold.content-editor-btn-text.editor-button(title="bold") - | B - button#edit-italic.content-editor-btn-text.editor-button(title="italics") - | I - button#edit-strikethrough.content-editor-btn-text.editor-button(title="strikethrough") - | S - button#edit-link.content-editor-btn-icon.editor-button(title="insert link") - svg#edit-link(viewBox="0 0 20 20" class="icons") - use#edit-link(xlink:href='/assets/images/global/sprite.svg#entypo-link') - button#edit-header1.content-editor-btn-text.editor-button(title="header 1") - | H1 - button#edit-header2.content-editor-btn-text.editor-button(title="header 2") - | H2 - button#edit-header3.content-editor-btn-text.editor-button(title="header 3") - | H3 - button#edit-image.content-editor-btn-icon.editor-button(title='insert image') - svg#edit-image(viewBox="0 0 20 20" class="icons") - use#edit-image(xlink:href='/assets/images/global/sprite.svg#entypo-image') - - if(edit) - button#edit-update.post-sumbit-btn.submit-start.editor-button(data-action='blog-update' data-id=page.id type='submit') - svg#submit-update(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-save' data-action='blog-update' data-id=page.id) - svg#submit-good.icon-hide(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-thumbs-up') - svg#submit-error.icon-hide(viewBox="0 0 20 20" class="icons") - use(xlink:href='/assets/images/global/sprite.svg#entypo-thumbs-down') - button#edit-delete.content-editor-btn-icon.editor-button.submit-delete(for="post-delete" title='delete post') - svg#edit-delete(viewBox="0 0 20 20" class="icons") - use#edit-delete(xlink:href='/assets/images/global/sprite.svg#entypo-cross') - else - button#edit-save.post-sumbit-btn.submit-start.editor-button(data-action='blog-add' type='submit') - svg#submit-save(viewBox="0 0 20 20" class="icons") - use#submit-save(xlink:href='/assets/images/global/sprite.svg#entypo-plus' data-action='blog-add') - - \ No newline at end of file diff --git a/brain/views/partials/front.pug b/brain/views/partials/front.pug deleted file mode 100644 index 1cb6df1..0000000 --- a/brain/views/partials/front.pug +++ /dev/null @@ -1,30 +0,0 @@ -#dash-recent - #recent-list - .recent-header - h3 Recent - .index-menu - a(href='/@/dashboard/page/list') View Pages - | . - a(href='/@/dashboard/page/add/new') Create Page - br - - var index = 0; - - var cap = 5; // number of posts to display, get rid of this and put it in the config - if(pages.length == 0) - label this is empty - else - - for ( index; index < pages.length; index++) - a.post-link(href="/@/dashboard/page/edit/"+pages[index].page.metadata.uuid id=pages[index].page.metadata.uuid style="background:url("+pages[index].page.metadata.feature+") no-repeat center center / cover") - div - - label= pages[index].page.metadata.title - #options - - var menu = String(pages[index].page.metadata.menu) - - var published = String(pages[index].page.metadata.published) - - var featured = String(pages[index].page.metadata.featured) - span.item-options(data-active=menu) MENU ITEM - span.item-options(data-active=published) PUBLISHED - span.item-options(data-active=featured) FEATURED - span= pages[index].date - - - diff --git a/brain/views/partials/login.pug b/brain/views/partials/login.pug deleted file mode 100644 index 7919208..0000000 --- a/brain/views/partials/login.pug +++ /dev/null @@ -1,7 +0,0 @@ -#dash-login - .dash-form#dash-form - form(id="login" class='login', name="login" action="/@/dashboard/login" method="POST") - input(type='text', name='handle' class='form-control', placeholder='handle', required, autofocus) - input(type='password', name='password' class='form-control', placeholder='password', required) - button(id="login-btn", class='login-btn', type='submit') SUBMIT YOUR STUFF - \ No newline at end of file diff --git a/brain/views/partials/mailforms.pug b/brain/views/partials/mailforms.pug deleted file mode 100644 index f50df96..0000000 --- a/brain/views/partials/mailforms.pug +++ /dev/null @@ -1,25 +0,0 @@ - --if(settings.email.active == "option-smtp") - #mail-smtp(data-enabled='true') - input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) - input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) - input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) - #mail-mg(data-enabled='false') - input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) - input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) --else if(settings.email.active == "option-mg") - #mail-smtp(data-enabled='false') - input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) - input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) - input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) - #mail-mg(data-enabled='mg') - input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) - input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) --else - #mail-smtp(data-enabled='false') - input(type='text', name='smtp-domain' id='smtp-domain', placeholder='domain', value=settings.email.smtp.domain autofocus) - input(type='text', name='smtp-email' id='smtp-email', placeholder='email', value=settings.email.smtp.email , autofocus) - input(type='text', name='smtp-pass' id='smtp-pass', placeholder='password', value=settings.email.smtp.password , autofocus) - #mail-mg(data-enabled='false') - input(type='text', name='mg-domain' id='mg-domain', placeholder='domain', value=settings.email.mailgun.domain autofocus) - input(type='text', name='mg-key' id='mg-key', placeholder='api key', value=settings.email.mailgun.key , autofocus) \ No newline at end of file diff --git a/brain/views/partials/options.pug b/brain/views/partials/options.pug deleted file mode 100644 index bfe7555..0000000 --- a/brain/views/partials/options.pug +++ /dev/null @@ -1,13 +0,0 @@ -#post-options - button#option-menu-pin.option-inactive.post-option-btn(data-active= status[0], title='Pin to Menu') - svg#option-page-icon(viewBox="0 0 20 20" class="icons") - use#option-page-icon(xlink:href='/assets/images/global/sprite.svg#entypo-pin') - button#option-feature.option-inactive.post-option-btn(data-active= status[1], title='Feature') - svg#option-feature-icon(viewBox="0 0 20 20" class="icons") - use#option-feature-icon(xlink:href='/assets/images/global/sprite.svg#entypo-star') - button#option-published.option-inactive.post-option-btn(data-active= status[2], title='Publish') - svg#option-published-icon(viewBox="0 0 20 20" class="icons") - use#option-published-icon(xlink:href='/assets/images/global/sprite.svg#entypo-globe') - //button#option-preview.option-inactive(data-active="false") - svg#option-preview-icon(viewBox="0 0 20 20" class="icons") - use#option-preview-icon(xlink:href='/assets/images/global/sprite.svg#entypo-eye') diff --git a/brain/views/settings.pug b/brain/views/settings.pug deleted file mode 100644 index 523bd1e..0000000 --- a/brain/views/settings.pug +++ /dev/null @@ -1,94 +0,0 @@ -extends frame -block main-content - #settings-actions - #buttons - button#save-toggle - svg#submit-update(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-save') - //button#privacy-toggle(data-private=settings.global.private) - -if (settings.global.private == 'false') - | SITE IS PRIVATE - -else - | SITE IS PUBLIC - button#publish-pages - svg#submit-update(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-publish') - button#render-toggle(data-render=settings.global.renderOnSave) - svg#submit-update(viewBox="0 0 20 20" class="icons") - use#submit-update(xlink:href='/assets/images/global/sprite.svg#entypo-ccw') - - #site-background - label FEATURE SITE IMAGE - img#background(src=settings.global.background, alt="image for site background", for="background-upload") - input(id="background-upload" type="file" name="backgrond-upload") - - #settings-index - #settings-index-wrapper - #member-settings.columns - #member-settings-1.column - label AVATAR - #member-avatar-drop - img#avatar(src=member.avi, for="avatar-upload") - input(id="avatar-upload" type="file" name="avatar-upload") - #member-settings-2.column - label INFO - #member-info - input(type='text', name='handle' id='settings-handle', placeholder='handle', value=member.handle, autofocus) - input(type='text', name='email' id='settings-email', placeholder='email', value=member.email, autofocus) - input(type='text', name='base-url' id='settings-url', placeholder='url', value=settings.global.base_url, autofocus) - input(type='text', name='base-title' id='settings-title', placeholder='site title', value=settings.global.title, autofocus) - textarea(id="settings-desc" type='text', name='settings_desc' class='settings-dec', placeholder='description stuff', autofocus) - =settings.global.descriptions - #member-utils.columns - #util-1.column - label BACKUP TOOLS - br - button#create-backup CREATE BACKUP - br - -if(settings.global.last_backup != null) - .backup-meta - | The last back up was created - a(href='/api/v1/backup/download')= last_backup - br - -else - br - span No back ups. Frowny face. - button#restore-backup(for='backup-upload') RESTORE BACKUP - input(id="backup-upload" type="file" name="backup-upload") - #util-2.column - label MAINTENANCE - br - button#reindex-pages REINDEX PAGES - #option-settings.columns - #theme-settings.column - label THEMES - br - - var index = 0; - - for ( index; index < themes.length; index++) - -if(themes[index].current == "true") - a.theme-select(href="#" id=themes[index].theme.name, data-enabled="true") - = themes[index].theme["display-name"] - //svg(viewBox="0 0 20 20" class="icons") - use(xlink:href='/dash/assets/images/sprite.svg#entypo-check') - -else - a.theme-select(href="#" id=themes[index].theme.name, data-enabled="false") - = themes[index].theme["display-name"] - #mail-settings.column - label E-MAIL - -if(settings.email.active == "option-none") - a.mail-option#option-none(href="#", data-enabled='true') NONE - -else - a.mail-option#option-none(href="#", data-enabled='false') NONE - -if(settings.email.active == "option-mg") - a.mail-option#option-mg(href="#", data-enabled='true') MAILGUN - -else - a.mail-option#option-mg(href="#", data-enabled='false') MAILGUN - -if(settings.email.active == "option-smtp") - a.mail-option#option-smtp(href="#", data-enabled='true') SMTP - -else - a.mail-option#option-smtp(href="#", data-enabled='false') SMTP - include partials/mailforms - button#send-mail TEST MAIL - - - diff --git a/config/folks.json b/config/folks.json new file mode 100644 index 0000000..ae6ba06 --- /dev/null +++ b/config/folks.json @@ -0,0 +1 @@ +[{"id":1,"handle":"ItsRo","avi":"/assets/images/user/2020/09/download20200802144459.png","email":"are0h@protonmail.com","password":"$2b$10$77PMC2W6aZ3gJP7TOA7OpeqQaz..SrRSO74WEa7cn61ehHI55.zKq","key":"fe79df250470815bf32dcea70221384c89163cad3a827a9c3da25d87159ed55a","role":"hnic","created":"2020-09-01T22:46:47+02:00","updated":"2020-09-01T22:46:47+02:00","deleted":null}] diff --git a/site/init/folks-template.json b/config/init/folks-template.json similarity index 100% rename from site/init/folks-template.json rename to config/init/folks-template.json diff --git a/site/init/index-template.md b/config/init/index-template.md similarity index 100% rename from site/init/index-template.md rename to config/init/index-template.md diff --git a/site/init/settings-template.json b/config/init/settings-template.json similarity index 100% rename from site/init/settings-template.json rename to config/init/settings-template.json diff --git a/config/settings.json b/config/settings.json new file mode 100644 index 0000000..88304d7 --- /dev/null +++ b/config/settings.json @@ -0,0 +1 @@ +{"global":{"base_url":"https://fipamo.blog","title":"It's Fipamo","descriptions":"Because it should be easy, boss.","background":"/assets/images/user/2020/09/default-bg.jpg","private":false,"renderOnSave":"false","theme":"fipamo-default","display_limit":5,"port":3314,"last_backup":"2020-09-15T22:14:42+02:00"},"library_stats":{"current_index":5},"email":{"active":"","smtp":{"domain":"","email":"","password":""},"mailgun":{"domain":"","key":""}},"menu":[]} diff --git a/config/tags.json b/config/tags.json new file mode 100644 index 0000000..3a0d9fd --- /dev/null +++ b/config/tags.json @@ -0,0 +1 @@ +{"tags":[{"tag_name":"development","slug":"development","count":1},{"tag_name":"docs","slug":"docs","count":3},{"tag_name":"first","slug":"first","count":1},{"tag_name":"set up","slug":"set-up","count":3},{"tag_name":"start","slug":"start","count":2},{"tag_name":"themes","slug":"themes","count":1},{"tag_name":"updates","slug":"updates","count":2},{"tag_name":"welcome","slug":"welcome","count":1},{"tag_name":"wiki","slug":"wiki","count":1}]} diff --git a/index.php b/index.php new file mode 100644 index 0000000..1dc010b --- /dev/null +++ b/index.php @@ -0,0 +1 @@ +Hi! We start here. \ No newline at end of file diff --git a/init.js b/init.js deleted file mode 100644 index 7f7bc94..0000000 --- a/init.js +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var app = require('./brain/app'); -var debug = require('debug')('fipamo:server'); -var http = require('http'); - -/** - * Get port from environment and store in Express. - */ - -try { - var configPort = require('./site/settings.json').global.port; -} catch (err) { - console.log('settings.json not found, assuming this is a first run...'); -} - -var port = normalizePort(configPort || process.env.PORT || 2314); -app.set('port', port); - -/** - * Create HTTP server. - */ -var server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(port); -server.on('error', onError); -server.on('listening', onListening); - -/** - * Normalize a port into a number, string, or false. - */ - -function normalizePort(val) { - var port = parseInt(val, 10); - - if (isNaN(port)) { - // named pipe - return val; - } - - if (port >= 0) { - // port number - return port; - } - - return false; -} - -/** - * Event listener for HTTP server "error" event. - */ - -function onError(error) { - if (error.syscall !== 'listen') { - throw error; - } - - //var bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port; - - // handle specific listen errors with friendly messages - switch (error.code) { - case 'EACCES': - //console.error(bind + ' requires elevated privileges'); - process.exit(1); - break; - case 'EADDRINUSE': - //console.error(bind + ' is already in use'); - process.exit(1); - break; - default: - throw error; - } -} - -/** - * Event listener for HTTP server "listening" event. - */ - -function onListening() { - var addr = server.address(); - var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port; - console.log('Up and runnin on port: ' + addr.port); - debug('Listening on ' + bind); -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 76e6cc2..0000000 --- a/package-lock.json +++ /dev/null @@ -1,12895 +0,0 @@ -{ - "name": "fipamo-development", - "version": "1.2.3", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/cli": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.11.6.tgz", - "integrity": "sha512-+w7BZCvkewSmaRM6H4L2QM3RL90teqEIHDIFXAmrW33+0jhlymnDAEdqVeCZATvxhQuio1ifoGVlJJbIiH9Ffg==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.19", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", - "dev": true, - "requires": { - "@babel/types": "^7.11.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz", - "integrity": "sha512-Vc4aPJnRZKWfzeCBsqTBnzulVNjABVdahSPhtdMD3Vs80ykx4a87jTHtF/VR+alSrDmNvat7l13yrRHauGcHVw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.11.5" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", - "dev": true, - "requires": { - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", - "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dev": true, - "requires": { - "@babel/types": "^7.11.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==" - }, - "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", - "dev": true, - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - } - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", - "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-flow": "^7.10.4" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", - "dev": true, - "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-regex": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz", - "integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.5", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - } - } - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", - "dev": true - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - } - } - }, - "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@opencensus/core": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", - "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - } - }, - "@opencensus/propagation-b3": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz", - "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==", - "requires": { - "@opencensus/core": "^0.0.8", - "uuid": "^3.2.1" - }, - "dependencies": { - "@opencensus/core": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz", - "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==", - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - } - } - } - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", - "dev": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", - "dev": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@pm2/agent": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-1.0.4.tgz", - "integrity": "sha512-cZLwaoLa45FRuetKCcoI3kHnnQ7VMLpZnmVom04MoK0cpY/RxcSarkCHSCu9V+pdARwxx96QrWdrtAJdw97dng==", - "requires": { - "async": "~3.2.0", - "chalk": "~3.0.0", - "dayjs": "~1.8.24", - "debug": "~4.1.1", - "eventemitter2": "~5.0.1", - "fclone": "~1.0.11", - "nssocket": "0.6.0", - "pm2-axon": "^3.2.0", - "pm2-axon-rpc": "^0.5.0", - "proxy-agent": "~3.1.1", - "semver": "~7.2.0", - "ws": "~7.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "https-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", - "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "pac-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", - "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", - "requires": { - "agent-base": "^4.2.0", - "debug": "^4.1.1", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "proxy-agent": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", - "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", - "requires": { - "agent-base": "^4.2.0", - "debug": "4", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^3.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "semver": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.2.3.tgz", - "integrity": "sha512-utbW9Z7ZxVvwiIWkdOMLOR9G/NFXh2aRucghkVrEMJWuC++r3lCkBC3LwqBinyHzGMAJxY5tn6VakZGHObq5ig==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "ws": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.5.tgz", - "integrity": "sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "@pm2/agent-node": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@pm2/agent-node/-/agent-node-1.1.10.tgz", - "integrity": "sha512-xRcrk7OEwhS3d/227/kKGvxgmbIi6Yyp27FzGlFNermEKhgddmFaRnmd7GRLIsBM/KB28NrwflBZulzk/mma6g==", - "requires": { - "debug": "^3.1.0", - "eventemitter2": "^5.0.1", - "proxy-agent": "^3.0.3", - "ws": "^6.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "@pm2/io": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@pm2/io/-/io-4.3.5.tgz", - "integrity": "sha512-CY/a6Nw72vrlp/FPx38l4jfEHp4gNEbo8i+WlSJ2cnWO6VE6CKmnC1zb4yQLvdP8f3EuzzoOBZVq6aGN20M82Q==", - "requires": { - "@opencensus/core": "0.0.9", - "@opencensus/propagation-b3": "0.0.8", - "@pm2/agent-node": "^1.1.10", - "async": "~2.6.1", - "debug": "4.1.1", - "eventemitter2": "^6.3.1", - "require-in-the-middle": "^5.0.0", - "semver": "6.3.0", - "shimmer": "^1.2.0", - "signal-exit": "^3.0.3", - "tslib": "1.9.3" - }, - "dependencies": { - "eventemitter2": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", - "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@pm2/js-api": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.6.0.tgz", - "integrity": "sha512-ZgM/0yI8s3FRyxP01wI5UzDrVTecS/SmD98z25C9fsHo2Wz3JB1DtS4uIBlPopq2/R5HIQynTUJPDNn4qo1d/Q==", - "requires": { - "async": "^2.6.3", - "axios": "^0.19.0", - "debug": "~3.2.6", - "eventemitter2": "^6.3.1", - "ws": "^7.0.0" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "eventemitter2": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.3.tgz", - "integrity": "sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "ws": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", - "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" - } - } - }, - "@pm2/pm2-version-check": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.3.tgz", - "integrity": "sha512-SBuYsh+o35knItbRW97vl5/5nEc5c5DYP7PxjyPLOfmm9bMaDsVeATXjXMBy6+KLlyrYWHZxGbfXe003NnHClg==", - "requires": { - "debug": "^4.1.1" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "dev": true - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - } - } - }, - "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==" - }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" - } - } - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true - }, - "acorn-walk": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", - "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==" - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" - }, - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" - }, - "amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", - "requires": { - "amp": "0.3.1" - } - }, - "animejs": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/animejs/-/animejs-3.2.0.tgz", - "integrity": "sha512-zhtGl5cS0G2f5DfciMO8uwWpnx06nfFnHlXYYXHBazHep1Lyd6kEtBQP+9hpYKE0dBZjIigHp9VpMO95ZfXQJQ==", - "dev": true - }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", - "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", - "dev": true, - "requires": { - "entities": "^1.1.2" - } - }, - "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" - } - } - } - }, - "append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "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-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "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 - }, - "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "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 - }, - "ast-types": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.6.tgz", - "integrity": "sha512-nHiuV14upVGl7MWwFUYbzJ6YlfwWS084CU9EA8HajfYQjMSli5TQi3UTRygGF58LFWVkXxS1rbgRhROEqlQkXg==" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "requires": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - } - }, - "async-series": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/async-series/-/async-series-0.0.1.tgz", - "integrity": "sha1-UCTXV/OLBCluH4ofyko2S1fcUuw=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "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 - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" - }, - "axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "requires": { - "follow-redirects": "1.5.10" - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, - "requires": { - "regenerator-transform": "^0.10.0" - }, - "dependencies": { - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - } - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - }, - "dependencies": { - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "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" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "requires": { - "@babel/types": "^7.9.6" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "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" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "bcrypt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", - "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", - "requires": { - "node-addon-api": "^3.0.0", - "node-pre-gyp": "0.15.0" - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "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, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "blessed": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", - "integrity": "sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk=" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } - } - }, - "browserslist": { - "version": "4.14.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.5.tgz", - "integrity": "sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001135", - "electron-to-chromium": "^1.3.571", - "escalade": "^3.1.0", - "node-releases": "^1.1.61" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "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==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bulma": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.1.tgz", - "integrity": "sha512-LSF69OumXg2HSKl2+rN0/OEXJy7WFEb681wtBlNS/ulJYR27J3rORHibdXZ6GVb/vyUzzYK/Arjyh56wjbFedA==", - "dev": true - }, - "busboy": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", - "requires": { - "dicer": "0.2.5", - "readable-stream": "1.1.x" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "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" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001141", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001141.tgz", - "integrity": "sha512-EHfInJHoQTmlMdVZrEc5gmwPc0zyN/hVufmGHPbVNQwlk7tJfCmQ2ysRZMY2MeleBivALUTyyxXnQjK18XrVpA==", - "dev": true - }, - "caret-pos": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/caret-pos/-/caret-pos-1.2.2.tgz", - "integrity": "sha512-C+z3AZU3a/V+YxK+ZvM+fSLs9rRGPAg9ZbuchTfAz572BiT76GOm6H4padNnSf5qKAKLjt0vlm1zJLEN/ftApg==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "requires": { - "is-regex": "^1.0.3" - } - }, - "charm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", - "integrity": "sha1-BsIe7RobBq62dVPNxT4jJ0usIpY=" - }, - "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" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.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" - } - } - } - }, - "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "cli-tableau": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", - "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", - "requires": { - "chalk": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "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": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "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==", - "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=" - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "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 - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "connect-flash": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", - "integrity": "sha1-2GMPJtlaf4UfmVax6MxnMvO2qjA=" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "requires": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU=" - }, - "cookie-parser": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y=", - "requires": { - "cookie": "0.1.3", - "cookie-signature": "1.0.6" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "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-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "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=" - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "dependencies": { - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cron": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz", - "integrity": "sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg==", - "requires": { - "moment-timezone": "^0.5.x" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - } - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.1.tgz", - "integrity": "sha512-wHOppVDKl4vTAOWzJt5Ek37Sgd9qq1Bmj/T1OjvicWbU5W7ru7Pqbn0Jdqii3Drx/h+dixHKXNhZYx7blthL7g==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.39" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", - "dev": true, - "requires": { - "mdn-data": "2.0.6", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "dayjs": { - "version": "1.8.32", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.32.tgz", - "integrity": "sha512-V91aTRu5btP+uzGHaaOfodckEfBWhmi9foRP7cauAO1PTB8+tZ9o0Jec7q6TIIRY1N4q1IfiKsZunkB/AEWqMQ==" - }, - "deasync": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", - "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - }, - "dependencies": { - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "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 - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "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" - } - } - } - }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - }, - "dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", - "requires": { - "readable-stream": "1.1.x", - "streamsearch": "0.1.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", - "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz", - "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==", - "requires": { - "dom-serializer": "^0.2.1", - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.576", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz", - "integrity": "sha512-uSEI0XZ//5ic+0NdOqlxp0liCD44ck20OAGyLMSymIWTEAtHKVJi6JM18acOnRgUgX7Q65QqnI+sNncNvIy8ew==", - "dev": true - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "requires": { - "shimmer": "^1.2.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.5.tgz", - "integrity": "sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA==", - "requires": { - "ansi-colors": "^3.2.1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", - "dev": true - }, - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escalade": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", - "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==", - "dev": true - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-regexp": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz", - "integrity": "sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ=" - }, - "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=" - }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "eslint": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.10.0.tgz", - "integrity": "sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", - "espree": "^7.3.0", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.19", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - } - }, - "eslint-plugin-import": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.21.1.tgz", - "integrity": "sha512-qYOOsgUv63vHof7BqbzuD+Ud34bXHxFJxntuAC1ZappFZXYbRIek3aJ7jc9i2dHDGDyZ/0zlO0cpioES265Lsw==", - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.3", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "eslint-plugin-standard": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", - "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", - "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", - "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==" - }, - "esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" - }, - "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eventemitter2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", - "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "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": { - "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" - } - }, - "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" - } - } - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - } - } - }, - "express-session": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", - "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", - "requires": { - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-headers": "~1.0.2", - "parseurl": "~1.3.3", - "safe-buffer": "5.2.0", - "uid-safe": "~2.1.5" - }, - "dependencies": { - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "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" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fclone": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", - "integrity": "sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA=" - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-js": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/file-js/-/file-js-0.3.0.tgz", - "integrity": "sha1-+rRr94I0bJKUSZ8fDSrQfYOPJdE=", - "requires": { - "bluebird": "^3.4.7", - "minimatch": "^3.0.3", - "proper-lockfile": "^1.2.0" - } - }, - "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==" - }, - "filehound": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/filehound/-/filehound-1.17.4.tgz", - "integrity": "sha512-A74hiTADH20bpFbXBNyKtpqN4Guffa+ROmdGJWNnuCRhaD45UVSVoI6McLcpHYmuaOERrzD3gMV3v9VZq/SHeA==", - "requires": { - "bluebird": "^3.5.1", - "file-js": "0.3.0", - "lodash": "^4.17.10", - "minimatch": "^3.0.4", - "moment": "^2.22.1", - "unit-compare": "^1.0.1" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": 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" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.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 - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "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" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "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" - } - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-uri": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", - "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", - "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "3", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - } - }, - "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" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", - "dev": true, - "requires": { - "ini": "^1.3.5" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "dev": true, - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "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" - } - } - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "9.18.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", - "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "htmlnano": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.6.tgz", - "integrity": "sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "normalize-html-whitespace": "^1.0.0", - "posthtml": "^0.13.1", - "posthtml-render": "^1.2.2", - "purgecss": "^2.3.0", - "svgo": "^1.3.2", - "terser": "^4.8.0", - "uncss": "^0.17.3" - }, - "dependencies": { - "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 - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "posthtml": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.3.tgz", - "integrity": "sha512-5NL2bBc4ihAyoYnY0EAQrFQbJNE1UdvgC1wjYts0hph7jYeU2fa5ki3/9U45ce9V6M1vLMEgUX2NXe/bYL+bCQ==", - "dev": true, - "requires": { - "posthtml-parser": "^0.5.0", - "posthtml-render": "^1.2.3" - } - }, - "posthtml-parser": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.5.0.tgz", - "integrity": "sha512-BsZFAqOeX9lkJJPKG2JmGgtm6t++WibU7FeS40FNNGZ1KS2szRSRQ8Wr2JLvikDgAecrQ/9V4sjugTAin2+KVw==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - }, - "dependencies": { - "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" - } - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "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-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "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-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" - }, - "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-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "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=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "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==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "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-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", - "dev": true - }, - "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-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "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 - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "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 - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-12.2.0.tgz", - "integrity": "sha512-QPOggIJ8fquWPLaYYMoh+zqUmdphDtu1ju0QGTitZT1Yd8I5qenPpXM1etzUegu3MjVp8XPzgZxdn8Yj7e40ig==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.2", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.0.1", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.0.9", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.3", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.4.3", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" - } - }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, - "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 - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, - "lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=" - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "linkify-it": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", - "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=" - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.startswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", - "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "requires": { - "vlq": "^0.2.2" - } - }, - "mailgun-js": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.18.1.tgz", - "integrity": "sha512-lvuMP14u24HS2uBsJEnzSyPMxzU2b99tQsIx1o6QNjqxjk8b3WvR+vq5oG1mjqz/IBYo+5gF+uSoDS0RkMVHmg==", - "requires": { - "async": "~2.6.0", - "debug": "~3.1.0", - "form-data": "~2.3.0", - "inflection": "~1.12.0", - "is-stream": "^1.1.0", - "path-proxy": "~1.0.0", - "promisify-call": "^2.0.2", - "proxy-agent": "~3.0.0", - "tsscmp": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "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" - } - }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdown-yaml-metadata-parser": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/markdown-yaml-metadata-parser/-/markdown-yaml-metadata-parser-2.0.5.tgz", - "integrity": "sha512-SS6Gkz4Ummc+ayz1I8KyVt93iMd3qhZPh7M/wpDKXjeuJN/67F+vyJdlsaBfO9zglxPb/Gs9yOFSVpjqZVVmAw==", - "requires": { - "js-yaml": "^3.13.1", - "platform": "^1.3.5", - "ramda": "^0.27.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memorystore": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.2.tgz", - "integrity": "sha512-HQM+cZB/kY1+jj57It22FsptJ3nuZRYxnwh3rWZEvDZO1zuzhIrX9uyFcjP9AhFQvM5WS6vZKtn3veohDH4S7w==", - "requires": { - "debug": "3.1.0", - "lru-cache": "^4.0.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "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" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "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" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" - }, - "moment": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", - "integrity": "sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw==" - }, - "moment-timezone": { - "version": "0.5.31", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.31.tgz", - "integrity": "sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==", - "requires": { - "moment": ">= 2.9.0" - } - }, - "morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", - "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", - "requires": { - "append-field": "^1.0.0", - "busboy": "^0.2.11", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.1", - "on-finished": "^2.3.0", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "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" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "needle": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz", - "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", - "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" - }, - "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-pre-gyp": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", - "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.3", - "needle": "^2.5.0", - "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" - } - }, - "node-releases": { - "version": "1.1.61", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz", - "integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g==", - "dev": true - }, - "nodemailer": { - "version": "6.4.8", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.8.tgz", - "integrity": "sha512-UbJD0+g5e2H20bWv7Rpj3B+N3TMMJ0MLoLwaGVJ0k3Vo8upq0UltwHJ5BJfrpST1vFa91JQ8cf7cICK5DSIo1Q==" - }, - "nodemailer-mailgun-transport": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/nodemailer-mailgun-transport/-/nodemailer-mailgun-transport-1.4.0.tgz", - "integrity": "sha512-oLNmye2Km8xALu+U2AJh+U+kpBXePNP5KhSC0QSHauaSZTtKq/kaaYtzGhnzDCur+cyELlWrQIiVF2vAGn6PIg==", - "requires": { - "async-series": "0.0.1", - "consolidate": "^0.14.0", - "lodash.pickby": "^4.3.0", - "lodash.some": "^4.3.0", - "lodash.startswith": "^4.0.1", - "mailgun-js": "^0.18.0" - }, - "dependencies": { - "consolidate": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", - "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", - "requires": { - "bluebird": "^3.1.1" - } - } - } - }, - "nodemon": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.4.tgz", - "integrity": "sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ==", - "dev": true, - "requires": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^4.0.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "normalize-html-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", - "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^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==" - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nssocket": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", - "integrity": "sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo=", - "requires": { - "eventemitter2": "~0.4.14", - "lazy": "~1.0.11" - }, - "dependencies": { - "eventemitter2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" - } - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "nwsapi": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", - "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "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-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "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.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "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" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "pac-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", - "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parcel": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", - "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.7.1", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "dependencies": { - "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 - }, - "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "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-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "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=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "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==" - }, - "path-proxy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", - "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", - "requires": { - "inflection": "~1.3.0" - }, - "dependencies": { - "inflection": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", - "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=" - } - } - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pidusage": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz", - "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==", - "requires": { - "safe-buffer": "^5.1.2" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - }, - "platform": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", - "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" - }, - "pm2": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/pm2/-/pm2-4.4.0.tgz", - "integrity": "sha512-uEY3ShP5O5d7VBx4r0QhVjWAgjyhazenIl0fhxyVr+aDMWSa3hpD5RpvkGJMiX8z3nDrBBWCSU7TYth1sdbJkA==", - "requires": { - "@pm2/agent": "~1.0.2", - "@pm2/io": "~4.3.5", - "@pm2/js-api": "~0.6.0", - "@pm2/pm2-version-check": "^1.0.3", - "async": "~3.2.0", - "blessed": "0.1.81", - "chalk": "3.0.0", - "chokidar": "^3.3.0", - "cli-tableau": "^2.0.0", - "commander": "2.15.1", - "cron": "1.8.2", - "dayjs": "~1.8.25", - "debug": "4.1.1", - "enquirer": "2.3.5", - "eventemitter2": "5.0.1", - "fclone": "1.0.11", - "mkdirp": "1.0.4", - "needle": "2.4.0", - "pidusage": "2.0.18", - "pm2-axon": "3.3.0", - "pm2-axon-rpc": "0.5.1", - "pm2-deploy": "~1.0.2", - "pm2-multimeter": "^0.1.2", - "promptly": "^2", - "ps-list": "6.3.0", - "semver": "^7.2", - "source-map-support": "0.5.16", - "sprintf-js": "1.1.2", - "systeminformation": "^4.23.3", - "vizion": "0.2.13", - "yamljs": "0.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "optional": true - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - }, - "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==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "pm2-axon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-3.3.0.tgz", - "integrity": "sha512-dAFlFYRuFbFjX7oAk41zT+dx86EuaFX/TgOp5QpUKRKwxb946IM6ydnoH5sSTkdI2pHSVZ+3Am8n/l0ocr7jdQ==", - "requires": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "debug": "^3.0", - "escape-regexp": "0.0.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "pm2-axon-rpc": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.5.1.tgz", - "integrity": "sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA==", - "requires": { - "debug": "^3.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "pm2-deploy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", - "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", - "requires": { - "run-series": "^1.1.8", - "tv4": "^1.3.0" - } - }, - "pm2-multimeter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", - "integrity": "sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4=", - "requires": { - "charm": "~0.1.1" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "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 - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "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==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.4.tgz", - "integrity": "sha512-0I79VRAd1UTkaHzY9w83P39YGO/M3bG7/tNLrHGEunBolfoGM0hSjrGvjoeaj0JE/zIw5GsI2KZ0UwDJqv5hjw==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - } - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", - "dev": true, - "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - } - }, - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "posthtml-render": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.3.tgz", - "integrity": "sha512-rGGayND//VwTlsYKNqdILsA7U/XP0WJa6SMcdAEoqc2WRM5QExplGg/h9qbTuHz7mc2PvaXU+6iNxItvr5aHMg==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "prettier": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", - "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "promisify-call": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz", - "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=", - "requires": { - "with-callback": "^1.0.2" - } - }, - "promptly": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", - "integrity": "sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ=", - "requires": { - "read": "^1.0.4" - } - }, - "proper-lockfile": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/proper-lockfile/-/proper-lockfile-1.2.0.tgz", - "integrity": "sha1-zv9d2J0+XxD7deHo52vHWAGlnDQ=", - "requires": { - "err-code": "^1.0.0", - "extend": "^3.0.0", - "graceful-fs": "^4.1.2", - "retry": "^0.10.0" - } - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "proxy-agent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz", - "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==", - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "^3.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" - }, - "ps-list": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/ps-list/-/ps-list-6.3.0.tgz", - "integrity": "sha512-qau0czUSB0fzSlBOQt0bo+I2v6R+xiQdj78e1BR/Qjfl5OHWJ/urXi8+ilw1eHe+5hSeDI1wrwVTgDp2wst4oA==" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } - } - }, - "pug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.0.tgz", - "integrity": "sha512-inmsJyFBSHZaiGLaguoFgJGViX0If6AcfcElimvwj9perqjDpUpw79UIEDZbWFmoGVidh08aoE+e8tVkjVJPCw==", - "requires": { - "pug-code-gen": "^3.0.0", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.0", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.0", - "pug-strip-comments": "^2.0.0" - } - }, - "pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.1.tgz", - "integrity": "sha512-xJIGvmXTQlkJllq6hqxxjRWcay2F9CU69TuAuiVZgHK0afOhG5txrQOcZyaPHBvSWCU/QQOqEp5XCH94rRZpBQ==", - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" - }, - "pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "pug-lexer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.0.tgz", - "integrity": "sha512-52xMk8nNpuyQ/M2wjZBN5gXQLIylaGkAoTk5Y1pBhVqaopaoj8Z0iVzpbFZAqitL4RHNVDZRnJDsqEYe99Ti0A==", - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "pug-runtime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.0.tgz", - "integrity": "sha512-GoEPcmQNnaTsePEdVA05bDpY+Op5VLHKayg08AQiqJBWU/yIaywEYv7TetC5dEQS3fzBBoyb2InDcZEg3mPTIA==" - }, - "pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dev": true, - "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, - "ramda": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.0.tgz", - "integrity": "sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA==" - }, - "random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "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" - } - }, - "reframe.js": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/reframe.js/-/reframe.js-2.2.8.tgz", - "integrity": "sha512-wB1myBnZnCGJpckKbQsZvCfPnuqgK48t1WvCF9SExv5fRpxhUMa/eLYSDvTEVvA7ifJI0uEZfWgJpOts0o7n1Q==", - "requires": { - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-node": "^11.0.0", - "eslint-plugin-standard": "^4.0.1" - } - }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "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" - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "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 - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", - "requires": { - "lodash": "^4.13.1" - } - }, - "request-promise-native": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", - "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", - "requires": { - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" - } - }, - "require-in-the-middle": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.0.3.tgz", - "integrity": "sha512-p/ICV8uMlqC4tjOYabLMxAWCIKa0YUQgZZ6KDM0xgXJNgdGQ1WmL2A07TwmrZw+wi6ITUFKzH5v3n+ENEyXVkA==", - "requires": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.12.0" - } - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "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 - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "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 - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-series": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.8.tgz", - "integrity": "sha512-+GztYEPRpIsQoCSraWHDBs9WVy4eVME16zhOtDB4H9J4xN0XRhknnmLOl+4gRgZtu8dpp9N/utSPjKH/xmDzXg==" - }, - "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==" - }, - "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" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sanitize-html": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.26.0.tgz", - "integrity": "sha512-xriDBT2FbfN0ZKCcX6H6svkh1bZpO2e5ny05RQGZY6vFOMAU13La2L5YYf3XpcjXSksCYXzPj7YPvyGp5wbaUA==", - "requires": { - "chalk": "^2.4.1", - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.27", - "srcset": "^2.0.1", - "xtend": "^4.0.1" - } - }, - "sass": { - "version": "1.26.11", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.11.tgz", - "integrity": "sha512-W1l/+vjGjIamsJ6OnTe0K37U2DBO/dgsv2Z4c89XQ8ZOO6l/VwkqwLSqoYzJeJs6CLuGSTRWc91GbQFL3lvrvw==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "saxes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.3.tgz", - "integrity": "sha512-Nc5DXc5A+m3rUDtkS+vHlBWKT7mCKjJPyia7f8YMW773hsXVv2wEHQZGE0zs4+5PLwz9U5Sbl/94Cnd9vHV7Bg==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "scramble-text": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/scramble-text/-/scramble-text-0.0.8.tgz", - "integrity": "sha1-io6pbtN0G4WpKgSCQuniBxyePLE=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - } - } - }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true - }, - "serve-favicon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", - "requires": { - "etag": "~1.8.1", - "fresh": "0.5.2", - "ms": "2.1.1", - "parseurl": "~1.3.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "dependencies": { - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "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" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "smart-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", - "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==" - }, - "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": { - "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" - } - }, - "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" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "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" - } - } - } - }, - "socks": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.1.tgz", - "integrity": "sha512-0GabKw7n9mI46vcNrVfs0o6XzWzjVa3h6GaSo2UPxtWAROXUWavfJWh1M4PR5tnE0dcnQXZIDFP4yrAysLze/w==", - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.0.1" - } - }, - "socks-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", - "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", - "requires": { - "agent-base": "~4.2.0", - "socks": "~2.2.0" - } - }, - "sortablejs": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", - "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "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.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "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 - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - }, - "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" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "srcset": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-2.0.1.tgz", - "integrity": "sha512-00kZI87TdRKwt+P8jj8UZxbfp7mK2ufxcIMWvhAOZNJTRROimpHeruWrGvCZneiuVDLqdyHefVp748ECTnyUBQ==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "requires": { - "escodegen": "^1.11.1" - }, - "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, - "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" - } - } - } - }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - }, - "dependencies": { - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "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==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "systeminformation": { - "version": "4.26.10", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.26.10.tgz", - "integrity": "sha512-bO4FIzrjESAfh4KHwkUJym3jvKtJ4oJ2PG0BBQGBmKa0pF2oanpkB7CF4ZsSX7vfp3+GKaLzioVwpV/3Tyk+lQ==", - "optional": true - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "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" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - }, - "dependencies": { - "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 - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-date-picker": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/tiny-date-picker/-/tiny-date-picker-3.2.8.tgz", - "integrity": "sha512-XrZ2ujRDZLom3DtquzjtEh+kBLbivErqfbqbNG8sVA7ZCUxerIiorxfM87akQNbBnKttBaiXAZwZi46e2mFX7Q==" - }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "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-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, - "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" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tv4": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", - "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=" - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "uc.micro": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz", - "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==" - }, - "uid-safe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", - "requires": { - "random-bytes": "~1.0.0" - } - }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "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 - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": 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" - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "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" - } - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - } - } - }, - "undefsafe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", - "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", - "dev": true, - "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "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" - } - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "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" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "unit-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unit-compare/-/unit-compare-1.0.1.tgz", - "integrity": "sha1-DHRZ8OW/U2N+qHPKPO4Y3i7so4Y=", - "requires": { - "moment": "^2.14.1" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "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 - }, - "update-notifier": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", - "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "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": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vizion": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/vizion/-/vizion-0.2.13.tgz", - "integrity": "sha1-ExTN7is0EW+fWxJIU2+V2/zW718=", - "requires": { - "async": "1.5" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - } - } - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "whatwg-mimetype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.2.0.tgz", - "integrity": "sha512-5YSO1nMd5D1hY3WzAQV3PzZL83W3YeyR1yW9PcH26Weh1t+Vzh9B6XkDh7aXm83HBZ4nSMvkjvN2H2ySWIvBgw==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - }, - "with-callback": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", - "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.0.tgz", - "integrity": "sha512-H3dGVdGvW2H8bnYpIDc3u3LH8Wue3Qh+Zto6aXXFzvESkTVT6rAfKR6tR/+coaUvxs8yHtmNV0uioBF62ZGSTg==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 7f13f58..0000000 --- a/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "fipamo-development", - "version": "1.2.4", - "private": true, - "description": "The most chill blog framework ever.", - "repository": "https://code.playvicio.us/Are0h/Fipamo", - "scripts": { - "start": "pm2 --node-args='-r esm' start init.js", - "stop": "pm2 stop init.js", - "dev": "nodemon -r esm init.js --ignore node_modules/ -e js", - "debug": "nodemon inspect -r esm init.js --ignore node_modules/ -e js", - "watch": "sass --watch src/styles:public/assets/css & parcel watch src/com/Start.js --out-dir public/assets/scripts --out-file dash.min.js --public-url /assets/scripts" - }, - "engines": { - "node": ">=10.16.0" - }, - "dependencies": { - "adm-zip": "^0.4.16", - "bcrypt": "^5.0.0", - "bluebird": "^3.7.2", - "body-parser": "latest", - "caret-pos": "^1.2.2", - "connect-flash": "latest", - "cookie-parser": "~1.3.3", - "debug": "^4.1.1", - "esm": "^3.2.25", - "express": "^4.17.1", - "express-session": "^1.17.1", - "filehound": "^1.17.4", - "fs-extra": "^9.0.1", - "highlight.js": "^9.18.1", - "jsdom": "^12.2.0", - "jsonwebtoken": "^8.5.1", - "lodash": "^4.17.19", - "mailgun-js": "^0.18.0", - "markdown-it": "^8.4.1", - "markdown-yaml-metadata-parser": "^2.0.5", - "memorystore": "^1.6.2", - "moment": "^2.26.0", - "morgan": "^1.10.0", - "multer": "latest", - "nodemailer": "^6.4.8", - "nodemailer-mailgun-transport": "^1.4.0", - "pm2": "^4.4.0", - "pug": "^3.0.0", - "reframe.js": "^2.2.8", - "request": "^2.88.2", - "sanitize-html": "^1.26.0", - "serve-favicon": "latest", - "sortablejs": "^1.10.2", - "tiny-date-picker": "^3.2.8", - "uuid": "^3.4.0" - }, - "devDependencies": { - "@babel/cli": "^7.10.1", - "@babel/core": "^7.10.2", - "@babel/preset-env": "^7.10.2", - "animejs": "^3.2.0", - "babel-preset-env": "^1.7.0", - "bulma": "^0.9.0", - "eslint": "^7.9.0", - "nodemon": "^2.0.4", - "parcel": "^1.12.4", - "prettier": "^2.0.5", - "sass": "^1.26.11", - "scramble-text": "0.0.8" - } -} -- 2.25.1 From 67a47355d29f45d560accebbe14ddcf92ef92ab9 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 12 Nov 2020 14:01:29 -0800 Subject: [PATCH 049/250] added basic routing and page rendering --- .gitignore | 10 +- composer.json | 8 + composer.lock | 978 ++++++++++++++++++++++++++++++++++++++++++++++++++ index.php | 23 +- 4 files changed, 1014 insertions(+), 5 deletions(-) create mode 100644 composer.json create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index c7aa07b..8276740 100644 --- a/.gitignore +++ b/.gitignore @@ -13,12 +13,14 @@ public/assets/images/* !public/assets/images/global/* content/ +vendor/ +cache/ .ftpconfig .vscode/ *.swp -site/settings.json -site/folks.json -site/pages.json -site/tags.json +config/settings.json +config/folks.json +config/pages.json +config/tags.json *.DS_Store config.codekit3 diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..4bd3de5 --- /dev/null +++ b/composer.json @@ -0,0 +1,8 @@ +{ + "require": { + "slim/slim": "4.*", + "slim/psr7": "^1.2", + "twig/twig": "^3.0", + "slim/twig-view": "^3.0" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..f963f84 --- /dev/null +++ b/composer.lock @@ -0,0 +1,978 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "b442ae03c61541c3f8c578413aabe98e", + "packages": [ + { + "name": "fig/http-message-util", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "3242caa9da7221a304b8f84eb9eaddae0a7cf422" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/3242caa9da7221a304b8f84eb9eaddae0a7cf422", + "reference": "3242caa9da7221a304b8f84eb9eaddae0a7cf422", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.4" + }, + "time": "2020-02-05T20:36:27+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-handler/issues", + "source": "https://github.com/php-fig/http-server-handler/tree/master" + }, + "time": "2018-10-30T16:46:14+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/master" + }, + "time": "2018-10-30T17:12:04+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "slim/psr7", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Psr7.git", + "reference": "832912cb3c2a807d472ef0ac392552e85703a667" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/832912cb3c2a807d472ef0ac392552e85703a667", + "reference": "832912cb3c2a807d472ef0ac392552e85703a667", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.4", + "php": "^7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "adriansuter/php-autoload-override": "^1.2", + "ext-json": "*", + "http-interop/http-factory-tests": "^0.6.0", + "php-http/psr7-integration-tests": "dev-master", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^8.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Psr7\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + } + ], + "description": "Strict PSR-7 implementation", + "homepage": "https://www.slimframework.com", + "keywords": [ + "http", + "psr-7", + "psr7" + ], + "support": { + "issues": "https://github.com/slimphp/Slim-Psr7/issues", + "source": "https://github.com/slimphp/Slim-Psr7/tree/master" + }, + "time": "2020-08-18T22:49:11+00:00" + }, + { + "name": "slim/slim", + "version": "4.5.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "5613cbb521081ed676d5d7eb3e44f2b80a818c24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5613cbb521081ed676d5d7eb3e44f2b80a818c24", + "reference": "5613cbb521081ed676d5d7eb3e44f2b80a818c24", + "shasum": "" + }, + "require": { + "ext-json": "*", + "nikic/fast-route": "^1.3", + "php": "^7.2", + "psr/container": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", + "psr/log": "^1.1" + }, + "require-dev": { + "adriansuter/php-autoload-override": "^1.0", + "ext-simplexml": "*", + "guzzlehttp/psr7": "^1.5", + "http-interop/http-factory-guzzle": "^1.0", + "laminas/laminas-diactoros": "^2.1", + "nyholm/psr7": "^1.1", + "nyholm/psr7-server": "^0.3.0", + "phpspec/prophecy": "^1.10", + "phpstan/phpstan": "^0.11.5", + "phpunit/phpunit": "^8.5", + "slim/http": "^1.0", + "slim/psr7": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", + "ext-xml": "Needed to support XML format in BodyParsingMiddleware", + "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim", + "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information." + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://www.slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ], + "support": { + "issues": "https://github.com/slimphp/Slim/issues", + "source": "https://github.com/slimphp/Slim/tree/4.x" + }, + "funding": [ + { + "url": "https://opencollective.com/slimphp", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slim/slim", + "type": "tidelift" + } + ], + "time": "2020-04-14T20:49:48+00:00" + }, + { + "name": "slim/twig-view", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Twig-View.git", + "reference": "36f7a04ca9e58ef926dc25cd0110f629668cb3f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/36f7a04ca9e58ef926dc25cd0110f629668cb3f0", + "reference": "36f7a04ca9e58ef926dc25cd0110f629668cb3f0", + "shasum": "" + }, + "require": { + "php": "^7.2", + "psr/http-message": "^1.0", + "slim/slim": "^4.0", + "twig/twig": "^3.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.11.15", + "phpunit/phpunit": "^8.5", + "psr/http-factory": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Views\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + } + ], + "description": "Slim Framework 4 view helper built on top of the Twig 3 templating component", + "homepage": "https://www.slimframework.com", + "keywords": [ + "framework", + "slim", + "template", + "twig", + "view" + ], + "support": { + "issues": "https://github.com/slimphp/Twig-View/issues", + "source": "https://github.com/slimphp/Twig-View/tree/3.x" + }, + "time": "2020-03-13T18:08:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "twig/twig", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737", + "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.1.1" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2020-10-27T19:28:23+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/index.php b/index.php index 1dc010b..01f522c 100644 --- a/index.php +++ b/index.php @@ -1 +1,22 @@ -Hi! We start here. \ No newline at end of file + 'cache']); +$app->add(TwigMiddleware::create($app, $twig)); + +$app->get('/', function (Request $request, Response $response, $args) { + + $view = Twig::fromRequest($request); + return $view->render($response, 'index.twig', [ + 'name' => 'Ro', + 'occupation'=>'That Dude' + ]); +}); + +$app->run(); -- 2.25.1 From 361756521020021658fc6e8fa2d71b8c9ce6a8ce Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 17 Nov 2020 14:27:25 -0800 Subject: [PATCH 050/250] new scaffolding set up --- brain/controller/IndexControl.inc.php | 12 ++++++++++ brain/data/Auth.inc.php | 12 ++++++++++ brain/data/Settings.inc.php | 15 ++++++++++++ brain/views/default/index.twig | 22 ++++++++++++++++++ config/folks.json | 15 +++++++++++- config/settings.json | 33 ++++++++++++++++++++++++++- dashboard.php | 33 +++++++++++++++++++++++++++ index.html | 1 + index.php | 22 ------------------ 9 files changed, 141 insertions(+), 24 deletions(-) create mode 100644 brain/controller/IndexControl.inc.php create mode 100644 brain/data/Auth.inc.php create mode 100644 brain/data/Settings.inc.php create mode 100644 brain/views/default/index.twig create mode 100644 dashboard.php create mode 100644 index.html delete mode 100644 index.php diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php new file mode 100644 index 0000000..1bd56c2 --- /dev/null +++ b/brain/controller/IndexControl.inc.php @@ -0,0 +1,12 @@ +secret; + } + +} \ No newline at end of file diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php new file mode 100644 index 0000000..0f3e1fc --- /dev/null +++ b/brain/data/Auth.inc.php @@ -0,0 +1,12 @@ +secret; + } + +} \ No newline at end of file diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php new file mode 100644 index 0000000..485d0d5 --- /dev/null +++ b/brain/data/Settings.inc.php @@ -0,0 +1,15 @@ +folks = json_decode(file_get_contents('config/folks.json'), true); + //return $this->secret; + } + +} \ No newline at end of file diff --git a/brain/views/default/index.twig b/brain/views/default/index.twig new file mode 100644 index 0000000..9a5eb45 --- /dev/null +++ b/brain/views/default/index.twig @@ -0,0 +1,22 @@ + + + + + + + {{ title }} + + + + +

+ {{ name }} is a {{ occupation }} +

+
+
+ {{folks}} has {{ secret }} +
+ + + + \ No newline at end of file diff --git a/config/folks.json b/config/folks.json index ae6ba06..39c388f 100644 --- a/config/folks.json +++ b/config/folks.json @@ -1 +1,14 @@ -[{"id":1,"handle":"ItsRo","avi":"/assets/images/user/2020/09/download20200802144459.png","email":"are0h@protonmail.com","password":"$2b$10$77PMC2W6aZ3gJP7TOA7OpeqQaz..SrRSO74WEa7cn61ehHI55.zKq","key":"fe79df250470815bf32dcea70221384c89163cad3a827a9c3da25d87159ed55a","role":"hnic","created":"2020-09-01T22:46:47+02:00","updated":"2020-09-01T22:46:47+02:00","deleted":null}] +[ + { + "id": 1, + "handle": "ItsRo", + "avi": "/assets/images/user/2020/09/download20200802144459.png", + "email": "are0h@protonmail.com", + "password": "$2b$10$77PMC2W6aZ3gJP7TOA7OpeqQaz..SrRSO74WEa7cn61ehHI55.zKq", + "key": "fe79df250470815bf32dcea70221384c89163cad3a827a9c3da25d87159ed55a", + "role": "hnic", + "created": "2020-09-01T22:46:47+02:00", + "updated": "2020-09-01T22:46:47+02:00", + "deleted": null + } +] \ No newline at end of file diff --git a/config/settings.json b/config/settings.json index 88304d7..4092c25 100644 --- a/config/settings.json +++ b/config/settings.json @@ -1 +1,32 @@ -{"global":{"base_url":"https://fipamo.blog","title":"It's Fipamo","descriptions":"Because it should be easy, boss.","background":"/assets/images/user/2020/09/default-bg.jpg","private":false,"renderOnSave":"false","theme":"fipamo-default","display_limit":5,"port":3314,"last_backup":"2020-09-15T22:14:42+02:00"},"library_stats":{"current_index":5},"email":{"active":"","smtp":{"domain":"","email":"","password":""},"mailgun":{"domain":"","key":""}},"menu":[]} +{ + "global": { + "base_url": "https://fipamo.blog", + "title": "It's Fipamo", + "descriptions": "Because it should be easy, boss.", + "background": "/assets/images/user/2020/09/default-bg.jpg", + "private": false, + "renderOnSave": "false", + "theme": "fipamo-default", + "display_limit": 5, + "port": 3314, + "last_backup": "2020-09-15T22:14:42+02:00" + }, + "library_stats": { + "current_index": 5 + }, + "email": { + "active": "", + "smtp": { + "domain": "", + "email": "", + "password": "" + }, + "mailgun": { + "domain": "", + "key": "" + } + }, + "menu": [ + + ] +} \ No newline at end of file diff --git a/dashboard.php b/dashboard.php new file mode 100644 index 0000000..ff7916c --- /dev/null +++ b/dashboard.php @@ -0,0 +1,33 @@ +add(TwigMiddleware::create($app, $twig)); + +//Dashboard Index +$app->get('/dashboard', function (Request $request, Response $response) { + $index = new IndexControl(); + $settings = new Settings(); + $folks = $settings->getFolks(); + $secret = $index->getSecret(); + $view = Twig::fromRequest($request); + + return $view->render($response, 'index.twig', [ + 'title' => 'This is Fipamo', + 'name' => 'Ro', + 'occupation'=>'pretty cool... I guess', + 'folks' => $folks[0]['handle'], + 'secret' => $secret + ]); +}); + +$app->run(); diff --git a/index.html b/index.html new file mode 100644 index 0000000..b78e708 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +This is the index \ No newline at end of file diff --git a/index.php b/index.php deleted file mode 100644 index 01f522c..0000000 --- a/index.php +++ /dev/null @@ -1,22 +0,0 @@ - 'cache']); -$app->add(TwigMiddleware::create($app, $twig)); - -$app->get('/', function (Request $request, Response $response, $args) { - - $view = Twig::fromRequest($request); - return $view->render($response, 'index.twig', [ - 'name' => 'Ro', - 'occupation'=>'That Dude' - ]); -}); - -$app->run(); -- 2.25.1 From e459366c464618a01b0666a4933f4b11ef7153c1 Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 28 Feb 2021 17:04:54 -0800 Subject: [PATCH 051/250] working out page routing --- brain/views/default/index.twig | 32 ++++++++++-------- dashboard.php | 33 ------------------- index.html | 1 - index.php | 59 ++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 48 deletions(-) delete mode 100644 dashboard.php delete mode 100644 index.html create mode 100644 index.php diff --git a/brain/views/default/index.twig b/brain/views/default/index.twig index 9a5eb45..2a5facd 100644 --- a/brain/views/default/index.twig +++ b/brain/views/default/index.twig @@ -1,22 +1,26 @@ - - - - {{ title }} - + + + + {{ title }} + - + -

- {{ name }} is a {{ occupation }} -

-
-
- {{folks}} has {{ secret }} -
+

+ {{ name }} + is a + {{ occupation }} +

+
+
+ {{ folks }} + has + {{ secret }} +
- + \ No newline at end of file diff --git a/dashboard.php b/dashboard.php deleted file mode 100644 index ff7916c..0000000 --- a/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ -add(TwigMiddleware::create($app, $twig)); - -//Dashboard Index -$app->get('/dashboard', function (Request $request, Response $response) { - $index = new IndexControl(); - $settings = new Settings(); - $folks = $settings->getFolks(); - $secret = $index->getSecret(); - $view = Twig::fromRequest($request); - - return $view->render($response, 'index.twig', [ - 'title' => 'This is Fipamo', - 'name' => 'Ro', - 'occupation'=>'pretty cool... I guess', - 'folks' => $folks[0]['handle'], - 'secret' => $secret - ]); -}); - -$app->run(); diff --git a/index.html b/index.html deleted file mode 100644 index b78e708..0000000 --- a/index.html +++ /dev/null @@ -1 +0,0 @@ -This is the index \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..304dcb0 --- /dev/null +++ b/index.php @@ -0,0 +1,59 @@ +add(TwigMiddleware::create($app, $twig)); + +//Index +$app->get('/[{first}[/{second}]]', function (Request $request, Response $response, array $args) { + + if(isset($args['first'])) + { + $first = $args['first']; + if(is_numeric($first)) + { + $response->getBody()->write("FIND A PAGE, B!"); + }else{ + $response->getBody()->write("This is the dash, brah!"); + }; + }else{ + $response->getBody()->write("No Params, Homie!"); + } + + if(isset($args['second'])) + { + $year = $args['second']; + }; + + + return $response; +}); + +//Dashboard Index +/** +$app->get('/@/dashboard', function (Request $request, Response $response) { + $index = new IndexControl(); + $settings = new Settings(); + $folks = $settings->getFolks(); + $secret = $index->getSecret(); + $view = Twig::fromRequest($request); + + return $view->render($response, 'index.twig', [ + 'title' => 'This is Fipamo', + 'name' => 'Ro', + 'occupation'=>'pretty cool... I guess', + 'folks' => $folks[0]['handle'], + 'secret' => $secret + ]); +}); +**/ +$app->run(); \ No newline at end of file -- 2.25.1 From 31d5e1192c95b08ef49a95705ebeba9fa2bf24ff Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 24 Mar 2021 16:59:28 -0700 Subject: [PATCH 052/250] markdown file retrival working, got rid of unnecessary configs --- .eslintrc | 70 ---- .prettierignore | 7 - .prettierrc | 16 - brain/controller/DashControl.inc.php | 18 + brain/data/Book.inc.php | 67 ++++ brain/views/default/dash-index.twig | 25 ++ brain/views/default/index.twig | 16 +- composer.json | 3 +- composer.lock | 499 ++++++++++++++++++++++----- index.php | 70 ++-- 10 files changed, 566 insertions(+), 225 deletions(-) delete mode 100644 .eslintrc delete mode 100644 .prettierignore delete mode 100644 .prettierrc create mode 100644 brain/controller/DashControl.inc.php create mode 100644 brain/data/Book.inc.php create mode 100644 brain/views/default/dash-index.twig diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index a1f75dd..0000000 --- a/.eslintrc +++ /dev/null @@ -1,70 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 7, - "sourceType": "module", - "ecmaFeatures": {} - }, - "rules": { - "constructor-super": 2, - "for-direction": 2, - "getter-return": 2, - "no-case-declarations": 2, - "no-class-assign": 2, - "no-compare-neg-zero": 2, - "no-cond-assign": 2, - "no-console": 1, - "no-const-assign": 2, - "no-constant-condition": 2, - "no-control-regex": 1, - "no-debugger": 2, - "no-delete-var": 2, - "no-dupe-args": 2, - "no-dupe-class-members": 2, - "no-dupe-keys": 2, - "no-duplicate-case": 2, - "no-empty": 2, - "no-empty-character-class": 2, - "no-empty-pattern": 2, - "no-ex-assign": 2, - "no-extra-boolean-cast": 2, - "no-extra-semi": 2, - "no-fallthrough": 2, - "no-func-assign": 2, - "no-global-assign": 2, - "no-inner-declarations": 2, - "no-invalid-regexp": 2, - "no-irregular-whitespace": 2, - "no-mixed-spaces-and-tabs": 2, - "no-new-symbol": 2, - "no-obj-calls": 2, - "no-octal": 2, - "no-redeclare": 2, - "no-regex-spaces": 2, - "no-self-assign": 2, - "no-sparse-arrays": 2, - "no-this-before-super": 2, - "no-undef": 2, - "no-unexpected-multiline": 2, - "no-unreachable": 2, - "no-unsafe-finally": 2, - "no-unsafe-negation": 2, - "no-unused-labels": 2, - "no-unused-vars": 2, - "no-useless-escape": 1, - "require-yield": 2, - "use-isnan": 2, - "valid-typeof": 2, - "no-duplicate-imports": 2 - }, - "env": { - "node": true, - "browser": true, - "es6": true - }, - "globals": { - "_": false, - "hljs": false, - "Sortable": false, - "Prism": false - } -} \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 5f65a20..0000000 --- a/.prettierignore +++ /dev/null @@ -1,7 +0,0 @@ -.babelrc -README.md -*.pug -*.sass -*.json -*.php - diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 747edfe..0000000 --- a/.prettierrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "arrowParens": "avoid", - "bracketSpacing": true, - "htmlWhitespaceSensitivity": "css", - "insertPragma": false, - "jsxBracketSameLine": false, - "jsxSingleQuote": true, - "proseWrap": "preserve", - "requirePragma": false, - "semi": true, - "singleQuote": true, - "trailingComma": "none", - "useTabs": true, - "tabWidth": 4, - "printWidth": 100 -} \ No newline at end of file diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php new file mode 100644 index 0000000..db89ec5 --- /dev/null +++ b/brain/controller/DashControl.inc.php @@ -0,0 +1,18 @@ +getContents(); + break; + } + } +} diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php new file mode 100644 index 0000000..ca62c1f --- /dev/null +++ b/brain/data/Book.inc.php @@ -0,0 +1,67 @@ +read($folder); + } + public function read($folder) + { + $folders = glob("$folder/*", GLOB_ONLYDIR); + foreach ($folders as $folder) { + //$this->files[] = $folder . "/"; + $this->read($folder); + } + $files = array_filter(glob("$folder/*md"), "is_file"); + foreach ($files as $file) { + $this->files[] = $file; + } + } + public function getContents() + { + $parser = new Parser(); + $contents = []; + foreach ($this->files as $file) { + $doc = $parser->parse(file_get_contents($file), false); + $meta = $doc->getYAML(); + $page = [ + "id" => $meta["id"], + "uuid" => $meta["uuid"], + "title" => $meta["title"], + "feature" => $meta["feature"], + "path" => $meta["path"], + "layout" => $meta["layout"], + "tags" => $meta["tags"], + "author" => $meta["author"], + "created" => $meta["created"], + "deleted" => $meta["deleted"], + "menu" => $meta["menu"], + "featured" => $meta["featured"], + "published" => $meta["published"], + "slug" => $meta["slug"], + "filePath" => $file, + "content" => $doc->getContent(), + ]; + + //checks for duplicates + $uuid = $meta["uuid"]; + $found = current( + array_filter($contents, function ($item) use ($uuid) { + return isset($item["uuid"]) && $uuid == $item["uuid"]; + }) + ); + + // if uuid is not present, add it + if (!$found) { + array_push($contents, $page); + } + } + + return $contents; + } +} diff --git a/brain/views/default/dash-index.twig b/brain/views/default/dash-index.twig new file mode 100644 index 0000000..7fe2d86 --- /dev/null +++ b/brain/views/default/dash-index.twig @@ -0,0 +1,25 @@ + + + + + + + {{ title }} + + + + There are + {{ totalPages }} + pages total, hoss. +
+ {% for page in pages %} + {# {{ page.title }}

+ #} + {{ page["title"] }} + {{ page['filePath'] }} +
+ {% endfor %} + + + + \ No newline at end of file diff --git a/brain/views/default/index.twig b/brain/views/default/index.twig index 2a5facd..3c68293 100644 --- a/brain/views/default/index.twig +++ b/brain/views/default/index.twig @@ -7,20 +7,6 @@ {{ title }} - - -

- {{ name }} - is a - {{ occupation }} -

-
-
- {{ folks }} - has - {{ secret }} -
- - + \ No newline at end of file diff --git a/composer.json b/composer.json index 4bd3de5..f96f050 100644 --- a/composer.json +++ b/composer.json @@ -3,6 +3,7 @@ "slim/slim": "4.*", "slim/psr7": "^1.2", "twig/twig": "^3.0", - "slim/twig-view": "^3.0" + "slim/twig-view": "^3.0", + "mnapoli/front-yaml": "^1.8" } } diff --git a/composer.lock b/composer.lock index f963f84..0138152 100644 --- a/composer.lock +++ b/composer.lock @@ -4,24 +4,74 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b442ae03c61541c3f8c578413aabe98e", + "content-hash": "7886761b471ff848a2dc078d8765be25", "packages": [ { - "name": "fig/http-message-util", - "version": "1.1.4", + "name": "erusev/parsedown", + "version": "1.7.4", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "3242caa9da7221a304b8f84eb9eaddae0a7cf422" + "url": "https://github.com/erusev/parsedown.git", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/3242caa9da7221a304b8f84eb9eaddae0a7cf422", - "reference": "3242caa9da7221a304b8f84eb9eaddae0a7cf422", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "support": { + "issues": "https://github.com/erusev/parsedown/issues", + "source": "https://github.com/erusev/parsedown/tree/1.7.x" + }, + "time": "2019-12-30T22:54:17+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" }, "suggest": { "psr/http-message": "The package containing the PSR-7 interfaces" @@ -44,7 +94,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", @@ -58,9 +108,48 @@ ], "support": { "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.4" + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" }, - "time": "2020-02-05T20:36:27+00:00" + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "mnapoli/front-yaml", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/mnapoli/FrontYAML.git", + "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", + "reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54", + "shasum": "" + }, + "require": { + "erusev/parsedown": "~1.0", + "php": ">=7.3", + "symfony/yaml": "~2.1|^3.0|^4.0|^5.0" + }, + "require-dev": { + "league/commonmark": "~1.4", + "phpunit/phpunit": "^9.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mni\\FrontYAML\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/mnapoli/FrontYAML/issues", + "source": "https://github.com/mnapoli/FrontYAML/tree/1.8.0" + }, + "time": "2020-12-04T10:52:19+00:00" }, { "name": "nikic/fast-route", @@ -114,27 +203,22 @@ }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -147,7 +231,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -161,9 +245,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { "name": "psr/http-factory", @@ -483,24 +567,25 @@ }, { "name": "slim/psr7", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/slimphp/Slim-Psr7.git", - "reference": "832912cb3c2a807d472ef0ac392552e85703a667" + "reference": "235d2e5a5ee1ad4b97b96870f37f3091b22fffd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/832912cb3c2a807d472ef0ac392552e85703a667", - "reference": "832912cb3c2a807d472ef0ac392552e85703a667", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/235d2e5a5ee1ad4b97b96870f37f3091b22fffd7", + "reference": "235d2e5a5ee1ad4b97b96870f37f3091b22fffd7", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.4", - "php": "^7.2", + "php": "^7.2 || ^8.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3" + "ralouphie/getallheaders": "^3", + "symfony/polyfill-php80": "^1.18" }, "provide": { "psr/http-factory-implementation": "1.0", @@ -509,11 +594,12 @@ "require-dev": { "adriansuter/php-autoload-override": "^1.2", "ext-json": "*", - "http-interop/http-factory-tests": "^0.6.0", + "http-interop/http-factory-tests": "^0.7.0", "php-http/psr7-integration-tests": "dev-master", "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^8.5", - "squizlabs/php_codesniffer": "^3.5" + "phpunit/phpunit": "^8.5 || ^9.3", + "squizlabs/php_codesniffer": "^3.5", + "weirdan/prophecy-shim": "^1.0 || ^2.0.2" }, "type": "library", "autoload": { @@ -556,28 +642,28 @@ ], "support": { "issues": "https://github.com/slimphp/Slim-Psr7/issues", - "source": "https://github.com/slimphp/Slim-Psr7/tree/master" + "source": "https://github.com/slimphp/Slim-Psr7/tree/1.3.0" }, - "time": "2020-08-18T22:49:11+00:00" + "time": "2020-11-28T06:28:46+00:00" }, { "name": "slim/slim", - "version": "4.5.0", + "version": "4.7.1", "source": { "type": "git", "url": "https://github.com/slimphp/Slim.git", - "reference": "5613cbb521081ed676d5d7eb3e44f2b80a818c24" + "reference": "0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/5613cbb521081ed676d5d7eb3e44f2b80a818c24", - "reference": "5613cbb521081ed676d5d7eb3e44f2b80a818c24", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f", + "reference": "0905e0775f8c1cfb3bbcfabeb6588dcfd8b82d3f", "shasum": "" }, "require": { "ext-json": "*", "nikic/fast-route": "^1.3", - "php": "^7.2", + "php": "^7.2 || ^8.0", "psr/container": "^1.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0", @@ -586,19 +672,20 @@ "psr/log": "^1.1" }, "require-dev": { - "adriansuter/php-autoload-override": "^1.0", + "adriansuter/php-autoload-override": "^1.2", "ext-simplexml": "*", - "guzzlehttp/psr7": "^1.5", + "guzzlehttp/psr7": "^1.7", "http-interop/http-factory-guzzle": "^1.0", - "laminas/laminas-diactoros": "^2.1", - "nyholm/psr7": "^1.1", - "nyholm/psr7-server": "^0.3.0", - "phpspec/prophecy": "^1.10", - "phpstan/phpstan": "^0.11.5", - "phpunit/phpunit": "^8.5", - "slim/http": "^1.0", - "slim/psr7": "^1.0", - "squizlabs/php_codesniffer": "^3.5" + "laminas/laminas-diactoros": "^2.4", + "nyholm/psr7": "^1.3", + "nyholm/psr7-server": "^1.0.1", + "phpspec/prophecy": "^1.12", + "phpstan/phpstan": "^0.12.58", + "phpunit/phpunit": "^8.5.13", + "slim/http": "^1.2", + "slim/psr7": "^1.3", + "squizlabs/php_codesniffer": "^3.5", + "weirdan/prophecy-shim": "^1.0 || ^2.0.2" }, "suggest": { "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", @@ -652,8 +739,14 @@ "router" ], "support": { + "docs": "https://www.slimframework.com/docs/v4/", + "forum": "https://discourse.slimframework.com/", + "irc": "irc://irc.freenode.net:6667/slimphp", "issues": "https://github.com/slimphp/Slim/issues", - "source": "https://github.com/slimphp/Slim/tree/4.x" + "rss": "https://www.slimframework.com/blog/feed.rss", + "slack": "https://slimphp.slack.com/", + "source": "https://github.com/slimphp/Slim", + "wiki": "https://github.com/slimphp/Slim/wiki" }, "funding": [ { @@ -665,33 +758,34 @@ "type": "tidelift" } ], - "time": "2020-04-14T20:49:48+00:00" + "time": "2020-12-01T19:41:22+00:00" }, { "name": "slim/twig-view", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/slimphp/Twig-View.git", - "reference": "36f7a04ca9e58ef926dc25cd0110f629668cb3f0" + "reference": "9ceaff0764ab8e70f9eeee825a9efd0b4e1dfc85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/36f7a04ca9e58ef926dc25cd0110f629668cb3f0", - "reference": "36f7a04ca9e58ef926dc25cd0110f629668cb3f0", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/9ceaff0764ab8e70f9eeee825a9efd0b4e1dfc85", + "reference": "9ceaff0764ab8e70f9eeee825a9efd0b4e1dfc85", "shasum": "" }, "require": { - "php": "^7.2", + "php": "^7.2 || ^8.0", "psr/http-message": "^1.0", - "slim/slim": "^4.0", - "twig/twig": "^3.0" + "slim/slim": "^4.7", + "twig/twig": "^3.1" }, "require-dev": { - "phpstan/phpstan": "^0.11.15", - "phpunit/phpunit": "^8.5", + "phpstan/phpstan": "^0.12.58", + "phpunit/phpunit": "^8.5.13 || ^9.3.8", "psr/http-factory": "^1.0", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^3.5", + "weirdan/prophecy-shim": "^1.0 || ^2.0.2" }, "type": "library", "autoload": { @@ -726,22 +820,89 @@ ], "support": { "issues": "https://github.com/slimphp/Twig-View/issues", - "source": "https://github.com/slimphp/Twig-View/tree/3.x" + "source": "https://github.com/slimphp/Twig-View/tree/3.2.0" }, - "time": "2020-03-13T18:08:36+00:00" + "time": "2020-12-08T17:04:14+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.20.0", + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { @@ -753,7 +914,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -791,7 +952,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" }, "funding": [ { @@ -807,20 +968,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.20.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { @@ -832,7 +993,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -871,7 +1032,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { @@ -887,20 +1048,178 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "twig/twig", - "version": "v3.1.1", + "name": "symfony/polyfill-php80", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737", - "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "298a08ddda623485208506fcee08817807a251dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/298a08ddda623485208506fcee08817807a251dd", + "reference": "298a08ddda623485208506fcee08817807a251dd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.2.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-06T07:59:01+00:00" + }, + { + "name": "twig/twig", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", "shasum": "" }, "require": { @@ -915,7 +1234,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -951,7 +1270,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.1.1" + "source": "https://github.com/twigphp/Twig/tree/v3.3.0" }, "funding": [ { @@ -963,7 +1282,7 @@ "type": "tidelift" } ], - "time": "2020-10-27T19:28:23+00:00" + "time": "2021-02-08T09:54:36+00:00" } ], "packages-dev": [], diff --git a/index.php b/index.php index 304dcb0..a525bce 100644 --- a/index.php +++ b/index.php @@ -5,37 +5,55 @@ use Slim\Factory\AppFactory; use Slim\Views\Twig; use Slim\Views\TwigMiddleware; -include 'brain/controller/IndexControl.inc.php'; -include 'brain/data/Settings.inc.php'; +include "brain/controller/IndexControl.inc.php"; +include "brain/controller/DashControl.inc.php"; -require __DIR__ . '/vendor/autoload.php'; +require __DIR__ . "/vendor/autoload.php"; $app = AppFactory::create(); -$twig = Twig::create('brain/views/default/'); +$twig = Twig::create("brain/views/default/"); $app->add(TwigMiddleware::create($app, $twig)); //Index -$app->get('/[{first}[/{second}]]', function (Request $request, Response $response, array $args) { - - if(isset($args['first'])) - { - $first = $args['first']; - if(is_numeric($first)) - { - $response->getBody()->write("FIND A PAGE, B!"); - }else{ - $response->getBody()->write("This is the dash, brah!"); - }; - }else{ - $response->getBody()->write("No Params, Homie!"); +$app->get("/[{first}[/{second}]]", function ( + Request $request, + Response $response, + array $args +) { + $view = Twig::fromRequest($request); + if (isset($args["first"])) { + $first = $args["first"]; + if (is_numeric($first)) { + $response->getBody()->write("FIND A PAGE, B!"); + } else { + //$response->getBody()->write("This is the dash, brah!"); + if (isset($args["second"])) { + $section = $args["second"]; + } else { + $section = "front"; + } + + $dash = new DashControl(); + $pages = $dash->getPages($section); + + $count = count($pages); + + //$response->getBody()->write("There are ".$count." pages, champ"); + + return $view->render($response, "dash-index.twig", [ + "title" => "Fipamo Dash", + "pages" => $pages, + "totalPages" => $count, + ]); } - - if(isset($args['second'])) - { - $year = $args['second']; - }; - - - return $response; + } else { + $response->getBody()->write("No Params, Homie!"); + } + + if (isset($args["second"])) { + $year = $args["second"]; + } + + return $response; }); //Dashboard Index @@ -56,4 +74,4 @@ $app->get('/@/dashboard', function (Request $request, Response $response) { ]); }); **/ -$app->run(); \ No newline at end of file +$app->run(); -- 2.25.1 From cf752fd8c0343a399d776ef5e7afebf14ab5bbdb Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 25 Mar 2021 14:05:32 -0700 Subject: [PATCH 053/250] set up views structure, started Auth class for session management --- brain/data/Auth.inc.php | 25 +++++++---- brain/data/Settings.inc.php | 26 ++++++----- brain/views/dash/forms/login.twig | 11 +++++ brain/views/dash/frame.twig | 64 ++++++++++++++++++++++++++ brain/views/dash/start.twig | 25 +++++++++++ brain/views/default/dash-index.twig | 25 ----------- brain/views/default/index.twig | 12 ----- brain/views/front/start.twig | 0 index.php | 69 ++++++++++++++++------------- 9 files changed, 170 insertions(+), 87 deletions(-) create mode 100644 brain/views/dash/forms/login.twig create mode 100644 brain/views/dash/frame.twig create mode 100644 brain/views/dash/start.twig delete mode 100644 brain/views/default/dash-index.twig delete mode 100644 brain/views/default/index.twig create mode 100644 brain/views/front/start.twig diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php index 0f3e1fc..b367d0e 100644 --- a/brain/data/Auth.inc.php +++ b/brain/data/Auth.inc.php @@ -2,11 +2,20 @@ class Auth { - private $configs; - - public function getSettings() - { - //return $this->secret; - } - -} \ No newline at end of file + private $configs; + + public function __construct() + { + session_start(); + } + + public function sessionStatus() + { + if (isset($_SESSION["member"])) { + return true; + } else { + return false; + } + //return $this->secret; + } +} diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 485d0d5..c3a4b67 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -2,14 +2,18 @@ class Settings { - private $folks; - private $tags; - private $settings; - - public function getFolks() - { - return $this->folks = json_decode(file_get_contents('config/folks.json'), true); - //return $this->secret; - } - -} \ No newline at end of file + private $folks; + private $tags; + private $settings; + + public function __construct() + { + //gets all settings files and converts to php objects + $this->folks = json_decode(file_get_contents("config/folks.json"), true); + $this->tags = json_decode(file_get_contents("config/tags.json"), true); + $this->settings = json_decode( + file_get_contents("config/settings.json"), + true + ); + } +} diff --git a/brain/views/dash/forms/login.twig b/brain/views/dash/forms/login.twig new file mode 100644 index 0000000..f8d6e86 --- /dev/null +++ b/brain/views/dash/forms/login.twig @@ -0,0 +1,11 @@ +
+
+ +
+
\ No newline at end of file diff --git a/brain/views/dash/frame.twig b/brain/views/dash/frame.twig new file mode 100644 index 0000000..4dd68dd --- /dev/null +++ b/brain/views/dash/frame.twig @@ -0,0 +1,64 @@ + + + + + + {% block title %} + {{ title }} + {% endblock %} + + {% block stylesheets %}{% endblock %} + + +
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+ + {% block mainContent %}{% endblock %} +
+ + +
+ +
+ {% if options['showFooter'] is defined %} + + {% else %} +
+
+ + +
+
+ {% endif %} + + +
+ {% block javascripts %}{% endblock %} + + \ No newline at end of file diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig new file mode 100644 index 0000000..43f0579 --- /dev/null +++ b/brain/views/dash/start.twig @@ -0,0 +1,25 @@ +{% extends "dash/frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block stylesheets %} + + {% endblock %} + + {% block mainContent %} +
+
+ {% if status %} + DASH INDEX + {% else %} + {{ include("dash/forms/login.twig") }} + {% endif %} +
+
+ {% endblock %} + + {% block javascripts %} + + {% endblock %} \ No newline at end of file diff --git a/brain/views/default/dash-index.twig b/brain/views/default/dash-index.twig deleted file mode 100644 index 7fe2d86..0000000 --- a/brain/views/default/dash-index.twig +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - {{ title }} - - - - There are - {{ totalPages }} - pages total, hoss. -
- {% for page in pages %} - {# {{ page.title }}

- #} - {{ page["title"] }} - {{ page['filePath'] }} -
- {% endfor %} - - - - \ No newline at end of file diff --git a/brain/views/default/index.twig b/brain/views/default/index.twig deleted file mode 100644 index 3c68293..0000000 --- a/brain/views/default/index.twig +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - {{ title }} - - - - - \ No newline at end of file diff --git a/brain/views/front/start.twig b/brain/views/front/start.twig new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php index a525bce..aad022f 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,6 @@ add(TwigMiddleware::create($app, $twig)); //Index @@ -26,24 +28,29 @@ $app->get("/[{first}[/{second}]]", function ( $response->getBody()->write("FIND A PAGE, B!"); } else { //$response->getBody()->write("This is the dash, brah!"); - if (isset($args["second"])) { - $section = $args["second"]; + + if ($first == "dashboard") { + if (isset($args["second"])) { + $section = $args["second"]; + } else { + $section = "index"; + } + + $dash = new DashControl(); + $pages = $dash->getPages($section); + + $count = count($pages); + + //$response->getBody()->write("There are " . $count . " pages, champ"); + $auth = new Auth(); + return $view->render($response, "dash/start.twig", [ + "title" => "Fipamo Dash", + "status" => $auth->sessionStatus(), + "pages" => $pages, + "totalPages" => $count, + ]); } else { - $section = "front"; } - - $dash = new DashControl(); - $pages = $dash->getPages($section); - - $count = count($pages); - - //$response->getBody()->write("There are ".$count." pages, champ"); - - return $view->render($response, "dash-index.twig", [ - "title" => "Fipamo Dash", - "pages" => $pages, - "totalPages" => $count, - ]); } } else { $response->getBody()->write("No Params, Homie!"); @@ -59,19 +66,19 @@ $app->get("/[{first}[/{second}]]", function ( //Dashboard Index /** $app->get('/@/dashboard', function (Request $request, Response $response) { - $index = new IndexControl(); - $settings = new Settings(); - $folks = $settings->getFolks(); - $secret = $index->getSecret(); - $view = Twig::fromRequest($request); - - return $view->render($response, 'index.twig', [ - 'title' => 'This is Fipamo', - 'name' => 'Ro', - 'occupation'=>'pretty cool... I guess', - 'folks' => $folks[0]['handle'], - 'secret' => $secret - ]); + $index = new IndexControl(); + $settings = new Settings(); + $folks = $settings->getFolks(); + $secret = $index->getSecret(); + $view = Twig::fromRequest($request); + + return $view->render($response, 'index.twig', [ + 'title' => 'This is Fipamo', + 'name' => 'Ro', + 'occupation'=>'pretty cool... I guess', + 'folks' => $folks[0]['handle'], + 'secret' => $secret + ]); }); **/ $app->run(); -- 2.25.1 From f3f2a6502b52095069459086d309d9788277e6d7 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 26 Mar 2021 20:24:16 -0700 Subject: [PATCH 054/250] normalized url routing and cleaned up templating structure --- brain/controller/DashControl.inc.php | 28 ++++++-- brain/controller/IndexControl.inc.php | 27 ++++--- brain/controller/RouteControl.inc.php | 31 ++++++++ brain/views/dash/{frame.twig => _frame.twig} | 0 brain/views/dash/start.twig | 2 +- brain/views/front/_frame.twig | 37 ++++++++++ brain/views/front/start.twig | 17 +++++ index.php | 74 ++------------------ 8 files changed, 133 insertions(+), 83 deletions(-) create mode 100644 brain/controller/RouteControl.inc.php rename brain/views/dash/{frame.twig => _frame.twig} (100%) create mode 100644 brain/views/front/_frame.twig diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index db89ec5..0315dba 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -1,18 +1,36 @@ getContents(); + $book = new Book("content/pages"); + $pageOptions = [ + "title" => "Fipamo Dashboard", + "status" => $auth->sessionStatus(), + "pages" => $book->getContents(), + ]; break; } + + return $view->render($response, "dash/start.twig", $pageOptions); } } diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php index 1bd56c2..039f72a 100644 --- a/brain/controller/IndexControl.inc.php +++ b/brain/controller/IndexControl.inc.php @@ -1,12 +1,23 @@ secret; - } - -} \ No newline at end of file + public static function start( + ServerRequestInterface $request, + ResponseInterface $response, + array $args + ): ResponseInterface { + $view = Twig::fromRequest($request); + + return $view->render($response, "front/start.twig", [ + "title" => "Fipamo Dash", + "status" => false, + "pages" => [], + "totalPages" => 0, + ]); + } +} diff --git a/brain/controller/RouteControl.inc.php b/brain/controller/RouteControl.inc.php new file mode 100644 index 0000000..93550b8 --- /dev/null +++ b/brain/controller/RouteControl.inc.php @@ -0,0 +1,31 @@ + + + + + + {% block title %} + {{ title }} + {% endblock %} + + {% block stylesheets %}{% endblock %} + + +
{% block mainContent %}{% endblock %} + + + +
+ +
+ {% if options['showFooter'] is defined %} + + {% else %} +
+
+ + +
+
+ {% endif %} + + +
+{% block javascripts %}{% endblock %} \ No newline at end of file diff --git a/brain/views/front/start.twig b/brain/views/front/start.twig index e69de29..c3fb820 100644 --- a/brain/views/front/start.twig +++ b/brain/views/front/start.twig @@ -0,0 +1,17 @@ +{% extends "front/_frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block stylesheets %} + + {% endblock %} + + {% block mainContent %} + This is the index page, boss + {% endblock %} + + {% block javascripts %} + + {% endblock %} \ No newline at end of file diff --git a/index.php b/index.php index aad022f..1851f0f 100644 --- a/index.php +++ b/index.php @@ -7,78 +7,14 @@ use Slim\Factory\AppFactory; use Slim\Views\Twig; use Slim\Views\TwigMiddleware; -include "brain/controller/IndexControl.inc.php"; -include "brain/controller/DashControl.inc.php"; -include "brain/data/Auth.inc.php"; +include "brain/controller/RouteControl.inc.php"; $app = AppFactory::create(); $twig = Twig::create("brain/views/"); $app->add(TwigMiddleware::create($app, $twig)); -//Index -$app->get("/[{first}[/{second}]]", function ( - Request $request, - Response $response, - array $args -) { - $view = Twig::fromRequest($request); - if (isset($args["first"])) { - $first = $args["first"]; - if (is_numeric($first)) { - $response->getBody()->write("FIND A PAGE, B!"); - } else { - //$response->getBody()->write("This is the dash, brah!"); - - if ($first == "dashboard") { - if (isset($args["second"])) { - $section = $args["second"]; - } else { - $section = "index"; - } - - $dash = new DashControl(); - $pages = $dash->getPages($section); - - $count = count($pages); - - //$response->getBody()->write("There are " . $count . " pages, champ"); - $auth = new Auth(); - return $view->render($response, "dash/start.twig", [ - "title" => "Fipamo Dash", - "status" => $auth->sessionStatus(), - "pages" => $pages, - "totalPages" => $count, - ]); - } else { - } - } - } else { - $response->getBody()->write("No Params, Homie!"); - } - - if (isset($args["second"])) { - $year = $args["second"]; - } - - return $response; -}); - -//Dashboard Index -/** -$app->get('/@/dashboard', function (Request $request, Response $response) { - $index = new IndexControl(); - $settings = new Settings(); - $folks = $settings->getFolks(); - $secret = $index->getSecret(); - $view = Twig::fromRequest($request); - - return $view->render($response, 'index.twig', [ - 'title' => 'This is Fipamo', - 'name' => 'Ro', - 'occupation'=>'pretty cool... I guess', - 'folks' => $folks[0]['handle'], - 'secret' => $secret - ]); -}); -**/ +//set up routing +$app->get("/[{first}[/{second}[/{third}]]]", "\RouteControl:get"); +$app->post("/[{first}[/{second}[/{third}]]]", "\RouteControl:post"); +//start the app $app->run(); -- 2.25.1 From b1cc12673c0273913d8815a5ef904c86163c8bc9 Mon Sep 17 00:00:00 2001 From: Ro Date: Sat, 27 Mar 2021 13:59:44 -0700 Subject: [PATCH 055/250] plugged in APIController, turned on login, added lodash! --- brain/controller/APIControl.inc.php | 40 ++ brain/controller/DashControl.inc.php | 7 +- brain/controller/RouteControl.inc.php | 10 + brain/data/Auth.inc.php | 33 +- brain/data/Settings.inc.php | 5 + composer.json | 3 +- composer.lock | 756 +++++++++++++++++++++++++- index.php | 7 +- 8 files changed, 850 insertions(+), 11 deletions(-) create mode 100644 brain/controller/APIControl.inc.php diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php new file mode 100644 index 0000000..c1d0847 --- /dev/null +++ b/brain/controller/APIControl.inc.php @@ -0,0 +1,40 @@ +getHeaderLine("Content-Type"); + switch ($contentType) { + case "application/json": + $body = json_decode(file_get_contents("php://input"), true); + break; + default: + break; + } + + //there's only one verion of the api for now + switch (isset($args["third"]) ? $args["third"] : "none") { + case "login": + $result = (new Auth())->login($body); + break; + default: + $result = [ + "message" => "Oh, nothing to do. That's unfortunate", + "type" => "TASK_NONE", + ]; + break; + } + + $response->getBody()->write(json_encode($result)); + return $response->withHeader("Content-Type", "application/json"); + } +} diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 0315dba..869c736 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -5,7 +5,6 @@ use Psr\Http\Message\ServerRequestInterface; use Slim\Views\Twig; include "brain/data/Book.inc.php"; -include "brain/data/Auth.inc.php"; class DashControl { @@ -16,17 +15,15 @@ class DashControl ): ResponseInterface { $view = Twig::fromRequest($request); $pageOptions = []; - $auth = new Auth(); switch (isset($args["second"]) ? $args["second"] : "index") { case "pages": $content = []; break; default: - $book = new Book("content/pages"); $pageOptions = [ "title" => "Fipamo Dashboard", - "status" => $auth->sessionStatus(), - "pages" => $book->getContents(), + "status" => (new Auth())->sessionStatus(), + "pages" => (new Book("content/pages"))->getContents(), ]; break; } diff --git a/brain/controller/RouteControl.inc.php b/brain/controller/RouteControl.inc.php index 93550b8..fc24e25 100644 --- a/brain/controller/RouteControl.inc.php +++ b/brain/controller/RouteControl.inc.php @@ -4,6 +4,7 @@ use Psr\Http\Message\ServerRequestInterface; include "brain/controller/IndexControl.inc.php"; include "brain/controller/DashControl.inc.php"; +include "brain/controller/APIControl.inc.php"; class RouteControl { @@ -27,5 +28,14 @@ class RouteControl ResponseInterface $response, array $args ): ResponseInterface { + switch (isset($args["first"]) ? $args["first"] : "index") { + case "api": + return APIControl::start($request, $response, $args); + break; + default: + //echo "YES"; + //return IndexControl::start($request, $response, $args); + break; + } } } diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php index b367d0e..b365777 100644 --- a/brain/data/Auth.inc.php +++ b/brain/data/Auth.inc.php @@ -1,4 +1,7 @@ secret; } + + public function login($who) + { + //grab member list + $folks = (new Settings())->getFolks(); + $found = find($folks, ["handle" => $who["handle"]]); + + if ($found) { + //name is found, verify password + if (password_verify($who["password"], $found["password"])) { + $result = [ + "message" => "Welcome back", + "type" => "TASK_LOGIN", + ]; + } else { + $result = [ + "message" => "Check your password, sport", + "type" => "TASK_LOGIN", + ]; + } + } else { + //if name is not found + $result = [ + "message" => "Need to see some id, champ", + "type" => "TASK_LOGIN", + ]; + } + return $result; + } } diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index c3a4b67..adf3fce 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -16,4 +16,9 @@ class Settings true ); } + + public function getFolks() + { + return $this->folks; + } } diff --git a/composer.json b/composer.json index f96f050..597b982 100644 --- a/composer.json +++ b/composer.json @@ -4,6 +4,7 @@ "slim/psr7": "^1.2", "twig/twig": "^3.0", "slim/twig-view": "^3.0", - "mnapoli/front-yaml": "^1.8" + "mnapoli/front-yaml": "^1.8", + "lodash-php/lodash-php": "^0.0.7" } } diff --git a/composer.lock b/composer.lock index 0138152..d0907d5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7886761b471ff848a2dc078d8765be25", + "content-hash": "0dea05f2df1df2495deae70b57c9afd1", "packages": [ { "name": "erusev/parsedown", @@ -112,6 +112,61 @@ }, "time": "2020-11-24T22:02:12+00:00" }, + { + "name": "lodash-php/lodash-php", + "version": "0.0.7", + "source": { + "type": "git", + "url": "https://github.com/lodash-php/lodash-php.git", + "reference": "9083fdc398db5594b3d6909338d8b824e661955b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lodash-php/lodash-php/zipball/9083fdc398db5594b3d6909338d8b824e661955b", + "reference": "9083fdc398db5594b3d6909338d8b824e661955b", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "sebastian/comparator": "^1.2 | ^2.0 | ^2.1 | ^3.0 | ^4.0", + "symfony/property-access": "^2.7 | ^3.0 | ^4.0 | ^5.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "phpdocumentor/reflection-docblock": "^4.2", + "phpstan/phpdoc-parser": "^0.3.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pierre du Plessis", + "email": "open-source@solidworx.co" + } + ], + "description": "A port of Lodash to PHP", + "keywords": [ + "lodash", + "php-library", + "php-utility", + "utilities", + "utility", + "utility-library" + ], + "support": { + "issues": "https://github.com/lodash-php/lodash-php/issues", + "source": "https://github.com/lodash-php/lodash-php/tree/0.0.7" + }, + "time": "2020-09-21T11:55:26+00:00" + }, { "name": "mnapoli/front-yaml", "version": "1.8.0", @@ -565,6 +620,286 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, { "name": "slim/psr7", "version": "1.3.0", @@ -970,6 +1305,171 @@ ], "time": "2021-01-07T16:49:33+00:00" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-22T09:19:47+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.22.1", @@ -1133,6 +1633,260 @@ ], "time": "2021-01-07T16:49:33+00:00" }, + { + "name": "symfony/property-access", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "3af8ed262bd3217512a13b023981fe68f36ad5f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/3af8ed262bd3217512a13b023981fe68f36ad5f3", + "reference": "3af8ed262bd3217512a13b023981fe68f36ad5f3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/property-info": "^5.2" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-01-27T10:15:41+00:00" + }, + { + "name": "symfony/property-info", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "7185bbc74e6f49c3f1b5936b4d9e4ca133921189" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/7185bbc74e6f49c3f1b5936b4d9e4ca133921189", + "reference": "7185bbc74e6f49c3f1b5936b4d9e4ca133921189", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/string": "^5.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-17T15:24:54+00:00" + }, + { + "name": "symfony/string", + "version": "v5.2.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "4e78d7d47061fa183639927ec40d607973699609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/4e78d7d47061fa183639927ec40d607973699609", + "reference": "4e78d7d47061fa183639927ec40d607973699609", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-16T10:20:28+00:00" + }, { "name": "symfony/yaml", "version": "v5.2.5", diff --git a/index.php b/index.php index 1851f0f..5057abe 100644 --- a/index.php +++ b/index.php @@ -8,13 +8,14 @@ use Slim\Views\Twig; use Slim\Views\TwigMiddleware; include "brain/controller/RouteControl.inc.php"; +include "brain/data/Auth.inc.php"; $app = AppFactory::create(); $twig = Twig::create("brain/views/"); $app->add(TwigMiddleware::create($app, $twig)); - +session_start(); //set up routing -$app->get("/[{first}[/{second}[/{third}]]]", "\RouteControl:get"); -$app->post("/[{first}[/{second}[/{third}]]]", "\RouteControl:post"); +$app->get("/[{first}[/{second}[/{third}[/{fourth}]]]]", "\RouteControl:get"); +$app->post("/[{first}[/{second}[/{third}[/{fourt}]]]]", "\RouteControl:post"); //start the app $app->run(); -- 2.25.1 From 0ea15ae4b201331a160748abdcfa1c41f6f84bcf Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 28 Mar 2021 15:22:00 -0700 Subject: [PATCH 056/250] added custom session manager, moved index to safe directory --- brain/controller/APIControl.inc.php | 10 +++-- brain/controller/DashControl.inc.php | 8 ++-- brain/controller/IndexControl.inc.php | 3 +- brain/controller/RouteControl.inc.php | 6 +-- brain/data/Auth.inc.php | 37 ++++++++++++--- brain/data/Session.inc.php | 65 +++++++++++++++++++++++++++ brain/data/Settings.inc.php | 18 +++++--- brain/utility/StringTools.inc.php | 22 +++++++++ brain/views/dash/_frame.twig | 8 ++-- brain/views/dash/start.twig | 6 ++- composer.json | 3 +- composer.lock | 60 ++++++++++++++++++++++++- config/folks.json | 27 +++++------ index.php | 21 --------- 14 files changed, 228 insertions(+), 66 deletions(-) create mode 100644 brain/data/Session.inc.php create mode 100644 brain/utility/StringTools.inc.php delete mode 100644 index.php diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index c1d0847..caad565 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -1,5 +1,4 @@ getHeaderLine("Content-Type"); switch ($contentType) { case "application/json": @@ -24,7 +23,11 @@ class APIControl //there's only one verion of the api for now switch (isset($args["third"]) ? $args["third"] : "none") { case "login": - $result = (new Auth())->login($body); + $result = Auth::login($body); + + break; + case "logout": + $result = Auth::logout($body); break; default: $result = [ @@ -35,6 +38,7 @@ class APIControl } $response->getBody()->write(json_encode($result)); + return $response->withHeader("Content-Type", "application/json"); } } diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 869c736..10a6b00 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -1,10 +1,9 @@ "Fipamo Dashboard", - "status" => (new Auth())->sessionStatus(), + "status" => Session::active(), "pages" => (new Book("content/pages"))->getContents(), ]; break; } - return $view->render($response, "dash/start.twig", $pageOptions); } } diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php index 039f72a..d9ad0f1 100644 --- a/brain/controller/IndexControl.inc.php +++ b/brain/controller/IndexControl.inc.php @@ -1,5 +1,4 @@ render($response, "front/start.twig", [ "title" => "Fipamo Dash", "status" => false, diff --git a/brain/controller/RouteControl.inc.php b/brain/controller/RouteControl.inc.php index fc24e25..8b80ec8 100644 --- a/brain/controller/RouteControl.inc.php +++ b/brain/controller/RouteControl.inc.php @@ -2,9 +2,9 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -include "brain/controller/IndexControl.inc.php"; -include "brain/controller/DashControl.inc.php"; -include "brain/controller/APIControl.inc.php"; +include "../brain/controller/IndexControl.inc.php"; +include "../brain/controller/DashControl.inc.php"; +include "../brain/controller/APIControl.inc.php"; class RouteControl { diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php index b365777..38c4851 100644 --- a/brain/data/Auth.inc.php +++ b/brain/data/Auth.inc.php @@ -1,17 +1,15 @@ secret; } - public function login($who) + public static function login($who) { //grab member list $folks = (new Settings())->getFolks(); @@ -30,6 +28,23 @@ class Auth if ($found) { //name is found, verify password if (password_verify($who["password"], $found["password"])) { + $member = [ + "handle" => $found["handle"], + "email" => $found["email"], + "role" => $found["role"], + "avatar" => $found["avi"], + ]; + + $token = Token::create( + $found["id"], + $found["secret"], + time() + 3600, + "localhost" + ); //expires in an hour + Session::start(); + Session::set("member", $member); + Session::set("token", $token); + $result = [ "message" => "Welcome back", "type" => "TASK_LOGIN", @@ -49,4 +64,14 @@ class Auth } return $result; } + + public static function logout() + { + Session::kill(); + $result = [ + "message" => "Till next time, g.", + "type" => "TASK_LOGOUT", + ]; + return $result; + } } diff --git a/brain/data/Session.inc.php b/brain/data/Session.inc.php new file mode 100644 index 0000000..c3a2266 --- /dev/null +++ b/brain/data/Session.inc.php @@ -0,0 +1,65 @@ + "", + "token" => "", + ]; + public static function start() + { + if (!is_file(self::$file)) { + file_put_contents(self::$file, json_encode(self::$data)); + } else { + ($new = fopen(self::$file, "w")) or die("Unable to open file!"); + fwrite($new, json_encode(self::$data)); + fclose($new); + } + } + + public static function active() + { + $data = json_decode(file_get_contents(self::$file), true); + if ($data["member"] != null) { + $secret = (new Settings())->getFolks("secret"); + if ( + Token::validate($data["token"], $secret) && + Token::validateExpiration($data["token"], $secret) + ) { + true; + } else { + false; + } + + return true; + } else { + return false; + } + } + + public static function set($key, $value) + { + $data = json_decode(file_get_contents(self::$file), true); + $data[$key] = $value; + ($fresh = fopen(self::$file, "w")) or die("Unable to open file!"); + fwrite($fresh, json_encode($data)); + fclose($fresh); + } + + public static function get($key) + { + $data = json_decode(file_get_contents(self::$file), true); + + return $data[$key]; + } + + public static function kill() + { + ($fresh = fopen(self::$file, "w")) or die("Unable to open file!"); + fwrite($fresh, json_encode(self::$data)); + fclose($fresh); + } +} diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index adf3fce..d540bce 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -1,5 +1,5 @@ folks = json_decode(file_get_contents("config/folks.json"), true); - $this->tags = json_decode(file_get_contents("config/tags.json"), true); + $this->folks = json_decode(file_get_contents("../config/folks.json"), true); + $this->tags = json_decode(file_get_contents("../config/tags.json"), true); $this->settings = json_decode( - file_get_contents("config/settings.json"), + file_get_contents("../config/settings.json"), true ); } - public function getFolks() + public function getFolks($key) { - return $this->folks; + if (isset($key)) { + $member = Session::get("member"); + $found = find($this->folks, ["handle" => $member["handle"]]); + return $found[$key]; + } else { + return $this->folks; + } } } diff --git a/brain/utility/StringTools.inc.php b/brain/utility/StringTools.inc.php new file mode 100644 index 0000000..2f1fb17 --- /dev/null +++ b/brain/utility/StringTools.inc.php @@ -0,0 +1,22 @@ +
- +
- +
- +
@@ -28,7 +28,7 @@ diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig new file mode 100644 index 0000000..a136ae6 --- /dev/null +++ b/brain/views/dash/page-edit.twig @@ -0,0 +1,96 @@ +{% extends "dash/_frame.twig" %} +{# + if page is in 'edit' mode, set variables + if not, just make them empty +#} +{% if mode == 'edit' %} + {% set id = page['id'] %} + {% set uuid = page['uuid'] %} + {% set slug = page['slug'] %} + {% set feature = page['feature'] %} + {% set _title = page['title'] %} + {% set tags = page['tags'] %} + {% set content = page['content'] %} +{% else %} + {% set id = '' %} + {% set uuid = '' %} + {% set slug = '' %} + {% set feature = '' %} + {% set title = '' %} + {% set tags = '' %} + {% set content = '' %} +{% endif %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block stylesheets %} + + {% endblock %} + + {% block mainContent %} +
+
+
+ {% if page['feature'] == null %} + + {% else %} + + + + {% endif %} + +
+
+
+
+ + + +
+ + PRETTY DATE + +
+
+ + + + {% apply spaceless %} + {{ include("dash/partials/options.twig") }} + {% endapply %} + + +
+
+
+
+ {% apply spaceless %} + {{ include("dash/partials/editor.twig") }} + {% endapply %} +
+
 {{- content -}}
+
+
+
+
+ {% endblock %} + + {% block javascripts %} + + {% endblock %} \ No newline at end of file diff --git a/brain/views/dash/partials/editor.twig b/brain/views/dash/partials/editor.twig new file mode 100644 index 0000000..50013d7 --- /dev/null +++ b/brain/views/dash/partials/editor.twig @@ -0,0 +1,45 @@ +
+ + + + + + + + + {% if mode == "edit" %} + + + {% else %} + + {% endif %} + + + +
\ No newline at end of file diff --git a/brain/views/dash/partials/navigation.twig b/brain/views/dash/partials/navigation.twig new file mode 100644 index 0000000..31a008e --- /dev/null +++ b/brain/views/dash/partials/navigation.twig @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/brain/views/dash/partials/options.twig b/brain/views/dash/partials/options.twig new file mode 100644 index 0000000..7e8f257 --- /dev/null +++ b/brain/views/dash/partials/options.twig @@ -0,0 +1,35 @@ +{% if page['menu'] %} + {% set menu = 'true' %} +{% else %} + {% set menu = 'false' %} +{% endif %} + +{% if page['featured'] %} + {% set featured = 'true' %} +{% else %} + {% set featured = 'false' %} +{% endif %} + +{% if page['published'] %} + {% set published = 'true' %} +{% else %} + {% set published = 'false' %} +{% endif %} + +
+ + + +
\ No newline at end of file diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig index d453d61..86cd36a 100644 --- a/brain/views/dash/start.twig +++ b/brain/views/dash/start.twig @@ -5,7 +5,7 @@ {% endblock %} {% block stylesheets %} - + {% endblock %} {% block mainContent %} diff --git a/src/styles/main/_posts.sass b/src/styles/main/_posts.sass index 93c0292..102f8bc 100644 --- a/src/styles/main/_posts.sass +++ b/src/styles/main/_posts.sass @@ -189,7 +189,7 @@ button:nth-child(1) border-radius: 3px 0 0 3px - button:nth-child(4) + button:nth-child(3) border-radius: 0 3px 3px 0 button diff --git a/src/styles/main/_structure.sass b/src/styles/main/_structure.sass index 9fcf94b..65ced4b 100644 --- a/src/styles/main/_structure.sass +++ b/src/styles/main/_structure.sass @@ -104,7 +104,7 @@ svg.icons padding: 0.75rem #left, #right - width: 50% + width: 49.7% display: inline-block vertical-align: top min-height: 60px -- 2.25.1 From 395850adb8281e9a3d911cb906eed01fd5bf5f9b Mon Sep 17 00:00:00 2001 From: Ro Date: Sat, 10 Apr 2021 13:44:43 -0700 Subject: [PATCH 066/250] cleaned up date formatting for display --- brain/controller/DashControl.inc.php | 3 +++ brain/data/Book.inc.php | 6 ++---- brain/views/dash/page-edit.twig | 4 +++- brain/views/dash/partials/index.twig | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 6b514db..04930bf 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -28,6 +28,7 @@ class DashControl "stats" => $data["stats"], "pages" => $data["pages"], "paginate" => $data["paginate"], + "status" => Session::active(), ]; break; case "page": @@ -41,11 +42,13 @@ class DashControl "title" => "Fipamo | Edit Page", "page" => (new Book("../content/pages"))->findPageById($uuid), "mode" => $mode, + "status" => Session::active(), ]; } else { $pageOptions = [ "title" => "Fipamo | Create Page", "mode" => $mode, + "status" => Session::active(), ]; } } else { diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index 7f94027..fbf325a 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -118,8 +118,6 @@ class Book $doc = $parser->parse(file_get_contents($file), false); $meta = $doc->getYAML(); - //$date = getdate($meta["created"]); - $newDate = date("Y M D d", $meta["created"]); $page = [ "id" => $meta["id"], "uuid" => $meta["uuid"], @@ -129,8 +127,8 @@ class Book "layout" => $meta["layout"], "tags" => $meta["tags"], "author" => $meta["author"], - "prettyDate" => $newDate, - "created" => $meta["created"], + "created" => date("Y M D d", $meta["created"]), + "updated" => date("Y M D d", $meta["updated"]), "deleted" => $meta["deleted"], "menu" => $meta["menu"], "featured" => $meta["featured"], diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig index a136ae6..e299485 100644 --- a/brain/views/dash/page-edit.twig +++ b/brain/views/dash/page-edit.twig @@ -11,6 +11,7 @@ {% set _title = page['title'] %} {% set tags = page['tags'] %} {% set content = page['content'] %} + {% set date = page['created'] %} {% else %} {% set id = '' %} {% set uuid = '' %} @@ -19,6 +20,7 @@ {% set title = '' %} {% set tags = '' %} {% set content = '' %} + {% set date = '' %} {% endif %} {% block title %} @@ -62,7 +64,7 @@
- PRETTY DATE + {{ date }}
diff --git a/brain/views/dash/partials/index.twig b/brain/views/dash/partials/index.twig index 20a4056..9148370 100644 --- a/brain/views/dash/partials/index.twig +++ b/brain/views/dash/partials/index.twig @@ -40,7 +40,7 @@ Featured
- {{ page.prettyDate }} + {{ page.updated }} -- 2.25.1 From 1b9252fef0e8b56c19d1ecc74313afc90345df48 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 13 Apr 2021 15:20:57 -0700 Subject: [PATCH 067/250] page editing cleaned up, fixed date formatting, fixed page filtering, add Image API path --- brain/api/v1/ImagesAPI.inc.php | 30 ++ brain/controller/APIControl.inc.php | 30 +- brain/controller/DashControl.inc.php | 7 +- brain/data/Book.inc.php | 154 ++++++++- brain/data/Session.inc.php | 18 ++ brain/utility/FileUploader.inc.php | 29 ++ brain/views/dash/page-edit.twig | 4 +- composer.json | 3 +- composer.lock | 59 +++- public/index.php | 3 +- src/com/controllers/DashManager.js | 72 ++--- src/com/controllers/PageEditor.js | 466 ++++++++++++++------------- src/com/controllers/PostIndex.js | 56 ++-- src/libraries/FipamoAdminAPI.js | 7 +- 14 files changed, 627 insertions(+), 311 deletions(-) create mode 100644 brain/api/v1/ImagesAPI.inc.php create mode 100644 brain/utility/FileUploader.inc.php diff --git a/brain/api/v1/ImagesAPI.inc.php b/brain/api/v1/ImagesAPI.inc.php new file mode 100644 index 0000000..aed3092 --- /dev/null +++ b/brain/api/v1/ImagesAPI.inc.php @@ -0,0 +1,30 @@ +getUploadedFiles(); + $path = date("Y") . "/" . date("m"); + + $uploadPath = "../public/assets/images/blog/" . $path; + + FileUploader::uploadFile($uploadPath, $image["post_image"]); + + $response = [ + "message" => "Image Added. Very slick", + "type" => "postImageAdded", + "url" => + "/assets/images/blog/" . + $path . + "/" . + $image["post_image"]->getClientFileName(), + ]; + + return $response; + } +} diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index a881b7e..ceae441 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -2,7 +2,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; -//include "brain/data/Auth.inc.php"; +include "../brain/api/v1/ImagesAPI.inc.php"; class APIControl { @@ -18,7 +18,6 @@ class APIControl default: break; } - $response->getBody()->write(json_encode($result)); return $response->withHeader("Content-Type", "application/json"); } @@ -43,6 +42,33 @@ class APIControl break; case "logout": $result = Auth::logout($body); + break; + case "page": + //move methdology to its own API class + $task = $args["fourth"]; + $token = $request->getHeader("fipamo-access-token"); + if (Session::verifyToken($token[0])) { + switch ($task) { + case "delete": + case "add": + case "edit": + $result = (new Book("../content/pages"))->editPage( + $task, + $request + ); + break; + + case "add-entry-image": + $result = ImagesAPI::uploadImage($request); + break; + } + } else { + $result = [ + "message" => "API access denied, homie", + "type" => "API_ERROR", + ]; + } + break; default: $result = [ diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 04930bf..d21a8b6 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -18,7 +18,12 @@ class DashControl switch (isset($args["second"]) ? $args["second"] : "index") { case "pages": $currentPage = isset($args["fourth"]) ? $args["fourth"] : 1; - $data = (new Book("../content/pages"))->getPages($currentPage, 4); + $filter = isset($args["third"]) ? $args["third"] : "all"; + $data = (new Book("../content/pages"))->getPages( + $currentPage, + 4, + $filter + ); $template = "dash/book.twig"; $pageOptions = [ "entryCount" => $data["entryCount"], diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index fbf325a..f9d25aa 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -33,23 +33,157 @@ class Book return $page; } + public function editPage($task, $request) + { + $content = $this->getContents(); + if ($task == "delete") { + $parsed = json_decode(file_get_contents("php://input"), true); + $body = find($content, ["uuid" => $parsed["id"]]); + } else { + $body = $request->getParsedBody(); + } + + $page = find($content, ["uuid" => $body["uuid"]]); + $image = $request->getUploadedFiles(); + $member = Session::get("member"); + + if ($task != "add") { + $path = + date("Y", date($page["rawCreated"])) . + "/" . + date("m", date($page["rawCreated"])); + } else { + $path = date("Y", date()) . "/" . date("m"); + } + + if (isset($image["feature_image"])) { + $feature = $image["feature_image"]->getClientFileName(); + FileUploader::uploadFile( + "../public/assets/images/blog/" . $path . "/", + $image["feature_image"] + ); + } else { + if (isset($body["feature_image"])) { + $url = explode("/", $body["feature_image"]); + $feature = + "/" . + $url[3] . + "/" . + $url[4] . + "/" . + $url[5] . + "/" . + $url[6] . + "/" . + $url[7] . + "/" . + $url[8]; + } else { + $feature = $body["feature"]; + } + } + + if ($task == "delete") { + $deleted = "true"; + $body["menu"] ? ($body["menu"] = "true") : ($body["menu"] = "false"); + $body["published"] + ? ($body["published"] = "true") + : ($body["published"] = "false"); + $body["featured"] + ? ($body["featured"] = "true") + : ($body["featured"] = "false"); + } else { + $deleted = !$page["deleted"] ? "false" : $page["deleted"]; + } + + $created = + $task != "add" + ? new \Moment\Moment($page["rawCreated"]) + : new \Moment\Moment(); + $updated = new \Moment\Moment(); + + $write = + "---\n" . + "id: " . + $body["id"] . + "\n" . + "uuid: " . + $body["uuid"] . + "\n" . + "title: " . + $body["title"] . + "\n" . + "feature: " . + $feature . + "\n" . + "path: " . + $path . + "\n" . + "layout: " . + $body["layout"] . + "\n" . + "tags: " . + $body["tags"] . + "\n" . + "author: " . + $member["handle"] . + "\n" . + "created: " . + $created->format("Y-m-d\TH:i:sP") . + "\n" . + "updated: " . + $updated->format("Y-m-d\TH:i:sP") . + "\n" . + "deleted: " . + $deleted . + "\n" . + "slug: " . + $body["slug"] . + "\n" . + "menu: " . + $body["menu"] . + "\n" . + "published: " . + $body["published"] . + "\n" . + "featured: " . + $body["featured"] . + "\n---\n" . + $body["content"]; + + // if layout is index, change path to file + + if ($body["layout"] == "index") { + $writePath = "../content/start/index.md"; + } else { + $writePath = "../content/pages/" . $path . "/" . $body["slug"] . ".md"; + } + + ($new = fopen($writePath, "w")) or die("Unable to open file!"); + fwrite($new, $write); + fclose($new); + + $response = [ + "message" => "File edited. Nice work", + "type" => $task == "write" ? "postUpdated" : "postAdded", + ]; + + return $response; + } + public function getPages(int $page, int $limit, string $sort = null) { $content = $this->getContents(); $published = filter($content, function ($item) { - return $item["published"] == "true"; + return $item["published"] == true && $item["deleted"] == false; }); $deleted = filter($content, function ($item) { - return $item["deleted"]; + return $item["deleted"] == true; }); $all = $content; - $filter = isset($sort) ? $sort : "all"; - - //echo $filter; - $filtered = []; switch ($filter) { case "published": $filtered = $published; @@ -61,9 +195,7 @@ class Book $filtered = $content; break; } - $numOfPages = ceil(count($filtered) / $limit); - $folder = []; if (count($filtered) != 0) { @@ -99,7 +231,7 @@ class Book "numOfPages" => $numOfPages, "entryCount" => count($filtered), "paginate" => [ - "sort" => $filter, + "sort" => $sort, "nextPage" => $next, "prevPage" => $prev, ], @@ -116,7 +248,6 @@ class Book $contents = []; foreach ($this->files as $file) { $doc = $parser->parse(file_get_contents($file), false); - $meta = $doc->getYAML(); $page = [ "id" => $meta["id"], @@ -129,6 +260,8 @@ class Book "author" => $meta["author"], "created" => date("Y M D d", $meta["created"]), "updated" => date("Y M D d", $meta["updated"]), + "rawCreated" => $meta["created"], + "rawUpdated" => $meta["updated"], "deleted" => $meta["deleted"], "menu" => $meta["menu"], "featured" => $meta["featured"], @@ -137,7 +270,6 @@ class Book "filePath" => $file, "content" => $doc->getContent(), ]; - //checks for duplicates $uuid = $meta["uuid"]; $found = current( diff --git a/brain/data/Session.inc.php b/brain/data/Session.inc.php index 12e8596..1d6d330 100644 --- a/brain/data/Session.inc.php +++ b/brain/data/Session.inc.php @@ -38,6 +38,24 @@ class Session } } + public static function verifyToken($token) + { + $data = json_decode(file_get_contents(self::$file), true); + if ($data["member"] != null) { + $secret = (new Settings())->getFolks("secret"); + if ( + Token::validate($token, $secret) && + Token::validateExpiration($token, $secret) + ) { + return true; + } else { + return false; + } + } else { + return false; + } + } + public static function set($key, $value) { $data = json_decode(file_get_contents(self::$file), true); diff --git a/brain/utility/FileUploader.inc.php b/brain/utility/FileUploader.inc.php new file mode 100644 index 0000000..5afbfc2 --- /dev/null +++ b/brain/utility/FileUploader.inc.php @@ -0,0 +1,29 @@ +getClientFileName(), $directory); + //$extension = pathinfo($file->getClientFilename(), PATHINFO_EXTENSION); + + // see http://php.net/manual/en/function.random-bytes.php + //$basename = bin2hex(random_bytes(8)); + //$filename = sprintf("%s.%0.8s", $basename, $extension); + + $file->moveTo($directory . "/" . $file->getClientFileName()); + } catch (Error $e) { + echo "failed to upload image: " . $e->getMessage(); + throw new Error("Failed to upload image file"); + } + } +} diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig index e299485..5e1278c 100644 --- a/brain/views/dash/page-edit.twig +++ b/brain/views/dash/page-edit.twig @@ -7,6 +7,7 @@ {% set id = page['id'] %} {% set uuid = page['uuid'] %} {% set slug = page['slug'] %} + {% set layout = page['layout'] %} {% set feature = page['feature'] %} {% set _title = page['title'] %} {% set tags = page['tags'] %} @@ -16,6 +17,7 @@ {% set id = '' %} {% set uuid = '' %} {% set slug = '' %} + {% set layout = 'pages' %} {% set feature = '' %} {% set title = '' %} {% set tags = '' %} @@ -32,7 +34,7 @@ {% endblock %} {% block mainContent %} -
+
{% if page['feature'] == null %} diff --git a/composer.json b/composer.json index 055928b..8eb6166 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,7 @@ "slim/twig-view": "^3.0", "mnapoli/front-yaml": "^1.8", "lodash-php/lodash-php": "^0.0.7", - "rbdwllr/reallysimplejwt": "^4.0" + "rbdwllr/reallysimplejwt": "^4.0", + "fightbulc/moment": "^1.33" } } diff --git a/composer.lock b/composer.lock index fbfaccd..030001b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0e243f32e05cb4ef6265ce19f141fdae", + "content-hash": "d5ef6d43f774049d093af6375d20ac11", "packages": [ { "name": "erusev/parsedown", @@ -112,6 +112,63 @@ }, "time": "2020-11-24T22:02:12+00:00" }, + { + "name": "fightbulc/moment", + "version": "1.33.0", + "source": { + "type": "git", + "url": "https://github.com/fightbulc/moment.php.git", + "reference": "435d68e481ab0a716358926fb51966e696d297e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fightbulc/moment.php/zipball/435d68e481ab0a716358926fb51966e696d297e3", + "reference": "435d68e481ab0a716358926fb51966e696d297e3", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.5 || ^6.5 || ^7.5 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Moment\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tino Ehrich", + "email": "tino@bigpun.me", + "role": "developer" + } + ], + "description": "Parse, validate, manipulate, and display dates in PHP w/ i18n support. Inspired by moment.js", + "keywords": [ + "date", + "display", + "format", + "i18n", + "locale", + "manipulate", + "moment", + "parse", + "time", + "translation", + "validate" + ], + "support": { + "issues": "https://github.com/fightbulc/moment.php/issues", + "source": "https://github.com/fightbulc/moment.php/tree/1.33.0" + }, + "time": "2021-03-27T13:10:08+00:00" + }, { "name": "lodash-php/lodash-php", "version": "0.0.7", diff --git a/public/index.php b/public/index.php index af63dca..e9af1c3 100644 --- a/public/index.php +++ b/public/index.php @@ -11,13 +11,14 @@ include "../brain/controller/RouteControl.inc.php"; include "../brain/data/Auth.inc.php"; include "../brain/utility/StringTools.inc.php"; include "../brain/data/Session.inc.php"; +include "../brain/utility/FileUploader.inc.php"; $app = AppFactory::create(); $twig = Twig::create("../brain/views/"); $app->add(TwigMiddleware::create($app, $twig)); //set up routing $app->get("/[{first}[/{second}[/{third}[/{fourth}]]]]", "\RouteControl:get"); -$app->post("/[{first}[/{second}[/{third}[/{fourt}]]]]", "\RouteControl:post"); +$app->post("/[{first}[/{second}[/{third}[/{fourth}]]]]", "\RouteControl:post"); //start the app $app->run(); diff --git a/src/com/controllers/DashManager.js b/src/com/controllers/DashManager.js index 57fc7f0..ad744c9 100644 --- a/src/com/controllers/DashManager.js +++ b/src/com/controllers/DashManager.js @@ -1,41 +1,41 @@ -import PostIndex from './PostIndex'; -import SettingsIndex from './SettingsIndex'; -import NaviIndex from './NavIndex'; +import PostIndex from "./PostIndex"; +import SettingsIndex from "./SettingsIndex"; +import NaviIndex from "./NavIndex"; export default class DashManager { - //-------------------------- - // constructor - //-------------------------- - constructor() { - this.currentDisplay = ''; - this.urlPieces = document.URL.split('/'); - this.chooseDisplay(this.urlPieces[5], this.urlPieces[6]); - } - //-------------------------- - // methods - //-------------------------- - start() {} + //-------------------------- + // constructor + //-------------------------- + constructor() { + this.currentDisplay = ""; + this.urlPieces = document.URL.split("/"); + this.chooseDisplay(this.urlPieces[4], this.urlPieces[5]); + } + //-------------------------- + // methods + //-------------------------- + start() {} - chooseDisplay(section, page) { - this.currentDisplay = ''; - switch (section) { - case 'page': - this.currentDisplay = new PostIndex(page); - break; - case 'settings': - this.currentDisplay = new SettingsIndex(); - break; - case 'navigation': - this.currentDisplay = new NaviIndex(); - break; + chooseDisplay(section, page) { + this.currentDisplay = ""; + switch (section) { + case "page": + this.currentDisplay = new PostIndex(page); + break; + case "settings": + this.currentDisplay = new SettingsIndex(); + break; + case "navigation": + this.currentDisplay = new NaviIndex(); + break; - default: - //just chill - break; - } - this.start(); - } - //-------------------------- - // event handlers - //-------------------------- + default: + //just chill + break; + } + this.start(); + } + //-------------------------- + // event handlers + //-------------------------- } diff --git a/src/com/controllers/PageEditor.js b/src/com/controllers/PageEditor.js index 89baabd..6212188 100644 --- a/src/com/controllers/PageEditor.js +++ b/src/com/controllers/PageEditor.js @@ -1,70 +1,74 @@ //TOOLS import FipamoAdminAPI, { - TASK_PAGE_CREATE, - TASK_PAGE_EDIT, - TASK_PAGE_DELETE -} from '../../libraries/FipamoAdminAPI'; -import * as DataEvent from '../events/DataEvent'; -import PageActions from '../actions/PageActions'; -import * as EditorEvent from '../events/EditorEvent'; + TASK_PAGE_CREATE, + TASK_PAGE_EDIT, + TASK_PAGE_DELETE, +} from "../../libraries/FipamoAdminAPI"; +import * as DataEvent from "../events/DataEvent"; +import PageActions from "../actions/PageActions"; +import * as EditorEvent from "../events/EditorEvent"; //import TinyDatePicker from 'tiny-date-picker'; -import TextEditor from '../ui/TextEditor'; -import Notfications from '../ui/Notifications'; +import TextEditor from "../ui/TextEditor"; +import Notfications from "../ui/Notifications"; const admin = new FipamoAdminAPI(); const notify = new Notfications(); export default class PostEditor { - //-------------------------- - // constructor - //-------------------------- - constructor() { - let self = this; - this.urlPieces = document.URL.split('/'); - this.post = []; - this.postID = null; - this.postUUID = null; - this.postLayout = null; - if (document.getElementById('post-edit-index').getAttribute('data-index')) { - this.postID = document.getElementById('post-edit-index').getAttribute('data-index'); - this.postUUID = document.getElementById('post-edit-index').getAttribute('data-uuid'); - this.postLayout = document - .getElementById('post-edit-index') - .getAttribute('data-layout'); - } - if (document.getElementById('edit-post-text')) { - this.editor = new TextEditor( - document.getElementById('edit-post-text'), - document.getElementById('header').offsetHeight + - document.getElementById('post-header').offsetHeight + - document.getElementById('post-feature').offsetHeight - ); - this.editor.addListener( - EditorEvent.EDITOR_DELETE, - () => this.handleEditorOptions(EditorEvent.EDITOR_DELETE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_UPLOAD_POST_IMAGE, - () => this.handleEditorOptions(EditorEvent.EDITOR_UPLOAD_POST_IMAGE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_UPDATE, - () => this.handleEditorOptions(EditorEvent.EDITOR_UPDATE), - false - ); - this.editor.addListener( - EditorEvent.EDITOR_SAVE, - () => this.handleEditorOptions(EditorEvent.EDITOR_SAVE), - false - ); - document.getElementById('post-image-upload').addEventListener( - 'change', - e => { - self.handleImageUpload(e.target.id, e.target.files); - }, - false - ); - /* + //-------------------------- + // constructor + //-------------------------- + constructor() { + let self = this; + this.urlPieces = document.URL.split("/"); + this.post = []; + this.postID = null; + this.postUUID = null; + this.postLayout = null; + if (document.getElementById("post-edit-index").getAttribute("data-index")) { + this.postID = document + .getElementById("post-edit-index") + .getAttribute("data-index"); + this.postUUID = document + .getElementById("post-edit-index") + .getAttribute("data-uuid"); + this.postLayout = document + .getElementById("post-edit-index") + .getAttribute("data-layout"); + } + if (document.getElementById("edit-post-text")) { + this.editor = new TextEditor( + document.getElementById("edit-post-text"), + document.getElementById("header").offsetHeight + + document.getElementById("post-header").offsetHeight + + document.getElementById("post-feature").offsetHeight + ); + this.editor.addListener( + EditorEvent.EDITOR_DELETE, + () => this.handleEditorOptions(EditorEvent.EDITOR_DELETE), + false + ); + this.editor.addListener( + EditorEvent.EDITOR_UPLOAD_POST_IMAGE, + () => this.handleEditorOptions(EditorEvent.EDITOR_UPLOAD_POST_IMAGE), + false + ); + this.editor.addListener( + EditorEvent.EDITOR_UPDATE, + () => this.handleEditorOptions(EditorEvent.EDITOR_UPDATE), + false + ); + this.editor.addListener( + EditorEvent.EDITOR_SAVE, + () => this.handleEditorOptions(EditorEvent.EDITOR_SAVE), + false + ); + document.getElementById("post-image-upload").addEventListener( + "change", + (e) => { + self.handleImageUpload(e.target.id, e.target.files); + }, + false + ); + /* TinyDatePicker(document.getElementById('post-date'), { mode: 'dp-below', format() { @@ -73,170 +77,180 @@ export default class PostEditor { }); */ - this.start(); - } - } - //-------------------------- - // methods - //-------------------------- - start() { - if (document.getElementById('featured-image-drop')) { - document - .getElementById('featured-image-drop') - .addEventListener('dragover', this.handleImageActions, false); - document - .getElementById('featured-image-drop') - .addEventListener('drop', this.handleImageActions, false); - document - .getElementById('featured-image-upload') - .addEventListener('change', e => this.handleImageActions(e), false); - if (document.getElementById('new-feature-upload')) { - document.getElementById('new-feature-upload').addEventListener('click', () => { - document.getElementById('featured-image-upload').click(); - }); - } - var optionButtons = document.querySelectorAll('.post-option-btn'); - for (var i = 0, length = optionButtons.length; i < length; i++) { - optionButtons[i].addEventListener('click', e => this.handlePostOptions(e), false); - } - } - } - //-------------------------- - // event handlers - //-------------------------- - handlePostOptions(e) { - let currentOption; - switch (e.target.id) { - case 'option-page-icon': - case 'option-menu-pin': - currentOption = document.getElementById('option-menu-pin'); - break; - case 'option-feature-icon': - case 'option-feature': - currentOption = document.getElementById('option-feature'); - break; - case 'option-published-icon': - case 'option-published': - currentOption = document.getElementById('option-published'); - break; - } - let active = currentOption.getAttribute('data-active'); - active == 'false' - ? currentOption.setAttribute('data-active', 'true') - : currentOption.setAttribute('data-active', 'false'); - } - handleEditorOptions(e) { - switch (e) { - case EditorEvent.EDITOR_SAVE: - case EditorEvent.EDITOR_UPDATE: - var task = ''; - e === EditorEvent.EDITOR_SAVE ? (task = TASK_PAGE_CREATE) : (task = TASK_PAGE_EDIT); - new PageActions() - .collectInfo(document.getElementById('featured-image-upload').files[0]) - .then(page => { - notify.alert('Writing down changes', null); - admin - .pageActions(task, page) - .then(r => { - if ( - r.type === DataEvent.PAGE_ERROR || - r.type === DataEvent.API_REQUEST_LAME - ) { - notify.alert(r.message, false); - } else { - if (r.type === DataEvent.PAGE_UPDATED) { - notify.alert(r.message, true); - } else { - notify.alert(r.message, true); - window.location = '/@/dashboard/page/edit/' + r.id; - } - } - }) - .catch(err => { - notify.alert(err, false); - }); - }); - break; - case EditorEvent.EDITOR_DELETE: - if (this.postLayout === 'index') { - notify.alert('Index cannot be deleted', false); - return; - } - if (confirm("AYE! You know you're deleting this post, right?")) { - let id = { id: this.postUUID }; - admin - .pageActions(TASK_PAGE_DELETE, id) - .then(() => { - window.location = '/@/dashboard/page/list/'; - }) - .catch(err => { - notify.alert(err, false); - }); - } else { - // Do nothing! - } - break; - case EditorEvent.EDITOR_UPLOAD_POST_IMAGE: - document.getElementById('post-image-upload').click(); - break; - } - } - handleImageActions(e) { - e.stopPropagation(); - e.preventDefault(); - switch (e.type) { - case 'dragover': - e.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy. - break; - case 'change': - case 'drop': - e.type == 'drop' - ? (PostEditor.uploadFiles = e.dataTransfer.files) - : (PostEditor.uploadFiles = e.target.files); - for (var i = 0, f; (f = PostEditor.uploadFiles[i]); i++) { - // Only process image files. - if (!f.type.match('image.*')) { - continue; - } - var reader = new FileReader(); - // Closure to capture the file information. - reader.onload = (function (theFile) { - return function (f) { - // Render thumbnail. - var image = document.createElement('img'); - image.src = f.target.result; - image.title = escape(theFile.name); - var span = document.createElement('div'); - span.innerHTML = [ - '' - ].join(''); - document.getElementById('featured-image-drop').innerHTML = ''; - document.getElementById('featured-image-drop').appendChild(image); - }; - })(f); - // Read in the image file as a data URL. - reader.readAsDataURL(f); - } - } - } - handleImageUpload(type, files) { - let self = this; - notify.alert('Uploading Image', null); - admin - .imageUpload(type, files) - .then(r => { - if (r.type == DataEvent.POST_IMAGE_ADDED) - self.editor.notify(EditorEvent.EDITOR_UPLOAD_POST_IMAGE, r.url); - notify.alert('Image Added to Entry', true); - }) - .catch(() => { - notify.alert('Uh oh. Image not added', false); - //console.log('ERROR', err); - }); - } + this.start(); + } + } + //-------------------------- + // methods + //-------------------------- + start() { + if (document.getElementById("featured-image-drop")) { + document + .getElementById("featured-image-drop") + .addEventListener("dragover", this.handleImageActions, false); + document + .getElementById("featured-image-drop") + .addEventListener("drop", this.handleImageActions, false); + document + .getElementById("featured-image-upload") + .addEventListener("change", (e) => this.handleImageActions(e), false); + if (document.getElementById("new-feature-upload")) { + document + .getElementById("new-feature-upload") + .addEventListener("click", () => { + document.getElementById("featured-image-upload").click(); + }); + } + var optionButtons = document.querySelectorAll(".post-option-btn"); + for (var i = 0, length = optionButtons.length; i < length; i++) { + optionButtons[i].addEventListener( + "click", + (e) => this.handlePostOptions(e), + false + ); + } + } + } + //-------------------------- + // event handlers + //-------------------------- + handlePostOptions(e) { + let currentOption; + switch (e.target.id) { + case "option-page-icon": + case "option-menu-pin": + currentOption = document.getElementById("option-menu-pin"); + break; + case "option-feature-icon": + case "option-feature": + currentOption = document.getElementById("option-feature"); + break; + case "option-published-icon": + case "option-published": + currentOption = document.getElementById("option-published"); + break; + } + let active = currentOption.getAttribute("data-active"); + active == "false" + ? currentOption.setAttribute("data-active", "true") + : currentOption.setAttribute("data-active", "false"); + } + handleEditorOptions(e) { + switch (e) { + case EditorEvent.EDITOR_SAVE: + case EditorEvent.EDITOR_UPDATE: + var task = ""; + e === EditorEvent.EDITOR_SAVE + ? (task = TASK_PAGE_CREATE) + : (task = TASK_PAGE_EDIT); + new PageActions() + .collectInfo( + document.getElementById("featured-image-upload").files[0] + ) + .then((page) => { + notify.alert("Writing down changes", null); + admin + .pageActions(task, page) + .then((r) => { + if ( + r.type === DataEvent.PAGE_ERROR || + r.type === DataEvent.API_REQUEST_LAME + ) { + notify.alert(r.message, false); + } else { + if (r.type === DataEvent.PAGE_UPDATED) { + notify.alert(r.message, true); + } else { + notify.alert(r.message, true); + window.location = "/@/dashboard/page/edit/" + r.id; + } + } + }) + .catch((err) => { + notify.alert(err, false); + }); + }); + break; + case EditorEvent.EDITOR_DELETE: + if (this.postLayout === "index") { + notify.alert("Index cannot be deleted", false); + return; + } + if (confirm("AYE! You know you're deleting this post, right?")) { + let id = { id: this.postUUID }; + admin + .pageActions(TASK_PAGE_DELETE, id) + .then(() => { + window.location = "/dashboard/pages"; + }) + .catch((err) => { + notify.alert(err, false); + }); + } else { + // Do nothing! + } + break; + case EditorEvent.EDITOR_UPLOAD_POST_IMAGE: + document.getElementById("post-image-upload").click(); + break; + } + } + handleImageActions(e) { + e.stopPropagation(); + e.preventDefault(); + switch (e.type) { + case "dragover": + e.dataTransfer.dropEffect = "copy"; // Explicitly show this is a copy. + break; + case "change": + case "drop": + e.type == "drop" + ? (PostEditor.uploadFiles = e.dataTransfer.files) + : (PostEditor.uploadFiles = e.target.files); + for (var i = 0, f; (f = PostEditor.uploadFiles[i]); i++) { + // Only process image files. + if (!f.type.match("image.*")) { + continue; + } + var reader = new FileReader(); + // Closure to capture the file information. + reader.onload = (function (theFile) { + return function (f) { + // Render thumbnail. + var image = document.createElement("img"); + image.src = f.target.result; + image.title = escape(theFile.name); + var span = document.createElement("div"); + span.innerHTML = [ + '', + ].join(""); + document.getElementById("featured-image-drop").innerHTML = ""; + document.getElementById("featured-image-drop").appendChild(image); + }; + })(f); + // Read in the image file as a data URL. + reader.readAsDataURL(f); + } + } + } + handleImageUpload(type, files) { + let self = this; + notify.alert("Uploading Image", null); + admin + .imageUpload(type, files) + .then((r) => { + if (r.type == DataEvent.POST_IMAGE_ADDED) + self.editor.notify(EditorEvent.EDITOR_UPLOAD_POST_IMAGE, r.url); + notify.alert("Image Added to Entry", true); + }) + .catch(() => { + notify.alert("Uh oh. Image not added", false); + //console.log('ERROR', err); + }); + } } PostEditor.uploadFiles = []; diff --git a/src/com/controllers/PostIndex.js b/src/com/controllers/PostIndex.js index 41d2798..9ff06f8 100644 --- a/src/com/controllers/PostIndex.js +++ b/src/com/controllers/PostIndex.js @@ -1,30 +1,30 @@ -import PageEditor from './PageEditor'; +import PageEditor from "./PageEditor"; export default class PostIndex { - //-------------------------- - // constructor - //-------------------------- - constructor(page) { - this.currentPage = null; - this.choosePage(page); - this.start(); - } - //-------------------------- - // methods - //-------------------------- - start() {} - choosePage(page) { - this.currentPage = ''; - switch (page) { - case 'edit': - case 'add': - this.currentPage = new PageEditor(); - break; - default: - //just chill - break; - } - } - //-------------------------- - // event handlers - //-------------------------- + //-------------------------- + // constructor + //-------------------------- + constructor(page) { + this.currentPage = null; + this.choosePage(page); + this.start(); + } + //-------------------------- + // methods + //-------------------------- + start() {} + choosePage(page) { + this.currentPage = ""; + switch (page) { + case "edit": + case "add": + this.currentPage = new PageEditor(); + break; + default: + //just chill + break; + } + } + //-------------------------- + // event handlers + //-------------------------- } diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 9304123..56fd737 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -9,10 +9,10 @@ export const CONTENT_TYPE_JSON = "json"; export const CONTENT_TYPE_FORM = "x-www-form-urlencoded"; export const API_STATUS = "/api/v1/status"; export const API_GET_NAV = "/api/settings/nav"; -export const API_NEW_PAGE = "/api/v1/page/write/new"; +export const API_NEW_PAGE = "/api/v1/page/create"; export const API_EDIT_PAGE = "/api/v1/page/write"; export const API_DELETE_PAGE = "/api/v1/page/delete"; -export const API_IMAGE_UPLOAD = "/api/v1/page/add-post-image"; +export const API_IMAGE_UPLOAD = "/api/v1/page/add-entry-image"; export const API_SETTINGS_SYNC = "/api/v1/settings/sync"; export const API_UPLOAD_AVATAR = "/api/v1/settings/add-avatar"; export const API_UPLOAD_BACKGROUND = "/api/v1/settings/add-feature-background"; @@ -280,6 +280,7 @@ export default class APIUtils { request.open(requestType, requestURL, true); request.onload = () => { if (request.status == 200) { + //console.log("RESPONSE", request); let response = JSON.parse(request["response"]); resolve(response); } else { @@ -298,7 +299,7 @@ export default class APIUtils { eventType === DataEvent.API_BACKUP_RESTORE || eventType === DataEvent.API_REINDEX_PAGES ) - request.setRequestHeader("x-access-token", self.token); + request.setRequestHeader("fipamo-access-token", self.token); switch (contentType) { case CONTENT_TYPE_JSON: -- 2.25.1 From ed2105edccffb54b15ea432ed53ed1e7ef4eeb0b Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 13 Apr 2021 20:49:12 -0700 Subject: [PATCH 068/250] cleaned up page creation --- brain/controller/APIControl.inc.php | 12 ++++++-- brain/data/Book.inc.php | 43 ++++++++++++++++++++------- brain/utility/StringTools.inc.php | 19 ++++++++++++ brain/views/dash/book.twig | 3 ++ brain/views/dash/page-edit.twig | 4 +-- brain/views/dash/partials/editor.twig | 2 +- src/com/controllers/PageEditor.js | 2 +- src/libraries/FipamoAdminAPI.js | 2 +- 8 files changed, 67 insertions(+), 20 deletions(-) diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index ceae441..282b8fa 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -36,6 +36,7 @@ class APIControl } //there's only one verion of the api for now + //$result = []; switch (isset($args["third"]) ? $args["third"] : "none") { case "login": $result = Auth::login($body); @@ -50,17 +51,22 @@ class APIControl if (Session::verifyToken($token[0])) { switch ($task) { case "delete": - case "add": - case "edit": + case "create": + case "write": $result = (new Book("../content/pages"))->editPage( $task, $request ); break; - case "add-entry-image": $result = ImagesAPI::uploadImage($request); break; + default: + $result = [ + "message" => "Hm, no task. That's unfortunate", + "type" => "TASK_NONE", + ]; + break; } } else { $result = [ diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index f9d25aa..c68ed44 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -47,17 +47,26 @@ class Book $image = $request->getUploadedFiles(); $member = Session::get("member"); - if ($task != "add") { + if ($task != "create") { $path = date("Y", date($page["rawCreated"])) . "/" . date("m", date($page["rawCreated"])); } else { - $path = date("Y", date()) . "/" . date("m"); + $path = date("Y") . "/" . date("m"); } if (isset($image["feature_image"])) { - $feature = $image["feature_image"]->getClientFileName(); + if ($task != "create") { + $feature = $image["feature_image"]->getClientFileName(); + } else { + $feature = + "/assets/images/blog/" . + $path . + "/" . + $image["feature_image"]->getClientFileName(); + } + FileUploader::uploadFile( "../public/assets/images/blog/" . $path . "/", $image["feature_image"] @@ -93,22 +102,25 @@ class Book ? ($body["featured"] = "true") : ($body["featured"] = "false"); } else { - $deleted = !$page["deleted"] ? "false" : $page["deleted"]; + $deleted = isset($page["deleted"]) ? $page["deleted"] : "false"; } $created = - $task != "add" + $task != "create" ? new \Moment\Moment($page["rawCreated"]) : new \Moment\Moment(); $updated = new \Moment\Moment(); + //grab current index from settings and update + $id = $task != "create" ? $body["id"] : 6; + $uuid = $task != "create" ? $body["uuid"] : StringTools::createUUID(); $write = "---\n" . "id: " . - $body["id"] . + $id . "\n" . "uuid: " . - $body["uuid"] . + $uuid . "\n" . "title: " . $body["title"] . @@ -154,18 +166,27 @@ class Book // if layout is index, change path to file if ($body["layout"] == "index") { - $writePath = "../content/start/index.md"; + $writePath = "../content/pages/start/index.md"; } else { $writePath = "../content/pages/" . $path . "/" . $body["slug"] . ".md"; } - ($new = fopen($writePath, "w")) or die("Unable to open file!"); - fwrite($new, $write); - fclose($new); + if ($task == "create") { + if (!is_dir("../content/pages/" . $path)) { + //Directory does not exist, so lets create it. + mkdir("../content/pages/" . $path, 0755, true); + } + file_put_contents($writePath, $write); + } else { + ($new = fopen($writePath, "w")) or die("Unable to open file!"); + fwrite($new, $write); + fclose($new); + } $response = [ "message" => "File edited. Nice work", "type" => $task == "write" ? "postUpdated" : "postAdded", + "id" => $uuid, ]; return $response; diff --git a/brain/utility/StringTools.inc.php b/brain/utility/StringTools.inc.php index 2f1fb17..0888a7e 100644 --- a/brain/utility/StringTools.inc.php +++ b/brain/utility/StringTools.inc.php @@ -4,6 +4,25 @@ class StringTools { + public static function createUUID() + { + if (function_exists("com_create_guid") === true) { + return trim(com_create_guid(), "{}"); + } + + return sprintf( + "%04X%04X-%04X-%04X-%04X-%04X%04X%04X", + mt_rand(0, 65535), + mt_rand(0, 65535), + mt_rand(0, 65535), + mt_rand(16384, 20479), + mt_rand(32768, 49151), + mt_rand(0, 65535), + mt_rand(0, 65535), + mt_rand(0, 65535) + ); + } + public static function randomString(int $length) { $alphanum = diff --git a/brain/views/dash/book.twig b/brain/views/dash/book.twig index 09eb558..78458be 100644 --- a/brain/views/dash/book.twig +++ b/brain/views/dash/book.twig @@ -23,6 +23,9 @@
+ + {{ page.updated }} + diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig index 5e1278c..29d93d0 100644 --- a/brain/views/dash/page-edit.twig +++ b/brain/views/dash/page-edit.twig @@ -39,9 +39,7 @@
{% if page['feature'] == null %} {% else %}
- + image for site background
diff --git a/public/index.php b/public/index.php index a10ea13..967134f 100644 --- a/public/index.php +++ b/public/index.php @@ -11,6 +11,7 @@ include "../brain/controller/RouteControl.inc.php"; include "../brain/data/Auth.inc.php"; include "../brain/utility/StringTools.inc.php"; include "../brain/data/Session.inc.php"; +include "../brain/data/Member.inc.php"; include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/DocTools.inc.php"; -- 2.25.1 From 20cc4abad99f55b06a249ede2b19cdb12792edeb Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 16 Apr 2021 20:50:03 -0700 Subject: [PATCH 076/250] moved member auth to API class --- brain/api/v1/AuthAPI.inc.php | 63 +++++++++++++++++++++++++++++ brain/controller/APIControl.inc.php | 7 ++-- brain/data/Auth.inc.php | 34 +++------------- 3 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 brain/api/v1/AuthAPI.inc.php diff --git a/brain/api/v1/AuthAPI.inc.php b/brain/api/v1/AuthAPI.inc.php new file mode 100644 index 0000000..7977b4e --- /dev/null +++ b/brain/api/v1/AuthAPI.inc.php @@ -0,0 +1,63 @@ + "Authorized", + "type" => "apiUseAuthorized", + "token" => Session::get("token"), + ]; + } else { + $result = [ + "message" => "Not Authorized", + "type" => "apiUseNotAuthorized", + ]; + } + return $result; + } + + public static function login($body) + { + $result = []; + switch (Auth::login($body)) { + case "no_name": + $result = [ + "message" => "Need to see some id, champ", + "type" => "requestLame", + ]; + break; + case "bad_pass": + $result = [ + "message" => "Check your password, sport", + "type" => "requestLame", + ]; + break; + default: + $result = [ + "message" => "Welcome back", + "type" => "requestGood", + ]; + break; + } + + return $result; + } + + public static function logout($body) + { + Auth::logout($body); + $result = [ + "message" => "Till next time, g.", + "type" => "TASK_LOGOUT", + ]; + return $result; + } +} diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index 954e89d..43d554d 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -2,6 +2,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +include "../brain/api/v1/AuthAPI.inc.php"; include "../brain/api/v1/ImagesAPI.inc.php"; include "../brain/api/v1/PagesAPI.inc.php"; include "../brain/api/v1/SettingsAPI.inc.php"; @@ -15,7 +16,7 @@ class APIControl ): ResponseInterface { switch (isset($args["third"]) ? $args["third"] : "none") { case "status": - $result = Auth::status(); + $result = AuthAPI::status(); break; default: break; @@ -39,10 +40,10 @@ class APIControl switch (isset($args["third"]) ? $args["third"] : "none") { case "login": - $result = Auth::login($body); + $result = AuthAPI::login($body); break; case "logout": - $result = Auth::logout($body); + $result = AuthAPI::logout($body); break; case "page": $token = $request->getHeader("fipamo-access-token"); diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php index 8dda0f0..b93579d 100644 --- a/brain/data/Auth.inc.php +++ b/brain/data/Auth.inc.php @@ -21,20 +21,12 @@ class Auth public static function status() { - $result = []; + $result = ""; if (Session::active()) { - $result = [ - "message" => "Authorized", - "type" => "apiUseAuthorized", - "token" => Session::get("token"), - ]; + $result = true; } else { - $result = [ - "message" => "Not Authorized", - "type" => "apiUseNotAuthorized", - ]; + $result = false; } - return $result; } @@ -64,22 +56,13 @@ class Auth Session::set("member", $member); Session::set("token", $token); - $result = [ - "message" => "Welcome back", - "type" => "requestGood", - ]; + $result = "good_login"; } else { - $result = [ - "message" => "Check your password, sport", - "type" => "requestLame", - ]; + $result = "bad_pass"; } } else { //if name is not found - $result = [ - "message" => "Need to see some id, champ", - "type" => "requestLame", - ]; + $result = "no_name"; } return $result; } @@ -87,10 +70,5 @@ class Auth public static function logout() { Session::kill(); - $result = [ - "message" => "Till next time, g.", - "type" => "TASK_LOGOUT", - ]; - return $result; } } -- 2.25.1 From 594df048cf54511d68f2afbf42f324c3d988ec80 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 16 Apr 2021 22:14:14 -0700 Subject: [PATCH 077/250] updating menu items in settings when pages is saved --- brain/data/Book.inc.php | 3 +++ brain/data/Settings.inc.php | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index 243f8cd..efc2f44 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -183,6 +183,9 @@ class Book if ($task == "create") { Settings::updateIndex(); } + //once saved, update menu + $body["path"] = $path; + Settings::updateMenu($body); } else { $response = [ "message" => "Uh oh. File save problem. Don't panic", diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 950e312..ed26523 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -1,5 +1,7 @@ $body["title"], + "id" => $body["id"], + "uuid" => $body["uuid"], + "slug" => $body["slug"], + "path" => $body["path"], + ]; + if ($body["menu"] == "true") { + if (!find($settings["menu"], ["uuid" => $item["uuid"]])) { + array_push($settings["menu"], $item); + } + } else { + if (find($settings["menu"], ["uuid" => $item["uuid"]])) { + pull($settings["menu"], $item); + } + } + DocTools::writeSettings("../config/settings.json", $settings); + } } -- 2.25.1 From 39809a60ec959968905858e306cc4de516945340 Mon Sep 17 00:00:00 2001 From: Ro Date: Sat, 17 Apr 2021 17:32:45 -0700 Subject: [PATCH 078/250] added navigation editor template and methods, moved markdown converstion to DocTools class --- brain/api/v1/SettingsAPI.inc.php | 7 ++++ brain/controller/DashControl.inc.php | 15 +++++++ brain/data/Book.inc.php | 61 ++++++--------------------- brain/data/Settings.inc.php | 50 ++++++++++++++++++++++ brain/utility/DocTools.inc.php | 54 ++++++++++++++++++++++++ brain/views/dash/navigation.twig | 35 ++++++++++++++++ src/com/actions/NavActions.js | 62 ++++++++++++++-------------- src/com/controllers/NavIndex.js | 2 +- 8 files changed, 207 insertions(+), 79 deletions(-) create mode 100644 brain/views/dash/navigation.twig diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index dbc6aab..89d7e09 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -51,6 +51,13 @@ class SettingsAPI "type" => "settingsUpdated", ]; + break; + case "nav-sync": + Settings::navSync($body); + $result = [ + "message" => "Navigation updated. Very slick!", + "type" => "menuUpdated", + ]; break; default: $result = [ diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index f6b0647..e0829c6 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -43,6 +43,21 @@ class DashControl die(); } + break; + case "navigation": + if (Session::active()) { + $config = new Settings(); + $settings = $config->getSettings(); + $template = "dash/navigation.twig"; + $pageOptions = [ + "title" => "Edit Dash Navigation", + "status" => Session::active(), + "menu" => $settings["menu"], + ]; + } else { + header("Location: /dashboard"); + die(); + } break; case "pages": if (Session::active()) { diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index efc2f44..f840f4b 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -114,54 +114,18 @@ class Book //grab current index from settings and update $id = $task != "create" ? $body["id"] : Settings::getCurrentIndex(); $uuid = $task != "create" ? $body["uuid"] : StringTools::createUUID(); - $write = - "---\n" . - "id: " . - $id . - "\n" . - "uuid: " . - $uuid . - "\n" . - "title: " . - $body["title"] . - "\n" . - "feature: " . - $feature . - "\n" . - "path: " . - $path . - "\n" . - "layout: " . - $body["layout"] . - "\n" . - "tags: " . - $body["tags"] . - "\n" . - "author: " . - $member["handle"] . - "\n" . - "created: " . - $created->format("Y-m-d\TH:i:sP") . - "\n" . - "updated: " . - $updated->format("Y-m-d\TH:i:sP") . - "\n" . - "deleted: " . - $deleted . - "\n" . - "slug: " . - $body["slug"] . - "\n" . - "menu: " . - $body["menu"] . - "\n" . - "published: " . - $body["published"] . - "\n" . - "featured: " . - $body["featured"] . - "\n---\n" . - $body["content"]; + // now that variables are done, set to body object and then convert to markdown to save + + $body["id"] = $id; + $body["uuid"] = $uuid; + $body["feature"] = $feature; + $body["path"] = $path; + $body["author"] = $member["handle"]; + $body["created"] = $created->format("Y-m-d\TH:i:sP"); + $body["updated"] = $updated->format("Y-m-d\TH:i:sP"); + $body["deleted"] = $deleted; + + $write = DocTools::objectToMD($body); // if layout is index, change path to file @@ -270,6 +234,7 @@ class Book } public function getContents() { + //move page collection to utiltiy class $parser = new Parser(); $contents = []; foreach ($this->files as $file) { diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index ed26523..137a6cb 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -49,6 +49,56 @@ class Settings DocTools::writeSettings("../config/settings.json", $settings); } + public static function navSync($data) + { + $settings = self::$settings; + + $remove = $data["remove"]; + //if remove contains id, find nav item page and set menu to false + if ($remove != null || $remove != "") { + $page = (new Book("../content/pages"))->findPageById($remove); + $page["menu"] = "false"; + $page["published"] + ? ($page["published"] = "true") + : ($page["published"] = "false"); + $page["featured"] + ? ($page["featured"] = "true") + : ($page["featured"] = "false"); + $page["deleted"] + ? ($page["deleted"] = "true") + : ($page["deleted"] = "false"); + $updated = new \Moment\Moment(); + $created = new \Moment\Moment($page["rawCreated"]); + $page["created"] = $created->format("Y-m-d\TH:i:sP"); + $page["updated"] = $updated->format("Y-m-d\TH:i:sP"); + + $md = DocTools::objectToMD($page); + + if ($page["layout"] == "index") { + $writePath = "../content/pages/start/index.md"; + } else { + $writePath = + "../content/pages/" . $page["path"] . "/" . $page["slug"] . ".md"; + } + + DocTools::writePages("write", $page["path"], $writePath, $md); + } + + $settings["menu"] = []; + $items = $data["menu"]; + foreach ($items as $item) { + array_push($settings["menu"], [ + "title" => $item["title"], + "id" => $item["id"], + "uuid" => $item["uuid"], + "slug" => $item["slug"], + "path" => $item["path"], + ]); + } + + DocTools::writeSettings("../config/settings.json", $settings); + } + public function getThemes() { return $this->themes; diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php index 08876be..cdf98ba 100644 --- a/brain/utility/DocTools.inc.php +++ b/brain/utility/DocTools.inc.php @@ -33,4 +33,58 @@ class DocTools fwrite($new, json_encode($fileContents)); fclose($new); } + + public static function objectToMD($object) + { + $markdown = + "---\n" . + "id: " . + $object["id"] . + "\n" . + "uuid: " . + $object["uuid"] . + "\n" . + "title: " . + $object["title"] . + "\n" . + "feature: " . + $object["feature"] . + "\n" . + "path: " . + $object["path"] . + "\n" . + "layout: " . + $object["layout"] . + "\n" . + "tags: " . + $object["tags"] . + "\n" . + "author: " . + $object["author"] . + "\n" . + "created: " . + $object["created"] . + "\n" . + "updated: " . + $object["updated"] . + "\n" . + "deleted: " . + $object["deleted"] . + "\n" . + "slug: " . + $object["slug"] . + "\n" . + "menu: " . + $object["menu"] . + "\n" . + "published: " . + $object["published"] . + "\n" . + "featured: " . + $object["featured"] . + "\n---\n" . + $object["content"]; + + return $markdown; + } } diff --git a/brain/views/dash/navigation.twig b/brain/views/dash/navigation.twig new file mode 100644 index 0000000..e26a33d --- /dev/null +++ b/brain/views/dash/navigation.twig @@ -0,0 +1,35 @@ +{% extends "dash/_frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + +{% block stylesheets %} + + {% endblock %} + + {% block mainContent %} + + {% endblock %} + + {% block javascripts %} + + {% endblock %} \ No newline at end of file diff --git a/src/com/actions/NavActions.js b/src/com/actions/NavActions.js index fe64e52..385dc06 100644 --- a/src/com/actions/NavActions.js +++ b/src/com/actions/NavActions.js @@ -1,35 +1,37 @@ export default class NavActions { - //-------------------------- - // constructor - //-------------------------- - constructor() {} - //-------------------------- - // methods - //-------------------------- - syncMenu() { - let navData = []; - let items = document.getElementById('nav-pages').children; - for (let index = 0; index < items.length; index++) { - navData.push({ - title: items[index].getElementsByTagName('label')[0].innerHTML, - id: items[index].id, - slug: items[index].getAttribute('data-slug'), - uuid: items[index].getAttribute('data-uuid'), - path: items[index].getAttribute('data-path') - }); - } + //-------------------------- + // constructor + //-------------------------- + constructor() {} + //-------------------------- + // methods + //-------------------------- + syncMenu() { + let navData = []; + let items = document.getElementById("nav-pages").children; + for (let index = 0; index < items.length; index++) { + navData.push({ + title: items[index].getElementsByTagName("label")[0].innerHTML, + id: items[index].id, + slug: items[index].getAttribute("data-slug"), + uuid: items[index].getAttribute("data-uuid"), + path: items[index].getAttribute("data-path"), + }); + } - let data = { nav: navData, remove: null }; - return new Promise(function (resolve) { - resolve(data); - }); - } + let data = { menu: navData, remove: null }; + return new Promise(function (resolve) { + resolve(data); + }); + } - removeItem(id) { - document.getElementById('nav-pages').removeChild(document.getElementById(id)); - } + removeItem(id) { + document + .getElementById("nav-pages") + .removeChild(document.getElementById(id)); + } - //-------------------------- - // event handlers - //-------------------------- + //-------------------------- + // event handlers + //-------------------------- } diff --git a/src/com/controllers/NavIndex.js b/src/com/controllers/NavIndex.js index a2e932b..99e1644 100644 --- a/src/com/controllers/NavIndex.js +++ b/src/com/controllers/NavIndex.js @@ -61,7 +61,7 @@ export default class NavIndex { break; case "edit-item": window.location = - "/@/dashboard/page/edit/" + e.target.getAttribute("data-id"); + "/dashboard/page/edit/" + e.target.getAttribute("data-id"); break; } } -- 2.25.1 From c78772e2c0f4e5b3968ca8dd2d8334191e2ef531 Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 18 Apr 2021 17:50:30 -0700 Subject: [PATCH 079/250] added Sorting class to handle organizing tags and archives organizing for page rendering. added empty Render class for rendering --- brain/api/v1/SettingsAPI.inc.php | 37 +++++---- brain/data/Auth.inc.php | 122 +++++++++++++++--------------- brain/data/Book.inc.php | 2 + brain/data/Render.inc.php | 8 ++ brain/utility/Sorting.inc.php | 83 ++++++++++++++++++++ brain/utility/StringTools.inc.php | 22 ++++++ brain/views/dash/page-edit.twig | 2 +- public/index.php | 6 +- 8 files changed, 203 insertions(+), 79 deletions(-) create mode 100644 brain/data/Render.inc.php create mode 100644 brain/utility/Sorting.inc.php diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index 89d7e09..e78bb61 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -15,25 +15,32 @@ class SettingsAPI case "publish": $view = Twig::fromRequest($request); - $template = "dash/start.twig"; - $pageOptions = [ - "title" => "Welcome to Fucking Fipamo", - "status" => false, - ]; + //$sortTags = Sorting::tags(); + //var_dump($sortTags); + $sortArchive = Sorting::archive(); + var_dump($sortArchive); - $html = $view->fetch($template, $pageOptions); + /* + $template = "dash/start.twig"; + $pageOptions = [ + "title" => "Welcome to Fucking Fipamo", + "status" => false, + ]; - $location = "../content/test.html"; - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, "w")) or die("Unable to open file!"); - fwrite($new, $html); - fclose($new); - } + $html = $view->fetch($template, $pageOptions); + + $location = "../content/test.html"; + if (!is_file($location)) { + file_put_contents($location, $html); + } else { + ($new = fopen($location, "w")) or die("Unable to open file!"); + fwrite($new, $html); + fclose($new); + } + */ $result = [ - "message" => "Site published. GOOD EFFORT", + "message" => "Items sorted. GOOD EFFORT", "type" => "TASK_NONE", ]; diff --git a/brain/data/Auth.inc.php b/brain/data/Auth.inc.php index b93579d..927c5de 100644 --- a/brain/data/Auth.inc.php +++ b/brain/data/Auth.inc.php @@ -1,74 +1,74 @@ secret; - } - public static function status() - { - $result = ""; - if (Session::active()) { - $result = true; - } else { - $result = false; + public static function sessionStatus() + { + if (isset($_SESSION["member"])) { + return true; + } else { + return false; + } + //return $this->secret; } - return $result; - } - public static function login($who) - { - //grab member list - $folks = (new Settings())->getFolks(); - $found = find($folks, ["handle" => $who["handle"]]); - - if ($found) { - //name is found, verify password - if (password_verify($who["password"], $found["password"])) { - $member = [ - "handle" => $found["handle"], - "email" => $found["email"], - "role" => $found["role"], - "avatar" => $found["avi"], - ]; - - $token = Token::create( - $found["id"], - $found["secret"], - time() + 3600, - "localhost" - ); //expires in an hour - Session::start(); - Session::set("member", $member); - Session::set("token", $token); - - $result = "good_login"; - } else { - $result = "bad_pass"; - } - } else { - //if name is not found - $result = "no_name"; + public static function status() + { + $result = ""; + if (Session::active()) { + $result = true; + } else { + $result = false; + } + return $result; } - return $result; - } - public static function logout() - { - Session::kill(); - } + public static function login($who) + { + //grab member list + $folks = (new Settings())->getFolks(); + $found = find($folks, ["handle" => $who["handle"]]); + + if ($found) { + //name is found, verify password + if (password_verify($who["password"], $found["password"])) { + $member = [ + "handle" => $found["handle"], + "email" => $found["email"], + "role" => $found["role"], + "avatar" => $found["avi"], + ]; + + $token = Token::create( + $found["id"], + $found["secret"], + time() + 3600, + "localhost" + ); //expires in an hour + Session::start(); + Session::set("member", $member); + Session::set("token", $token); + + $result = "good_login"; + } else { + $result = "bad_pass"; + } + } else { + //if name is not found + $result = "no_name"; + } + return $result; + } + + public static function logout() + { + Session::kill(); + } } diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index f840f4b..ae94b0a 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -253,6 +253,8 @@ class Book "updated" => date("Y M D d", $meta["updated"]), "rawCreated" => $meta["created"], "rawUpdated" => $meta["updated"], + "createdYear" => date("Y", $meta["created"]), + "createdMonth" => date("m", $meta["created"]), "deleted" => $meta["deleted"], "menu" => $meta["menu"], "featured" => $meta["featured"], diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php new file mode 100644 index 0000000..6d4568d --- /dev/null +++ b/brain/data/Render.inc.php @@ -0,0 +1,8 @@ +getContents(); + + foreach ($pages as $page) { + $temp = []; + $temp = explode(",", $page["tags"]); + foreach ($temp as $tag) { + $label = trim($tag); + if (!find(self::$_tags, ["tag_name" => $label])) { + array_push(self::$_tags, [ + "tag_name" => $label, + "slug" => StringTools::safeString($label), + "count" => 1, + ]); + } else { + $item = find(self::$_tags, ["tag_name" => $label]); + //echo "TAG: " . $item["tag_name"] . "\n"; + $count = $item["count"]; + self::$_tags[$label]["count"] = $count + 1; + } + } + } + + return self::$_tags; + } + + public static function archive() + { + $pages = (new Book("../content/pages"))->getContents(); + $years = []; + $archive = []; + foreach ($pages as $page) { + $year = date("Y", date($page["rawCreated"])); + //echo $page["title"] . " : " . $year . "\n"; + if (!find($years, ["year" => $year])) { + $findPages = filter($pages, ["createdYear" => $year]); + //var_dump($findPages); + array_push($years, ["year" => $year, "count" => count($findPages)]); + } + } + foreach ($years as $year) { + $sorted = []; + $filtered = filter($pages, ["createdYear" => $year["year"]]); + + foreach ($filtered as $obj) { + $month = date("m", date($obj["rawCreated"])); + if (!find($sorted, ["month" => $month])) { + $perMonth = filter($pages, [ + "createdYear" => $year["year"], + "createdMonth" => $month, + "deleted" => false, + "published" => true, + "layout" => "page", + ]); + array_push($sorted, [ + "month" => $month, + "full_month" => date("F", date($obj["rawCreated"])), + "count" => count($perMonth), + "pages" => $perMonth, + ]); + } + } + array_push(self::$_archive, [ + "year" => $year["year"], + "year_data" => $sorted, + ]); + } + return self::$_archive; + } +} diff --git a/brain/utility/StringTools.inc.php b/brain/utility/StringTools.inc.php index 0888a7e..58487fb 100644 --- a/brain/utility/StringTools.inc.php +++ b/brain/utility/StringTools.inc.php @@ -23,6 +23,28 @@ class StringTools ); } + public static function safeString($string) + { + return strtolower( + trim( + preg_replace( + "~[^0-9a-z]+~i", + "_", + html_entity_decode( + preg_replace( + "~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i", + '$1', + htmlentities($string, ENT_QUOTES, "UTF-8") + ), + ENT_QUOTES, + "UTF-8" + ) + ), + "-" + ) + ); + } + public static function randomString(int $length) { $alphanum = diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig index 29d93d0..4e33c22 100644 --- a/brain/views/dash/page-edit.twig +++ b/brain/views/dash/page-edit.twig @@ -17,7 +17,7 @@ {% set id = '' %} {% set uuid = '' %} {% set slug = '' %} - {% set layout = 'pages' %} + {% set layout = 'page' %} {% set feature = '' %} {% set title = '' %} {% set tags = '' %} diff --git a/public/index.php b/public/index.php index 967134f..5a0ef4e 100644 --- a/public/index.php +++ b/public/index.php @@ -8,12 +8,14 @@ use Slim\Views\Twig; use Slim\Views\TwigMiddleware; include "../brain/controller/RouteControl.inc.php"; -include "../brain/data/Auth.inc.php"; -include "../brain/utility/StringTools.inc.php"; +include "../brain/data/Settings.inc.php"; include "../brain/data/Session.inc.php"; include "../brain/data/Member.inc.php"; +include "../brain/data/Auth.inc.php"; +include "../brain/utility/StringTools.inc.php"; include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/DocTools.inc.php"; +include "../brain/utility/Sorting.inc.php"; $app = AppFactory::create(); $twig = Twig::create("../brain/views/"); -- 2.25.1 From 9283a7f5b371889fa2b2e78bba1e8e71e8da6a3f Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 21 Apr 2021 18:41:32 -0700 Subject: [PATCH 080/250] tag html rendering implemented --- .gitignore | 1 + brain/api/v1/SettingsAPI.inc.php | 27 ++---------------- brain/controller/IndexControl.inc.php | 19 +++++++++---- brain/data/Book.inc.php | 1 + brain/data/Render.inc.php | 41 +++++++++++++++++++++++++++ brain/data/Settings.inc.php | 6 ++++ brain/utility/Sorting.inc.php | 39 ++++++++++++++++--------- brain/views/dash/start.twig | 2 +- public/index.php | 1 + 9 files changed, 92 insertions(+), 45 deletions(-) diff --git a/.gitignore b/.gitignore index 85257c2..f044de1 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ public/assets/images/* content/ vendor/ cache/ +_temp .ftpconfig .vscode/ *.swp diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index e78bb61..9155a80 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -13,31 +13,8 @@ class SettingsAPI $task = $args["fourth"]; switch ($task) { case "publish": - $view = Twig::fromRequest($request); - - //$sortTags = Sorting::tags(); - //var_dump($sortTags); - $sortArchive = Sorting::archive(); - var_dump($sortArchive); - - /* - $template = "dash/start.twig"; - $pageOptions = [ - "title" => "Welcome to Fucking Fipamo", - "status" => false, - ]; - - $html = $view->fetch($template, $pageOptions); - - $location = "../content/test.html"; - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, "w")) or die("Unable to open file!"); - fwrite($new, $html); - fclose($new); - } - */ + $render = new Render(); + $render->renderTags(); $result = [ "message" => "Items sorted. GOOD EFFORT", diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php index d9ad0f1..e26d526 100644 --- a/brain/controller/IndexControl.inc.php +++ b/brain/controller/IndexControl.inc.php @@ -12,11 +12,18 @@ class IndexControl ): ResponseInterface { //unset($_SESSION); $view = Twig::fromRequest($request); - return $view->render($response, "front/start.twig", [ - "title" => "Fipamo Dash", - "status" => false, - "pages" => [], - "totalPages" => 0, - ]); + + $html = file_get_contents("../public/index.html"); + $response->getBody()->write($html); + return $response; + + /* + return $view->render($response, "front/start.twig", [ + "title" => "Fipamo Dash", + "status" => false, + "pages" => [], + "totalPages" => 0, + ]); + */ } } diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index ae94b0a..db08ece 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -150,6 +150,7 @@ class Book //once saved, update menu $body["path"] = $path; Settings::updateMenu($body); + Settings::updateTags(); } else { $response = [ "message" => "Uh oh. File save problem. Don't panic", diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 6d4568d..7dac5cb 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -2,7 +2,48 @@ class Render { + public $loader; + public $twig; + public $pageInfo; + public $menu; + public $background; public function __construct() { + $config = new Settings(); + $this->loader = new \Twig\Loader\FilesystemLoader("../content/themes"); + $this->twig = new \Twig\Environment($this->loader, []); + $settings = $config->getSettings(); + $this->menu = $settings["menu"]; + $this->pageInfo = [ + "keywords" => $settings["global"]["keywords"], + "description" => $settings["global"]["descriptions"], + "image" => $settings["global"]["background"], + ]; + } + + public function renderTags() + { + $list = Sorting::tags(); + foreach ($list as $item) { + $template = "fipamo-default/tags.twig"; + $pageOptions = [ + "title" => "Pages Tagged as " . $item["tag_name"], + "background" => $this->pageInfo["image"], + "tag_list" => $item["pages"], + "info" => $this->pageInfo, + "menu" => $this->menu, + ]; + + $html = $this->twig->render($template, $pageOptions); + + $location = "../public/tags/" . $item["slug"] . ".html"; + if (!is_file($location)) { + file_put_contents($location, $html); + } else { + ($new = fopen($location, "w")) or die("Unable to open file!"); + fwrite($new, $html); + fclose($new); + } + } } } diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 137a6cb..883ab6a 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -164,4 +164,10 @@ class Settings } DocTools::writeSettings("../config/settings.json", $settings); } + + public static function updateTags() + { + $tags = Sorting::tags(); + DocTools::writeSettings("../config/tags.json", $tags); + } } diff --git a/brain/utility/Sorting.inc.php b/brain/utility/Sorting.inc.php index ca71670..0f47ce4 100644 --- a/brain/utility/Sorting.inc.php +++ b/brain/utility/Sorting.inc.php @@ -13,7 +13,6 @@ class Sorting public static function tags() { $pages = (new Book("../content/pages"))->getContents(); - foreach ($pages as $page) { $temp = []; $temp = explode(",", $page["tags"]); @@ -23,13 +22,8 @@ class Sorting array_push(self::$_tags, [ "tag_name" => $label, "slug" => StringTools::safeString($label), - "count" => 1, + "pages" => self::tagPages($label, $pages), ]); - } else { - $item = find(self::$_tags, ["tag_name" => $label]); - //echo "TAG: " . $item["tag_name"] . "\n"; - $count = $item["count"]; - self::$_tags[$label]["count"] = $count + 1; } } } @@ -37,18 +31,38 @@ class Sorting return self::$_tags; } + private static function tagPages($tag, $pages) + { + $tagged = []; + foreach ($pages as $page) { + if (strpos($page["tags"], $tag) !== false) { + array_push($tagged, [ + "title" => $page["title"], + "slug" => $page["slug"], + "path" => $page["path"], + ]); + } + } + + return $tagged; + } + public static function archive() { $pages = (new Book("../content/pages"))->getContents(); $years = []; $archive = []; foreach ($pages as $page) { - $year = date("Y", date($page["rawCreated"])); + //$year = date("Y", date($page["rawCreated"])); + $date = explode("/", $page["path"]); //echo $page["title"] . " : " . $year . "\n"; - if (!find($years, ["year" => $year])) { - $findPages = filter($pages, ["createdYear" => $year]); + if (!find($years, ["year" => trim($date[0])])) { + $findPages = filter($pages, ["createdYear" => trim($date[0])]); //var_dump($findPages); - array_push($years, ["year" => $year, "count" => count($findPages)]); + array_push($years, [ + "year" => trim($date[0]), + "count" => count($findPages), + ]); } } foreach ($years as $year) { @@ -59,8 +73,7 @@ class Sorting $month = date("m", date($obj["rawCreated"])); if (!find($sorted, ["month" => $month])) { $perMonth = filter($pages, [ - "createdYear" => $year["year"], - "createdMonth" => $month, + "path" => $year["year"] . "/" . $month, "deleted" => false, "published" => true, "layout" => "page", diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig index 86cd36a..833090e 100644 --- a/brain/views/dash/start.twig +++ b/brain/views/dash/start.twig @@ -5,7 +5,7 @@ {% endblock %} {% block stylesheets %} - + {% endblock %} {% block mainContent %} diff --git a/public/index.php b/public/index.php index 5a0ef4e..63323b6 100644 --- a/public/index.php +++ b/public/index.php @@ -12,6 +12,7 @@ include "../brain/data/Settings.inc.php"; include "../brain/data/Session.inc.php"; include "../brain/data/Member.inc.php"; include "../brain/data/Auth.inc.php"; +include "../brain/data/Render.inc.php"; include "../brain/utility/StringTools.inc.php"; include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/DocTools.inc.php"; -- 2.25.1 From 444189e527c08b79babb9cd7a2a0b9ac38b5cbfb Mon Sep 17 00:00:00 2001 From: Ro Date: Wed, 21 Apr 2021 22:46:56 -0700 Subject: [PATCH 081/250] created new App class to start up app and move off of index --- brain/App.inc.php | 40 ++++++++++++++++++++++++++++++++++++++++ brain/data/Book.inc.php | 2 +- public/index.php | 29 ++--------------------------- 3 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 brain/App.inc.php diff --git a/brain/App.inc.php b/brain/App.inc.php new file mode 100644 index 0000000..73b4058 --- /dev/null +++ b/brain/App.inc.php @@ -0,0 +1,40 @@ +add(TwigMiddleware::create($app, $twig)); + //set up routing + $app->get( + "/[{first}[/{second}[/{third}[/{fourth}]]]]", + "\RouteControl:get" + ); + $app->post( + "/[{first}[/{second}[/{third}[/{fourth}]]]]", + "\RouteControl:post" + ); + //start the app + + $app->run(); + } +} diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index db08ece..7d8bc3c 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -150,7 +150,7 @@ class Book //once saved, update menu $body["path"] = $path; Settings::updateMenu($body); - Settings::updateTags(); + //Settings::updateTags(); } else { $response = [ "message" => "Uh oh. File save problem. Don't panic", diff --git a/public/index.php b/public/index.php index 63323b6..f72c1bd 100644 --- a/public/index.php +++ b/public/index.php @@ -1,29 +1,4 @@ add(TwigMiddleware::create($app, $twig)); -//set up routing -$app->get("/[{first}[/{second}[/{third}[/{fourth}]]]]", "\RouteControl:get"); -$app->post("/[{first}[/{second}[/{third}[/{fourth}]]]]", "\RouteControl:post"); -//start the app - -$app->run(); +include "../brain/App.inc.php"; +new App(); -- 2.25.1 From b09e1c716463aa7a37781200f1fab65ed26b8328 Mon Sep 17 00:00:00 2001 From: Ro Date: Thu, 22 Apr 2021 16:04:43 -0700 Subject: [PATCH 082/250] pages rendering to html --- brain/api/v1/SettingsAPI.inc.php | 6 +- brain/data/Render.inc.php | 120 ++++++++++++++++++++ brain/utility/DocTools.inc.php | 17 +++ composer.json | 3 +- composer.lock | 188 ++++++++++++++++++++++++++++++- 5 files changed, 330 insertions(+), 4 deletions(-) diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index 9155a80..26a5b61 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -14,10 +14,12 @@ class SettingsAPI switch ($task) { case "publish": $render = new Render(); - $render->renderTags(); + //$render->renderTags(); + //$render->renderArchive(); + $render->renderPages(); $result = [ - "message" => "Items sorted. GOOD EFFORT", + "message" => "Site Rendered. GOOD EFFORT", "type" => "TASK_NONE", ]; diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 7dac5cb..591aeca 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -1,4 +1,5 @@ getContents(); + $recent = []; + $featured = []; + $limit = 4; + foreach ($pages as $page) { + if (!$page["deleted"] && $page["published"]) { + if (count($recent) < $limit) { + array_push($recent, [ + "path" => $page["path"], + "slug" => $page["slug"], + "title" => $page["title"], + ]); + } + + if ($page["featured"] == true) { + if (count($featured) < $limit) { + array_push($featured, [ + "path" => $page["path"], + "slug" => $page["slug"], + "title" => $page["title"], + ]); + } + } + + $taglist = explode(",", $page["tags"]); + $tags = []; + foreach ($taglist as $tag) { + $label = trim($tag); + array_push($tags, [ + "tag_name" => $label, + "slug" => StringTools::safeString($label), + ]); + } + $meta = [ + "who" => $page["author"], + "when" => $page["updated"], + "tags" => $tags, + ]; + + //render markdown content and clean it + $parser = new Parser(); + $rendered = $parser->parse($page["content"]); + $sanitizer = \HtmlSanitizer\Sanitizer::create([ + "extensions" => ["basic", "image", "list"], + ]); + $preclean = $sanitizer->sanitize($rendered->getContent()); + $cleaned = strip_tags($preclean, [ + "a", + "br", + "p", + "strong", + "br", + "img", + "iframe", + "ul", + "li", + "i", + "h1", + "h2", + "h3", + ]); + //$cleaned = preg_replace('/(?:\r\n|[\r\n]){2,}/', "\n\n", $cleaned); + //$cleaned = html_entity_decode($cleaned, ENT_QUOTES, "UTF-8"); + + if ($page["layout"] == "index") { + $template = "fipamo-default/index.twig"; + $location = "../public/index.html"; + $dir = null; + + $pageOptions = [ + "title" => $page["title"], + "background" => $page["feature"], + "content" => $cleaned, + "meta" => $meta, + "recent" => $recent, + "featured" => $featured, + "info" => $this->pageInfo, + "menu" => $this->menu, + ]; + } else { + $template = "fipamo-default/page.twig"; + $location = + "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; + $dir = "../public/" . $page["path"]; + $pageOptions = [ + "title" => $page["title"], + "background" => $page["feature"], + "content" => $cleaned, + "meta" => $meta, + "info" => $this->pageInfo, + "menu" => $this->menu, + ]; + } + + $html = $this->twig->render($template, $pageOptions); + DocTools::writeHTML($location, $html, $dir); + } + } + } + + public function renderArchive() + { + $archive = Sorting::archive(); + $template = "fipamo-default/archive.twig"; + $pageOptions = [ + "title" => "Archive", + "background" => $this->pageInfo["image"], + "archives" => $archive, + "info" => $this->pageInfo, + "menu" => $this->menu, + ]; + + $html = $this->twig->render($template, $pageOptions); + $location = "../public/archives.html"; + DocTools::writeHTML($location, $html); + } + public function renderTags() { $list = Sorting::tags(); diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php index cdf98ba..cc52766 100644 --- a/brain/utility/DocTools.inc.php +++ b/brain/utility/DocTools.inc.php @@ -34,6 +34,23 @@ class DocTools fclose($new); } + public static function writeHTML($location, $html, $path = null) + { + if ($path != null) { + if (!is_dir($path)) { + //Directory does not exist, so lets create it. + mkdir($path, 0755, true); + } + } + if (!is_file($location)) { + file_put_contents($location, $html); + } else { + ($new = fopen($location, "w")) or die("Unable to open file!"); + fwrite($new, $html); + fclose($new); + } + } + public static function objectToMD($object) { $markdown = diff --git a/composer.json b/composer.json index 8eb6166..2147fb3 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "mnapoli/front-yaml": "^1.8", "lodash-php/lodash-php": "^0.0.7", "rbdwllr/reallysimplejwt": "^4.0", - "fightbulc/moment": "^1.33" + "fightbulc/moment": "^1.33", + "tgalopin/html-sanitizer": "^1.4" } } diff --git a/composer.lock b/composer.lock index 030001b..6e0098f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d5ef6d43f774049d093af6375d20ac11", + "content-hash": "f829b5451dc7ceba4625d240a185b162", "packages": [ { "name": "erusev/parsedown", @@ -169,6 +169,75 @@ }, "time": "2021-03-27T13:10:08+00:00" }, + { + "name": "league/uri-parser", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-parser.git", + "reference": "671548427e4c932352d9b9279fdfa345bf63fa00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-parser/zipball/671548427e4c932352d9b9279fdfa345bf63fa00", + "reference": "671548427e4c932352d9b9279fdfa345bf63fa00", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpstan/phpstan-strict-rules": "^0.9.0", + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-intl": "Allow parsing RFC3987 compliant hosts", + "league/uri-schemes": "Allow validating and normalizing URI parsing results" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "userland URI parser RFC 3986 compliant", + "homepage": "https://github.com/thephpleague/uri-parser", + "keywords": [ + "parse_url", + "parser", + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-parser/issues", + "source": "https://github.com/thephpleague/uri-parser/tree/master" + }, + "time": "2018-11-22T07:55:51+00:00" + }, { "name": "lodash-php/lodash-php", "version": "0.0.7", @@ -224,6 +293,75 @@ }, "time": "2020-09-21T11:55:26+00:00" }, + { + "name": "masterminds/html5", + "version": "2.7.4", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "9227822783c75406cfe400984b2f095cdf03d417" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/9227822783c75406cfe400984b2f095cdf03d417", + "reference": "9227822783c75406cfe400984b2f095cdf03d417", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.7.4" + }, + "time": "2020-10-01T13:52:52+00:00" + }, { "name": "mnapoli/front-yaml", "version": "1.8.0", @@ -2077,6 +2215,54 @@ ], "time": "2021-03-06T07:59:01+00:00" }, + { + "name": "tgalopin/html-sanitizer", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/tgalopin/html-sanitizer.git", + "reference": "56cca6b48de4e50d16a4f549e3e677ae0d561e91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tgalopin/html-sanitizer/zipball/56cca6b48de4e50d16a4f549e3e677ae0d561e91", + "reference": "56cca6b48de4e50d16a4f549e3e677ae0d561e91", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri-parser": "^1.4.1", + "masterminds/html5": "^2.4", + "php": ">=7.1", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.4", + "symfony/var-dumper": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "HtmlSanitizer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + } + ], + "description": "Sanitize untrustworthy HTML user input", + "support": { + "issues": "https://github.com/tgalopin/html-sanitizer/issues", + "source": "https://github.com/tgalopin/html-sanitizer/tree/master" + }, + "time": "2020-02-03T16:51:08+00:00" + }, { "name": "twig/twig", "version": "v3.3.0", -- 2.25.1 From ba38e32dd52437567e8035bfc94deb4805275731 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 23 Apr 2021 13:27:21 -0700 Subject: [PATCH 083/250] fix for code tag being sanitized on html render --- brain/data/Render.inc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 591aeca..3bdcb62 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -67,7 +67,7 @@ class Render $parser = new Parser(); $rendered = $parser->parse($page["content"]); $sanitizer = \HtmlSanitizer\Sanitizer::create([ - "extensions" => ["basic", "image", "list"], + "extensions" => ["basic", "image", "list", "code"], ]); $preclean = $sanitizer->sanitize($rendered->getContent()); $cleaned = strip_tags($preclean, [ @@ -84,6 +84,8 @@ class Render "h1", "h2", "h3", + "pre", + "code", ]); //$cleaned = preg_replace('/(?:\r\n|[\r\n]){2,}/', "\n\n", $cleaned); //$cleaned = html_entity_decode($cleaned, ENT_QUOTES, "UTF-8"); -- 2.25.1 From b98707bb0dd7a3a6059d804689cdb5f36f69cb1f Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 23 Apr 2021 20:54:56 -0700 Subject: [PATCH 084/250] install site activated, fixed large image upload issue(php setting), fixed page indexing --- .gitignore | 7 +- brain/App.inc.php | 1 + brain/api/v1/InitAPI.inc.php | 21 + brain/api/v1/SettingsAPI.inc.php | 5 +- brain/controller/APIControl.inc.php | 4 + brain/controller/DashControl.inc.php | 218 ++--- brain/controller/IndexControl.inc.php | 10 - brain/data/Book.inc.php | 17 +- brain/data/Session.inc.php | 28 +- brain/data/Settings.inc.php | 5 +- brain/utility/DocTools.inc.php | 10 +- brain/utility/FileUploader.inc.php | 14 +- brain/utility/Setup.inc.php | 97 +++ brain/utility/StringTools.inc.php | 33 +- brain/views/dash/init.twig | 67 ++ config/init/folks-template.json | 27 +- config/init/index-template.md | 28 - config/init/settings-template.json | 54 +- content/themes/fipamo-default/archive.twig | 36 + .../themes/fipamo-default/assets/css/base.css | 555 ++++++++++++ .../fipamo-default/assets/css/base.css.map | 1 + .../assets/images/global/default-avi.png | Bin 0 -> 24313 bytes .../assets/images/global/default-bg.jpg | Bin 0 -> 1068536 bytes .../assets/images/global/sprite.svg | 823 ++++++++++++++++++ .../assets/images/global/the-logo.svg | 33 + .../assets/scripts/start.min.js | 376 ++++++++ .../assets/scripts/start.min.js.map | 1 + content/themes/fipamo-default/frame.twig | 59 ++ content/themes/fipamo-default/index.twig | 33 + content/themes/fipamo-default/page.twig | 18 + content/themes/fipamo-default/tags.twig | 21 + content/themes/fipamo-default/theme.json | 7 + src/com/Base.js | 3 +- 33 files changed, 2394 insertions(+), 218 deletions(-) create mode 100644 brain/api/v1/InitAPI.inc.php create mode 100644 brain/utility/Setup.inc.php create mode 100644 brain/views/dash/init.twig delete mode 100644 config/init/index-template.md create mode 100644 content/themes/fipamo-default/archive.twig create mode 100644 content/themes/fipamo-default/assets/css/base.css create mode 100644 content/themes/fipamo-default/assets/css/base.css.map create mode 100644 content/themes/fipamo-default/assets/images/global/default-avi.png create mode 100644 content/themes/fipamo-default/assets/images/global/default-bg.jpg create mode 100644 content/themes/fipamo-default/assets/images/global/sprite.svg create mode 100644 content/themes/fipamo-default/assets/images/global/the-logo.svg create mode 100644 content/themes/fipamo-default/assets/scripts/start.min.js create mode 100644 content/themes/fipamo-default/assets/scripts/start.min.js.map create mode 100644 content/themes/fipamo-default/frame.twig create mode 100644 content/themes/fipamo-default/index.twig create mode 100644 content/themes/fipamo-default/page.twig create mode 100644 content/themes/fipamo-default/tags.twig create mode 100644 content/themes/fipamo-default/theme.json diff --git a/.gitignore b/.gitignore index f044de1..591c5c1 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,12 @@ public/assets/images/* !public/assets/images/global/ !public/assets/images/global/* -content/ +!content/ +content/* +!content/themes +content/themes/* +!content/themes/fipamo-default +!content/themes/fipamo-default/* vendor/ cache/ _temp diff --git a/brain/App.inc.php b/brain/App.inc.php index 73b4058..ec8dca7 100644 --- a/brain/App.inc.php +++ b/brain/App.inc.php @@ -16,6 +16,7 @@ include "../brain/utility/StringTools.inc.php"; include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/DocTools.inc.php"; include "../brain/utility/Sorting.inc.php"; +include "../brain/utility/Setup.inc.php"; class App { diff --git a/brain/api/v1/InitAPI.inc.php b/brain/api/v1/InitAPI.inc.php new file mode 100644 index 0000000..778f6e9 --- /dev/null +++ b/brain/api/v1/InitAPI.inc.php @@ -0,0 +1,21 @@ +renderTags(); - //$render->renderArchive(); + $render->renderTags(); + $render->renderArchive(); $render->renderPages(); $result = [ @@ -36,7 +36,6 @@ class SettingsAPI "message" => "Settings Synced. You're doing great!", "type" => "settingsUpdated", ]; - break; case "nav-sync": Settings::navSync($body); diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index 43d554d..cd09474 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -6,6 +6,7 @@ include "../brain/api/v1/AuthAPI.inc.php"; include "../brain/api/v1/ImagesAPI.inc.php"; include "../brain/api/v1/PagesAPI.inc.php"; include "../brain/api/v1/SettingsAPI.inc.php"; +include "../brain/api/v1/InitAPI.inc.php"; class APIControl { @@ -39,6 +40,9 @@ class APIControl } switch (isset($args["third"]) ? $args["third"] : "none") { + case "init": + $result = InitApi::handleInitTasks($args["third"], $body); + break; case "login": $result = AuthAPI::login($body); break; diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index e0829c6..69ba850 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -15,120 +15,126 @@ class DashControl $view = Twig::fromRequest($request); $pageOptions = []; $template = ""; - switch (isset($args["second"]) ? $args["second"] : "index") { - case "settings": - if (Session::active()) { - $config = new Settings(); - $settings = $config->getSettings(); - $themes = $config->getThemes(); - $template = "dash/settings.twig"; - $member = Session::get("member"); - $pageOptions = [ - "title" => "Dash Settings", - "private" => $settings["global"]["private"], - "render" => $settings["global"]["renderOnSave"], - "background" => $settings["global"]["background"], - "member" => $member, - "siteTitle" => $settings["global"]["title"], - "baseUrl" => $settings["global"]["base_url"], - "desc" => $settings["global"]["descriptions"], - "lastBackup" => $settings["global"]["last_backup"], - "currentTheme" => $settings["global"]["theme"], - "themes" => $themes, - "mailOption" => $settings["email"]["active"], - "status" => Session::active(), - ]; - } else { - header("Location: /dashboard"); - die(); - } - - break; - case "navigation": - if (Session::active()) { - $config = new Settings(); - $settings = $config->getSettings(); - $template = "dash/navigation.twig"; - $pageOptions = [ - "title" => "Edit Dash Navigation", - "status" => Session::active(), - "menu" => $settings["menu"], - ]; - } else { - header("Location: /dashboard"); - die(); - } - break; - case "pages": - if (Session::active()) { - $currentPage = isset($args["fourth"]) ? $args["fourth"] : 1; - $filter = isset($args["third"]) ? $args["third"] : "all"; - $data = (new Book("../content/pages"))->getPages( - $currentPage, - 4, - $filter - ); - $template = "dash/book.twig"; - $pageOptions = [ - "entryCount" => $data["entryCount"], - "numOfPages" => $data["numOfPages"], - "currentPage" => $currentPage, - "filter" => $data["paginate"]["sort"], - "stats" => $data["stats"], - "pages" => $data["pages"], - "paginate" => $data["paginate"], - "status" => Session::active(), - ]; - } else { - header("Location: /dashboard"); - die(); - } - break; - case "page": - if (Session::active()) { - $template = "dash/page-edit.twig"; - $mode = $args["third"]; - if ($mode == "edit") { - $uuid = $args["fourth"]; - + if (Setup::status()) { + switch (isset($args["second"]) ? $args["second"] : "index") { + case "settings": + if (Session::active()) { + $config = new Settings(); + $settings = $config->getSettings(); + $themes = $config->getThemes(); + $template = "dash/settings.twig"; + $member = Session::get("member"); $pageOptions = [ - "title" => "Fipamo | Edit Page", - "page" => (new Book("../content/pages"))->findPageById($uuid), - "mode" => $mode, + "title" => "Dash Settings", + "private" => $settings["global"]["private"], + "render" => $settings["global"]["renderOnSave"], + "background" => $settings["global"]["background"], + "member" => $member, + "siteTitle" => $settings["global"]["title"], + "baseUrl" => $settings["global"]["base_url"], + "desc" => $settings["global"]["descriptions"], + "lastBackup" => $settings["global"]["last_backup"], + "currentTheme" => $settings["global"]["theme"], + "themes" => $themes, + "mailOption" => $settings["email"]["active"], "status" => Session::active(), ]; } else { + header("Location: /dashboard"); + die(); + } + + break; + case "navigation": + if (Session::active()) { + $config = new Settings(); + $settings = $config->getSettings(); + $template = "dash/navigation.twig"; $pageOptions = [ - "title" => "Fipamo | Create Page", - "mode" => $mode, + "title" => "Edit Dash Navigation", + "status" => Session::active(), + "menu" => $settings["menu"], + ]; + } else { + header("Location: /dashboard"); + die(); + } + break; + case "pages": + if (Session::active()) { + $currentPage = isset($args["fourth"]) ? $args["fourth"] : 1; + $filter = isset($args["third"]) ? $args["third"] : "all"; + $data = (new Book("../content/pages"))->getPages( + $currentPage, + 4, + $filter + ); + $template = "dash/book.twig"; + $pageOptions = [ + "entryCount" => $data["entryCount"], + "numOfPages" => $data["numOfPages"], + "currentPage" => $currentPage, + "filter" => $data["paginate"]["sort"], + "stats" => $data["stats"], + "pages" => $data["pages"], + "paginate" => $data["paginate"], + "status" => Session::active(), + ]; + } else { + header("Location: /dashboard"); + die(); + } + break; + case "page": + if (Session::active()) { + $template = "dash/page-edit.twig"; + $mode = $args["third"]; + if ($mode == "edit") { + $uuid = $args["fourth"]; + + $pageOptions = [ + "title" => "Fipamo | Edit Page", + "page" => (new Book("../content/pages"))->findPageById($uuid), + "mode" => $mode, + "status" => Session::active(), + ]; + } else { + $pageOptions = [ + "title" => "Fipamo | Create Page", + "mode" => $mode, + "status" => Session::active(), + ]; + } + } else { + header("Location: /dashboard"); + die(); + } + break; + case "logout": + Session::kill(); + header("Location: /dashboard"); + die(); + break; + default: + //$secret = ; + $template = "dash/start.twig"; + if (Session::active()) { + $pageOptions = [ + "title" => "Welcome Back", + "status" => Session::active(), + "data" => (new Book("../content/pages"))->getPages(1, 4), + ]; + } else { + $pageOptions = [ + "title" => "Welcome to Fipamo", "status" => Session::active(), ]; } - } else { - header("Location: /dashboard"); - die(); - } - break; - case "logout": - Session::kill(); - header("Location: /dashboard"); - die(); - break; - default: - $template = "dash/start.twig"; - if (Session::active()) { - $pageOptions = [ - "title" => "Welcome Back", - "status" => Session::active(), - "data" => (new Book("../content/pages"))->getPages(1, 4), - ]; - } else { - $pageOptions = [ - "title" => "Welcome to Fipamo", - "status" => Session::active(), - ]; - } - break; + break; + } + } else { + $template = "dash/init.twig"; + $pageOptions = ["title" => "Fipamo Setup"]; } return $view->render($response, $template, $pageOptions); diff --git a/brain/controller/IndexControl.inc.php b/brain/controller/IndexControl.inc.php index e26d526..0949c3f 100644 --- a/brain/controller/IndexControl.inc.php +++ b/brain/controller/IndexControl.inc.php @@ -12,18 +12,8 @@ class IndexControl ): ResponseInterface { //unset($_SESSION); $view = Twig::fromRequest($request); - $html = file_get_contents("../public/index.html"); $response->getBody()->write($html); return $response; - - /* - return $view->render($response, "front/start.twig", [ - "title" => "Fipamo Dash", - "status" => false, - "pages" => [], - "totalPages" => 0, - ]); - */ } } diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index 7d8bc3c..07e6f0a 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -58,7 +58,11 @@ class Book if (isset($image["feature_image"])) { if ($task != "create") { - $feature = $image["feature_image"]->getClientFileName(); + $feature = + "/assets/images/blog/" . + $path . + "/" . + $image["feature_image"]->getClientFileName(); } else { $feature = "/assets/images/blog/" . @@ -143,14 +147,17 @@ class Book "type" => $task == "write" ? "postUpdated" : "postAdded", "id" => $uuid, ]; + + //**just testing to see why indexing isn't working ** + + //once saved, update menu + $body["path"] = $path; + Settings::updateMenu($body); + Settings::updateTags(); //if new page added, update current index in Settings file if ($task == "create") { Settings::updateIndex(); } - //once saved, update menu - $body["path"] = $path; - Settings::updateMenu($body); - //Settings::updateTags(); } else { $response = [ "message" => "Uh oh. File save problem. Don't panic", diff --git a/brain/data/Session.inc.php b/brain/data/Session.inc.php index 1d6d330..7bbc245 100644 --- a/brain/data/Session.inc.php +++ b/brain/data/Session.inc.php @@ -22,19 +22,27 @@ class Session public static function active() { - $data = json_decode(file_get_contents(self::$file), true); - if ($data["member"] != null) { - $secret = (new Settings())->getFolks("secret"); - if ( - Token::validate($data["token"], $secret) && - Token::validateExpiration($data["token"], $secret) - ) { - return true; + if (!is_file(self::$file)) { + return false; + } else { + $data = json_decode(file_get_contents(self::$file), true); + if ($data["member"] != null) { + $secret = (new Settings())->getFolks("secret"); + if ($secret == null) { + return false; + } else { + if ( + Token::validate($data["token"], $secret) && + Token::validateExpiration($data["token"], $secret) + ) { + return true; + } else { + return false; + } + } } else { return false; } - } else { - return false; } } diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 883ab6a..9ae7226 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -136,8 +136,9 @@ class Settings public static function updateIndex() { $settings = self::$settings; - $index = $settings["library_stats"]["current_index"]; - $settings["library_stats"]["current_index"] = $index + 1; + + $settings["library_stats"]["current_index"] = + $settings["library_stats"]["current_index"] + 1; DocTools::writeSettings("../config/settings.json", $settings); } diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php index cc52766..c64da0d 100644 --- a/brain/utility/DocTools.inc.php +++ b/brain/utility/DocTools.inc.php @@ -29,9 +29,13 @@ class DocTools public static function writeSettings($fileLocation, $fileContents) { - ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); - fwrite($new, json_encode($fileContents)); - fclose($new); + if (!is_file($fileLocation)) { + file_put_contents($fileLocation, json_encode($fileContents)); + } else { + ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); + fwrite($new, json_encode($fileContents)); + fclose($new); + } } public static function writeHTML($location, $html, $path = null) diff --git a/brain/utility/FileUploader.inc.php b/brain/utility/FileUploader.inc.php index 5609834..be3df13 100644 --- a/brain/utility/FileUploader.inc.php +++ b/brain/utility/FileUploader.inc.php @@ -1,13 +1,11 @@ getClientFileName(); + $file->moveTo($directory . "/" . $file->getClientFileName()); - } catch (Error $e) { - echo $e; + } catch (RuntimeException $e) { + echo "ERROR " . $e->getMessage(); //echo "failed to upload image: " . $e->getMessage(); //throw new Error("Failed to upload image file"); diff --git a/brain/utility/Setup.inc.php b/brain/utility/Setup.inc.php new file mode 100644 index 0000000..1ce2593 --- /dev/null +++ b/brain/utility/Setup.inc.php @@ -0,0 +1,97 @@ +getParsedBody(); + $handle = $body["new_member_handle"]; + $email = $body["new_member_email"]; + $pass = $body["new_member_pass"]; + $title = $body["new_member_title"]; + + $now = new \Moment\Moment(); + //setup folks config + $hash = password_hash($pass, PASSWORD_DEFAULT); + $newFolks[0]["id"] = 0; + $newFolks[0]["handle"] = $handle; + $newFolks[0]["email"] = $email; + $newFolks[0]["password"] = $hash; + $newFolks[0]["key"] = password_hash($email, PASSWORD_DEFAULT); + $newFolks[0]["secret"] = StringTools::randomString(12); + $newFolks[0]["role"] = "hnic"; + $newFolks[0]["created"] = $now->format("Y-m-d\TH:i:sP"); + $newFolks[0]["updated"] = $now->format("Y-m-d\TH:i:sP"); + //set up settings config + $newSettings["global"]["title"] = $title; + + //create index file + //$rightNow = $now->format("Y-m-d\TH:i:sP"); + //var_dump($now->format("Y-m-d\TH:i:sP")); + $index = [ + "id" => 1, + "uuid" => StringTools::createUUID(), + "title" => "FIRST!", + "feature" => "/assets/images/global/default-bg.jpg", + "path" => "content/pages/start", + "layout" => "index", + "tags" => "start, welcome", + "author" => $handle, + "created" => $now->format("Y-m-d\TH:i:sP"), + "updated" => $now->format("Y-m-d\TH:i:sP"), + "deleted" => "false", + "slug" => "first", + "menu" => "false", + "featured" => "false", + "published" => "true", + "content" => + "# F**k Yes \n\nIf you're seeing this, you're up and running. NICE WORK!\n\nFrom here, feel free to start dropping pages to your heart's content.\n\nFor some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)\n\nAll good? Feel free to edit this page to whatever you want!\n\nYOU'RE THE CAPTAIN NOW.", + ]; + + $freshIndex = DocTools::objectToMD($index); + + //once all files created, write down + + DocTools::writeSettings("../config/settings.json", $newSettings); + DocTools::writeSettings("../config/folks.json", $newFolks); + DocTools::writeSettings("../config/tags.json", []); + DocTools::writePages( + "create", + "start", + "../content/pages/start/index.md", + $freshIndex + ); + + //if there is an older session file, get rid of it + if (is_file("../content/.session")) { + unlink("../content/.session"); + } + + $result = ["type" => "blogInitGood", "message" => "Site Created"]; + + return $result; + } + + public static function restore() + { + } +} diff --git a/brain/utility/StringTools.inc.php b/brain/utility/StringTools.inc.php index 58487fb..68d81cd 100644 --- a/brain/utility/StringTools.inc.php +++ b/brain/utility/StringTools.inc.php @@ -1,5 +1,6 @@ + {% endblock %} + + {% block mainContent %} +
+
+
+
+
+

What up

+

Just fill these in and it'll get you started.

+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+

Restore from backup

+

Let's verify your backup

+
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+ {% endblock %} + + {% block javascripts %} + + {% endblock %} \ No newline at end of file diff --git a/config/init/folks-template.json b/config/init/folks-template.json index 2b1084e..0933e36 100644 --- a/config/init/folks-template.json +++ b/config/init/folks-template.json @@ -1,14 +1,15 @@ [ - { - "id": "", - "handle": "", - "avi": "/assets/images/global/default-avi.png", - "email": "", - "password": "", - "key": "", - "role": "", - "created": "", - "updated": "", - "deleted": null - } -] \ No newline at end of file + { + "id": "", + "handle": "", + "avi": "/assets/images/global/default-avi.png", + "email": "", + "password": "", + "key": "", + "secret": "", + "role": "", + "created": "", + "updated": "", + "deleted": null + } +] diff --git a/config/init/index-template.md b/config/init/index-template.md deleted file mode 100644 index 6e23de4..0000000 --- a/config/init/index-template.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: 0 -uuid: -title: This is the Start -feature: /assets/images/global/default-bg.jpg -path: -layout: index -tags: start -author: -created: -updated: -deleted: false -menu: false -featured: false -published: true -slug: index ---- -# F**k Yes - -If you're seeing this, you're up and running. NICE WORK! - -From here, feel free to start dropping pages to your heart's content. - -For some tips about using Fipamo, check out the ![docs](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage) - -All good? Feel free to edit this page to whatever you want! - -YOU'RE THE CAPTAIN NOW. diff --git a/config/init/settings-template.json b/config/init/settings-template.json index 37dfb1b..93a1e3f 100644 --- a/config/init/settings-template.json +++ b/config/init/settings-template.json @@ -1,29 +1,29 @@ { - "global": { - "base_url": "http://your.domain", - "title": "This is a Title", - "descriptions": "Because it should be easy.", - "background": "/assets/images/global/default-bg.jpg", - "private": "true", - "renderOnSave": "false", - "theme": "default-light", - "display_limit": 5, - "last_backup": null, - "port": 2314 + "global": { + "base_url": "http://your.domain", + "title": "This is a Title", + "descriptions": "Because it should be easy.", + "background": "/assets/images/global/default-bg.jpg", + "private": "true", + "renderOnSave": "false", + "theme": "fipamo-default", + "display_limit": 5, + "last_backup": null + }, + "library_stats": { + "current_index": 1 + }, + "email": { + "active": "none", + "smtp": { + "domain": "", + "email": "", + "password": "" }, - "library_stats": { - "current_index": 1 - }, - "email": { - "smtp": { - "domain": "", - "email": "", - "password": "" - }, - "mailgun": { - "domain": "", - "api-key": "" - } - }, - "menu": [] -} \ No newline at end of file + "mailgun": { + "domain": "", + "api-key": "" + } + }, + "menu": [] +} diff --git a/content/themes/fipamo-default/archive.twig b/content/themes/fipamo-default/archive.twig new file mode 100644 index 0000000..18c7b02 --- /dev/null +++ b/content/themes/fipamo-default/archive.twig @@ -0,0 +1,36 @@ +{% extends "fipamo-default/frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + + {% block mainContent %} +
+
+ {{title}} +
+
+
+
+ {% for item in archives %} +
+ + {{item.year}} + + {% for data in item.year_data %} +
+ + {{data.full_month}} + + {% for page in data.pages %} + {{page.title}}
+ {% endfor %} +
+ + {% endfor %} +
+ {% endfor %} + +
+
+ {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/css/base.css b/content/themes/fipamo-default/assets/css/base.css new file mode 100644 index 0000000..a1a08e0 --- /dev/null +++ b/content/themes/fipamo-default/assets/css/base.css @@ -0,0 +1,555 @@ +/** +------------------------------- +-- Typography +------------------------------- +**/ +/** +------------------------------- +-- Colors +------------------------------- +**/ +/** +------------------------------- +-- Mixins +------------------------------- +**/ +/** +------------------------------- +-- Normalize +------------------------------- +**/ +html { + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +footer, +header, +nav, +section { + display: block; +} +h1 { + font-size: 2em; + margin: 0.67em 0; + line-height: 1em; +} +figcaption, +figure, +main { + display: block; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +pre { + font-family: monospace, monospace; + font-size: 1em; +} +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} +a:active, +a:hover { + outline-width: 0; +} +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} +b, +strong { + font-weight: inherit; + font-weight: bolder; +} +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +dfn { + font-style: italic; +} +mark { + background-color: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 60%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.55em; + background: #bdcbdb; + color: #151d26; + border-radius: 2px; + padding: 0 2px 0 2px; + margin: 0 2px 0 0; +} +audio, +video { + display: inline-block; +} +audio:not([controls]) { + display: none; + height: 0; +} +img { + border-style: none; +} +svg:not(:root) { + overflow: hidden; +} +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} +progress { + display: inline-block; + vertical-align: baseline; +} +textarea { + overflow: auto; +} +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + padding: 0; +} +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} +details, +menu { + display: block; +} +summary { + display: list-item; +} +canvas { + display: inline-block; +} +template { + display: none; +} +[hidden] { + display: none; +} +/** +------------------------------- +-- Main Structure +------------------------------- +**/ +html { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + overflow: hidden; + font: 400 1.2em/1.4em Helvetica, Arial, sans-serif; +} +body { + background: #ebe5d4; + margin: 0; + padding: 0; + perspective: 1px; + transform-style: preserve-3d; + height: 100%; + width: 100%; + overflow-y: scroll; + overflow-x: hidden; +} +a { + color: #151d26; + text-decoration: none; + border-bottom: 1px solid #7ed07e; + -moz-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; +} +a:hover { + border-bottom: 1px solid #fc6399; +} +code { + background: #32302f; + color: #7ed07e; + border-radius: 3px; + padding: 3px; +} +pre { + background: #32302f; + color: #7ed07e; + border-radius: 3px; + padding: 3px; +} +pre code { + color: #fc6399; + background: none; +} +svg.icons { + width: 25px; + fill: #ebe5d4; +} +header { + background: #151d26; + height: 90%; + width: 100%; + border-top: #ebe5d4 3px solid; +} +header nav { + width: 97%; + margin: 10px auto; + color: #151d26; +} +header nav .left, +header nav .right { + width: 50%; + display: inline-block; + vertical-align: top; +} +header nav .left a.logo-link { + border-bottom: none; + margin: 0 0 20px 0; + display: block; +} +header nav .left a.logo-link #logo { + width: 50px; + border-bottom: none; +} +header nav .right { + text-align: right; +} +header nav .right a.menu-link { + background: #fc6399; + margin-bottom: 4px; + padding: 3px; + border-radius: 2px; + display: inline-block; + font-size: 0.8em; + border-bottom: none; +} +header nav .right a.menu-link:hover { + background: #feb1cc; +} +.container { + z-index: 2; + background: #ebe5d4; + line-height: 30px; + font-weight: lighter; + width: 100%; + color: #32302f; +} +.container article { + position: relative; + width: 80%; + height: 80%; + max-width: 840px; + background: #ebe5d4; + vertical-align: top; + color: #32302f; + margin: 0 auto; +} +.container article .index, +.container article .page { + padding: 0 0 15px 0; +} +.container article .index img, +.container article .page img { + display: block; + width: 100%; +} +.container article .index h1, +.container article .page h1 { + color: #151d26; +} +.container article .index p, +.container article .page p { + font: 300 1.25em/1.6em Helvetica, Arial, sans-serif; +} +.container article .index .meta, +.container article .page .meta { + font: 500 0.8em/1.3em Helvetica, Arial, sans-serif; + padding: 5px 0 0 0; + border-top: 1px solid #151d26; + background: #ede8d8; +} +.container article .index .meta a, +.container article .page .meta a { + font-size: 0.8em; + font-weight: 400; +} +.container article .index .archive-item, +.container article .page .archive-item { + padding: 15px 0 20px 0; +} +.container article .index .archive-item span.year, +.container article .page .archive-item span.year { + font-size: 1.5em; + font-weight: 500; + padding: 5px; + display: block; + color: #151d26; +} +.container article .index .archive-item .archive-month, +.container article .page .archive-item .archive-month { + display: inline-block; + vertical-align: top; + width: 30%; + padding: 5px; +} +.container article .index .archive-item .archive-month span.month, +.container article .page .archive-item .archive-month span.month { + color: #fc6399; + font-size: 1.5em; + font-weight: 300; + padding: 5px; + display: block; +} +.container section { + padding: 0 0 20px 0; + background: #151d26; +} +.container section a { + color: #ebe5d4; +} +.container section .index-lists, +.container section .page-title { + max-width: 840px; + width: 80%; + margin: 0 auto; + padding: 20px 0 0 0; +} +.container section .index-lists span, +.container section .page-title span { + font: 600 2em/1.5 Helvetica, Arial, sans-serif; + color: #ebe5d4; +} +.container section .index-lists .recent, +.container section .page-title .recent, +.container section .index-lists .featured, +.container section .page-title .featured { + display: inline-block; + width: 50%; + vertical-align: top; +} +.container section .index-lists label, +.container section .page-title label { + background: #32302f; + color: #ebe5d4; + font-size: 1.5em; + line-height: 1.3; +} +footer { + background: #e4dcc5; + padding: 10px; + color: #151d26; + font-size: 0.8em; + font-weight: 600; + height: 100px; +} +footer .inner { + margin: 20px auto; + width: 80%; + max-width: 840px; +} +footer .inner a { + color: #fc6399; +} +@media only screen and (max-width: 640px) { + header nav { + width: 98%; + } + header span { + font-size: 2.5em; + } + .container article .index .archive-item .archive-month, + .container article .page .archive-item .archive-month { + width: 45%; + } +} +@media only screen and (max-width: 480px) { + header nav { + width: 96%; + } + .container article .index, + .container article .page { + margin: 0; + } + .container article .index p, + .container article .page p { + font: 300 1em/1.6em Helvetica, Arial, sans-serif; + } + .container section .index-lists .recent, + .container section .index-lists .featured { + width: 100% !important; + } +} +@media only screen and (max-width: 375px) { + header nav { + width: 95%; + } + .container article .index, + .container article .page { + margin: 0; + } + .container article .index p, + .container article .page p { + font: 300 0.9em/1.7em Helvetica, Arial, sans-serif; + } + .container article .index .archive-item .archive-month, + .container article .page .archive-item .archive-month { + width: 95%; + } +} +/** +------------------------------- +-- Forms +------------------------------- +**/ +form { + display: inline-block; +} +input[type=email], +input[type=password], +input[type=text] { + border: 0; + border-radius: 5px; + padding: 5px; + margin: 10px 5px 0 0; + font: 15px 'RobotoMono'; + display: inline-block; +} +textarea { + border: 0; + border-radius: 3px; + color: $type02; + font: 15px 'RobotoMono'; +} +button, +input[type=submit] { + background: #fc6399; + color: #ebe5d4; + font: 14px Helvetica, Arial, sans-serif; + border-radius: 5px; + position: relative; + cursor: pointer; + border: 0; + padding: 5px 5px 0 5px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; +} +button:hover, +input[type=submit]:hover { + background: #fc7ca9; +} +select { + font: 14px 'RobotoMono'; + border: 1px solid #fc6399; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: #151d26; +} +::-webkit-input-placeholder { + font: 14px 'RobotoMono'; + color: #837e7c; +} +:-moz-placeholder { +/* Firefox 18- */ + font: 14px 'RobotoMono'; + color: #837e7c; +} +::-moz-placeholder { +/* Firefox 19+ */ + font: 14px 'RobotoMono'; + color: #837e7c; +} +:-ms-input-placeholder { + font: 14px 'RobotoMono'; + color: #837e7c; +} +/*# sourceMappingURL=base.css.map */ \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/css/base.css.map b/content/themes/fipamo-default/assets/css/base.css.map new file mode 100644 index 0000000..d9e5fd2 --- /dev/null +++ b/content/themes/fipamo-default/assets/css/base.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../../styles/base.styl","../../../styles/_normalize.styl","../../../styles/_structure.styl","../../../styles/_mixins.styl","../../../styles/_forms.styl"],"names":[],"mappings":"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","file":"base.css"} \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/default-avi.png b/content/themes/fipamo-default/assets/images/global/default-avi.png new file mode 100644 index 0000000000000000000000000000000000000000..99ee4bba4fe342dd7d22b3f50db01c1526b3696d GIT binary patch literal 24313 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%0A{&KRKt+LHhMZ1Vhr>EB`0A7 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 K8NW7ki~b)U_XREh literal 0 HcmV?d00001 diff --git a/content/themes/fipamo-default/assets/images/global/default-bg.jpg b/content/themes/fipamo-default/assets/images/global/default-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff297376a1329c9d2cc342a730431bcdf69907b6 GIT binary patch literal 1068536 zcmeFYcUV);^Dufs0s*8bMFRwgfYKBQHGv>OrAn`gD7^&*La3pIA}YqvEf@nx2LTaj zA_@uwEP!+n5or+-=~cuV{gm(TeeZjp=RWt}``skx%-J(DyEA8Z&+N?P*YK|iV85}x zkv;$d0e~U%1N{2TlBgHv;|Tz!rhps(0PFw*A^*_wGVvaQl>fj2O!(PV9{}<=NW3h)_{L0f4d+60NC( z)KpSIAeH_A%u3<7tbh8&!V`D@U-;lPiT}uPP5N&*3II|70Lp9uqNJ>hOacGXUly?x z$iJ|1D(Ej9CLWLm0yvo`X0KTE(^&rHZ}cww>kjW7sOPFC;)KU zGxehRA6|S0Ojd`P*L=($2w>UXW}c4$pp@TrhkkwDNAV5{3eZ$k^dl&^xcj?$D7g7w zRt$3qP(&&yDFPUsumBe~UymS!tB045pSHwe;|mFdkGr;ny_%_#X}~EDZy!TqpocZl z%*KuA>xOoh&^dv?glUFd4!G+yZ?9f_(h_5WhLPxcUbNX-hC${;Nxu1O8?Ef0X?nM3-P@ z@BdFq@?cKjKU!j9{1)gB+W>F>Ab*0l|NjH?e{cUG{D;Wh?cWvxf&(x8kj~0uvYcr-1;?Q-L18=bw$g|0QjS|8+k8X7)FN$7z=!4{eFxBjvb~+Hobc%|D~( zFC${=(M310cUBw*FzrlYe#tFoK%YQZS zUk&_M1OL^)e>L!54gCL41OG9tJ^YwfM<~;927WC7VHW>bkjzb%5`a2sWD5DcZvy}w zILHA2iySe4Gj|s(01KSu1i=2=SW!|_Lc>{f05+tO3L2>bXVLhd^_YL^|KfGz53l`; z(6DH&2=RPJv4RfOk0)tr~U{==O-2_E3?*otntbB)&x@`QGE>H=)fO2eVF1zH(sun@3 z_e)YLu7PnJoCgoVgoKYAm6nl}Q&m&fK%q5Hoz~MgFf=l@wz0LdKYPx>&E3P(%i9M> z2nr4f4GSm6CtOLqdhL2rT6#w2t=o6*Wv%U7*!?evb$ z*S&rH1A{}uBcq=ur>19S8DHkUF0ZVvt#52@ZSVY+i@7)ZODyK`FUkHlxehSpVu3)w z5a@5YKrErZ1wQ~`J&a`I)3t=U;Q1w#W7!2xrsh_)a7e0HEeW~?zUMqBrTY2E@^8`p zNcR6uu(fCbFLEMN%ucY*wGh4oKi`(2>_mS0RJzd8IS zV}6;^v;KSU|26RIBXg@9^=lO10yDRq2fzma9pL9cU98y|1@^Bo-Nbsgn+AA$$txB> zxOCQ&K~ImDDG#3KY!l$DA2MM%`Z@`&`Lt0(WhYRSfw3NU?CL>Ch+5uNSM=zAV=d6ys*|U;;aI zX==SNMBBXPEEq+%9M64ova*L*p}tz*-(hA5@584ycXm4j2w})vvkeJOi3Z{k8~Ol%!>6ay*TFzRf3(ZN0hp zOn}wkms)&s!O>YbICai)iW>V)BLK1#Bff%5nUTMBicu+465GvMZEGVtbB~*XdtD+D z2Kfch`Y-UAm8z^HH3+kW39*!(Y;eYtqXnxtS2rWv?bL8Sx$pHwjU*DBm0;_Wm3sRz zm3?!jiRve|%Wp(PD`^H-7-*?fC|wG&2yK295LV*w$&bDHo%bsq05%=1CfUw=aUi3B zU=3+As)oeLTTa3m@ivamJF_YKG0sax=y}5`{HAeg+c~mKH&hKFT8$OBsH6q|VZ+Lc zD(hu20vDV<6jwyHU_D4)U)w0oQlU->Mv*#Nx_mgN@zfsE5et0*p8C>s#HHora$MaQ zxK`y{I*SG?tXmN0aJO@;BNK~(PxPZYF?c(7tFy~-atKX0zeAcGH2^f-x8DVyR3%4M zqB}XnT1%qn4Qe$Sx$o?_o7j{$FBWFVtaZuGgcM0PsXivV72&>+)0HzWsa7s~K}Yjk zo+J^}frSN&L|}pz-B2oZvSC{M^_}>@FqwGglm?@K0l;7 zVYH2JlSdq|Zn$VLn2`gHO*QA?;VqZcFq0+48o*$pVL62X+Oo|-l7+J7F*v|`UuXCB zZfRqBH+VGPjk3LqYYg_A=zR~`$3?>mUP!58Q1JFiKgYL!%2lt@kXgkrtuCr)!e2rj6GnQXTgLv$s7#>kcWha}h+jZJsWbg_7VlgHI>zQ%}r{vT;4o0 zF@V@JJo%8Q_gHVbQ2!jMP^&$E0WtZA`&*nE=kU~8=|aHt6uP@e&@w4XPxkC5KDN&0 z<^l_-pFEFrFk-zMGq83qn!m5$jLcBd<)UQcOpj5Ouf8Xg*?5b~gu1k4L6U~&$!^Q} zJl15A4|5?Q_Py8OF}T?8=;J8#CJHBZl}jb7wo2i|MVsDmF0%>b!nq&j^E-MnJlCc~ zu$=;ttrJ-pN8k6Rkg4$&AKzKzQHcEspxvYQV4ahY8seLYl*sFnpAxSa#BQCfJU+e{mO{xZ}G)zNnHa`P{Mlf%1=3lUEjbanuDe9`GH zIG?0k-{!b4wizzWsluAm(kvRKvooMMx}2uNBd=>+B03i`K?(l_oLB=tn#DXm{fGe5!#HAfr z=q>mVzcw596V2%9fgDvfY(}r=$R6)mFCo&Xy&(EU8PI%erzp|3cz7DVYTHbI%cfmw z3tfqscyPm`rRgkL`tQpSv{%j|VrNp3xZh8LT6qyk}kL6C> z&npQZm{4D~Jdhr1H>mtd6==@?VTGT!Cqopzmd?j1Bgs7wn?WH+>^mJ8z3C{ZJ;H*` zv6L598W9jv?(>!!^iwXLl1Mu2L0=BQ9o?9vF}Co(fT7}ZB*yMCmRlx2Evz_+%xJ>Y zq2X41_<5}0Co-k}o9u_`#I9ah5pi{M)pk_JJeH528nRx*^E`gEEKwScr`nVbw`-<< zN&+6|c%eE3B`WKL3iX>~DK+ZK9HMd=!<>LM)jhbZctYV&I&;EUVD67}s?JE0H0`d} z6(2M^N3^TSczehN&PnI8S+>i~kc{$?)xK^yI9oNE@4RYVvp6y}ObHc_nK^4c=8uqe zvt(K9o=Gaydc1=3lRCyBax>`tm=HP2Ks0Ke5(}i7JBqK)UkH8_ZlUViQIZiS*Z%WK z?;-YAl@7gUThMJ@qbFNlpb zLls?;@)B60POmXX$vVQyK)_MB!3na)5LDJpQ4X0cGHhul4kYTGedCn{s@6RF5>Fin zB(2iSx7W+eni+#RyGU$9O%?2Vc(>GmR)%G&wQ3S1sq{T??;_7s^LiQnsQOe& zc=^72&XTrZ*zAKklX~m3ukDXjL%e{gtom4+WMhkaHf{xnr)qsb9zCMNLK0<4U)c-z z;4wG#SHNTLJrD!!nY42T+m$ebP0PF=L+^ylZ?mg-r&KN~OF^OEQTa zBppnu=u#Pqx48Q#KvNi~WyERY_&;gOHKcz+Y~-&(&H4fA{*eU>&2>61H5(Jek{bdO z@4AtZ|C++$HC{b)NuvTceO11jrMdvMK(;Wl@*E>j(`}skgVkKk1}qzCaiqh9u_XhC ziY`>=dXZsxXN#Kc2PvL`04)7B-S6(MEO@mqelJRn?UM7xqRDvpf`hW;yZ)ySIXXL7 z3Z(eS>kmIEO)sy^QmdVJ#}tYD4SYA$4r0;PgI6<6J-6>7;@_ziZccmNJ<@Q*>GfmA zJs@^8FU`E^mPCmWqALKOy*f(bGnfz^QFB~1T>MbyaO3TVcC8-BGx+rCXs%l_VKi%T zY}w=(O1l{J3usGIGF<4T>gZbduVa1z#>&wb3CyWdBn@qHGz*!Uvk@Sn;aN2z`>_}h z_TY1-QPsmvcg$v3hLc!SQcd_+(2^8yAQ}Z0DyGA&-SMmNY33`8VR2VkpGSrza0E== zu@cKmB54SrP(|SMmaflOzBof6)$xKR==NG6*$cHDrD7_b+8x=$lKokm^&}k(xQS;P z8g9Nj*(!G590#yV(HL_kK*$%L3HT4;=!hWLS`Mpidz86@W%G2eADkRus{bANh0sgl zvj>yVr3owqvMaUMt8Y9GYlc8ftG z4;ZV(pK>A2lm~ImWPXyIx+F?GXc@~MsM3xtUZp+b^zArQ)lz)Jo#;uDa_d-(Z^x-m z!F~bj)@Qs@EmU}O;60FsuPB_c<2gExJ>Lbqv|`n=LnAKZBz^A=3f_&Yn7a9v2>R|V ztgmqmqwAmR=smazvwS!P6C5U$4ja%P8P5Qp0fxMUO z&VHr6PHH_@KOZ4KQn>{+l~eG05D)};ftNOFS^~Bo&mv(hOZ~X$EJlXF5d@CY` z3Iv1&aHfvI?Pt8c-T!Q=VY2mV*}7%((P*UA*7+%IxuMnvFTHJkCixZxH`rX8E*#Mv zzuU1^+56^GlKsvv;MKdpGnJ5wYU>LLRT#UzQ_9CE382|ycVKQql{L{3k-WVa+aHp9 zJp|vFgS%>n5_Y+l%ZzJl>joXB9owIlzIaQSx@OvmuhHZ?Q9oC7=b@*ymB59WgZZ~^ zKd!#)8+ANNVV%e?Eq8J4{%xn{Z)VDVbWOE?S~BP5KD(7IdIp|hZekXFvd1U6;)M0q zyCsu;S`O}sg=w`uzA=9z;>Njri3@|)oq*?84jV1=lBukfk0NK5DcO^}2YkhZmSYDa z)$+!k91@Ot>3@H>0Jw5Td}8nWIDSa&qrGa;%?Cv{5`2B!XM(j(Q0HS5+&II6*|xO@ zH*3l_FGbccEj-qvTTv&{!*jQMn|J0TZEtUCM#qR@wD3VVG{ zPZY`{JT}b9P6Ck{OX+O~)jekiUzy#G+%q99UiZsCys!4eifqfAQ~8Q_Hs^CCA1Cjj zXR?K1l!HgkF9aM;g$3wJ`9VTwpR;aNFY#`uESWEeE;%gPZ8_zA`kJ+-5$js-bYfo! zNk0F3#oPF&ar!E2l?pl|s#6*ZMW!#6BP(w?6x5BZnk`3t5AMC^BoJOR_w^a=lO!X1 zBzvRu=iNy2rP^05zkvO_vY&rkkZ8BBIa4jS`}!9^v`aI6{H%O{>Ls0G8phkIc>TrW zTd9-p{6Dib{xF`$M=C5kR%{UO-|t%QD|A%4Qdbh76p)s?Z&$l)Q^jgadx>{a^k%%l z#C^`ss`S-zkGh(Kgh)5UB{_pC!HHkM!C!zgZ=5(R=-d=db77=QM4qY6Q`Z3mhv=eK!|ZS3*RI$@lJM5)_>pzQp|M*-J>HN5hKI z-(+9*w-(r>zy^2s`#Hwf^F)=jt8!mGX<+WKG4_eT$ZB}=4p))z)K7FCt@@dodrZ5m zUVT|Q}AXusl9_t9q^mVA(F=bU;xY)cD!{%huzht0~MydA=V#)>Af8`J@(#|beF#z`xjp2M6IM`~eZHeLS=yn(+r#E*zjPQiqY$l=0WK_LStWjI=| zV#rtKt$FX7=L(vLDbdq=`d=E@Zai$xJYm_FbXRIVbu~mR^PH2USX0Ti*6I*O7%CX* zW+u&ukEfaX>K!#0@9b8)Ds;lB7Pous1A$y~Cd#bviGF?bm|K&P_)tiMt)N@%%97k` z)EHKDtMGn@;z{Ls`g8efADP8yj|F{^vw<3(eQK z_5>QwT4(Gh3Wv{8Cz6dDV?m3wxH3M_JbB>i2@-r=s5Fp)hA(6Jer&E6PdguqC-=*J zGegn`X|1>DIKcIhe0s~A&8&qHu)JVLow&?WQca+W->yM@_t1WAeo)zvF!Ij(Z&btkP%f0HX8)uKVIl2)v(`OFq+hKLP z%(rKAroE&lGsqs;#Sb+|3Y)pZT*5JeS!k#Pp)Y`5e%g`p)8||j{gfrLE5a^;hqbz; zL+vQYpJ7qLh|RkFmJZMEB^`)uUQ9MV6?dq|syZNFyaHXwpAwN>0PtRE=`uv+9U;Vz zXYF!Nhvrl{Yqz-_Ddv|Xq0x|Og83@wI7PQ~dtvU(JZ)?+GI4z5R%Wc!_vVs#7emI; zGRYiNdoQaYjGv_YaE3pu>&v|mWT!Y|-i!-iws%8n<)cqCDNr9LRdEg_4N%s+#Eq}< zljB={%Dx`ioZ7a=o`dGhnRYulm1E1hG-(ZaAu)wMT5F)`X~JNhJFL4LoIY4!r;W^Z zNc_0Y!cXTUWE+>rYP0+{ng>F2+Er|iz(1S%1RRDT@O8}nv3$$sqRBL#EPT6CR5ynm z&V}C^uoHPYa8()#7cV~@#;AbmV)v(}0DHmW;COP@qr7

UduCG><8OHMCCC?04i^ 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�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

DT{`lhhouu8CEQ@a+Uw}P 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�QxkT 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⋘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%0Dc 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

  • 5KjrOKWtH_I2B_NhCdI!Jv1 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�p^JJ`8B(D`FSAX%F{uvDzqw=B1< z0crFGNsJbd!%Ym^0PJq3rC+tbo7g>yF3~L(j;9hoR_wg{61DW|?H2v?L^ML8HSFS?N$~dw3%+w4Y;0Iy^3Y|Jx5DT}I)c4a8>QfI&=dS$L

    yM7|GUe<<#RvZ!wcipRRSFS8D4Kiz!z(98XCwY(;v9XRE-BA~ zP^&BuTbfM6OnL8v;vX&hVX5QEW8lZ|5k+=J<1dS9CS{L z2B4kXfoYGv4JSssEl=Lt{f4o+_IYlyw_xnbMEjwPF-RGB$DvPma~j1X)Stdi=sTZS z&Yt+w!`z?feJed#{}vQ1f#H2Z@8|iCwXnNaU*c6sjP#A>sn;&-C;qLQYfCJ`pf z5Q1aA^25PtoQ08lro|IeUBdFbb;n}c4fT9jkA0Z4p5MS#cHcPgo6xTyoWV*6$_fT( z(L2ZY*i@}gEbKQ0;vQiMDTAFrO2SPEY_0Aeh@w+L0B}Eqt||-RiqMmL&v>CzZj7W_ z9J*xuFO2TdMNzg{75sux{R7z-hOa!jX#g%47Gq1?sUlpz2HqNFSc<5vp2zo!57>($wW>fp?S`~bMy~7_bCYtkPnI&!I*8SePxzGvLjEwsu z?_&72or6_W>AR|Rw3`n<02Z^b{Ve`cp*`=?$waq}#ukWPdLS1(PX+zD5ch~Q4zGqh zlo;S@ChZsc4o*0`)~j@$D*t%#>B}89-IVMd@L>vF=;|tG=aW#bVCr;uU>RO;98mgV zi;y`F14On?Rs3JX6PXihN4v@K@;T<>ys&jQ--5N#n%IKYsZOCafOa9?cW10CYV?$h z!+uDoVN0F(;ZmXenRO2;IDQw0K--LHO#Xzz{sJ;tL-WVF3*T0!h}NW-XTW~i93t%$d2ntv79>`S$sXRrCR5RdDq zjh>98cL>PIp7E5xZknM2md`z__7`fhkzJ1m_y3dOe^kAZ{1i{JeUV>J?HP|Vg7?eU zFMy%k(~1Jv5IUV`?QQP+^jeW#P|F8^PzJP-9*KNxA$UTlSm3^qOrHEzNR^#bC4WqK{kl!pYHT;xmz?Wv~euOueJ0!;LG(a)Y`RgeZ zc+IyWZuYGm(++WyM0L^hwMpTs8q8OIkSW_ZVDPP`_(D0FF{@wj_e-5axmsKNrwk{T zmV1q}ACI0Aj_tkj-ugj$E!jG*b@M4+0+XJ$Pp@Ul{=On*@V8w4OW%65?AWuO?R}eu zYjXU{8AT!FA`SJDBm}AL*g93S=Ce$%?%-oCBmEps?jfh&C8YS_wT5=kqiT6qpOYK? zygTlqZZ5AwvDp)g)dv6~evt4FgcEW+6sg83=uMo<9-M(kCpCO1WYZ66%X@21;3JeY z3K_)XJWxek3y{l|-EV0L^iRf1afJ2_Ji4du^=O`_(t)@fL}CiifXlZ-vH|d69@b-u zncFL1n@StrLYcKN-4~UnlPp)Z@wlTe?~R&->fKZ;-`iIqH$9|55(l`JH|~q~cvz>} z>5Vi?4N(X_khuloGkM+p?%f>}Nio9OcHR5ksmses4f4=+gq|cUvqeSJA@3uUH)f=6 zTA2yAh3qUBt@6TJR*?06e#Puy!uOt|`WRq-)(zrej8)!;eEtdRocUBuiJpr<%G^Cg z^Td0U9|E{&ra8(;IfPQs%|9I!i4>py?#h_`a#Pu7aU$3H1*Nd|tz3>Yla{(D8e%$i z&}q1SNX_h>Pos~a8fX`43>-3eOmCm}Bh^|hEr@7P&yihsEB^WzK%91}za*82h}?u( zaH<7dYxw`wrPRgDu1H?j4@!Wb{11|5Y<4Es$GQ$T>M7w`)HKUl1 zDyr@bp` zn1Aq`aIn4w3yU^452;<%^WFW0uH*#~@!<(kQI(Gr`yuKZr`2w}EpHEN-_>0o-C2L) zHHUx$%4EDNe+x3GHI#1|x32pwFK08wrS=c=Te>Z|hbi0S5A4m@fdCOiG5)h;M z@=1HE_#@4zG&Pf_8~sLV{v2EpmKgd7{}NFn_HbHJPYRJEy0s|rE`@iKtGAVdlx4eG z&k9Co*d(Y9$&ppmCr>$cI@PfDRq;_~!Hu9&V$W@Xewi@h1+LhI*|zfK5%4dm-kW6c z=5fC4+d1#ko62sK2xCS8+z+Kt??5K&k=nGPbz6gCV#kpGyZEwx;{Q@2Q&n1%6 zWW|r8h+wIU1mp4PR$-mCNb#tl=UoVY>eW1nhTHr%;Z*2&y`s_~rGB~=@y zM?;+tcx6X}rAmR}kIC*{W?Rd~^F6ilcUOajsM4`=K%G|T#T%$WUVjVn!43240<7YF z!xKgqnJp>CfZfDPmHx?0o~Iv-x24kN@DP`P-d=xGi(_3hZkVl-9I5>Fl8I+8cu4Sh z3(5PW>S@mokm-Ryc(v|oKs9A4I5itIv>N$6wbDQ92)q0FALwOE?Sp6R z5{iaLbTYv;vo2og*5lFJ=&_XI-R4;v-g?Y=Q$`Et`%yb=1hXRPWPX(bugH4bNmDW%rbbQF^t5Sz=1JMk`e*G?9!7li`4Ik za6+BfiOb7+{5F2>Ie2i(GZB%mE&HZE46$UxpBM5yB&T=Jq}=W3rPFowf5XFMx4jmp zID~$qiz(YR8n%AEQ5W!{3=HLptsy9Y!8xHpZ{C`!JmTHFV&}Z976I$WkN26{&HFx3 zEI*)eNe1tVd(ZecY&Qf{7=6T%!e7G~i-ezdF86H?s$8uOcag3+6oVD44}?VlK6#A@ z?)Ixyg~d`hFmrme_wzHB^)AOXRyFVJf)AUFt3KJx+jT&?(*$bK*nThN7Pa!2hHd{S z%moU%r4e|x4s~jNnnG{3847exJiiGeztUW{xji~NyF|hH{Mc507d;>l-?%)|#`#L$ zpWTu8^w=6W9fi|HCFoUpD>qG5Z)e@*yh}EhFvNYni@<|_)lO~HwYn~t;J$=!-fN!8 zW*KKe@lJNEQscPHroC?-pUe(EC8@};SM)p*+F_|zZmk)-P)qA!LHWq%LtoUnn`_Wq z>qxgCZ42KNG%Lf%zlRUwx{#BNi)_{WvK#2qvioHBxtCsSKS1%(0bLkaz+v)(lQvqY zt#MrZ?{dxM1Gez7(0xGdOv;U@-kSwO)Ll#clNYR&IohIrsuQ;v!70AdR6ytuip&e@ z6J|~BjiVB@zl6O9KRxFIymF;d9MvLYLz=(k=0gSX8fc%nG^3L4q!cH;%5s5{jWMAawrm8^s^A6ibB>vr z<_bqv_1+lR%W*d5zH&)^Um;VP>gWii@6liD^z?PaC`{PI7C|WFA{RA{D-K zw+Ab^`8a6g`L*^z4i@`;{gA?t@vzjH5#j!1rJ_ws=}MYOxhT&M;*SZhxWwKy|tT3&JVEcO6#ZJJIx%rbzv!vS4GJt)~DsE8DYtyj(XUO>5yDo91U5 zIUe4}Z$6pbdp2GZ`VFUs`MxgN@ndA2ek#Ty~!$pC4D`6D?jT+j| zc;%K4BrAwDC37=K&Z%A}B@}!cF9`*}iXOZ5Xc`LK{dKn2;`gY{h?AeD=?k5SVP#CX z8jkyvD+C? zyq>hJz}MoY=_HREh4a!2t$em8VLu9SGAB=!QU(pAy*A;Vpi6xX-@H6WG(W5`j05Uc z{5-8lNh!pCe-aj^vi4absu72vbPJyFB)Z}#E2|FCOgL>O=Q=;(`mQV!ZSMrzulP4b zcuin*vJ7TJ3Kk{H7MN|PJ?~KXt2KN_r8=;nti*B-XKy=wlW@2Hj`QMDk`gc)vEzygoViKq?Gk+UUki`>1MThwe)m3s+;g)glg{Rb54MlB zqE{aQ?A7JIt%$#bRq{x8^AO)Ui^xWruy$%%&1lr_l$^>~*Rd9`_{NETJCxUVe75*E znk02ko)bRBfHmi5^&CLtHGc}r*;_+TZKns(V5sozAKHHInM|k$`8XS+lHZ@+%j91B zdEJfr38@Sf3^v60^}Eko_VXXBwx9_qZ;Nd#EsrA@xTDNzMVY)j|k z1e|U;u0vx=%7DgpFALj}=KM8omf5=7QC;QHTbdQ_HPZt)o}m)hmFs6qt_A$}du{H_ zG~Q?qP7aXOeplD}Pa)0NFIppo$kL8ILR@ydBuMeOew8sPt6yhUi{GTqmDn`4Kr^-< z`Fpyr?|Z78?yz7btQ9YX3&EHU(gm~Pl-5MRYOaNWoisO2wu38kDMY7B=z>N!G~9Cf?fQN^GXq z7g}q;k2MLus4z;(mhdx0SOy*QKXs*o5Gjs;NOOlvB^Tmj9qUSdeKk z3Pc=V9QdKe=M(yDDJAz0Jzb8(5QhGgla@cfgWpE-%0tMtjY2epP+>UH<46Mi99|v` zWD9fd*E;(`AJ0@*74(k6JnB^)By{dk{rvN|I(%r~X2tkR9_9^y@tHGr4?hgw$lQJP zGuC}MU045N_QqRD*V6_Y*yux?MzjsKpp5=Xd|>2HlH@P6gpC9 zA7NI#Ii0q};1v5p!|`2~z-Nhp5MP$5-Zk3vM&qQ9Mv0G%adz7})HUBEf*4Z|5Kb4P4l>lHYhy8d}i^3nVo)VBsCPyo%uiXD_-DD-eX z80nLX{!h%EG8I4pm^GKgNVh@0<*E~h!fbZG7*3F*I2CuQgWirQMl@EA=vKaOgMO<2 z^Ir}1n)0ikp0z&RkaYMu#%47wNpd#%A81NNwd}dDLRxvYc+kc5IN<-Ar$M$1PZXMCxdo^W8}-qTf!lCgB026EKa}(8{0qE z+v+%hbyqhnS0vh{!c$l_$ws{7J>`=pbG(Y@XAr2$+SgFpSz!WS=#qsS#D760?(nGU z%p_tOax_;pFf4v#?D<)S5|!s=`_m%%JNmk>fO)3V9J15Uoh#KyXPrU5xMG|XG1wp3 zdCYE)83j&4L#vGf5m0g*1Uon5{u5e{5v@RV__WkfV%ja43PTSI`{TXhaWl#Nb|3AW zTF*?H+fRAtnq=)6l;1s2lq&W~ZFQbN`bUA;%Pr)#QfuLG)Y>d(gF%Ryu-dXg2sK{d=BqL>?yce# zJWgs8I;~#i=Bw$J{hG zqrG?rmgO#Qh`C@&A5iJ14^F{LfuT2;Y-fWspe*)>0 z14JZ}W)Po&0-T0=_LQgs0a3Dh)Cv#IwF+zk#8aQ;+Yb`xYjfyqW@{QeWvAK1wH7nn z80$$*tc&cP@RmcG6{RqzJ?XoF`cdvEd+CyQRMk~+?0>gZr1{>iT`Ir={$_5cblL3X zjz{8kOR3}mdz*_0&ugs02kF#SZj^Ab1aaioPk`;aHP1m)VNBka(7^?cOY)y_OKbYR z4+z5xwof^(L%P1eNE9g~b6vZ;V$7pzipl#W8r@eFVt7v=@O(AB88PAFED^3lQ`#lh zrIA7r5HgOJ805WcJJW)vk63-yb(1RqZ9w}#z8sw0IFDJr>d)DDJSYzOnuXL4x9MQiN&SWkC?j%z*KyDfb~x z!E360PJu4WYn+YHKy7?L)+O`fRPI;?2j1mow1*1$)uQ2ar#2X6Vp&d|`g_-}kZ16x zgMtA`YT^ca#dhSb)iHo1qf)4XNpT}hyJ93V7q?hS|bt+$zoC{pUZ`3;W2*# zobf*}VTZ;T$3bnsGMs@~6FMx)JL`V{ctMB0lEq-R0cLevjqb!2QgNQ$d9Tq;FZRgr zPuukU14!}0YQ988t(L;kRw%;}xCBK|#Pm7hyr0HCAN_`8yS>*uUk#s!FT6)^Zf zAG8O@C|UG9GvZ9zv==bP=Gv55BSl2o3jDla4sq1;Q22UN4aJ4s{q^*Ev_Xr@=db{{ zCo9hE^Yt88=zqhXhTpM2jAFUJ@Q;L3S%^r`ok9b10Ac9Ay%`zy{cGB_f7u82d9#_8 z^MzKgrtU-)D4hD~S1 zdRCcvBYa8JBeiL_EJA;sxHvn$_X9mK)~5Jf<4s2Q;}61pIR(_#Ev#CXNFAM|0!8JI z&6AAv75WEv@Nf1g@Q%M>sQB8-*I2b#4A!=n8idyXsTcsF&ZW>1#~9D8beio^3!elSsnNs!xu_v@;+5= zy}oSyH~8!0EAI|`An}Ka@*YdICv%M)8J@hT*rcn?rI@n6Re#4UHm@c8dt z_=9zQsQ8XuW=FcX)TVNtYFvL7G8kuf{{ULQeLQjdW_%O)*`#WI3;2b5ss8}N38+Ig zgof4@j%Ex2R?bO4cmM;CI^w=kkM>smmpof#Y2o-kX`8)b+Ugf!0DE}ZBOJ#8XN^u` z7zZSl=M~qLVxfmm+s9YkJ(2U(ur<`2sYX_Mu3JBo>V7fmJ|xs2lTVfHmfRRiLfG7P z5=J>ZW08yide=b<>bG7NyVNfOKrDd~3>5?bIp+fyC#8P8>;C}oN-4E(4_Inn4!%A` zt=eiZlM+u16EdLB8=@y>%$$Nj=O(@&_^bOXe1GuPt99YO7VDNL!@63>YYg_V{H~0- zRv{d5#u>6mJ%xQtbDR^3cS#-u=ZTb^G^Nkl#}E4{-p{Q3Q_}5qt!iB&!p<3{ji8Z` z`HLB7$IE~Sa6heoRsR68_Juc!J`Z@~Lh|y&Cc#V8pZQ>dHeWD~5Fedw`p=rZL;BG{WI_3HKixLJouiKvmXx;_*P2v4l z!#a0~rPL$5cl&O=dnl4|EyHxejiVf_UPcv=*6QEne?R(1i?!WzB#koQ&%%FqtsKsRWY4BOjer@n7u) z;_Vv3$3oDSD-Cl_npV5iF3Gx{f0%5YC<_@!scK z)%9zGac^eYYE3M0&$+PY%}kJ|IT+7z*11h@{t3_FUmt5XdX>kHwYXpj9jQ$}N>bz? z%AfVmhang-Bhcczy|xNfZzP&tU+^{g-18P;ij5e@-qBg#^lbdh@IS|oi+Y!cv~3#S z#9Ef6b*PrNxZg2i(HS@Gj4|07u01&!71aDm_~Y?n?r#%#CA@X3KZfC5mp1P*h+1O# zSkS3CjTEloo=DAo$$$R<1n2lcpxi|?{{R~G?+KVU39aw++}y}JDmt>JSR5Z**9EPA z!9Dyfej~QE`0Y1^bfE1d_d1@MKvf*z6_k?x_`x~tT`s;`?G)9%;y$^LlsRoHzsuD8 ziTKUq4N`B1I_#b+@kQ37VGX;VD(>b{7n-1mg2uUKA-GUIax3yv;E>k5UGbB_=#EOLFr-j#E3*BXYH-f4A0 zRKTIZZ1-{i0OV%Bng0OUzAG;d{C@DQyWcIuVa>RZbZ2#S;GE|q@n3C}VsOWQ3fip0t}-_t(~AA! zicpAE3Ce;%{{RohzXpCfx(|v!5Dq?n?MaCqytf|z0F`1{yiYy)X1*ctkA-!|Xi+to zWMkKIo;qWk^Ivj&EASq*1W=fKLv1eSX8WzdCnO$w5^EVdY|dD7S+;*dKeDcY;m;2I zDbS;W?*9N+lKGlTmv%s_E^y%nG8d;(O?_Dk==f3v(hv9tHS(A2yWxuu5Bx9C;J)!& z>QZV2t{6ve@) z0+23n4mec*02;HiMPQ)Ebi0l@2!E07R94$bkZl^QfVcfIZ}F*xj-CJuthpnp@`(Pm z)ARnm%#kIQT?Ii(snIR+P9OD~LJm$N$wbE7z$TtkijNGbY zIPJ}O{nnFjsCctZ5$gW{X8y%bKYJr)Rg>jq13Y7nNv`5eI?!9(H}<~lA?q7-!S9pw zq20a56uEXEqUrhsI$eZeu4D{>hEYF@pYMCtzu5FfV0_z+Rr7z#o)V8%_0RX zMa;bLPh5J}^sC}6Iter#QZMa@qccQQIT8T7xXw281lRLB{{RJhj9dQF-Wh}KD|ssT zGR!lmY;G4a=kF-ZI+AXMWd8t{^+eE1>ll4L)Bga{WPAbOH{JcHG5-K9Q>gm?0FR}2 z7X*kV0AY%rPdxts`uN3hUIBGutL+%v>OPzw^NQ}}*khJQ&ea6Beg|IM@m~y`uYC`= zoh8h4`X}w9@zddEfhU6h0Jg66DXt-oJ8St`IUGV09#X3z3OF4wK&@{Le&7E9v>mF? zEc&IPxXDDCOGsSpC*=ef$#y*QcpP9?o8ErPza0E~A@QA;!<}{w97hvC@>?>mmoWX` zln*jx2IgQ09qZ71G5a+5s^e1A^tt{X>oVWWe6+UvGpoBq2SQg0yz*=0@z_iZ6R8+o zzTG`F(Rv@MWqkGRPOV5QD|_6(kD1^2d;SU|@yo+)sN6xO=qzy6g467x&^h}*%-gr5eVg2#l%68}p0&+0OS+rJKMXGX zJ7s4t%OtyU%*P4>hAwl^cRrQR+WyTxB-J#lE64CQucjNtS(Re9W6|>KfLz4KlmwMi9AoM8%_@bgB~^j#yvYp>{OuFGp`ziC4Z?8^$tGpYi_DJ4~S^)>m~ ztp3a26{prevb+QE%URd8IN03Jm<)bYU;r4rfG%@@25aF)@ZZ2)XW{<< zgyXim(!3#Mr0aImOp7d1St;724hcJ$k`G?B6!4gDtS(747Z;?P-8JTUxzy-UjV^dY zo-(uLN$AsSYxVLxI`{Uw_`7t_+er?Tnppn;SrXc(&Y8|SWRB-1yu$bPj`+Ez>eiZ! z8nwJDYjSQpfdXtf&KCeL3OOG2)!Tl@pR}!>lW~1_;5E3pwNhk6x`l`xNx^ZJ1GQa; z_C@&p;A<~dE7HI@=LdOJ+zz%&q#dCT$?alEkLYZ3cz?v2R0F(+d z$qDmVXQ6I*Jumwb~gsmZv~{XMQ~ytG^)W!+D>-+b6lBb zPVp0*6y<2itr~Y-JHMIdPZ@!YT8-0%nu}Vrw%0{(y65e$!Vidl4L@lw2S(xNJTQc;at{-Xr*Go+$8kml={dKB77T$~j>K>GUE>?f!?d;_0J)_gCjY5Jm1D7Vdw!*qGb`L<)ObI%>?^FQNf z!tadG`0vHuB)<4N;tQV*YZ`^aT51v6yr}94IXgqLfV~OF0=LO>d15gYXw_0m4chNr z9*r}6`nCrJ2vwxu`O?z*ZMKf^wsziIFICk%RIel?Ten(3OInNL2_YdGIy7CS;I z`D9>uBn}4#zH0rdK0W@$KNmb5;(rc&JNQ+2-XzxTWSKQVZT4uPmuV;EM^F@d40~6@ zI){dJZGPH4KTOcBq1E(xJlW%Topy#eUD+LdeJfu}e-UYxch)Dsx5HZ6VYZDeoF|KJNA$kEa!lsarpX{54^v%YM%K`u)36Tw(B4 zL{aCi+zgT4zPZV#ch^Pb-JdPVs^vL7Ys43S5j<56r)>$e(lpr2Hn8+qZPef#amhTI z>#THHe$y_YaU0F1X^;t7o2CIOk#a{Y-F>oaiqbSwZ)>Jn2;DAq8MhKMkc5zn+wX8| z(lsqdQPgj(z8~p?Oi|vGlDe zmfywy013*;q(mF#xtP~WqF+mWbrRg#_#WARv!KVzHSC)}W+Zf0B>fVw zts!;uZ0=_!>stcy>9fd#aBrCP`QI#lgVwqk;7wm%@K1zN=t(BA9Cuo*#Pbt*UgZg=$HV?Lys(uzGc>qcqqmPsrmj?q=yhWk8Ez#fK2RpZjUuFp)= z?z9Wb>8Cz=s%bV5rv#GNlOIJS6YeY9S4y5eOGDBkfB2VqkSW{K%d%gaJ@8~FABAU9 znon7ONO5;BMRRc`qi1(^plcdq8QBzPY|?^=quqCoy)j(=rexH$81!5DVn(-~MU_*Q z5JYlGJaZ(c1LIlNISgqC?k z5yUueE+@dxPrS{Oo^#D%N}csz(=JkdO+9-0%4x4`;=D-o%`)*(faHsKP`r=q8eh*f z=ep(VYj8oYU8;wkVe-Z~{o|vY4^%<4dJ|dxBfDqS^$UG2)s3vhY$Pwqa~Tga1L?ny zrCz=V`vM(CFO$o3wMc-*;$0+{2d))BT-U2cmn%=H!8)ARJV(Y>mlwL_%<{tXyvh)$ z1%ehQYLkzbjyW~OY91ExZ-yStHGLv$Wx6D_f z74?nUeZFOyF!AmUjBX&1LXm;ReG_{ph4l?vRkPJ?40l?jDFi5DB_U|?H>oIaa(dU< zP|FmlMoly0>*FOF(u`XDPsl0W=*kjA5v-gNSo6^H*cz5;Rn`S5jes11z{WcI^slu( zCH~Aa==S#hBGaO}xYBj2kQ(W+v00b^MmC&ej+OG~i@Y5#gD#GfsYm{hR2=R&DoMvc zG05*;HZKJzJM=wVHYybtD%|CkHVBxI62pOmj^EP0*6@k@ABHrWsh`Y&p$qAP59&Xi zd|6|*`)+^Hl}H&q0nfP3EA$=wKlVQi_-4^Sid3 z(@{69U(H-@Dy4di{{Z@{SuLY+AZ2M7jf9iNGCq}B*Tc54GNs+Tftd2~93RAw@U6Rj z64P-J-^mOryapim?UCtT{8f)7IP^r;hIr&xLbyfQmKX<~$G$61Pq=Y%=2=x)GD~jA z=dXS~n5_iUZ8k)TRzz+N~)k_TIkCcx=aFBG zx_z#v6t43C@p3lcgUx+``z2}%2gUyY2x*s3CY5D(a*;csWXLCh$E|pIrVYxQi#?pa zx{T8Aq5X^ag*CqrOfGJ`spr8`%YmLd;~jfvHQ=5+@SdqAnL14l`F5~W!TsjpjC02o z^zVawCmdcF(G8U5Xgq|&6Ov9k^UX`*9|pFjwy0zwlRI&YgX(kX?Op`%e$qB;bEY_l zPIpgZ@VCaE0vGQdnXc&2U)s!BCx&>zkFTR-aC&iH&XoTEvi|_YjR*FK_=%@@bHG}! zh&&Dbp?_qzu)t)D!*qnM4$=;|CS}y=&jIZlQlGNKzZPi<6E4JGm#Wa7}p* zrTZh>8=}_s4{LsfnG7$3j((um&*i*1UkNIbr)H(mzr|>K82sv%A}~$bQG43|03-Q; z{gwU_{7dksg7ps%c&ETR){A$gU$em^){`2IIV;; zNCSzjZVP7xPvZQIHz(m+dpDsU$kB}(ELT>9ZOH} zb7=RGUR+3JWtK7sT>QswImLVLfqn$|^GCOiT_W0Oqm@SZ%zFXvoSgD2lL?2FYPO9Q z(%)T9tWF|S=_tyyZub7QKc2gv*_Yzo&yRj5Y5o}ab$1kAJkew}*NbI5*3n%BSC3=0 zsFC!c%y0^sV*=8@m}6bp(0KCz>I{A#AQ5 zPCE+yI`B_~J|@9zBA-cAX5gMT4&6!Tk5OLLrFcWdkxtSGo;e8l$T&Iriv1#_qbh1D zlTCS_2?tU&9KEDkeoWSYY_^F=aH=tvLJ1u?$jw!TC}MWl;TmSiQ}5LMOdaJ&*9H%=Jssr=Z|x$w~}Zjf+TI+6S+?q9kJJ? zMAF?&GO>r|k0pS?I48An@xiKF6f&*EQl~p#u0FlT)~?5SsfkkNBEm>ipe!(P!8M(k zq*~oGw$tH~*_|FFon&Il7z4@lFHZT;^dd;ZS@@}+TAl2Ra^`x;PlT!N_$Dgt1w(=1RkEe zAEhZ(j?OF+w{F!;z-h8?4)AHka31zP(UJ`e|2Fj zOmDO(m0T4dfO_YjyH(8@EiO%`9>;*o_S^ex*=7 zR21)?p!0!~)0*_%CA7FME_D05K|Jubz{7*I^yFY?p0$zqh}ZWF-)EU(xn&tA0|)S| zElpnjC5bK0cK{4z4Zr?rn{&@ARXm4kQ zN7?1Tk#n_|Am{vg)7YktuG(v)nt58;BbHnffHJ^z$?wHSESGn%lAECO2g~LR5a9P2 z>5qEm8(h^v5H*Zb#^;CSNXJpeYTx#Tt11w-mf^wU56@qq%@J#%518zr)Fgy?a;7B% zzf2DQ0F7I<)&9_~uMkFz?Z!tq>G)RzE&l+BRijphHCH=-y}=(}%A~iqzCs>J2x$*I ze~oF&MKLHO&y)c;JmBXXS0kv$GY>9yX;M%@ z@}H6T3d37jBVz()M?8YWslIjg}iU6S;?i@FtXE#+VVU-@Q<5DKG@YVOPO=;3L~ zEvHfZa$RNBFDQH~=6t;3vG~Yh+J4SD!9LohC+96)x+@=)-|$n*y?0Rf5#hMCo8+0T zyh9R*z#E1mlW7gcL0)=S^Ye73%i zs94NV$|f}k?bX>=1g-=Lv=VtHs^5Hh*L+_O_Q~+2gonf$rQ*GtO4|dboUplJ<&m}H zA607kBTrdn{?n0xm0+Cnj4p7z{{V%3*YHo__Lt(HfjT>1yjpG5guW}k`$7-jH<4lr zD`eoPJn`vV`BbZ7IpZn47wV3ThdQZ<#d`{`-M2&YS}%+GRqXI-T3^GfhHWPEPtdNm z-){0uvCQc!gBEtLA&;p93i}h`kB&TB;-3s7_@b#*H`JPnVV5n%2I zBiM@Y{{V{r00yo87I=sIb5Akb+IYs_!_rK!uprKwbW%u2>+>16XVlkM`!;JyI&89k-EY%Q#9mBW*q5d5zg+&INz zd_Mhwd^P(|YkoEOlX3AnKZSbNh3zG}TUo95$EaLdDIkNnL~Kd`+;foKb6CWeU-<;PuF_Qq+7W@$>!`cZqyUdE>1&SGn;`j-{gO7ykfYjwBXB-g}&)mcV9c zurS;)@6x`e{gl6FuOEKSH$NG!JZTJe5%`wQ(^1p!VP_Fu!7NWWk$12Bu`+pQ9l`Bc z-a7CGt>d49dOne*Y3Et-7saR6AhLoMDJPmNW)Xnd8%q(L*#p+L%;+T+lvVjszpwTG z00803s?_C8yDoJ0R?^P~@cRXxC7ii)Ak)ETEhLAsB4) z`iknbODn$-+{t^ccxy+uu+jAh;xf3BQFPG_(cH3mxsFxN-Kut-p!YT9UkrW({D1gy z;(J|B#*cFsgtU0&w2~*(pu7kq94^F~Mo>;U$5CB`cG~WvHT!saDNK-SHhy{~!o!%9 zk1*h}?)gv5z4~)sl2)fUN>KK(ld`mzO?ErDr#7ckh$+cXY8;W$OIGgnUPm4AGUg2{ zM$v4%AK^_0S-bHMg|!Vr-aCk2VRpF0un;CWS8zxtl|4A7_(w*Y#5xwAtV`id2T8xx zmc_}I&={Sqq70lCCv-X5r-SQMJVD^!5_~SyEv&pzrZ$mzXP|1@j8RB;x0iD{k_Y2B z4ms^yJUbLSA4@V_=~{-0Bn9xLH7Iad4hJg3aR<`An=ONvyL;Pr^Zx*XzT@Vz zEJwVhD5V=|qVBwog6~W5Tll|1bED~+CXIJ{b#XJrXr5rZWl|>YEbHi>P)??V&>S8G5hV!!8qp_?Owm}AHzDQ ziu9{1O*S@`XeA`VgDk`^2OxqmkEMM6Cle)_(Mj%+$43`9<6{=|cfQ-|kIx?u{3=aX zTheZB=9@^cd$<;BnDPFOfrejW09c^pC_P77XNvwDSg(ln2hr@Lc+JG5N=XX%cKP<4 zmGeIS)6+PwsPzwmKM_k>wwdAUsqQ8_WQ9gbu_qbi@W60-cCKOm9(dP8l1r=44ND|) zq>*j7jm8c-sTlc?jtI#1uh1jSzcz>0s*w4gJV)^8J%zN!(UwBRl~)Q!7$ozP&m452 zeipotNF%mSGDGtTNzQ#i9mw^sO}x`}?WYzjOh+40OAp7K42sI1LGb{Hz3gvouneY2 z1bupb0=7?b(%M~^?k?NTl2ZEBCbwuKT5uetX11FcVG@PaulE^Tft3o#@+F&Scd z=Yx^jy;W^BYZ(6k(UHL5Fzb=^#ZbCUWfaZ!XO!pefPW5o{LLEL?TVb0_Bfb656z|< zcr4?IJhlNGx`0V1l_U?B>-?)~`{Dk+)^-uTrEZeLD@o;~tGOHz^EL(uY;?~(jdj{& z+6%>ogh-o=uyN+bQP^>UK;Tz2@awUoY`fTl9aM9V z=UR=fYK*NCLS zXE247@yUun*k=C#WaGVUgvPp0l5b9$6O4pwr#f-g`s?{F$K>CKJP+bcKS8nZeT&OA z*NwGElt;H>7Dd{Joa7DcbLcDU>;C|N9su~6;q4#6`ftWdJqpv|)GhX_86$ORE}eju zV#IBBkn{>p7ZvIa@QnNq(XOEI`yUl+njO54VFl`MXr0M2DIBf_b}1ZSliIwWN%3~S ze8B5Jvxc8%cjg9ZERq&R8RsC8&(MnWs$$*Lsnh29b@aLA(89(~_tg}7Z)fMxt$)n= z$My=;ei;7%!8|@aKgX-zAIq*mZ=_slZn4=)%Byr^D#7uza)2KFyVvQr$G`X~x5Cfc zCLaO#E5ll?_|?1>EzY{j_F}t?Q5-Uo>6V4C%0G*xeh6wFAGOwhv|dk#@@a-=Ef6-b z5J4w`!T84*#(5oU%sw1w9}vC~d|A;vVP~LCac`o_B&xH3$tn~eDM})oTsCcmEP9riT|_@lK#Pe9=v(+gH8C8;ctuDnAY`Gl_$0iiiIpLBk~#&s;a*x z-T)W?;=eKsa{LGJN5pT3viN@5ZFj?dCc8FzjEy4PM3KmRmqtfIH$+s7dm4;fq`7O! zS+%NOdOb>|8g3ORLP^=$?`v+Ix9Q)h=s)mKe+BsS_H*#Qhw%Gd(Dkndc*Dh;Zzi_X zSgHFM1PzL$uGW)`f<{3Gyo2CQg=g@fSX*kQ;!EEZY0=%dM+jq`2=f#b12|V+y!ER8 z02ei{7JONkM8EOQy>;RV^w)$$Z|0I?68XE@Fw&C1A58n!_2!LtsomM$$$CVVl6jF9 zAOVm;2mO+#2mb)AT4AMXKfKaT_x&|9#Z5}ARVR4GdR_H>Pp0MZZ-r&Ox4T2+@c#hdK8W=TSMl&aZ52M&C1~A zun4b~wHPd?)gFBo;%j>r!z^-;8BRG~3CIncV!00n>U#E>dE)sromTTsku_NXYk6Ka zJCz&w2+mKbry6SC@LCGB8*61}+WuZg^i^ZdkZqme zV#u2q2V#;jRsJ0DTnFqe@pHt!A<;Zf;g1>kr%~4R4Lo55cc{uiHzpBTOuSPQF={$j`^40f1j zbNlFBm*oJEbBtGq8@)GC&?AXFL#Svlvmte|c%vkMM=c^qHm>Z94yPHfx4t_5*^_?L zIwq&CYQ6^WW|cqLmMP>`Xtj%Pm=^NnmG{jT9PP@0P5|p)Bxyba@K26nveL9$gW>-G z5ysJkv6-_S$svr76A}WjE1jo?4f2vkE6{ePpMm$D*O&IdF#hgYr0r;)wVpy z;+^i@{I1F$@T)!y>T)7z_Zo@wI7p|zx>OnLJtPI{X5|oz|36SUU)k9RkN{# zB)31>GcpOwU5_>HzP_$@i+Qrr4xL1-h4IqC#AswyYP06e`$SirYndRNf{!>K`QL4$9(6fYS+<1|HgAx1LR`y4d7 zU&9;iS@gl+9RXvv1X`Hj4jLfed~Q;_@D4o>V_z!%(6H$K8P)V_-w0{CZits2V!$j^ zWO-l>*xD6Xl6qu}XEpk1;?LQe#@`RV9e7jX=ZicGcdYm~#uiCFn{lK@*JdzqS}UD_ zn%Tf0fa49EuIl`y_`hil_m1_8%Y8mw4^O%(Eg-rWIYbCXc7;|M$sKSFYe{Q+Xn|CV zjJ4eGJs0hlnw(p1q>@|We8(h`NzO?=qp3ChpZ>vr4Lmicf5AMzWses45B6vHcjLbu z>(R`bzOUjPB`@zJ5?{=MMe@SP$r=sPIep5i0;#X##>Unk2N@;Qz_`|KV0D5hoDmq6 zS$DGxjO{rC-oLaj_#Ts!ykMv@V=|7CDUjY6GE2ArQBwD8HvZrrwk4|cdvT` z8}sYX`8?Vy+fZ_i)!Nl*vG*6jtt&^;KW_~YEi~OTMZeR&7Rw~i>2Zi{x5;}PY+_tw zMhGE683V0(Kl~N*;v6~$z>kO)lU;?9=S04LDVt}Qtc)Z)0)9m#fzX_D&3u>pL;l%b zAN`kqZa)S5NxQR>`@%jg_;3A~&1cIYYySW=VOxWhjE|bXIsX9Qp#K23kA=T#iz}@s z!5Vghk~tk(oAy01N@^(!M>__Bi^K{hPCQy|mZN{UZZ|N)f9$ zD8?~KYLn3}njeOq4)7m?{5ked5l1$u72cr%S*0^1mh%Zpl+0p1(SeMe#Pi<0ANxMW z)zbG*xG@C*o>Xju?UBdj`B$WPLtC}*&Zj4x1aey4po<1Id=5DP09wA4PZ@Yp zeKD=>{4{PLXmG6%QdsrC8*n#tuTpZA?`;p4rxh#nJQ>)PeEv1z5<+fAiw?P5pZxbPwNTZa+ENhIYS5Q|N#d_wU`!&fwhBdF+8^<3N zbpHSaUR_&54UdN=j^g6>Rhi^5OC~aq3B+trxyt|;;1Qn_@CS~(P2jH+_>=oI>5$5@ ziBeme2red4%A{gRl1vbKU<_BVX?o9#{AuvJ_K3gNtYz`lv`uHLYI?2D%{`l9D7te>+cvac=l=iz;s%+lcyjTtwF~)m`*uYhbXjIl z1_3FaMlsW+Yijo}-*{g7=GJiWvBA$6JaL25{Aq36#~7Lmk>s#e0ox>#gT^|ZDzAv6 zwp|kXSXasujm$p|{W5W1MU!b-H$G1@l5mqg9{7)OX&nCmXSW5PlPC4BSpA=2j^jbU zXj}KF#N?jByj#Z*kF;D!UoC@2MPQCvCPfGfndTz8=^|ABN z{teN_d_^txi4YN$BpiM|{F?d322Lfu|FN;1sc^xz-s zUq0Adt@n&{*b+>-$Qbe1bJn!Xz6+yFEmoxNx*wum3h(-AX%)l(UmdJEc`3LVY&jvUBwQwdLAGZ)Fv%kUy0oAU+54C(dr7n#6x)WAcJuW%zmH`#@%(B=*cC>fNwef;- z6tOtL8*4jK(flj_00_pT9-XXO&1rda6X2jXQOc^|EHf1^7}`i>54F7s6_sn^`0dgq zxzO6;IltC4ZZnK?fWY8^oN#%p$hGS`&)iRF_VOd{6GgWSI&=Vl!`B$DNnxGtcEc5I z4r1zfd^+!Ar{CQu)ZIW`LfZ%&00Hxrh}oQV2c|2a(tJCsSjHy)&W2mNg(&6_p>R5% zo2RHeR_}>*e+u5&T4_4At~3n_?F!sUGonc@+#Vlj!xPsS{cDCl6TBDU4JP|b(ELp{ zvp$_N?2246Y``S}`^4?&K{>8E(VU+uN2`WV_{)>q&WzVOZmTYdai(sSqfg%>Mh*|n zw-KIs!6OHeit^=-8|WvV7e$KTm&|CWt?F<9T#`A!=CwRe@$$!7(seBxOtKywxzr<6 z{rAfI4^y?mmJQP*wRpaxl=lyrb z_P5Tq!ud+~9X_WO^N)=68N55<0k3#}S2mXy$++!o0&~tl_3A6uj8?bY@zpCWPt-Z# z+(}o&LnTjY*U&CxNhY@Bp#+Sd^T4mpj|P6yI?bFgTWdf}hvoAZl21-XYwOR3KM{0~ z8no-CUU~CI2IV|s@U8H(UeYVf;>SK(QuHvsB{IhMP_vRt9Ffl-;a@XO{#K!FD!BdJ z%HZ_m5udGnEAcb;Qp}~uY-FiDbJOv!maiW-$?}O1IA8{UrF|}GO-i1G7{{RF*`2PU#_u)>b@iW67G}R7={{RUK#VmJDg`@dK0Ac|v`C_;6c8uqN zha_+B!Mk?3;&7{8(Ov%lS4aQU{%t%3;OiKE7kCz1&lX2%4E6$3p5TEZ}C4!&9cnBQcjgCO55F;S}SS# zj)A1dEK=Ob0=Z=^@@{53hy&Djub@08-bRmOV;p~Fcyi@bZ~@?cKaF_jhhmRT@TQqB zmJy{u#QK&ex#qn$MZK0*jhFXv6wl4hNI#jcxWUo8o4%K4&E`?|QG`<5^b3toTC&!3 zNxVKA`*U}dY2~i@46^*Iuz!4$^7ZDutK+}H?-+b6{hBnLL&wQ=rFf@Qy_$QCHtdls zDzV@T+MDRt?Q))7;u5VJGcFhqcMYeILCt-u`%U<}#QOK_ zoi~JhZ{oW@5a0M-WH4Mu1GVkZ2*Y*6?%CirFahbwtTS8=CR4)Hr6i!HxtH2%`X%H> zPU_BeqfSYClD+i0w%&T%PNzNK9~4__KMejHX)@Wtr090q6})mJC?oS-69z^gZg)S! z?_H;Zt)%hyjAqbYWbp5YCbx;LAW&XeB!XX)4o*Xmc{#;=uV*L38|x2-UKP9egQe*f z1H(x!pA=TDlo6;RIh>5Mu_uwh#Zhfz#hOH#Sf9mFO@C;zw2cBV*ud}=h7MHooL3HO z!OC%$vyUr#b+)bF`oEFqV534y5f>|2U)SDC=ehbN;Ef~0UL~^eHNJ`CvtyyH>56X- z+(;poxt`IY-?d`j`B#*ZG{`0L_E zs=DWiHD|U)k~qXDk;aE&A|^J31p1uU^q2bt{{X=~KV@$n{>6U+z9xJ_@HCq5j(l4T zmor{{vf*ArXOR>#tAVs4j9?66ynZK)KeJ-1H*RHqTRZ7~y#t5vYNa}^YU=&`-H$TT zKV+{85#sL?c#GpFgKvCMt>ntqC7M=>9jvgzn^j^A6;~M<=Q+)ORespoE}^A(^T6`m zX|h44+-osKZz)2E_?9ob>M>u@m&N}8_$ROIqv216{xO%sz5~^)d{%5`k4=`_QMxPk zr;L;#1f+bp4U#Z>*Yg$oMfflN5sw@A7s0Ks>NWbQA z@}6{d3FXE~0i2Qu9)OzjEANN8oGGd=iM$~mogRr4(M#q47dR|>H!gp@--@7`E|K7^ zPC2y?h<-G+(&Sb$$6=|sc`$IJE^*$y6H@RG!oL*hpK9>$#s2^uz_VCfNqc8~eH*`< z5^jtF6Aqo5(~9>o6H$`)pD&bu;GTsVa&%=;Ew@g`&0n%Ei*UaQH9bE}($y>>)o-IS z9AOc#Io-y2>-txL9Xe=!C42_ZZ`f$i+IW%}T2~nnfiT?19dXx+`;Yc0_$T3i6Z`;Q z7i)hM{7K>Ibxm(j4{fEqBGwgvf*FK}Nq#a;dE&kd@n)~Ac#GqAfi&+Ad_%bL40c{B zYi%o0xP~JnXk;pkRX|s4V4RBeFs=_9Tb1p5>E!zLu@l5iPX`$-oOJKDhxFa!uZABH zFFb$ZeP6(SKD+TJfadXX~Ml{;ez7-c*FPAl@)_I~&W<3HLX$3M2M zmY=EFTgsj~-d^o?OXq_*EtLjEA$pH`_wNyW3h}qX*-n#x`)6HvbHo>0CAYSHJ|HCA zRf0+Lg>HWD7|n410Ps)G*$c&A9K136Q~XVf_K(+o8S35*@kIXsXrD^9M_bw8iR5XU z_mQ|~ncCJ|p}={geLyW`7j? zJJKh!yG=IpPo8LT?iI!o%&*-aygHECKW(oKe02CV@UuvRLrWb)P4T^z`^DzTATZi2 zodYVWsV8U{KhC*nQN`28Q1>pHh2P50?r3#m8DQy6Rg3qP)%E@>+g-Iib4-I&({+tB zTWETk1Q)Pf->Z{B-h2`u{9+xXDW7) z_LOMVqb^4z)Siz1dg^{{{{X>Nd_{eG@UusfDFwxyw}_zFsE2GrYaPIW&Uxdw&3w!M z00i2zvG|+udspx#yKNg;Yd#m$?cP`U1No4Z@7!_kUtxd2M!q5H*Z%;sTso|p1Xd?o z*DQj>Zp4Sr2_w64(8h{XfzYtUesli7lK9V1{iQrNWu|G?R}om*U0zQIog#^1@>}F= z4nrJw%>IEPi&KW1MHc;Cai)SBOl^;^jFyW3G9dCW0Kx<>;!<)!0W_b%(&d(V5#i|c;A_xlI;;~MgtWR`(0TBmYtoTjtH8Lz79cvMSRx25;TP+8gFbR)uzV!FbA z-Gl6{n@xMhp}`07Zl-J+B00tm2$eY+fy6iMr}0d^x>{C$<);|a0G2`OFZRJz18ebG zVghpRYQ#nK)u@$?_QNbRnF%n83L|j2(M3DVeK{lkmgYX8#-o^G4fp0B^^@sWsXm#8 zjU2-s1E*ZwKff~w?O6fW&2WI+YlGD+@3+-R$x%9&Cuck(l>yyg`|cNuWJHU0d>3Wx zlK5XV3SP_RDLE?lRLgv>OP;*+Wx}})mXC-LOCfkcw&B>VJL|D#^)naT-v=Oet8i<1 zbD*4h=}E^cPV&ZH&Di;cxK>~Yakt$JU^VAvG#<}_21kz-J^L9l=poYk6w(U_idRm7 zqAR_2EN0ICmW$SB@wmtrUNqe{vEw`A_uHD)A;RbYCVORvTzmH_iR;KEV}7Qt!cSzW zR)Rn8Y9JCDzoc#2x$2l*JZB$8*LfIrCR$JKgQ~y z+Y-?--A(Zs{*ug&(cDDZzDDnc%BeT>iO0geExve2sc5o{x2SVt{-Fi?_6S@|u=T+&%ZKX6C)`e;f`(3@ zplf00BHT+y-eh4O*s(&4Y1aBDC4)*$TVK%DfJ}*5jgvb9^`EE81$3HlNh%%`j%61^cFbAt3g>{j{VyyH;g@+L6{OKD5dmGbD zwE+d(*#lr&cK)5~E|3_Lw;B~8biSmyuwI4<(yjVdP%|HPtJK6L$3rJiFSK;;cyQmf z9G%t=jF1mb*IoyHyK$?FWuj8&QYD8qOt59l1=7|dyp7ao^2%d-ZOWvx=oUj~uF*O7l3IH|UN@S~cF z;9$NTYDxC)PaUT5xAP~yxudoP_b54iI(5ROMQMqCmpk(aSH0{fr3GiVu#twsLY{59 zyy$RflD4I});R$0tKq@9u?DfX9-urn5?`YM{kH_{4rTbb?5CA@sN^!^R0s+&lvfzI zQNINY4`s1e#r)j3;@h?~TMc9<*(ut=9;^&1Ghtx~BeX_qA!&CM3%ylkxRDUL&wt49 z4G)%&K^%f?XZY~jmmx!_eFLW}z+4h14rkrF;?yA)zoZShSie@mjbyVv))GJ1>Hxgi zygkDpTSA8OOqglNc{!v#g_a#h=)!Jur#7Vajd831c=_1!orlpi*Li z8x88jmS0PH84e_m<>LkS8zdt>eNl2J`b@Ibj~fJXhKy%ZU}_670)4|hpUi{v{4=Pu ziY*gaiE1NpkK_==6+V=##VkjJ1kgkwe3Qtr{LlI3x+^r(Uawv-3t~q5iNP}5+v^p+ zCR`Vo`Vh$=sWs9RZpV0hiz0)-;t$XAg9@uxc*%08~-O2>O&3FPA@ZhWk8YueJi_<%M0z$;^R2T#VOLJ%2uQWze0(29eiz>gK(x zARxmM7hx$|U06cd+*o`}Wmq3WzWztBYb1;hxYlRGo7{TTJ~7lC9diT!Bd~n_5Arha z;ql7Toja#8LC1~1B)Gl=Ya*;7>~($A3e!$uW+n!)QqwjA@Y z_u!$dAlyY4{@B0%8#pAxU3gK zC+vx3`7*Bx^vvQsP`F}#4I%COIrE`6S^(t`_QO;q%M7wgB;&!#jfrEBS7P6O6klS$ z>|Jmml4w-}`f2}I^_4Fc4A{__E=(TGpsbBa4)1rnI090Vx@#9zUY=%bYjeEW2cV4G zW9LC*8LJVf$T;B~d??!Fj48BAagczt+^-2vvHYdxH@>7Shd8x>Gj16)Cpk?Fs$@<7 z5UzQR=_-EQIYo?cd=4eW34~0r3nN35xlX~amB%+(K>c$Ki85|dxSauEznU30#2@_ridOuUWA+wB(0K%>#CQyRBi z{|UGma)6KJ5d_r2I?HlmfiyS{XZh`lTorsU&zEZH2na`m@sim4dl>Hx-LIhp$2F8Jy9T=^ z2Kz{p$e{!3M8-$Z<#2A#F?ISacGWL zkp6OHJOE}G4;VJR!u6~w|Jt0i>S&j**iN}hS$)CL}7m{;y zHL-(eM=Z@rFY{*^D=~btxWG(p>o89EsHHV4>^evG=AL#)7M2+UDsu`YX`x=!2;BmII=bxW2dEPg!=lhPrgg!c0g+=Gag{`S@O+IwNDBgvJ_dKJPMR66;^!$_$7;R;(ap zWGmma+tk{mpfMU4JI?nUL`+d~;EQMZHa6F6ZY0Ei6|d};?~5qe_xg|E_gr7)xJx}n zcTjsqsx5ZQ5K3{eVaECNKd~RPt3&Q_dsLFI;`_OuV=en7PR>94`Sh zr%%;k){h0bPOL=YoU~I8yK1H!hyq_KyC)7KZtRC7)QU8=ev@_B^&zlD|PN zbJX!2CYFYFKY5MnUIRvoAZk5G_fz8vdp_z359)UXe6-3@Q173@PcK+H@qRyp`|7XI8oylYd1FMW6H;tnU7xYA_I-JWbtT^kTU)E^gb$vmXwnZ7Rhfja z`L3>z>?h7I^wZdw2VGm=Gfz-QA=gK=$yZA5t8tn`!m=Kr~|M->O6kI+rvDfhQ9k=K(OP~zS zepnKEG(O0)jo<&T=T>l}9O!*nH@Gj1c<)rr{p0h5ckA47H$t9kdWMcg+}YZ}YpZ|- zm)qWzDo0owp9NSSFQV%}3O+a|HQlns@=7Cypq`mf-*ZHtHel7i&(+e*g8~s*OYTQv z`pf9U#}SbqPo*~p#&led5py}0p6KPW+o!l$WlD5gZ15_A0X%{4qLaV&W9DgS2oGwG z=reuU!MN|rWUnbzQmbsK?|$NVhSh2Dvk6Zn&AaqWj!V}N+?}3IOYC=T$MZBJ*y*Bl zCu`fI>`Ys-{DBtcZyCR9AZ;TF=!tWFTx_@C<4sXUfQYmZX0&4zL;}TSzz|sbJ)t{T z5nYp*72(gyzv{>#DmyN93eQ4utuL3Sg|MI*x`J*q${bujHYWZ1$Chxo3^m#2ju!(8 zg3s1Mdp#mNF?9zYFs|kE&X-gc8XhldQoiSFCHV_vXKrTV!8(l|6qDXpJ2E_XM|e`; zj(7PaiECF14+&psTTb+KSOM?P^&C2IUVj_^1D_R&fvY2Tu!MLeK85jdqD5O$Q%-DD zG{m{omc^mLdEwI-rTV(w-kAJ(IgCNu)48xHY9lP}-<&u2SMXk8_XFiz!+0fa{~VjP zi9;XCDCr-`hHbr>v}7niuWau0_-9uUFFE(7<=c|e)59pY82QoeFQOGC+FNa6tv6RlNNmxBZh-7 zOM@EmQCVl>jc`X|`V--c5X-cYlNcS^tIj13U2=y)NK0qsfJ?z>H3rloFk1RaJFLkowz0 z+0Eyx!JZbEO{sVTPo(05BEi9RB`croyIF5)!2ZVAa`>}vzs0xRi%dQxnSao}*R{MJ z6niw%RIvOTlm`jh>ge#m-|>W9Q1;K$EJ0-&Qg^zhe{6(X{2va#i;E{2s(MJI6efJZ z*~IS_k!+=A!`UNNu94Ft z3-(o3pMAP%(V(9vzl4S0zEQdjsIfHeq^AvSf4O|#$_ic%E>ftK?f_8C=fO{ge6uHZ zM?^l>2@(>lK7a`;)ZdPUvYL>rlig+j4|&@f#9EscT^V{`DuX(PRiol#Mr(p9;VWH~ z^zdZmBFMIuq4eeH6ZhDfQ86Vi(}p|2bRFaE{b7)g;zqBDzjT*Ya|e1D1iFN?Bzk&b zA_70Dkk6je?_35J?EVQ>au9nGtT+tnCKyQ1|lVfhWTl3(oCQMws8QDInt@$V!hRPVIBT+J6~EnlAKG{$fqvfVt{>yzb!3r-%p`J7OJ)r?|+ z)gXg6Esv|s`5%0QK;SPzj1Br!Dcw`DdB56|i5HLQrHMOst~|t1yN2+hjkBeI6r&{= z7t8X=oTdIjMz>6RT^#`FEnr;;A8XO7r7JT)2=J37ZK3EU3d`wh_3tDrb!wvux0=jy zJ1n<{Y1h>!8f(wsjIT%tB|m zj2~pYXg@Vsp_41p{&qMU|E4KJSM*iag^x9TW1@Wkw7bJO6 zXPD&RtfXa^-PT$bQzP@QNsQ$)aq2*)(tiXJ@hJ%UIjCUW?7|lfxm`5^4l`}BzLEXk z;o3`E8L7H5VQ1C}LH`jXn|V5?hJ~{Xz8oKV4QYo}1RSOh^_(iMOOkhaPEKam=BH12 z+zUu#`e=|?g93;XZ@n^zh@TU(gZ)5!d@rli-~QCNAnWTm6G<>llkPq=>(X_5j&4kETu*0#R0u&#m-BeUv@^DS+lY?c6jiM*>a#7 zbE3?EF0tb3j6qz=q%_p0F~E8zYhzBlN>!KLh6zsy^XNuUyUO!Hu`&>Q>8mFu33ab2 zMwBzD53B&nWzK}6g!7#O3Rynt)|(-9U& zow+#Y-PU1<(G({}7`rvo(cZeeZF9Kky+&fEji=`b!v?fNE;qEo<1xNotolmXosQAH zq-7@seh#5&LS=$HKuS%=i#-V#CJvb$AW*QAi;1ftfJV{rS0~Q*)UeSwdhx1kX>jSo zAz)3|HimD)+Kcjjs#TV})NAEBQ8pgtH)4MnhlV!J2X~~p7KQvfbG6PKv_KZcgI7m= z;6gHf+h7=^swzIL?lv_0;muMzJ2HU-@(jK`xvpJZ(!05?!BAR^ZA2tM)K=S{ zEPPm&iEJ_1vg{yweHm9?0o{}tqTDi4q(w{r#rIX{(TN$|xaVD8@8h<;?{;TVuliq) zOV!tAa7In@M@Fq=B&Vb3|eepME4~04_n~AyVtx__AJZ$fOwLJ7^5~x_g z&j&%~4~FackL5+9B~vxh!J8VEAs}c2AMUy$XyJ&#s3wT)rw1q%{~17AvkRefva85p zXGE`~C%1oKmHE6nf${iL7=nH`-71g%v^54OJSjkQ+O|FvgmRU&HSlW`?^;;abA&rL zIYvk}`+V@#nz71h>1NH=Rq(!<8H<&PsEOWe)Hp73{*fB@NyEVKD=Zi%lU=R6q|;-A8j<$x6ufC4jh=@s`7B~U1cvY;AiHv$s(CYLSM6Hi4h3E z(C;Z<-TV8V!P(l%Z^Kr0SV7iun~rP&dsfy*K`*-Bm6we#u>s6JrWpvVHmOnu=e0WI z-$pd&O@TbHa@HZk9wnCZbD{S-ZZ%==Xgtlx5KbAYQf#VTvMlrBdAJ)U1apd`K(6D< zygzz3H`5L^ZTBmux_HIu_=s*M?a%rv4;h$e!jQto!d8?_0l}4dKl4v{{q;Nq?b{8y7bCAqs|P$Mq6VU7=o8#IpDms*I=S#{NQTJG`USvheS#g8)}QeLlLuPYRj+OgPmY_v%% z|AwjlwKfulk9u>S`ghOXkz3bzyDwZ$xmjn6C0|b`SOyLT>Xq3_!H$A^?$MI2Ox zw1@t%4eZdnFU(3E`{e0Q3T3ODv=1=}lqJJ#W@?lEBhX2u7S7P%++eX(1N(g=h~S5b!R#du&*NUb z*BExY51XlqEOS<@e-_PPd{phG6&5})7OW=q4fnK8k8F&*#^4iCToL|WxSoDEW5qyI zng&HRi>;uxtGz7A43`g&wQ(t|ytL%qW%o25grGU1dq1`$((^L$f>ydd5Mrzy8up~- zn2i_1LYq_jfdyVSE71Jf#@hOO3hKPq%72ee@u=;C%kl$TI?gTOFOn3K{TwtkfJiHH zB;F4CC0ud+y6u{{%4NH z%wA@vCzJK|ry5*m<2X_y^gVlw-Kw0FRKW7ehX9+1sGGg7_IA3qrj4@wW?03^3P=3o ztr0c5B%AZT>922dS+owt-p7V&atuZIUqWE+N^Fe=>3}772F!%igrCMU$2)IaGz<#9XR70@h6k1 z7V{cgfHfR@a$~hzRN)N2yb+CQseyg`_Y3gizJzAx=fLyM^8=tUL^ig^IQ0H`?5(V& z(Dnr6!zy~gX#St2=n6T4El zCR$sR*;?Kjrkn%)iuM-8OuJ>uWCVj^E1DKpu`lY>*43hIXMWmD)|+-J)W4;GitEU} zS06+a`cTqhMAz`e7n3dn^gK%*U;ej6&P!+WO8nG|Bp4%czX#I;((NMU+nOsd;rjJt z%;V%g8r3Xv#O$v7f~W$+|00p|JCRt4b&k2Sp1{`eh>A93!5%}>t515SEn8o-ml_CQ zUCmws6PE_RmvV}{&zCv7`gF2+1ea=CVP;{zp)nk!iu?ia{ZVh%Qn1y0A6Zt5D(v17 zx9`Ssqd&%zHzNq8@Dg=d@0!cTsjV|Je|gUF6!gco=dkJshSWB^=g5n}O;9q1IppBSXuUc>l!7?5LO< zu)(y-yamQ(IzM-OT3Ffd+6O=l3A!c0zP`(m8eaJp=nu<7pLA;_a$2b;l^$lH=*n$= zG(EH?;s_D^c9#+AP!b|Lx-n|C(}x0^4Zoch$&Vyfu?jffiMdPw zd#rQBoonIg&f%&vEuv0swhthxk61qMsEsa`U7>V2v}{f^Z&%_3o`A}rm11O`P4WpZnG`BxV0UQVZXL8YcJ=ez6d$r*E=+Qm zol@R!e$CTcF3L3@y_pD~TPAu}wnC_x+J9;+V+|LP>i^GHgPZUV)DP-6|A+Dx!D#sZ;f=RAY2&l5~<$l4CyHD!}7{r-uI8K zi^($sFW?jA3esvIl?zMFoSy~PQImVO6*%62t*g$^$BUA&HvZgN zOr-2vhC9eyHU$&PGAxa`xv;_eX~f}Ch2)m=S142TTjC_I7oPEQ^hXnx8ZI63jc+<1 z=;C7!;VgR7COu6@u<%WPc^^_yU)mZfI~7RrEi9{pZ`M!~`VmJP2>uCg;t;d|%OAW) zGLNk(j|P|2NTV3;U+X1EyB~BAZ})p2S@n9LAj`aQ1>p2x@v-jLb*Ybz-9Q5kDOp#z z{|I>AG;2JS+Y}+z+^45fLyw-W!D3LLar|I*E#i{wU1ej4R}S#-SXv6@B#A0AYsO3MS{* z-vV7NUNdw6ND47!>ntbabFQiL3lU) z6*S8`pSbK^nx<4|D;wL7|Dp%J!bA(?cB3X2bUh`H*zS#HE99vtXSDgL$nlQzQL9r>Ud`jJ%>a$~}_F+RJn9tCZA zwN6RjyS_qVHoR^=ck*SlR7jg6yZ5qgtAk5cc3kNIk4@|KZ-N))msx2%o7@igA+7pK zg(BeKBt0F-W~w=6#qjgfhca*Mozim?Z6#4mh(lt`H1FY2aQ!Vzvf(bS#ok6itqd=S z{|a(Z-AXoCV)4H6=R8ZG2#)i_vEOCX+W*wYSBp(>EdLDZYQN7&D z7MvGR^mjR8is5@}4Ypf>?x4yQV2tGx#PO8;or)!W0J9QJkD%bbko}MYtnTmg6^yzh zEaC)JW;G4r-|!&q_2n7OEPT#kP~-f~;Z&qP`kzHH4~aG9D14zzdr;?3$B2~%H$TneKv0?nB z?lODJ4X(ClZntYLWaK7x_F8S*gvBIz_AIBXX3A{7I8o89Qjm(2D|y`NQwvfN9VeY6 z&%b7%koCH^>5ufJmDwoE4sZd|J`YTUqQj%BolGTc=5RA z;OUWw;x%pWitAI_tPx_yy#$JYqx4^HhgSUTJHVgYuTy3x*mc_!?3Np|#Vz&Pr+%kK zO{`S+AK~>%U)t$f#MUePcFd=+{P`AmRf&3Kv(tprz(P1}&a)fBNJb(QVrD!BP<_$? z#0cPG`Fasw=2xOZSg~r86%XKLzbwp&cov(z3Xk68rrHy^d8_33WNx?LV@AGo!podR zr1qp2D^>3n%N2VFa@JN?!%xO@%gcg+z<({;Mf>ceQztd#9y%*RGBedI0cxovi}9ol zPyO~?X2gnoMs^~Ny@CTTDI4 z{bSphO(7I_d51nHvF+p+JWg<_=tOR0t}%D6d6AG&p6w$ciTasptimnn5_q{&5s0d~ z#skO(O*h5($^AVTxv$;mE4hmIUlJh8BKo~8%~lZC>^h>9%$l^VOSf(il65wJAX@5t zemn+iR1B{F&?=X7rk_=47k;IxPMTNsnYdQ}Pqg!;*xkyl<3 zchU>NBaX+oF?mWTBp_fFB;MuIR5iK0ZJ1IguU>V3@ckj-;3iEF`a?Tay8}MlvDc$u z>EONjLDC{y?=d0S6ZNM(oXh43-p!0R(^~Wo7v+DIkyiPqEa4nSwd0lqwD zmdn!oXzgpV_vO>uAi&oUJ~Oa8Ud^B=Yy)~dYsM+HtZy@-bhw%Nf}l{?ucD)8Jj22ohL$IGONbWG zTC3^}K0&|;g=*%3Qs3k3T>Z@S~|K{8c*Rga=FgkGxNlv!R|q zzGbaCm8$EQrF)5|!2#p7a&~_>rEg6giG&)sw$BxB^nL6^BW7!@Mwj^}Zn6_yi!(9; z&QE9dd#&WUjxBZ`i%rf&>6%@im`r0qsK8UpS8#Vld(`r}^`orV#rY>nKkha!`LZ|l z2jSrO6|E^@tW3r0Ld!*vTmx+MnHu&?@lg5VtUYFO{T*s?$t7@WbgP|bJX4eYLg2-( zK(wVKe{24^Sm~PUh4LH<)&rn$Vdu&)pKJjXfroXctiOi&ofWGRL>hl6c&Te!0qbik zM&&>i9nlh(WUpxuG2uKgMRAz)oOx74X z9f5>K3-Z&BcVps5o16>8n(3DhRb~4EPAe;65~n9PwY(G~Xuh^S%)Dq*K<8U7 zu0^{dvy+X+vvVaC1=kI4mpp|4Ml2vD_=y(Ba?f?k)@@b2_XZ{FaNWAK-7+I}7*eV1 zU%R8K2cLRo1rwo0rw&&Putp@48PA{xo^tWVV0CK1DW{fU5ae;n=ow52G7&lEk^7&Nl)zJmQ2J`u`O#M43T_sO+ zA3kiU#iWZSxUAopx~q>t9RCfw>uYr!j^5s|tgT3-z#5Gg`#5c3e|&*~d$PTfJ_RUAJpU-!M*$lWyI30nP+;PHNrqw6Rs z33s*4*5KA>6A$ftJ4UIAa_F&bw(-cd=Z~}=PE}-8m-T>$n z(Ecri8SL1TAY50U|2Ei_>lrMEc-`_q~jzr&VH;|MUN z6C^tm+~FU-5Os4MhUTfx3aAxo2bmm>uC@BVMEVZaYKsJMcB))|KK0C|4DD)5Z$&L5 z^7mxX>tDDQvJh#+=2mtckTwRMZA(Fbg(v4eDrS!ZgpvBim@F&dG@_ zf^Eg2lh|Kp4TMuUI)YoDQarwe$4u0+OC@I=S?YK3(Wa%8t1FXvvv|8lTC^039Rov(!5!7 z%RT#OdU;}-$9J6RIE&=LL;5(#C1E74SIev@tGr+P!W2{4ruDyNAaQxzP;_?f#YtGZ z!%CctGBs*yK6q<>VZ3NzAm>Hj%*&Stvo!J)DIK^808xklm~u@QA7r#%Hh3)ggPMN& zr~2ZK3yRV<5ZQC*__(aN#6!5v@!tlUj;Wk9ekO534&j~(VFxRMlRM1DiUNe8?x(%p zTP06v8&xNv7YNPjN#%!T-K?HiNo2=2!v6?3Ttf9*)z+-)QT3O0n7v}i3)I6r$DmJ5 zpvzS0&D&Gvzz4b{y{H`a<#x-o zdsbI$*Kr((oFTh?f%`{9=+ML_pMq_=F&X)fpw_<=7~4jS(JDCzk(C(y&GPM6cS>i{ zyNEs#oMG{{Wa)GfiO%utnbxk+Ly z(w(WK-P|0InPFJ?xTm+DBqdd+RHxkaZ+kX*(o4jnkTF1w1V*=O@&ix*rSI5J5I2vJ zXXS5Wi;v+QQWHgoOSkHtjmM8;BvRuj1WVxoCz7Q&Uf-%f{p9ViGpn2;2uWr3CAvnJ zR?FL~=Z`S8iuyvwQ73}_?l;TYCOh#zpA)iqmpTM{9__oE&pHPFOO`+7c3OisSE_T4 zD2QZDua(~MLqoG05lH}7V8jX?mTL_`A{yJ16zb+uxnNfQjV>S`>eF{j?i@LCSMUMh z9PHOPY)+_?Dav@@d;K3l;;G}2x#!xPZ?hw+w|2BJ{mJ9lKlig8Rx+`TYt_B@@Zo-Z z75yGS3we(B1v7!4X#490S#szEaeol{m7>oj(Lj3K*_54cvXOI?mV1y*kG8CfTklzc zFI@Ag>{A^%on}6!$ozlo#0hNfYIUU_WU!jn-D=m}r1c+xt&5)(sQpG>*(l#8Gi8uC zS&Lf0;{m-<5lh7#)83ZEcX}gY`_So}y!jn0T{VtIn5jnaKLRRDD%q!^?Z}D0cyF0E z#-W`ZC+{-DE`Z5Ht>{hcBn7b#B_y}xsxNz$+C*OA3Wbelof~Wkpuy_`8lp+(LW2!!v86L03#HNn;(h`g&TgO}7 zX~ABh_b`zgZ=2)wAd0C1inHTGBaPkke6n)%)$5`Q{+G=&KEk%+2ACXgNnJZhZ~VI2 zUGl4@dgvYAUjW$_q>Rb@jk-vR-MvynPIUM0dl#;sAhd9N$WW9nWtbH$Cgqmasd_)1 zBDc(C!)zL!2!c~TF)~e3Du;G>^$I6hgB6#iR8y4 zk1X>`o*p&7Y7mgx+bC;P=rXC_D1h-X=~5n{z~6?i z}K*?pADUH9uBdCLIeo%)6nKEgs4lzro4+!TLDD z1m4E1R{<=}tjVJRvQ{j8hF#MI`WoJ5!?oGbi`fT`ZcLLL5p{db(ep%B;|L|4_ z%=7xg(T&i#ymg*d1XLM_yJY19i*w4R7TDoY;fL?{zYf65>Ahr?`UDr-9mg?z zCr4sB%~`*2eLK5;ety0`?0Y|HsV$fMxbM(W6W&*s zxOby_SaJInTz^@MDM1aZqX3uVP%M3cxkkxb8*WwEXFvE-w^h0n<*CPlkSwACxd$$KQw_K$k_;w#BvFU^nrRZq0lg>2?95;f_l#p&CYa}-^Pu_ zck9C(*RyojSE7!_S`sOri<|zLr=p;0cuDb!eR>SH1VkCep3INGM9D-Pw$Yh^MPH*t zzu6!`o6hg*DM0jnEG$Mw^=Dywqh6|Tn~Nr&YuYbR4@6q&!KTNB0Cl(icUQp`BT$G; zXt%++#HAGer~~YVvf$`kLu4>U6;8@Ds5>k}dh94uj7;52CewV`2mb%pL7VK4ANj6P zMk@=U{kvOVcP&#jp?PCnK>@70Wt*JQ`466{vY`kU#?p`&-762zg+=u-MkTv-byl2_ zT8>WB1H2C(|Ilq>iv09Yo|c#3lP#W7@lh!imBK4{dP}?&lZtKPL!-8NoA8lXMMuIL zaWWfiwd;>0hh5YDo-6!hmP?FZ-7?&ukWLWy&gp6`b){A#lrrX*3Tan9JjG`sB7Vw{ z@Me#?)W8Pt(%#kF_UiuLJIBs!HcT2rC%Jbw%E^JJIemXA*N(pPDb44jI4jlr_4+-5 zCjG!a{^1Z%UdR-H(oH0Nqm!90)?GEF)KbUPI-co+owq8P%-F-fgo7Q31CPtC8Q*5u zTu?vNZu%Q5@#z+O2RCD3V?V>MkF4~bcMxB_;ny4Fs|aPrv0;wTGB2lU4hDQHl*vY) zP1ut?8ma*`*kz*B%(|bC@I-eR=2sNV+%XM@6$ptqmCg?xOxD0olC@FO`+JvWz)Mj1 z-?;#3RDMvqKb>CvcRy>Ydtq1K_BB|MXGH6WFF=|WrHxRk4^~)-Y1QT@)t}Hp#uFM* zNh$*-P6`_LsV@+XJ}dY`B1Y=u(e4VB&q<7#;S1+LH-qK%WieKL`KORy`p36Z#e;5s z@SRuq^DYK+Vj4MvTj*nc8L{CyDb<=_k_v3CCrHxr-%AFvY3h9O2j*OJ{CYniW;HjJ zCo4U`0RRsXEJok}uj zFBgwnM>u;h3B0?M_*@QX>Qyk=M@9nN0kKw3C-duI7Lz+|&Z(}E=0>I|x+7HB#e3kr z$@tm};GyoV9vFEU6}5f=i$Bj$Qo^zAQ_t?5mV%ruzs7gu^62^XQ5;`alx<6*h51FJ zUYC(Yj+~|&2?WJ?fPxTbfJ~5CpYt(DSkyXwu!yC{i>vUsyA+zf8}fLZJsAz?YI?&E zfz>Ks5suGHb?K+%8!|m5?3?LOuDwaQHN&j{m~o^BffA#uIiwoS>mLek$*Y~WcH*DM zPb~aQ>Eu2h`%B4)pu@=E(FgpP=#7jO8oXA!gOb#_K7@6087;+E1ymG&pU*!#||UwPC9ms=wRKn zj!qn(+XR}KLwiLdF8$IW|D>f@7=;IGjfhI=ZhsKR=OeXlts!skvhmLNCAE$a_P-%y zy&DIi?B*hWJRVE`?8;ss_O349hMS>Ix>-nkV?RhX zI8>Q_R&!=ttRi^v!Y>ZX{%D*vJ16D_fTh#wZlkYj1m1((!{76fHnp%9AX2esplgB3 zRch=TJHCnLsJpf{rE&WDXdgC_slC%G#Xshw)jNYq5AU6i5z4V5^L})-n)X?Zr!Kfa z&bbWsFZgww&wQtIbRdRR{upmIc*T}8L!N#MbBs_-m1O0B3F}%H{lixYlrG!2`-6F4 zyVvNQXrV)p+wu9ZXl*{C_KNpZqho(`{8dsQG8aON&aOb~YBiw&G1jQ*0N(i3^=vNx0GjqP`5tl5e{C)8Q3~{_#;F+aX z?_@nt^z1=oY2l8qL(6R-Qz#R}$PVowEV9s(O-0;Y|Dv0xAb&TppQeuD!sxxusWMvb z$chK8wpP^hoW-&g6STHKZmw7L`IU##)}KtC)-HbV)BvQ)B(8{R=TS=GMA{AI@`f#G|R_kHMYU+QA6BgG0z7``WmNA=R5ubt!Hv6USzPuFSSJ#scUDuXfgTgvqDH($TlPO# zt7#;}&Xsmf%F5_JGAH?;vX@Iu*h3`z>KpPPGnL( z^YC6-m_x_=!)a0D+#^c$^Fdnc&1S=YZIue4Er_nr$#uN`bdYDEr5yci@5tG;pcLBX z)PrvHTAt=PsdPG)+c!CRxB7~16nT9Pb}{zO3ujw$%UZrUBpAXiha7VaB7yOsFx$%1 zgO@E5s0V}nTfwnG4N%3Yb6u85yU3TynCUu7%4cuLA!kQ*We%#C%br*CM4Ra@6`z4D zIqX%l;dc>hhrbZ?yyy7f?~F;nvriB>qq-D^HFac4;%sVjkc)E!2iwc&0I&pOA4D)o z_88MTTphiVbe*2Cq2fMIcU%u8p)5C?{qQtq72}@5-GqhG(AwIB_9eHhWGzTEvOqcm zci9{GD5R5{%dahtJtOa=n?^qNjMiIDG}vQcy|N&(gnDTK?z5yT+A*2rqHB==EQIi! zPJ0WAPqzq24W|pUSHv?QH{>iNm#hz?DYa2w5BM*lkVh>bM*mMiv~W<3(NsUrL8F}P zE~Ta=0&~{=W3-QMkFB`(o{b0pC@|*TnSy^bs7*T`uX9V0eEALUBd0_#Ri$vX|ui zMP{40K&y}*urmph90Kiuik^BPmdrkbaJNR*rEAv^SkfyXLVdZ62-r84g^8$Rp=ump z9!N3Q8cE{vpWFdR2G6p3B4h6Ad(wmeDYbxrK3@^&JBW45wj|g)j?E*Uxy^w|`{m+$ zRCsiJTXpCTeG;kBnuujBxXLyTh`2f+eys#^01f67!0Kptp0()(rprrD@^MatZ~TVG z$`a_HawBV1po`6)B!9#6jaQd114kc7TM|BAb_--5t^Y@cwPQOg$ePtS{i^>C2m-nf z%e~q~iM=@L^{>i$4WIQiz#$g@BkPCW??9gW0Re*WL)8lw1o>9;`u?1EL24UT%Qbw~ z*esxRE_3lcpxeSTgGu9U)eNy?fn#Svz}8VS_W(#bg}lyyJJ8MY8wFjenPJ(;w1^&k zxBv%kN7Hj&0&rGwebA0P4-h9(0X^xEQQNbXlNc|VXzpxR4owc)n|h3W(`^U{K}E+@`+`}$fZHxc*VxRRgSGK^x)0>>4snr z3=#=e#UR;sQqfV(c36EpDnk0#n{xzPep7Ud{fnJo~vcy`l#cC~Y1{Yfh01qVH}P2pb!V&>1w~KW5=@7%r<~WD#&r$#KzghDg*745|rt8Hy0;fUME(!QoVCj|r$f8r% zQj&5kDI8q(X%m@wZ>$Ndd7#-?DSmBP{sNJ~tqx+irNi4nte(*53wZD`l-=ZE_KlPz z*2awY3C|^7AJp;*r$6RsiYjviEW}}if--;2sb;%Ee~U2z+}g<8i0gXJPvS2vnZonu z@9USbnX<^N)B2kRWjZBat0$cQBSWnRME4l{E*uYkR#jc?RY_{%-J+XG!bk)2c2M}4 z1&EM?X;JO28q9oe&K99pABnF|Tzc$f^&*t#76F8D?X%?k2w?zg17C$4wul9q+DBAA z(9d8N1rkLl?!W9k6=@hsggRV#5*&fP#y0ZLj`kegtqgUw6IO|{@=dWj;Z{CxcPjoo z^PkU5#-pPk%jtoSfaO^l62Z)^I2MbFaG5>N4ze7gd-RuVo*X5>c3=q#Hu4nugB-Fe z*355QYB+^8|5co3DzX?cp3xX;h9)1wX9Z4!aZ@#mEh`YFArHLxuxTWJ+qI2=G_u@o z8(Ll)C#ym(&Ag zw9$ni2ncVHKxh%LJ{Hyt^+3+%rCOMpva(On2sf(8xYO}^xJ`@$!pt1+=~Fzk8+yZ^ z4%h{Cbll#rz$HGdII0m~o?ajBl`L&%mIP`r3OQnuq87tAXoN<+q6|_RjhlpB3lhP^ zKp&VuiGxOdk<`TI-1IPTJFT4c(nT@{QdUmFS0pB#Pc#+5B^9(>WJ9Y=oh}q?2WEyu z>9#!?@RQjYf8(YJ(I9#2Fxk;Z6hWP<%YK*^$G2DC|08nQ5QK}&!A5YjhXcOoeJL;KfR9K zS!|uTN`p88$>9Te|6ons=*;^~bt2`t#pDfUUHM{lI71@s>sL5a^F(DO=a7|_eof+K0oDpLgBeln(JSxJ`Zc_6%rY`Bl zy6)}j&}XhfX{W@wzzpG&s#7PNcZ@#`2E^D=wq$?yJ(Gud{azIV8E^QA>*L`yRr$U_ zs_{0;z=x#nwrWxyJ{%K=$nlqm?q;r5+zA6a%%%Pw0Qb(cQ zZCzry!nu8;t;VU1$b`Vww6tcp780Ilwj|$A8cs1bj_~Fshcre}X{jq{`g_}4-Xfu& zeMnhrr7>6MOZ@pDLX+_w9Y^Ht7+?Jn?^B7ZVkc*-rh0;05!*&mL|1pab;bF`h2i*6 zIPP|tqCc=8?Da7zK8SfIu55y4G7-;xKz*XuS zt-wxldYI3u9BZ@acCCy=kB0_a1YT`;b`PuRsJOpVp*b1xWZx^zfM9C&S z+MRUgw|vQnCQc;Q@|S+rfn09g(pX?wR+dV}??kyKomrKHwY~=d1(wx^X1LeAtnWOo zwyv#Cm5E`PYoK?w+=Lb!bm^+0qlZd!=~t5j0*iT#Ud*Y$21;=N^qqftNXjjgL47o6 zX-GR=A1JWYg`o0RAfH#Cr4p-+QCsY>wHa3>7`B`TA29(I4~QTU8=i;&HKvW)ksG10za0)X zG~8Rw@UO|-*6Brtb7CakmSpLgDoP~MNc`SXe`0=qc#vTYPSd!nPf4ZpVZLiCb;XsR zG&;%KGAa7i(lKd-jc<=pqdpiaci2nCC1H^vxQJgKglWA|nk}12o5m0I8uqm+PvY%3gSNi7WjQQOWhWlI)-?Edqoum+*}cnR z@-9xl8ys+Umn2v2-*q0%uWsk~P&0;neKD-iiw#+95h?R~9o3hGNQ(hIk$0`SF(E|| z9aQCNcHB2gSXykM>iTN(>c&sK#O*gvLEsQn!CI7EC>Y{cXxic77D@K}3-zun3Mgb~ zdC~W(?$6!7PJkWgdYs2Uy1c-U*BRpp_$mG}gkswi13q(1WD5I99Ot?@4M*Vx>s#!=3z@J{7caIpU$<65$ET%tIKxv z<>(#@rslC-QL%f)--Kd`n$<~R0sz~~dzzF>mDo$4248&eh~j{jKIXX3%+Tf?-tx`V z=bdN}{XC7J=x^qT6?H@9q@<26LG0!YS@l7&OSVaOgEd8WymRiUs*X`))KXA0naPvM zP?Xc@R@Ay^{uKCMUgC<_gIJ}vL&0z{x;68~Hu#OzvxL6r0f}bIURpQLc zK^NWKZ8gO3^4{^jVpw$yJxbfrLr0@8kzc(O`-n9~w%6C{b74+(MG8;vm>y%-6BpDA zST45@B9O2qq%zt^kwCgvZ1jYU)}C8yxt`}k0Hm{6LnE1breu@Xo?U-F1VwpQ;#;p0 z$_+i6?|Nq|ZBTeWPV2{}?6%~ysX0^oTvv(O^iQF_){C{jtD^)NWIiA9$&qE!amEoK z$uHE)-fFqGB*_&v3s@O_^C1U|%Rx4l7V{D9Z&il)3{}O{=eGSmpnaILs{F%@x(o8P zASfm`XR$xv@7M1bdt`iN5^2EV%A@r4OcB0E;*P?D^xjarh= z;w8{><(O&Z2azemy+yrha{W8#EdR-|=3c|JLH!ttBfE6?#U<$*^!x7z^eG#1EMYE4 z`eE;iE_SXcw=+Z?a=NMjR}gtWPAx3&G{VUDi@P5!I%lriOe99RYuD%C;!?lx?VlrX zX~-lul>2w($1N>2Jaz@iRO)`c@oRDirDonA_h$yDS%9H+zGwZfRoknLL0Kv`ZeV}i z-u&;1l%kO=g_Nrd!f-^Q9oTqehb{%d){C`H0wK2?LXJs|XcV2BS zmsrIXhPLFpYsmG5mFlplnsU6_RpB_ARfMm}dHidr3O0QeKb;!*qG={4Ev09Tevt2@ zam2h#%$`s7+V{yY&jWKR);W;&*#4vrPDv!IwNpZOG)OteV zR&}Qyj(Jh~MgXDLzEF6VUtrb!jD^_?PYGMxTVF{LYg;jHTnh8&#c;sjHPw+W79vuP zJY9fA(58UA-ZT^BE}#ti`STl-}2Har`ul@utS%t?wGjWm$@=K zG6IWdM;Hh@>*`JnK*Vg{OY9{&gyrE*9Sa!eh%YAhZh|^@z9{B-SYYay_saxMMMF5< zg1e|%6eg+5|l4DVt+8u3Fx1ejVu6mMj!$x8%UVqHh(5% z-|XpESj5FzFzB%>hbr^%%>uxy#|g8r{R3#jckr`(B~H8K-hdkcAXiUUN4_^;`TU&W z`ThA%WdD)*oll4jnl;vseLmdDXr@QJmFpGay5*`0>bRvZRDl0~Ngo;U2rsa^SIUQ$ z+=j5702@M|FU+$IoIzh_>&wHJ3%*D@a~MrI?KcM$_2Vf-ZvALib^ZC=st*XBak=?` zf7+Q2s%N$jl2DNMFpE71cbU*dSl~`t^2)kjzwOmqNhWMH748_JZeO2>G00Sd8y8jQ zlTOvCLi3_#pNLiYDIPT}8k;8lTefoB6?FE0;+2QKbSIb$dbG;Bcq3mHUHmRAH?mcPxvw zgQ0hf3dN8F$|BtwIbPHjwAS1p?u>EP&?2wwuVlUrXgYSFGH>_!k9oYQi{m!~yxN@<^|+!}%VAr*CC?EBhq4aGf;Qknr=5>Du*R->We|k-|kfKGERe z7H|1ty{2=bhbct#O0QeBpeo1=a0)SfsgZA1MNU?&p%boctrB?alOX>U2s3zi|PZtY|#! z3@h888=#@#+28O3Xgud`W~0FkQg)6P~5SlJ6&tpJU_LL0^C`*Gy{{lom}MAhdl ziQqjs6j>%=Pq!!M-;d5Ncc$-z*N=&^rO^tu0*R0I_Bw~^_$aSCqs}Vg6og+0e;X>D zW45Kr0gc*C)cDqp{eN7d|(K?LlWSg z)(ITA@(qk?w;a40{*f*^#uLO~ZkDz5B8h9qMaCl`y_L=~FCZ3I@~Vaqi?{A+qjy2- z6GfMq11OXiy@iJ#yX0F)pjT<>%H9L`{@yY$o+Cb)Ud1ieSo>iDOot{!zKYjJmK(h+ zTlzYn_^-hK3I2PRWf+Nh+@Hl7YYGv5UH8_;t3T0BE=4z_OTGe}c`{)b@kysNwTOwe z|(o%ijaE#`eYM*M0wVxD@+)d-|M>U^&u5&Fj*k5 z+f~|%CZvNzUj-w&;f1i5!W!q_KR<7q9{vaM zgV@aS5vSGwFUu#5`4sf(mNTt(wU=jeHcjW=VAInRTzEK%%U_JZySzjvHW$FZ&y*%0 zsa_$|nkf@dlF8_g5nh;artL& zGV*IB7b?|wB}$fg&ed;GpFC)LhHT{_4a{;vZi5wU9_F}R8d^SgV_L1K63sO*&FE&> z?_BFJc=3hUmo(yU>!u}L;kn&lGPq^Du;s|VM&Ld4Kcdj_`MNod=+cxa9($MuNS!9h ztFt}nACS+tlKU?LrO(8>+89*Y$d8?wq~O&9GNGRJi^>z98)JB6%4Iu{q2-(rm`Fw4 zU?r|Y`2BSBIOtBZE11L>-F4dNo>v!2#Ep*eONF1G<{8{ zK-~36R`!+Zjy`8?-FBSyX+b=^(?Ly`GZB_#aHOp+1a9&JcnC7+rQ{r3 zx8egFFRtS(vN3$PzR*3_vYcwu0L2-j9^RDpSRbyoi~y3lic9%@lMz{DN0x4iVSW|+ zA#kifEX^H2BoCx6Z!==*dQo&+1rLVw!)#-MLvMEr-|yts_hu&Ju18u;I0f>U_)Fn^ zm2IV6!&BqJ3y1d@Z=a&+i>@>Ae2{$)wK$nDCf=*STlQE+ktFLI>%SW!3{7w5M#~F) zF>T-EQsem%%~j8~iq3~EwKr}ADKh%Mu%z3rnumE`K0H)*lnj15m?bmvWl76zTX3b` zx9s7LMjd?k%8|au$oJpJmF(ParN@mm7mBGFe}B51UeJZ_yCRYc6hcdcGM|bkv!b-* zh$WM)Y^MJfh+YK85(nlzpBv>FMf0y%`PDx&U%p64KN+CdiCX)7DeA3*gNK3BWJzQB zCZ?`IlkwZU+HuWATrI^h0CVa3+h3Dl`3oo$Pjv(IM++k*1e@KZtY{+4N|p)|8o)AT zo5$i(&K+5*`)?pK!()!iSN7wiiB`6HoJ@~K z#o*HRQn;!ylxAN8Z9wO+fo%zxWJ5W66R#;yLi4niiiDI|-V=i>mcb3UD=47i| zU(HZB-wvl?Y>40z?rdc@+61;7iahYnG6Dj*P|$_EHNQOz4VQ-fN9MKVS*g~|_?SZr zBl*0aqZbDD((aPc@w}gxcm>g56NlesmoA^0j>ca>hf!?)ckvq?2nK)I@n*XM5k^8z zkGJBZ>P&&#w?|_4{(Q`fx#TRN2xg@>N9|6mq}34ge<=qh_EbL2C=cTlPxBTdTm68I zfBY(N%3p;b2>3!t4;sSs?FAks3Iy{rJsc_lnv_V%Lj=LPBj4<;ZDOl*+-*l-Y91u7_=#)~YnDL#d|X z1kwM(r0cY{lTBw39)0)tbg5o<-*!I~o>2O4j9QUkneRy8KKO8B%8 z{QNpm*wUo^kk(i7`g>o`3w=>#WxW4)nrquBPbF0T89X(Ga#iwSf1#L|qwzGI_~cqw zMw7tfkXpx39VIN=!nvWYAI6;WuQ6XOx_aoF3hLX$O{VCWLXZSX+tT~lp!iQv(TlI? zK9;L-_dgF|-EJ-HH0sZ%SV_dNL_FqlyTm5MY!{@1dO51u@qwPl>TNcktXSB}TSZnN8ygQ43geiuz4)mF^ zcfw|tpgVZ^M>e>cxycJ*?FlDtZRt{9wP4<`DB=7C9*}EhPzxQDFb2xi#il`^eh_AAd%l08&2Y{ zJu~cdF>52jZL&k>^|mUSF5eX(kza31p#-jJlNbZiAuZjz)3i`$e*+^&2)-=z0>-~cgf za9Hv%VPMzlcxOEzq?k~A`k1!~XEWQyagF1QOUo@C(qdKKT+uRT0dp~R-ynbZs4Q;D zv;TCxm1n9|lrXr$u3!Jby`lYF<>H&IwXsN|6`#dtdePP2!u^08WuKN(-8ptu)F{ zPO#KP=pI0sVOWjv;|x`k#_|rd`TI z(dR31;13ddvv!N%GXckwgo-}ZYH98LR8uNQ{mc{O4l(GPu z)eH*LJXH^ddce%)hZwGX;B6QbnfzC717t?azGYOenmu%) zKG33NeDaevDA#B`BK`jL6JpS6U=7kSJA=PjbOp61DE$(qERuAE%bTfoK3z2;Z4LC9 z`y3p#G54w>Wz<|`dExaxdP$ri+kk?kM~vP?af5y*%-hS>+&+*yNj3HJq>j(n%UBLh zrdf}U>m}Eycy}zyR?1j9Sx66?9ZhxN)(?L=iuLa^-s<`Bm=AlnEj;*e%vrOlOO~eI zDyg041QhG@G|l^A0!BENMyGXt_Jc&X9iQOGe38*6TI=9^Nk9DJ?>s8m8n$HiiqQ1m z0d5#kkh19&r@b%dscsKkw7FyT4wrvvsAWb2&nhSRff>B#He;tHUA3R+i}k<%k-ctg z{#5u~@@2=jIGBoU|FTDqI}miz=f~ixZ#@0Bn-eKfw}SGRZSX65Dykx5I`pV~B@(t6 z^o1;_UG8*%N$QV2?_k5}{Ft@iA~b2V-?Se|p3?jDFxPzfPp^vnXUfnU%EGBC#nEl?tVTS?a1F-qxtweNC4U9stvp)5-2Tw$v~cb$^%l zdY~6OcJ_i2IL6Zz?F|r%8@E!mjnm(V_Fw0!BqP7DOX~9-ufbV{mGUz_jJ|_EB2%~J z%_rw0eKjnymx0h$6W-Q+;f=b|`#}BvJ@JsDO&*cmqqDkGClr@hp zzBq|!KmH^!5lC?t!hY-p;9~i85mHN5ey?bc)N2wdV&c``ka=ubYHf+GG+i3mO#}|y z9{vU5`FbZjj`a@J8^aq|B;D-HKXX*!-1)5hhmq@DpIz$@$$F-5?}(E-xX%q#E*PxnIysTqEF4ULJ=a^r zG$OzX`7=f^v1ws>9d^Ai>qfG&f$M8ODYeLS5zkE(8SoDyeTo!+-Y$wVeTyhmDsAQq z=YD_ixqT^=3Vga_tnyXVk?W*H&*In^I||bxE#8PaP=^J-iw?a{W6eeu{5aqVVH&8Y z82VWdr6zJVKbw?z9`$mdql>O3vpwok=FOx(TTwtG&_k9!?fz9*o_dJWiat?N{zIT= z<#ZtZx86!~Q?u74gCbF@*kFmIM0wvSWjal#IQ#bw($*M1SDFQ(@I#{_zB(%0M$`#F zt-_8lsNhoPa({k|=@1w6RU4yf{!r~BjMA^%gyDmqOh1wnmq3!sM-~fUMXp$Z)WLOO z*`Lp2e-vr1m2$80YJee21`9c@!I-1p+OMxSp}3rC%+V&Nf*4`G(w zz9VI=H2@cH!5TKaZP1vK>ddgO;XbEt%-Y9mexIjVjjb_W2tNg;w+b^wG1^Bb2JTku z>!|G<#Y1kbAzOKgl9ts*^Mt`(KOge>p6ORQbT7O=Fzy7!_)Zq`Pbe2l+w>o>5CRMO z(1|+?OSu;@BGxK=-R-Ju3M74D)O%t6@^m(CVd_LSb?SokS=Lhlz}#H!xW(mX0>mM$ zr2vVJ`mrrjB~<3)Yx<2=ykfhTh~8$aEGm?%x0@YS^x?j+m9dvuUqi!Ib^HRQ&$i<$ z)|RQ5WFdsDTLk(Bw|xKXfg8$#MRp@Qw<%11ElSxbUb49NH~+2NNBdMa5FV46H3)k= z$I8gwuz@gU&bHC((Y^2i-aq^jC^FyF`2bUmV1=RLcY64Bm2K5>^|y}$bJ4G4`76E_ zq8x9BQGXwrapd^3zY~&vZ%%l!QxhPTf?M7lTjG$(zpx4yL> zXPu&wD9zZmdSG6lfS@A1@H@!YKyhpxsMMUCWnH8bVY5^x~8;cwpD5d@2Xz?I+2HQMx%CalT0{ zTUM5;=Sx|nm>SExCi>uUXOV!ch5B4v-x2bMR*CaH3Fx|uF~>*Hrx*y2Fup4lGV7}2#SH&f7Z1-kxb7Yc~neJ;iWo=() zATXTYlGZRp_^Xntk(I??m44KBa$upmd>TC0o9YJ;s>YCL)+^YBVFh9AcZAtMooxRO zO2HQ%3*!#T)4*ggyvljOqwe`oq6Aw1d!MtG<#qyketd*ePh4PhZ)iDpH86>e*)hTR z#c8KZD9f5*j8#ydTYrx`dXcxG`8L-`;%w{lqX*>F8&~PLL?<=p_FFD)4dTP|q5$+HjEwtv|IRDKoKeyzD+% zg2x3(db7m)afSl4EXCL*J)yOiF?&ko$vg_ zWb}hum3K;9Zb+umCsVHavN8^UL3RW`?ke74F+kt1C*4W9~<1u~Pd&%W;as#7sX@+mpCi7R zlgxMdO4FZnsg|p8L6VOAr>NE^6L-Fj|H!_?2Ph%o1XFz4b3(bmxKp!?$8VG~)xn#; zF)`}0JcZZsJ0_#rp+<5~lDIryn`D|}g-fEh#9Y`SVh1|-?3gef*)o5!PNK~0yySWU zv51p4f72QuCDSk~) zn%`hW8WZ&Kl2}Y&EOKcm8&E?{wtl_5+j{z5)gx#ptGCroEGks3$Wz`!$m`b}xT}vL zL1ZqAhQq^XiTZ?k1%EH}czsIIS|EkOnRO$@!jK2_dX(@*Ek$2D?xsQo0UbV1hz4dk z=_A<=-t7Ko4F2mgQOumQA3Q9dXHKk#K#MlkG#C5-n?B5<3LIU+LDS&32nIts(?GE7 zoF4})?~y?7niAd0Vk;C71jC4iSMfyc%cq3zsssfL$K?|1i04OZb>ec^-T%ns(kjNzcNNQVaft@zeND5kN|eol9>56k&&<70;&*=T3wAk0Fp33nFW zQx_(X$W&2hr7GZ>Qt*i)-CH^v=!NX{@(R%oxL1?1mxuL4QC^7o~GgDkOMh^qOyy{?~y|3EevB4-eP`8mCdCm|p9Kt=F7o{-~|44tA>DO%es} zo;GQk*+ie%D4M9rxbTq2Gf0N+BudQy%anwH+$KC*G_a&3%_!1LaZNlBzU=$5Q8!$7 zJLUp?6qR`$KR@f0KD2U~g4o61ZGwFLeJn?W6)gkZ6DY1(hfJzT*N2TS;#pZ-rcaI` zZ?tv!yI#8|79Mzyi|iDoKAo#-I)b>?%)t?-M@vGe`JBXU5q2VaJk; zH2buT{e&F%q6u@ zFeOjmdF6{B;tEYs%Zj`N`EEtd+6m_askAb&fEOh4YXb=l%{}cpT5u$#3+y{Rsqi>g(fd`pg+- z+nh%qYhQx=Ap~uz-2&Xr6Vz-Ns`DbFFMKaIrK8~0Ay>47ilrR&ES;O>0JJY_PZXkE zQ9I?Fi_q3cF=j9;K~fbev|UUAPUc{u1Xj@h_KImxws}kSsoM{8Yv=M(S)MrR1Jmiw zu5Gb^Fca;UC{(a5duUI9%{?BBmLsJZiD zTnAdce5 z)B69&RD4zsR~4ONcqNJ`sMz=dJRiF=y{^r6;|1y#2tzLvMlmH3L1jxN*z$~f4SNHe}GecP_xWWq!p+2cmL zRTSD_wAXDqncXikGG$~vmr9sB$Y41HB>>g?Cvxm1Mm zh?6n+C0IBY!RmUS8u*%x5yIcbEor^!?De`Clj#G-_xWC8NjJmsF@R!QNwo)Lpseh~ zY8`c$tj=as*RF(}HAFn|Nwm9luP;5$M|OkhD4j5@NJFn9ot}Yh({#SbX_FXuoMkfh z@z)X-G*)%=my`-k1{7t>K zE-H{7acS9M!BtyR^XEOYY&oBNxRBQ&nE+K5k_k_>_w({GY-q(W++SF%4Ci~ z%Pc0%nVfFz>D_2jbM&Odgkse^3x>c`G2#Ce{~%!aU-=uf#_pZ{yIeC!TuWMYOF?TookGar zj)!f7BCExK>k=g$>o~n1Q$@MnD z>8=?-ElwsorQCyXYBZ3s1{{Q59{QmuX z-&SQO^vCc7Y!=p5Is73P(W#DtLoFxKx<*xiEXmxsoZ}w;P7<6cwJFf` zSfNzWVRJMus$ekrn|Vsn;%rHI*^`N8rb`jnM0=69w;is@@OzKR*VkutwlF>?9u9Z# zLb1A>{z&%JC7R;2ronTFS}avnLZ$tfI@kJx< zWaQgr*=|{me#FaRCHre}d7reP9z8ayVR-r?pB_lY-%>ce&@sP?e&YIsTGMgB%!%q= zfCv6!1LIXvTF}*^0vNwC*$t{|C;2D*v3#M?uZJ&L8>^69_kt#v@aQmcqB915&$JBv zr5Or;SFZKyXlBcU3t6{j70G@r@7uLzTCegpfCdWwNkXGfnL&2=A)Ou2m{}ks_T$=_cY8{JZpWzWL z>hNV#(^VhBBV*a#W(bZ2IqyT)?Rt}_FrA8+oPc88?I23%e2$^t8hgLhs;}7=`O@;hyI$=M7b4H zXPNG?GW4vNb*rB429KA)$Fzhmlw_P%Q5U}gXDykf(=_4QuHp23nCn&FI=o#*e`M2J z`L6^S8?p4?hyceJZlJqCgh!CRYP?IuiYuEra6Z+VWPkY0*z^FVCZE1{i#7I(6$3S8 z2B+Bu-)4tji`cuUE_AA1$<*r+1##!htVp~ldN%=oDlcDG3$(s|MW4igU8ZVc&k4e=aar=CaD1C|rDE2`p+^JPKdC%3+(dRP%?@>e*gnJe4k7{pv&q-@ z_w7FQ$|p;nht1wgSQ_b&P${0jrg7In;%DYViPvTFcmLd0(Jj!HN-6Sj2s9YN>0;`> zNY&uXlT-3mhIaH=@@0RR4WmK<_&>{`NOzLK57P`hvD<*#%t8DvVW^7)pn@mS9P0bL zwwJ0u|GcVyIz~<5AxoA}eS-AF*%9v*m`o8}F{X5ML>XKwVrBDvrmV~2LaI8Wtcr6f zR}h6Pm#Rq*o{q>Qj0r=OYUY^}D7x5t#(8~oSl4J61IE^h>sNe((z#Fi*rv7K#>x+s z_my0wMMQS{y@3yR}>!ubV3VL{8jDgfPjT>rNdsTVgUU4?O%2hbVk7{KBVVu4h;I-fwopJk-`YW98GJ*|9anm_J!wsEaZ?F5J=MfDl;nj*GF0u6|u34T0FFX;BHMZeSR+1offAL;?ccY#;x;LqD0QKZB`K6r;R za1#2D>;)nEPRoksGt?WrLJZy_O-jN!>eY~oe;`gWsPBz!TY6Tg+Y&4s`!G)GV`Sr` z^w*CGstc4lUSE7}kzpzF0;YBMxY#R;?ilU_hIiXm!p(oDY4YbG^IPpfHEwcNeD9Um z_{b4J5px?e5k)W}$#oq7B?&#F3Vu)g7!NGR0yA()ea~VnoKs>Bb3;C%K+|o~{t)1B zzI>GvC`8o7yOfn|3NF*#T5zbE52(|(lIh`HWyP9Rt@%&|p-grMcV660&pneuN+mvgI%4>a`_k*kBMq&%;*fui1ptm;KLH|&| z>!7z@tz@uZ+rqKIE5j4Ui}rsOIxFL!gvTF%@d-imhO>&-uhPJR%ZP|)mS3E~+9mwu z3Co*5MqCnlEz~yj{Kb`W4}H@CR>%uZ(M-)3#_Dg6kr&J*V^-9NIqsM3XIfupt9uqJ zFD$mbQ4`kLw^+m`wKlr|vfEnqXM^mX<4M+`gtBGv@1$Q9A$w!^9vw*4_dV+6AiQ|{ z6Jgr)E$Rk<1l~E0IyyC){AaC1$SJ(1ohWwS3~>IIO)vpr5S3>!qM|xGx`b+x-^nn; zI_DYQ`!DuaGuu4~Xoj8vQ8_s1NJ{TljqdmPwtiwUzM$O_fev&H*=@F5R?sk#}+Su1MlhP|4!E3A$Uo0_j%-=^udg+? z*(z6GQCUyd!5Yd~gzJ#!3Dg}64K46S;DgPA05thyvx`w6=P>IP_C{yWx#qc^BTnEn zF_xd+KI@JRQ1haZOoU9sg|76gt`fk?Oo07*1B6BzTj+?@5bk&;o z$tzBTq+2Dl)hJp9fokrDRxB@tkAHb4@|}lUVJ_;*7I0~QSg;i|FkOl~f->yeysZ4n zFmJV*Zsm~>=U7mC_3i!NowkT)-x@&ARGpm~07D}MF1Ml#E{?Hh3eX3Z`n`X^n-Z#* zDB2u&fFhT2BF+8in8#e0MYHh-rc?60{ck3zd)OipRY8zUVPfhXPgn{o5fZ=)VTbDbseb^4-c5D683}Q+Ah=1Wg9zF+{ z>39#B6z`Izue}Tgg;?D2{t;?sIe$m}MD#!(w8FAy@OLZ=Aha^y&Lj2&`*{8%Yay1L z^j@C6`yWMT9o6*PhH(@Dm6pz_fG8>5pdu|!x|v80q-*2=rAt6S8YMaG>HP_OImPjK=h4Ct zcxo#NRPJ`!eg`jWtgb(LtTJsW$H?>z)R9f;8y<~chhLlmP(9WBGra1I zO22m>Ze9M+z@mdW|LdwJUZCb|9RKW}*OWw0{MQQw(%Ea(-V&5)Z9hu&v5-t8iq>+f zJg{cb|IuykhSr6HroiC>BdKhO>$xDR0YZ0-7)5JgkPoi-=SQ4+-w z2k@%uIm3XC+Zm{?2zK0|`&tS&UMrE9_-^I9nxBEeK$<)vXBYAtc-GVT?`20$wO5ie zMyDI45D7GNiaq7|_7c8nU=hvWggW&!DZ?2RKIzK+-atDw^jHswlC#m#ZGt~{dd2s? zk&#>A$)+zw@=gwQixhXXKV?}*(cSK+uSx5n^F~uA^XW0Hh=(|Iay_mcsq?D_s-M3* z9Xnmta{12&*%NEh&Ab!gF-8j8(XB&YBn5a{7uFbP^N?~S&x#SeykkTl>pAKm4MtI} zw}&aRF{}sH@;B-<(fIJ@et;3scQF3rJ>%_E_^tA_?TJ4fIyI6LTf!%6i+oKtifDNA zDK_o*4Fl{OpXm|jMKKsh!_u+r@eO?Q7P@SwxJ?@+QsW+Wzp9!**Bd!fyy13TYi*wY zE6H&IaqgGXyzZ`kR;)szEaDcTj;lCY@)$pWuVx3*Pr>cl!$6?Gr?>zN5wPlbh9u)o zF4&zj5ae%>_+X;;^1HGsOZWHwLf#W+Ex^Xxb#bEg)Bp7>SyRC94-1-RvK^M7QDLFr zf4tWux7o7fXq5|1w0SG~XsnNZg}Myq3Uw{DZyFitGU>eYVzZz54P$kRX%Go_c1YXX z%G>C`hsJ8+^?CS-6n3`hb04ep`vU&O!Apr8T&7gSKC*NAWsVbEr$%vXQ(t zn;V3*GU{A8U=8~!+|vZT+=}6nD1ZRFh{H|cdGO=%FDD`2XZ?Y_kXDk(3X+OU};3@B~ZBJh`Z!^BE2Snkc^xa z=ho9UHh<3vL0R@8+S^9|-Hlk^wO>z6ceuY%@czYv@V$ZTXzm_oBAhA))aS>W0lsH1 zwA6Xeg^yQuA|cd=U9ncqMZ}!KR)>(sJyu>bt1S6=sxUnpPbyk$_oA=h8o{tzJPuTm z=79pR<2CMZJe3iSY34{4R08X|*k<|S%<)3#S25ufS99E=!KQ6^8<&4T^EAJwAeF!N z%(+9fe%xx;$?rNo0xosJFjh;F`q_3@Kx_EgPSI|EObHVo+V2;?R*CYL5k-Y2FD3Ph zNN1K7#b(kg5wON3qbaIys9*?i*nNK%43Nlpy-~{pa(Cg6U^=fV$3Na^jusQ0EK_E{RAYof{=ua9gM`dDSJ3LmC>q_V4Ba+tb)KQA zaaF!nCu_K`z^jiY1g=y2BYw31tVc;v&!PWr#U*)cu|KA3Y`N!buf%>P+{oc46zFA@ zgrRt8Y;4gksytEv;dWo2?p{eKLE?K79f)7xpLRx11qN9A1_Z}P394&dgNK?k;!%_w zoLo#sUp@vk&+8l&jfnwnSm1>GXlD`y(*n6=VL3(6NBx^)vTHv*_za$jGC^6Sb|eV_ z$(sG{ZJewUx__^KAUm!4_Q}_T9es)U9>nKLSGc(>z6>JN}OIapdiF!`icmO`Y|p-pI@R z_?k#-yTCHgUwTN$y}xg0&H=nE0}u4j(m7vihqKsOvJBq4tjoA?sv;tAL(O$z-7fD{ z#ej(##old+rx}B(JR`a<0|9xp&pnT5j?T$^uE+CU@ni7VyUe*%81jPh_V-iv#~AJ? ze~yBY(%o4FsI^JKisb9iD6S6%K7gAt(_qq~DzkMg>pAKYTf4in^A}x-d)1l|la3l& zG%;xx{D~#XZK#=+HCn$JFyq>%EJS8&_tZ-+>cO>nn`BLU+#5SQJ+Ae>r*}wi|fm777rN*ITd|K2> zjWUX#rc0LPvhr9ZFy2GoeLgDZaJ1hzWGnz&KZ4U(U)hoeke_|9aIJLwz6v@t6nQNl z&fB+{ZPn=SB*n{+VGFW&)KozPuE|!oT0oF6sU; z6kj+#`Me(5K5oTeu(z{ym-Z74dv3yi1a~*eA@xl^mY_}SX=GY|VNB?ezS)ItRW(Mg zMNGUCZ+4qTvnHMBLh_RqouaC&o;0!#iAM3DzD-b9LzX#o8RDIa6PgjTvvY5Iq?+E< zt!ZOf0vp;I9t>`hp?&;kBxZH6rs!hCVNW9<0D+CyuX$$-E5x&yP^B$CHh)N2a$wGb z=++e8ImEx1n-p=kwsz)=^y#3Vmch4jgC===NJtTERYB{@VbO8NDnpPi;Ygvlv)QDvK}NSUu*-2F8J zBw&IlOj|Hzsj2U*pbXnQBGbOM>9-t|5kIBXC#&Vz%cUoZp}d*i5gt;wcXdk7#GOX9 zIq1Cx>x(#pWBg{FzWBMW9U7a74ssd@C`{hVCFqC|Tve46s|UDFefzKK7Pl;Its=;d z^~aV$`U=S^8^hi+anS*^4)-ppN=(&a*an6q``HUy{JTP`T;)EKrAKQ^lfO~R-m2gq zNPOHIa+n-SH)9%+%vrFTkYNxG>t&ov3=~>Pi<=o4UWi zR5s88cICOkyt2^>nm481p8__g^R&2ZWR=91)}6w>i%PbfbZmt`&aoVKUq&=2dKJDv zgsF1eEM_9-NJ5CX;;Nypk0LE0QvL6!2d+=!q-SILMhypVgj*LkWv*<2fNSHuE&cJ$ zq}d+*1X+r@VV;-oK6_aNXDCU%}O4g0Daz=&fx24=qo&LZW_oozYeN)x>W5w$P zOmFKxj+?$_-F^JQzwc~MMa+xk_EmGln$8x;Tyk|I!H{~mK;uce#^0^5H?LV5b+VV> zeKnsq$DjQu(>aJW3~`Uy8P7o%T~Hs{Bg7irO!jB^U2gKUUk$Djkq~BI$l?t%iQRYH!nEgx6% zh_g6uaQI0Kkxa4A?7lSav9kVjmyGD4OuVyk13y0^*}|VOi7048az{aHS8eTcy?|t~ zgafE52d&N)@OfkU>{i7*>aNW|X#PX5ocFJ#HM)@$FlB5@J@ZSIia z%Yzq|t76z;L}7bD0CEI{kxcmZV&LHZsKfR5Do1{gB1h4G+M5#5?|a!nv;0cqp;Qm%M>{4ym4TqoAZZ+WF^8%E$6A3rxky z?0+~+l5x*8v-7QDWR|Ev+uFnNT`5X_;qiVYdA8fUD|J%G#&hB*&cXZNM`%o%>U4RI z`kj9s@vLQZAN^Esv5L(NQWz+Sam}Bv?rj+RdSvY1$ZbA^v)x{c>V}dt7#t-USAWdSeVTk_iFH-ZY1Z+BB9;B zm+#$kzy%JPP={?|le7og!Xs18{+4ahdIM+sY9WUWmZM&))L5MhZ{cL?JquDlsqu_v zg_lAbf8=;1`8@JSxoS8IH?qo;7iD}6)a27EkF0GteWRil-uhKyfJ|~^tdz{Wux4b_m;2I<;-`9Ev2*V2IF@Mim zz3Mnd0Ms^9PtnB$Sp{}$#Z)69Bf)L-N z4$bcQj?70YOnecs&GRT1M=yV`;Dl!VV6}~j?Z4+ZAc5=9J3uf>o2!}pr@t=wG^4L|#%fUb* z&)<10;OnM#fowo3SjRuydmvhkjk>Cs=o=|uI45k}H;PAFDxq;HbyfRuovz(HmE3dn zzUX~xPx%+qje9yH#fR^++6?5q$Hm|%-kw>oJ7URjmQ^^6J+8>a_H9xJ9A@te7*}O0m6hksi6;=;L|gtxI@6@#DrE>-Bbf0kkH7 zEfe&+V4<=9Pky4DBD8)p zRC}#>aM5n?#~EZf?34qxY4K$-kvuTmUl`ks@z!gstHyAL9HEF&WSENav_7?^&VKWm zOAb3<7rPH8DiX;ttZwoR#oUwSmT{_~O>e=Ml%|%gV&BK(JJPR!G3bLG!?aRxGA@41 zd4WW=dF~_D)zP&`l^}a-t>Gb);sH}6mN#5)loCOAWsPZG>yO5BU={TyYnJSfJC->n zzQoGkXj)P;Jd{*>3mZ~Z`0=#e2^chi*kC$q$W90Vi0Hx7=Jfh{#T9cHqo}HRQyy}W zyWOGJfj~DSIr;KFy9)1wbHUOaXQj^ zmQjU`$+I_*`aff&aoOxurCI`NyxbSRa83DRku6d;puk1QBYDz)fsAPVQt{?>88+QL z=A%5<5+55TI#;5W_x+N(&O(^+-y{j96$oJ90et$9;9b}IwayW|*# zlcwr;&m=nCCBhFqZhel9W!2Mr`ZU3B@#E=T&l(%7hbzHr;YU<39x3G9utR$gz#I@l ztoSQWc`&tDyFVHxPWl;NH>CJ6cCyYe?&fch@7!OPQH~eLa8DkK)pVz82RN4}0-+dB zld}E8j|bM+2KU_?^j~iFnfIu~tp<*Pejgu3lk}F0fM;7g*{hNE;z?QTphJo5C2kJ( zfKiHjAASl*%487IUFQJun!;^XyJho_3V+Y_Tb+y2+gw|(25IY>QB*+9kvC{5#8QtU z@bpN&t7%EGU!evW+x84ry&>4G5K5oQ&Wy3nmwq2fHV1WjS{Yik$*nypIbhjIDEW9! z1PwLx> z+vQ{Lsh=AbzeS4m^@Jqnbq_L8aj4~?6SI`aqp@s-&(6%a&lsob-1=T1s|4Nm$y2uH2{T;CE z+!(vUEdpnXrvV72HXCcQ=?dWowGn4ne;pqA`7h3n36&p8tjH8C;s8bx=*L`F)8825 z5O0mv8}noQgHx$&Qq(r%kETfD2N%X%zut}|Z9Tf*Z+ebvzx6yyXUmVx$C{Wlrg@T^ z$;vod{z7$b^Sy4bOYTQ8vbBqN@CQkIB1uy8q0}e^-jAci!~t+ZbG_B$s2o~<-tv7o zx#xna$BPzwy0eAos-a&)sCCka{5KhK%Izak8 zwh+KHwExH#P`h%SY<0M(o)ue(YNH#M*8I2A1W&-*J*035@Jc{)CZ?K0>K49b$1QsOtTyDAT_!Z`W^UXjgviZ=Kp6?sUuP94vEU zXB@dou55cYvtRKj)i!O~Hr?{<^py^02!^rCq4W(AliabY9G@csb+R9v-!m9i_`Rt> zUx)>lAbacaYnjk+9S4)%&N)&BYw#QVf5-%21Cyp%Z!vH3WU8;)|3>`(V zN){YP?vvfjmmc5eOvGYh*SpBhGF{*zLnu}i#sq@p;A?%!vxC>|KK`~&cCt{Np>a@s z8=?DRV54YH&S9{YoKmkHJHIw4YLH^M0k9Q{o`RQ}mfn`nk+7r^T$Yy@T&8;INo#7K zX`IQt*v3z(M14%Tykggl`FfWG*u3)^*gZq0w9w@L#b&IvA=cvQcO8oU8K)qMWsB~R z(}wJQ;EcSH&VEgjX)y1dLvgODtkjwV7TS~K7pKEDQeK8jQtrv^@5G1Zkb9Pc*KET! zvR-F=Xl!#(3*xMBdghqOwpe(l^StB&y;D;=fwzk~6G+K|E1q6%WJj*Y2aoR_mjZg; z1CmgSw#g$8hlX!g+G_VELK5#JkatA$bgaJIbno@8_=z6t05SW^pf5Yk1u-P z=l<@fd;aar%J^v3djn>jW^lbmv;3`q{|s7jeXDc4MQ1f9+5q!L(tV5MOOKYgVt9zn&u>5!R?)}xM^>WfaH#IjvXoqK) z{p;){FVwi2H*))9YT;9=QvznQXzpxm-P_NRLbQSS# zSmM1JAqOK)8l*lwwVC$L$!ThPO@k~RoQvBhzAqq{)|5T^RL|9Cgt2NKRSemf+$9h#ak_ zhPUPt3n$`+#olnA2{UZc2M_V>(?9jxj7ujss~%-mvlZ)a&44><)r;|PDr%>&X8H-4 zcp6Rh;W=B$A902dKGlcWF2H(|e9bI7sd8irk8|;)8LSBp{F;z6HbDU$9h76JV#VU! zU#nGr`AnJ)52tN0WiQU=v)Z)1pWm}$4`{+@iN&IR4L*CD==T3SMM%++gHjm6;i>sE zzeUuvRb4ank576+Nkc)(sv8`#c*b7C{~K+{&AWRjH%M>F*&W#@O(Nd;y>q7pc|5v9 zA~^pxSZ{%t=TSL@>&=-g^#y+~Us-hXYqw>`Be%N58SYShb1S}74v;E>T!^5Vm-zcK z)_E7yEEiRU?n>=;9G(~AWHF>{-CW$dJUSK7^dPlfntvaz#~$PVOzztChL>9T`YT@zxVruEa3 z({{>74#Pih!^lTp>VC-XzlX^gXz8aUFp%9PV&O zoXZJzEQ8SaX4iswhgi>x{|H`m2=`P3ic6@h5)U5HoCFGUET zz>9;Oj7*PDI}ah5*}|BV_O$?mPWazCnw5FzwV#>28f^?wS7n!SphZYjBMDM0TaYZ% zk_^cwP*zy|3L?ff6$Zuc9gVX=jz$3J9 z5^WhO7?N(kc={?+o4sw`nyjDwI;?J=h1uaP()zAHpDS_GSR0F3P21WofJb*K6wwSl zS_?j@#;q-X49N@B%vvtFrN$up=4$K5^Le_?G`rGssKA**Y>CL)!g;V!OT#9y>a$NR zMQRLCi%X5W4*vv+{Pl0MaBdr#<2XfIgab9M9AVFUp^@x=B0fYb;<*JD`)AI9^J3C&Hc^xKiJal6*6Gim%*eO zjfg$FY^e+SA$sd2xtsc9RSY7za^RaEwzIoXSkr>0*pBSPRMJVc?Z4UDFBFK1j z+WE6A1d2{SJsAGEub+D9t6xggAf(1NZC9yU9w%HTkw^JK$#)T8QLYZQ^==U3=f;Dm zJ1d^vcE%B*D70FwwSHgrdU7tb#!0Y!PTQ>XC!TfOv5oGzsDE4Wa&JfubG)42g5`o= zDF1MvPh50b6wiCk%?*-}rN9|XW|UX(Pj1hy%M8ne-cw_-_FAP{E7g;2{@ejNntuE1v4{&p+4 zD^M0KyS@W%X$asMg2;|RLx^FILmoUd2%#j|kJ>4J&HZcqFi$7V_`+re=nq-oCyqBqso%+~26*pkK$<*@GSx&raU zukL0$9F|5mF#U-Ns_@&S2A~+nv-w76<0BWPeKm1re;u2{T)(}1=@J+g1p}txuT5yQ z5vYYhcEUm&3A!)UfqKT=%=gF&bu$<%b*6_>mX1lZYr)d3k}mipF7uYNZOeFf@&-(d z60dgG=OS(5O+|(ged(TkKONx=ne{xsB*zm2jU=c#vHz$x#1L|g36=@vUs=A}h`J4D zV?WW}Y|hqfFcic`n7B!+%B1M5lzG3`OApaX~ zgwJ9@t_m!5i4?$QtwJbZJDQLO*u2%VY`*c19^nOPj<<$x6Tf*dzb_=k++xV{B9ru; z@Q7^^93K$hqf+#D&|*zv>2247K1;*L&`37*JU6OM$3;J@?NSX)PUnSye*fy$R$(3! zu|^~r*|zBg7oDCmOpgv~(IJu`7zWkueLjX2W4Oq8UJj5q z%*kio-1(X^xz3RZuWoTQS1bn#yi$05XjJ7mo(D$L!=N^Bqz46q#oy=K60<5<)HH}aeDEocpZ(=+I)GT9*~F3FK#a~0-( z_oV;6_iOhP}N-fgP$)#b={Oj5(!Zn}$f6LH!Y&W47e_!h0 z-upHt7W0c&*(N;)*TTlbq`82Bzf?V!`EGRKMz!)m_Kt1PN`{U!bbIh&J<|(=);5> zlsFIe7_G8dT=rM!>e`uFp!ScL$_{I5M~$+dHgxVB0shUM0`CNGD+RF+v~J;&`Ig6Auk`25M&MdQ};Pd9l} z9%K3;zURV-8|=c^iEP>4FAsjulWeglBW83s-ve%iO^=G>Rr@L^>boVEf!7hS6nn!C zV+D85;S;rWaAu;L0s=hRJQl2<>au(N?|W58RR7QYm;l~AS3N-^1(BUaNLA9Fdk)oh ztm519@e8S2Uz;{BW_= zxVRf56->?*@&F87&A1t19V_WB{^6{<4(pN@z)Z(}eMBNf+^(%)yMnUq`H!Hwu(AN= zx5m&HokNQC>tU|VST5TjX zY%ym;%E{jL$>?~sPonzB$xn{VwJ>Qs-E})a?we#M#(?|AXmBo5V!ZqNj(VFlzcbZ# zz&4oTD2Eq8TMU0FPwIz;I*@ee*8d24G$1kA+#0G&vXbc?#1}ra_bmpt;wTJrUfp@t z?4VmrTfmkM-kF}?LPrByfB1kf%y0BPy-yQX zSbRy4m$}LcH=bY0)=y|uma2KfytF*SwTWx*3V6+Ss!yDgx7dM(+r8zI{V7Rye>2c5 zFjLP@fyCi+w6q=Awa<-~dLJjJl6$QKST9!%EY_~-``#p4%Di^!kCTbZoER+sTJkHo zKHTH4Ve4pxccJnoi8JIqoCnEO82xCl?keGzf)L5$^W(Gg^2X1eum@2A?9Tkbebm2M z7!|;$hk6u|r5YS+6iMziq04KGK@=_&(x)BIBBdbuQtIMr9MUZO%zKWBGBO*X+JUVk z`w(d0a3yrYUV0zJoif3ba?f=Ny%P*!6;CQP;x+HK<#g{_dyidce+QZ(k)JsSABVClM>VNFj=85ipfm-qnhIs!N+`Y_ZCw6up5i{}_ zKyFJga7(Qc$@#gj{6|m@am9}gLmkn>I^tU`HyH?T+tF>-J6O2-l`thS_De5w){vdA zX?kR+@E>A=G1kfs)~Fl8)s+zc*K1%>htl$hPZIpCkK;6Z8CZ8>$Z~wKD6zHkJ^SmG zGuz6{$;{uWCU!37(l)#vCfiaSJ92WZ@GO|wOtWdnI3L(W(UHKDyUn`AszC&c5HD`-0 zhkgMYj!hv^CZo2-kg-aCi9oBPXA&xLNaO_%drnbK)KDzGG z&7?P@TmkIy#S-Y~2YRyQg5=Lf@XHEpZFgZwt7Dyz@OCohJ9#jfUaw2{!yn)mk>2!t z^KxoC<8wPOsp)J9O1k&U*N!NZ(~9NZDJxg8+Jc{8Yu+x1)F|+;uR*A2fQAzKvoXy- zX}#L~2TpZEr*9|jG#X7rZXh4eeTR9kt@I-q?3rT>6v&+Tof9{P5}cle2rg5xNY0Ok zP_nv13Q-UoE$G6-On<6d+;}wIkvIp+)_(mq5c>TYqvOU_2cy)!d31@tHCD>A7zl4M zQ=TdKBEiF-AM=1L!m=k^>hp_Hkv`r*WK`c&F*nZ(h^;N&w!lCjS;fJOlY6W`^6?)(gfr^gu@9ra`UY`JG zZ`s6%rLPGo1W)vqX~TB5H_z#Ag@MR8WEW+W!b8tnkZ#LV`8k^sGs-~{5oz`ldiO}* zwu6fx2}y^;2QI@O1U~eaoscCZ36g)BWFfyxW`|RQs!y^Q6nA$>Q<u@ zprZP{`mF(MZRlWpvQv%a8?8#X0TIR+C z7*yOubv17_A?2YDs~d05lMyJGMmt9i^#kAP(G%WX^$ zGMqg|JoF;ZUvyzR(ngz6@&VJmm;IW5k0DL&u>Q67AO+i;;CkbnZdEapXb9=ww4=vO zcVGDza5g>4KN>@S8408Z-iNRn>wsA>LDQ$LtNCl%{@in4;9u;fSo3n9-jG_g%|-r0 zcEizN!BB-qcq-hJ)(QMGz?Um0+6Jo1J|4>w=oEB{=}?~JPEiEu#GTh!n}a@d=@viR z@Gddg1)>?REQ`;5F$JW{8e5Gg=kbROXbJs>i9=D!JA1aoqPpBU^|B00EY z$mT{sHQZt6Vz*`TME|I$ctkQy5IAQ1-QRzuC0%gH0Kh0e!r!vs9%<%wl}12eMdht54{8he(0A; zKZbPeG+)cn_%;WUticaF(Z3cpvbNJ!DY2SmErcE^5)280uB4_KE>HKg?87F!;G(3z2)^Mj3DmOkeVzte7&6%2cPmcLKy!| zo0a+n;}-e*{=$O;#^cnWY^nLCT(XN6;@N) zDc@%=@C(Xw?}e>5V9E$i7ufZd@U{XTRROoRQRh@Oj_>PbJk#+x?&CHd1?TGWJKf4H}x#3L4_3m1C|r zLl()d4dy|FEk^6NG!U#$f#SMDc;e{3rfT4y&BNtSgwTIR?!kZw;Oy@K8@!~8w$xb5 zxDM$j*l`sTRq$Y@^kMPMh*3pGxgVaS%%Ao)4*1>_P^1@M(XsvUWi1i`=wA*FGSR!q zUhhumNo$QlzA|1_*&`1tZ|Gqet2sgbMC+P5>um9npJg2@lnRueDv=d_g!`RT6Kj2$ zn%gydpF>fAF}e74Tj{AZcjS@v^gjagFqvj==XB>MO9t-bE!)B{R@(yL|31ePUeLP+ z$f+tm?v91aVt*t=78#<%4Rj6jB9eZeX3cC`a7Shfq#ipS70$Fbugqi##L|To{K;A{ zm@&FRU7LZLb1KIUcq;-&ANlXvLGk+5%3XMAKjNJv2=PQ5Wdve&@o zcL*<-Fh1G1A>OWW{mOYovrc{t#K)1??Wg?x^K6D0#0;DRcO3hhw=otZPX{z7c+QC@ zbyKOj^he`ON9504PoH@U{>cK@1`q;$xqX#$IFRpO!_Tc7d+&NVwdl2!YqL)RA@yuQ-D>rYiU5F@txJ??H zLwWcb4hj;CE${#8v5-?$DML6kQOqZj?Xq}R{#Wa~cJJKqo_3FsnL?xYVdMJdX@QE6 zBRI{z2ABZe`tHLCaUw-xGe^lABENQ1qgL#GXL-LWc+KsgoF5YKk|>Z1MhPs*+4h0w zb1tIM0>PynK-ED3LugG~@)?80HQv>@Dyt6IE?h>8$?-0=NZf$&QxbvfGh(W&YDIr# z`?lw_RP&R6MOc3JqY`m*Gl`?L2Sl9^6YP{Zb_A_>k?F7xkP+UVn^{8A+GcEn`4}Yb zZ(iB=elMvbQB3If#jR&+7*IY;ma6;iF7S35@dJXF>OqH{kh-QH_{x3y(P-1Le0`9MY_zVCM}63f}&521oZ9*jl#^Bhv$J-YmpMQyp^#PQA)~f60a$9`T|{-`?g1O7GQQpQW_Zi2V?Ye(mb_+;9F4Pi$E1 z>wrd*qavoWvVYorpDeX=q)nR?a?*M7i&ru9#ac_eg^AE|{=CXt8T<&KD^T{d2P=@_ z6|i6>YdAlmJ@SbqYe~Mu(EF)xFemuKQ`hef z79}??#9q|8&s>*V#Cf#l_i~=43VRk1w9{RBCEa|& z(P54Of#xf)9)hRD>X=nx1Y@17HEz|FZr(Bbs?b(cY`>#VnD=2(FWTHGaJ49%$#0L)F?)^(e%VC9VB?zqh67!MSJ&8bbbusG)0dtG>4Fx>UlC|4J{pRUrOMW%M@ z=F@?bH^U~}cm|HQ(O^^}GgL7n`MeaR?hcNh`94~!uBL4)UcEO9*^y)gBIFxx8{u}h zZv>z2uQMuoKD)9sf$6cbKU|}8xzAlF`K)=*(qT5N*ht8t;eES6ZB3@viNhdM8^>)} zJ78@1+LYZ$k+e!0&$h5z@$rk!WV#f8#V3*nPqS`P-A;64zFf^cRj_JD6>g>PonH83 z?tQM?_O|xk&6 z{b9WRG`7EYCafSgxCA*xBzDYyzw8b2(@Oj!nS#zaHfmHsvzxCu9K)&#m2s&d^G@CulkQdKo&d3)odRo0Iqp|B3JS56Ms z{mr*O0%`V{sitwZKaF5hA40ed9jVk4$oEe-seUZ_aPIs@eisAH*I&4x6PLx~Z-oBM znmn<&a?#2J9i2ff7h1$v_bK5I+eOO;vFSBpGbViMFbaQi@;a z`p)w5m0yrhT;t9ZDzY7#Ljo06AuhmFjdo5LxV7Z6TFTw;mppK&ZO1O4-8(MQ!(vNu zPrj&`DBI0;K+%FJlmsMWqf(=q531x0KDCx`&Es{nB-zLNbE3uQMs%-9IT^M>!B<-v3*U@76m@uOh`@_| zW6uDSHH`WiyhW%Lje6HMa|7!0+C+?{v4GYG1MpSz!EA=Y=#IPfjV*N6&wOs9@O!7^ z_TCDC$B}P;B{!ZdyI9|bh8^r_Qg{7 z*!r*>4s2dtlq3eu2MXE(W1Kbne@VO-mQKn-1N;B{=7Q>yZ>R(k2eJvOH6m9&^$H|W zxqP+tI_&h3y)$A5Ggw0&XqB&^M!35jTq1d#>;0amZXFpO{R5kNjTj@|@a#6j!}0gC zxvBkb*x)_wS2PR#hp8Ktw$6^Ao)LNtRV#sn%FvLcMZl41U~n;ojl3V3)0cj4;xss- z%5@5RatA5XfF-=4*ptpW>0OnRMtwSJ|5x`jK`2rD^i*&yee)@n@`ifZe$bLTlElu7~-IV*L#(j zXF$G$?(vN?4jj9Ly6G;Pq%x{|&gnJy$YbLKnN^Ob3hbD)599<>!zk9f@K@?aMt>JT z0>blq#_xC7uuKSrgW8)X_UnBUqAa{j7WXtIqdZy3w%P*WcXSvnDyFi^mlRG#ll?W5 zbmezIC-OhSFD9|&qLE+GX9?LNG4Mm<5 z%+ZtjkdLHI(aH0fUX)X;N%{;IDz~v4^(~QNq|tTNUY+$#|D)(E+?s6LFpi=iQi^m- zzLL@)FjS-k6bWgR9Ni2Un}Bq;gdoy6>1K3?eVPiyi~1p zSb!#b`Cy4;oXb&)Y@KBZ$8$~JdHL=xa{W(bbNy6}PVzCw@5QBWlo=#nsz#BH;1rfh znu9Q3pFi#E4FB**KNo?_hvD!5Le2Fyj&r(lZza-ycyfF#99kuz@G~+TppQ+xn1{_X zOIbXCkiWNQhC}Y)ujE#1v0u~86IOA+@Bxmh)kH9rtoT`98r{X)*Sz2dD)@+-parE( z1^T?TDmmzV43o5OUe-bCE#Km+QWm9^PGBPi_<8+F+593Pqs4MRftBGt=xKFjKwHbGM zOuQ?1YL^OkX-A0PfgM>iGOA;pkA%Z68mNW>Q|2OU&T+%$TiAsxn@z|Kzpsy7@&?ID?8U7 z6SY&P68oG(W?`M0XJKCNfBO3n&lkl|Vn?3~Vnj3LJ`X~MQ26$kkL)K$Y;G6L1lHqt zZUdF>0C%*t;4G>g_WbU5vkRK*s@LSj*t#F94T`=m{X^X6P2K;#TXSYa2E1WTI_s%f z6@2)U8h(GbmAlD_5tE`3kGs_fqEHMgKg;Or;^8yjco?lA626xQytDP80@J<-x!wu4 z@I0PkqQYvFntpl7NyVmV)pj>8zg&AJKiYe|6l>?-*8>|`#MFs;!%s`2tW54MESA#Wgo=fKq%6tcL{9VW3ba$ zCcUHNy%uHe?waGBpm|!v5&KeTc|yz@_l(K+KtD~9l$!357T%oHdb!Vv-V~C!nHZ=e zF=>~ZSp8eIeS@j)#7bgiasFc3);+>5z8?8OMu6~jwM+#u#Sv}i?$o7KVLwe?JgmJ3 zFy6NKMME4PePCsXxQWLrL@@I4Gr%`00h7dd=QgJQ7B}K~TyUL5g=Iq5MR{m4?S9qY zG?vy6a$r_r*oYZ%h*TbB^c1@TL5=?k3V;~vLhRioFYX9C8_iWLZ2<+VniKv5FwKM5 z+#@;}aZ=bjEH^NK3-H?!4_otP0%+^@zoYff_Zzr<3(RKm^6_L&Ju~zcmrqVu{9lbk zl`N7|{=+jjE`rbEoO+A0P;xO)~w+(QGRpEg)qlgh7)8=LTbGC<%=M(~P6?@J*@zWa~Ow5P*b z#G<2xCpfZBOZ;w8(yANw8)CX5cR-GI>PkaKG~=&di`s$9hL^G*pbmnUNmDu7+m>c~ z`IJ6|pEJnKZsUlqe^+TrbT#BQPUhQmF6`w7jewj9@OIl6Nl<^)#5!&jCv)r$2N9$4 zeM#@l!y|WeKUHcPgA6X@sG5aV5n;L#)2HN5jph`EDB_+k#3q~-nnB)*#AVv;`bPN5 z{psg0fa>njFq}v{U6$FvSD!Cf`trZ&qV4+*9Xzx?XZmE|6TC1fepbWX#=sIu{}^C`p1FjAty%*&_Q|! zPByR5&5(^!v2!q(K+9xZ3Qvp8f@F5*1OqR;-P6@QJJxSio@?#&Q~b=Ea*5Afv559X zZC@SI+-gIe8!^3TrH-7n=v;R=*^<$2vevxvM`)o@^ z!>$Q41}@V`9Ya-LCBm7xA4WrKo&3Q|h{KU1KxKE=loV31!hLWL&D(489Q_e9@3-2} ztmex(lzh3<)i)9E$yRMmXFj`m#arF29?#VcQ&3Ryb6s>7{POORH zM6{E$*rbgVdpP7D=8r1KIy3Go}4cxST1`Yk^~StRGrl>`J?GTugJ zWa|h5;3Ou8tE^;Z^1B+O4GTGjyvsl~q)Tnp$#G2SsWoTYh5*qvp7jh&Y_tE?1U6o$ z`>Hh(B(OKF>-BfQQS*n_%g5e}gCu14Mwv>^59L;V$Ppthm<&4q-)b<4;UIW;z4VSj zS%yMp2;21yZy#G91MH=CW~_qwsvJF}O5rX?l>9(lLaiZL>2sPDNVUTLfP)8{OEXH) zVkF$R`LXcSxCW4|7{~k^s#+Kq{f7rDcAYo%INXAZ3+-vH9+Q~t3BOF&LW`oF&ZS8I zcr?t? z(03)~p$dDZOQYmB9XywzO1E>dIBze%!g)ww_xO9VY*zrwRIBUM$kFySr<^_JvCsl) zUX@J5uGr`19N;6ZW}BwHn3-%sKY($dX)fz#r%@d+k_h*w14zFwn^Y|ZV7b&X*~ijI zc2jiTDF=ObS3G~fy=t+^Z^@Q~)vB{h-rbh_x-_kfCp}@S8@11DnS~o;wEp|SJwQ~; z=_o8AB^YCiysIz=5Oz!whte|As{zj!r&M}x-u*ml=ppdE_ffLMHyswblP3V?EgKBB z8y4r)B%bdn0p;@}%JW7(M;9^pJk;Uy9%Y?|zPjkiaam)bUg)V=ra;Azcvb92eVl=O56Q>-1@A55N%jJs-+xGO8lG5U$0r!(>NYE=a6X$qs>g-bWp zatAlWItj&GX-u+2sfB-ZIQoZ|A8|Q+Tf|)8WNw|k^K{qwPhHb^PV~{`n~71gJVgTG zPeB`u^gAGC8{xx~?&LxjN-sIPgnSeI@IJz#b#S?$=Gf5%@15|rR$QDI|J4<~46UNk zh99N>kzL_4>=QJ+e)b=5-?<-G=-WWC05BX z4Ib(-&;NFxUNLrjug>t1WU`9B`3hrvMD_X%DtIA3$g6C|_BeSgFL8?`OQbLAH3@uK z#vCQKH#fuVnB(D0dQhpvRZ?i3vl111xh~arg?KvQX!RgB@9#Nnt<27TBfoGCWJVxRRB;EVt6E8>Ngl zeP5{X3|q}rh|Ud~ zMMDmMu4xnFCS#==@!3nwB_Z(a8H$l!rIm4yW~?Iug8nA)(2;yQYaFq6W3YbHX>baV zX?sW?qV9Nld{tOj-Qtdy$LsikruYMo$?Wg7& zOz*06-$r7mXf_M0*(vYM-HB&y$`aMsvE{^%VVTFj4w#&!WKig&m8uf%FwwaDfi%xw z)(XMi|~&q*m>m@#DBDFZ?^Q?}|4>MTGwU}#{F`6TSu(@aoYO;uA4qB2J`oyIkyS%`4XZ^QbAFNA!Eiu>Nk zD3r8b{^kbV{eCy!esEVcX0L!TYgZ+2A-YMfd25!RGx^2CaL%T{*iu(nLZd0d>hVD3 zlUcDQYclN&76jEq_5_XTKqPas7F(hm27e&P)*6qQILJ)Wqlu$^kmJK77x}e z<)km3wMfX1X#7*5Q8CV+xzj`OqrO|2k(BGK%u7j43^q%e$$|n8W{!TH%kJC~q)3|8 zxt1#pbSsI0O+SHP#*fMohdGauFR%EUzZpt@W8TVnIxpg+3;yDWeA&l-Qu23hHv4q` zQ)0ABTQ6ZGS~LCqM80YI2MaTJkfK}xrRZ%mzq^81aR2hQq5@+=^HYrTi^02i{pNYQ zNbC4VOt%&;pMFYf))8;+@qIM`SyIWUnX_dqB)9iImK%AIZ?*0FSDSZ&ZWV9n-VcS!NCabq^L;IBpW2F$!g|Z45==|C%@|V#{fGB!@6RrMREF0p4#9_m z*yC@(Ad!L0S=#mKroL7|sB9gY!G_<@+RaZUG+6Y9C9%ar_PC5o?iS0C^0GlL@F!xf zV|AnB@LoqPNF?Gx)HjV+KJ?8go_Z7yA$gxW&Qj`bwk)rfPMXVIaaB3*V}xhg*$$im^0ehyw|NoxJ@X8>fS;XR z*^&7x3e`(VX`On$eGa2%88_}LX(8H)!Ui%=DpRgKkGN%hG6VB`q%~JPNEkF*!q6ET z<{;eE8v&>|&ZeOvWkU*IRtfH`WSc74iu{)J!cczum>vuy(=nzAED!|QOcdxr++<;>GYS3=ld-k`41e}%;HsCw=I-~890ALt~FbC!z;H!)|_TPbtB1< z)tnPB9>~(zh2bFTtFEyTA}y%l`DG1h&GSWqIk1QvMVVMv_+P_W{kJzu%`BmEIY?`o|{~7gqB&y<7T zN5hW1sjh#%=c~jj)vDB&r@L_+Tr7Ls8J+!USbSl6FZ5@&)pcgAnq7IFo&3e6DG*G% z9Oiz=s|tv25^|u=Cq#EB$SWYOe}`7J&B#G+8HMYc9|7XqEjPwgGZS~a)>>5p^=xjz z6TCd!7^JjR;kNkD7Z#Ygg6cxU7Fp=b6Z#m~YHFg`gQ7dSc%naFdvixOa7;7)!>cRk z^>h3W*1o~WXq3t+i+R!kI!ay`7sJym` zcKddPi$L34Y97%4&x8JhEUPyF?s#$%13U3LJ>AR50BOnet+3ENowsUs+U>0phYCF%H&7$&J{Jd zfgKG!8qf>eNvN)ossb^}GSAE9ceNlOqkfeESIA!? zXmL-Ejkyo5Z*?%+m+@$;Y&8BVszcws@XHviddpOQu+Vn%7I`ttoMt0sT-u(U(%5teuJU7#lje5zIyF68A=){DfvE7&# z{G@m4i))y#YIr`E0RLj)!Q7Pb;!e$k`6P&hR9^tb9g(X24#(4~$3t|Ts7UsRst7%^ z_W>(_7Lk{jqu812A^7}q*@Yq!9qFStjC>&T20f@Xjih;UP|gY#Dg;T?sv^H?6~ia+Ios&QB{32^yKAy!)_!V2z`!_%&?V!GaOLm z3#o%wUkv!T&Q;KbmY=$vxfIZApX`Js6CXvKSN1NjqN&>qM8 zMWcD%gn<|T@FM5xx(l7e?yObDE>cda)E{&3vl=Qj4G)<|Cs$O%sb&-B zE}`WHyJP2e{VdM&%eF$-yDq$mtcTm2kiK3SbHra%43skAL&9po_l;;H!4zH!p}-yayTml9zXtzaZ=o z_5{PC--`K37;--2URa(-F|Sl9=4@&wB2FgK-lMMd@iJv61^zMtcHq%+>&;+V4GRMv z`;VrBya`ID(aVqs)u46Sm6}P26zQI%jCpo>dN+(}9BaC|U&h@P+gYx^q)=(-eVLf< z_2AVuVgf0jcH%^5EBB;XY4z~gM^v*(Eshce)yY%JWvz>r4vDe`x?nti%p!-HlB5NV zwrW8<@D9D4-RW0K{>|P1@%A5{{x$#Cm+hO~6dAHzUGlg*>GcPhc*lzLc4^?b!!nRs zUut)4W^L8YB(y$7;0wrEFp3`z*QOX_$0ps&9X`u2ou`L zB3o-jryN|bOYf_lk<~QnmkILAbJRT%m|8Yx#Wj zWyz8PuH>|uGnk)T*@(bxR~#nck_^osl{cHEJuc&GkNR`=!$eD8nJK9w;es#^>W_x6 z)`hk5LX>ToY3ri*{^6&3Ya)qZ6m(=g zsjXPum$m6^y5i^13W(>~usk`CU_60{T}0>kas{oDhvS~tq2IOA)Q-7xO&w`1smCw( zTC>KLEv2eE|RL0^R6*T%gx8vB4;#ei7}JLQ=3Ip)Hv+xogfunU7g@-K4$AvkGYUV3NIsAFQSqlD^K}As1T9GFJ=Y zs6W{b^Q6|9WPQ<)5*yvg&ixB?v2H*P6dPpwBJ+l`n6z=jl7`0|Z*_F7MqiT=*07%I*@p5gSktUrxCzy^|zp(gBs8ZR)8%U9|B8lE5meX^y3h6(2?Q zd{jAj=}bOe)|%i~Y}EgxDfp>V&-52&$W?DPLNG=rdG5>Y0lWM2Ccvy`P*G(1Q-{C# zT1(zONLVCgTgv`KQ*!iI-a#&^@t{MDZEoAZo4LhdG*aVX+k7)R zG&=J7y!ccfV`R{@0Lh;<5F@S8nJ*lXl<(a%kqjrz|D^S3`rv+VrlyG=qsyJ`J+TN1 zgp@n!3T`-?`91E7Oa!_G_d=yv2bfa`#D(a#R=Zsi#Vm`}F!nIS%N*y*^9uDFAT zjq9Y7&-TN&L`SKalvILh47+I3V$ZhPr1V)H_%9Q;F)8v8M@g&H*QL>|>c=aze*zNR zu|oRO)0dtu55qrf$#{GBC{=(uBd3o9=9)5=#-s#3&+IsQEc0K=JBXdDQYM`uJ?C4< z@mW2@#vr`iAl7lgJeyzDf7cpEXKRQ%&b&z@?N7~}>tWqh;j1fCR$*NCr?)&pjvoNL zed~NzC8XG6%+d6oOcd7HW>a*@4b43iV>3qNUX(N z<)U@5^ObCck#bt!?nSQ4oEalJVwh~<5FYmb)NKARbH#4^NDz7+b*+_S zB)Zbx)wwS1wbEu8elzq-{ZRS*{l7xm)@ZTmGefl5YC-5I!{ek-f_~Rj=(b zF(BfWm@UFmp#7(@a#neoAy6fDO$OgLawMs}cz=4!AgDm7SE)@M04OU>IB1M}TKz0+ z@%cOXWKL$`XxgV|_fFSZ>eMj3YoGbYrOUXMwRMcD19lKYow72~kIqL(z2xcga?7J7 zg21gRbTHDpTv1Ib<2~3zba@&un}_{pz}w|Mzs2@q9!wic6uDajulaE*} z6X|*hj@$DDTg4rIy4`G(u59V?@epgrjiJ)WyR*oQmfx&0_>wbXIL(^_PU#}5W7%WG zDV9EvXj@h^@tPE^07Lp@6Q=R6C$r;Uo9oBQ_yssU6HA1RUYNc8rg-md3s~Ddw;}27 zA+wEIlEHkY^soKK(V(O7ozpx2Q;kPVz5(PWKYBl!s)G$eI*yq;tfV@`m+zZUW4;R*%SeEK@2&P5{;>2AP+1K>)ZyL-%vgXn4JNeLN;&RC z8mZd|pWm`c+Nu>ElBs(!S^14vK=IAt^dF7k9BN- z@npuN?-TSo#1oj*x6@H=&T(G#EQh>;(qxfARdFI?=SeolqWs3qyX-=-Z~Vh3D8J0A zuttB^zNzaSWj2{n=7*|nc9`=45*9;FytYjh#`8W|yX{Hza(4;16zb%0a_OL{svoFs z3r!-e-j+6Vm~s5|eXUw2-g9@h@-8{501>wbtP*}xOy}Bhgr4>ZHj}olVUk}=rPP$O z>}bQ3%k190fYvETMFm)_+8UhPpmh4`YT25&jr>^<>$Vi9=Q`7yb+KzVZ?p)GTC6u( z#)bP^&WR&3e@9qx!eC&is^2zVg^n{P#vWK(8JV3m9%(FCN}3MwOs10qKx1vWR(AjN zXqqeYRB}C@Xx@edEo8}H6wqc~Kv4VhvkCg|YBY0h?mX&7XO$HbJfG)-h4-J@dF3kDrx!x_wNib0Cv1veL8Dyd} z&UQ^BB+@iHBFaGXA5VJ2#;}rt>ZLfvGQM%8B_iWWhK@n4qhQVQiQ$t0ky2 z_x*GRZ!YQgR;E9`y^1P}cH1?|l#xHFoi-d)aS%A4Ot=aMIyf`jn-7HAXm`6|lDkBV{10Lc0@vf%g|3jq#LM_0vkI8lL@AD{P5*R+uR zH8wV$5A*<0y#W*5##cP3Fron1(4{PjS=m8K9P1jqsnQqG$>$&#kR{?E()CKcH9yU= zJ2ZnZ@_i0zLi+<(?Ul7gX#@kt#P0JFCPk{szrOs%G0h9Qv?>aTiEhg+8<+N3xv&QK^O-oM|=6O{NrpGu4RQMB@(1nfp} z)|PRk1q|tD|M%`IKk~(bhL?4KP^4F>pIX;+TKHSO8anr!$KPYdX6u%u#bf?*CZPQH-S0Wd}xK zJ&Ot=qKno^uHgZ%=yo^G|ceRn0C8}-~7bI&bqcRu?9(a#cn zV`mFI3ZZ^w-dip%MJkW)jf~OsUq|IyWlgOdyZgAi`4m%lwUjm75zGLy@KJb;Wns|9 zEkg?T<`a-?>sbSqcTyCAks4eJ33KOH>ui-ciOyOhl{N_a)ll8!{HOBIjvLG3sJUtX zclxg*>AAY?j>XdJF}N1%QH!x8x|zkt{{2`U&fo%HN=$f;L64lPTz$+Vc>CZIZDmZS zcpb~V=AILey4mV6b2lfp`4$G5Ud7EHZA~A0NUKOd*9ZMm zcC$qAnf5URYT^{sDnFhyXtl_;%b1NT+!YWJNEbcV>0>a8w2m=3=VN3#F3NCIb~yM7 z|9zPbFhNLhBaMh8uACL=ma)iI2dYbS|Mlmr@wyN!P1EK5>2RerB$+|B%b6eIJ>TQN zUM?=CeeBlZ1%d*+(a(%<5BxckTGiK!xP4m=@6cb{h`eq*NC@pE=At#v`T+00nN|}l zXktXqc(pvr+Nt2iQW@fi^wDJcqT3jUl{=VkUxYmAbksAMcsvyr+19^83kjyco1_le z%`&66PTo1lyFBaL=_42fm3Q*AZdGTSW-yBgAb~eV%Y1`5`re>Uxxb(_dxhrvK=UL4 zPwuE6ed`G1KfK}=k{p7Z@Q9d;$+IdW z7)3JE0IkQ+`R!B_bOhdg)d6JUP&j@aJ`;B(KLxd3?8EVN#55m48o>e_!fy)(d9UO% zJa*f+n%&k&qnf>Fo)VFrE}OXQnjlY@cjhqi#&r~l;SOEDE(oz}tyv6tHhBw}OQh$9 zcSv;E81vh#mr`_~#eaBr9?P(9WYuVh92glDhkc2T&SOqlT~rkJP5)->$o?93(Ui?o ziEvmcIwExj$tKO|n}3Q`*^wO8up7oQt@)X^&y{TzpWC) z{Y4n`XZH3NDh|sA$St-FPA(R#hznWxpJk=$YoHk1+G(kRnHt7*1jqaq2Zk-d|Fr`RUY$q9?CY-A{s@lZ63+4Xgp;-HFw9jY znEsk^Lnez$Dz!g!8+6@M!h2U6M=i(m?3?B$U?dFFVM=X_swJ^F+s)eDHApjV9CpJ? z78IX|AIQzvaPO!4hbLPU{auqUMZ?o z%(i{v$;cE%vTP3r@Am$B-5NK3-Wbxlq%bPzXL&+P{Igjk-W!xP8o=A0dJkFmo`_gw ze&1wyUD})4H>|)38Glbw2A(k8thE?mNA1K)`s4>iYjZSmpmjoASN+m7?(7G_#N^Fj zr&pHscxl>z&EX^~*-Od|pL1EeF;VG0C($Tfg-%IUp$D!Du*{l^Wq>M&;i$suVBmRJ z4S1-}NJs%D?O{vsz{ty;Ft($;ar_t!-oe)AxB+p~D$f-DJVdCI*scei#&$DrEZza- z_L*D|Or`VlkQlUsxkE!8H0QB@3R;#<();G(JR!dl!=y1R^T$6l$9&QP9_1TyK)%+b zNdkqQR7_f_@q>=8-&YMr6;(4jLpHtQDq4-d4fJZ z#OG>Q=LHLzo&0PXewaPKsm>miE6IA)#u1}>EBB0dydVjcWL)MTz3bF<4PxH99E&9X z_ZO!lh$Dw`HAUn0IzLU7Dr8u_*W~FNcZ>XQZ}8jo1SHQ(#~MOH6kImTdp z$cle>{)n$>47>D4IDTAo-pbCquhC{*5oB$ z29HXKm>qNx$(zNiu;LU#&z)YRlw*|pvWIDKfoT>$yXyOC_f~7Vct-Z zmoDv8?@P2uJ3e5CAPg0o=RK6ro+xwVO3)Ij{_<8_{`8TI^Xxj+DPS%as1O^Qn0Q|= z0sJ?Do<)=l`f#b`)e9-#aUY-^*skc-C0X)rf4S$T-9OI6+MDdnnZ>|*q~EdXM8)I= z^5iPaI)x*P)uM{gveIYcY^lNwqNw?z4ZpqKPP-z% z4^^#Fw^Of1_2hm{dqWxD=_d+#6BkX?Lnbuywb`@-M}~3~+i?_Q61L-2o(hY9$IAPk zw5v;`<5h8yWuc0D?0na#C++HMj%0qL-B0Px*ys!~?~ZXfqv|MzHcyF0f*hw3Ov&JM z1c9=LwR(YnkaZ!tfZGstRI%yx@EqcpUds`l^PW#5mxCeco67S~;z%CN6{wnCKv1e#ch zk;9Z8l+8<6?JQ|z+dRIzq5lGbf)jMEsOzm7WsxnMBHgCupT z`N4(a)5x=!0|1KAc!suMT(g-gbYUdrQfex*hK_sW)K4*@7{5049mV znCHIh%MXH1IKA1=#I?^kHiNSz4LdUXHP0YPxlwi6k9|>RsR(?%J}$T&~;9p?Vx#xj-g!@e(Yy2 zS-a>~HToIv0{y1y<0*YP_Su3Tid1=T-Q73ACI9fe;cekl{qlW6IdTlu~GpY8hPHsVuSo* zEp>k{1pSw*mIBefmqmBQ?z)(Ezmq1_2^rN2!&yU~Q8%|%{Y&U+ErU4;g$7^-19l$S zU99MFpl;^VmT{c$943?0+O%qXsrLgU>qD(~rGW|wAEjb0XUT zmP(`t$R;hzZ92)zvGszRH$03Q-g4#wM2A0g*vQU6t+P(q;SPHTz zm&=;@r#Yfm<0$WIJkp_)1+VVv-eAE!`Eikky1IvscM_5%lX;BHPpgjwePQD$O_7@~ zf8iFIA+68v;@0j`JrGfizI!P*xviYWT2nceG(0+SppnrnpQ-fK|Hlcc&{&{O6@AEdh3onO%O!EE6`yvV9Snt|a)Mfy08E?0Ufh~1~;tElQ zh?y&7*N}YeA6^)Zp<|5`gRRzJQe>aCCr?fR+|39+BUubxsE=Z3YWB&@=N4|CEZ&>5 z)l^5RBTJb7;oaK82ABRjfq#cl?>8&gX#}WtZ#*& zG-yO59Nh8*LeoW@YXaFUP{u#DUfhU(Lp<`x)E-8K_Bs?q6L+V)(hIIG!YcW>Ipr@X zf3!&Lqcy3Q>T!jOe1vteP_+u!uvA~QHzDzCuV`>D()9zzr|B3g`>b6UxX4~Fl)mX( zYoXoz{NoGvu#R}b?wM3&sTI@u?_Z1QW0&K-7jh@tmqM7U)mvjL(oZ^L^}4oF`J2=Fv(T7%iJGWuCYHZ|y z>bvR05#PII!wA9nfcP>b`2 z-8Ut6CG+Z|Ic48-)LRWIcYmL07WCag?^5L~q;PmMkX!k`AkMwCpqNO`sK}Yxa5`E% zu7rMfD;;gxuZG_sh*X(3z;}qeO9!z**3P;zDbUn4t3_h7OWRr#2PWKA%kd*8(v~RS zvzjo*3=+MK%NF$LIxe+b9eP~+~8oDG6}iBwY! z(^90sS-PpvTt72k`BIPNrO^t0TR9e_7QN+G@X@XXfmpE&52nujy+5KC9lnnv>)p3p z#y*``6%1+C%*XV0n24aoe-cFT$TUKd7y4glsmzKvJgOuqdM$BZg`h>`vKWAIsi5uJ zvxrb_FC11_C^1?u_&F+(5m&;q(u5B^9pfzYU%3R+4a455+`7OfuZqWPkxvB#zD{n3 zy-j?>Xq&rj>%RafY)p7}Nf|D?F%|zORqQgq_*>&&ylY?_ljP=5sB8%~JsT)ws5~=z6o~%WHF*py2UpxwBdF9-DHO|4RNs57 z(A75}($@a{)bF96!>ufA07(TSh8m@>vqaSx3m>WZsyH~DA99+kA2QoI^!@DMv;UlN z!HS<*GY(*MN-j)8<*HCUnsZ#fVt-RsZHHwKgU3I|rpHsV9zA|-UXK9%!Z)SBY~zTZ zf~~D$u`(xLjK7*Cc+dS%VfV7Ut@!=qtu=cx_gwQoyo24ZR(m|4%VC`C=-XPaA6f-` zBxv4b=>n(f=A@+%PBb?VNpkxUvfYDwIfa$T-676d*rSo4o-kUvHVmv%mKW%l4|evs zulS}{EC{%l+C||u1%KC@Tht%(zXO?&SBth!T5}pd`L+IwgIQWH7h{KeypDF=>XACe z(q*S_TFLQIuxjZAX1$Dmv!CHCl(zZ*#rH7yE}Kt$Rv)7G#zwW$JH~#76SF}1Dza!h zW1DJctZfbSsMARd2c+0m#H!qV6(8f5TOo)77H#`oz97GOE3RwY!9if-3!QIGzrwl; zi?1Csfz+sN$r=lWGv)9 zdF5rBUA(&~v9(QPN{QgQU_7vaEcK*vxUJRic5v0eXClP1VWLx> zF6>YHWb{%z${`l&-vR0NvBXfJL%I;(KR_iiXYB zCA9f_bN-MBk0!Oqm^9w7#01RKOgYv48XC-E5k}%IT6R0);`i)Th?-^s0HmH)$|YxXL%`wQXPH=f`= z>8UGNGL%u?9tzeTO+HAt|6xOd^-yw;S5vV9NbA~Du_6~8F|w>@&ShRfttTBvf;erH zw3dk(d){i*ezpxbam){0^ngWC z;R`k9g+% z-1zLb1r4m{jHq>xKLYz^`g_qY$eC6c>)X?A*RD!O$r0?6*P!}hgMzN*Xak!Fb<8mE%t^K{2e~OQ^oz>X8blwK=QI zqjHBnuQ&WW0%P^_QK-E`Q|LzgqaIKa#uX$8b)DdMxFB{4^9o=1^=N?TxPN{EC0AyL zF};kypcxNX)}l)u#a&rcCh2ncAczknkBxLHZ)#n&Oi_J%IkeKo$R-@ottncftanHxz6YiL7wRBKCvmXlxQ8$obFc~ZypiN!8 z013-(jC1u!zGpQ5rSq6@)#wg&D02G_W2;>^-pcCO($LZHq)YpTr76K^^7LjxMT+ZA zo&8|dYv^znIMnXWPjXv1vNZqPf?}jQdY{3LJ(XSy#n|qyj*IY^8AAjPAe}c&Hk$qQGww)<>x5^O8&IU8moJOyR6_%8h2s%Cx;( zyz7Y2+7z}QIy!JqDG7oTS)CqX;Cv(RMm*udv8VUJt8(C zF@x}XpZ5=lPvSh!x$kqI>-t`?@GuqQ>e|MNE35sK&5hZIB(}GbJoXR)3;$~NI4Oaf zr2AFsj}pcm{DTh&TO3>5Onbw@+B@KC#=ZxioH?W#D#s-u;mnzi3nSm+k6GLn_w{Q@ zp_b*vS0MbskkOTES**V8`;Ic#gIh3Zm1$|}6|sgstNcQlu2VaNRBWX3{i^udz1i!y z>EK8BtlnTQ{fGG2mEl-s^G#Le=L%&ge|m7I8@`c*P$h# zP!3js1UN*z$6}JA%7mB4a+$Y)fAgm=b6!b$q`6XYD6K8{f5>pz0H((tRT!|CR1u z{axuanFEQ>T}5)p+#mRBbnic@!~F$_DG!Bh;P>zc;&xQ|vZUn_nE=21hI|xz*lEpI zKgGHxlH?0VvGd0+4p2rfjDC$WEXYo26H~D?xrpc1pb_|DQl&qt1F$LNjO9~t&i7#l z!xq4?pL6$QYFf5YU7y}6spvlJ(IxxRqvJU^+Y?vRy}_E9#U6cY&$jjS)mwljc?oap+~M zFVK?RV@c0DK1`-x6~u^qU2I!mme2rbn`Cz3m}e8BSb!;3k2;sO!}~lHfxh-t5duu0 zuRZ!)e^uYpc(c@U1^nxUYg&=MR9(x?`!*eHf0#(?tN|SWI3L$Xpr5!>-P35j&h#!B z*#F}7oB10bF=w-c%Nu=z0pxSMcVTb`;(;QN1I5{nsB)`X6J_*E+YUnLMJ%f(heY{w zmy&48LEAY;6Fz)(#SQ|w1WGKYVrft>CE(@I=e}|1RH>MW+J_kco#qX_mC|8hGjP=! zlw&hW7fzL{@c9{yIexE89^O65f)7*0I`90Q@svrWYu%^&g!13kD3-dGwI&!}$F|wd zNkxlRQz^9P@>Hu=N}GFE4g_$$lPN`}=$$dU88xNr%d09V+=bmluh}!Dim9Ko9^OX*7HT5qh~}t zepE#<@YP(Iv-$FxVm|@98TU8+pZ)77ndZepUw<1VM(CR#RZRc*u{Ba%*Lmr!fHIY3i70(1eJoql^B$o^jSqrYEgqF4Hq-(d3g3JR`b`5f-|_n zykU~xphqfBU+hl^Qn+?x;675Ol|mrfXc*rI6n zA@4NUObN+T-kj7M@~hLf#Z?bK>QyPBpm$+|Fw`faA8+l)lm1>by&2-HRm{}=TbDeH zGQ?`w>BzqQvi0?o`fd7@APKOeAK#h^fj(8V8V`d|C#@;$@LU=8&OeW!OkJuXE4W|u zi768!bi)fQG#o{Tk3o%6L!>#V##;Hz1_~gMLUq^KSN{=-slhmf?!AlX->fLhws9C3 z{+pTNhTHzOi#nFkD}Bg*HRdEGf*kBSRzRuH&Fvj>WKj*T?dpGeVi9w{!E&9pi7!_< ztR_g#11-vI3S+_jUFMwfreb_Kff8FW&+46%bkyu%zW915NBSSp)R}Kon;qwDB>eu6 z2kP2HSEut*oU&xt-rY_Uvj)2(p+Zsc+4J^HDSqYb{dI&$Fcp48g_Hn}1bC2jDUM|b z6A~RBGRyBwOVytxa$D{Mo>rAMmid{TS|BAh3!{deY@Ck`a~7>IWi23E{N4=UrlfkT zLbdaBTx(74X3q2TdYbCipy6G=)tZ3m2$ZmpUzYlWl*J$SANYVNk;BA9bn=d z<6k=OWG#S$$J>poibR@I$aeTXP!=o6o1E`}0LrUu*B8TF2IonR&cu)oQ+F zdsA-&)g%9ji8p8aw1H)SVu{ZdNq*`yA+_984tqTn8waMgn}6PYM`%v-y}|ZxsO2=W z$kY@Me_2@*vC^H()#%h*xXyDML|g7DKGOZpyS@CpTN?KgDieuLaNYmzF7LyG4lEYZ z=MGmxFJ`V)59{bRPJ4qHoatqw^eyM^(ZPC`D~M>Ge{xfKJ^j`mGIV*w8j;C^yIb|7 zHLuVKyO41rO3qIfmMk^2Dml7u`AI3ltl7^6<7EMf*48im>;A;2PfYz;HoSTvOSyf@ zp`tzqrji$~0>QE276;?{O^?G#jy&7bxs@YpMRP5#$}B9UpLhAwj#qaQgj@$B-vnUv z5XjVSy(PE?PQ8%ikJwFKHwJP3uCAj@bueeu2;^}_5Nc~)|&Iv%(OvE zQ7c&Zu?u0y$!($F^Oc+>2;oS(yemWF*)9+nr%}C4)ORlc0J{SPX0vI>TUZXJ1}kP& z2e1p$CIVs+9TbP7MpYi@pS#DI=Vi8L{b=tJjL6WdCYgy!c6;9X)F|Uma;BdhN;EwK zEtaE^3SFUK zx_ZciDAb4ilHA~~YS5?|f1lzlKuS0AS}YzK`s)_KAE`?5PnW~{RRP8(m-FaH{ltCE zs+UFAKTrcVXNUY6ggfe})6#_?XTj(#i(f_e^@Ga(>1X?4_H$ zE>>9VbB-^PTm6YT7||jKh(QX=V(PxSRvz1k+o7^jPK(t@uAmm$e;MXQ@z{I7Mz0#)s}h2siCOSOSv6pwf>$<{T+C^&?Y< zD!}inaOV5T+|^L~kEAZJAI(ryQnx!3-q$x$vPt%|Ov0?;Y1)yPrGm7~ZKaE?@zyWA z#Vnql5RE+4hvG>suyOIphd7@ze@78oGGEp|kz8U#^o!?Z!XJ+I3^ig+VlA|A4Jwy6 z*MeQ^xSrE^U3$EULS3Q;o%nFPeG>5o#!4E29+sAkSeiyC#eE%!z60+AT$+2xJma0B zVzhRuUYbKyZJ~#+JHT1Yk9_*v^o;r&cUZ`dRYZ3CDBHOD^o+H&Ot~g^1z&RCcq?q8 zRd9AiEM-V1?O?^>VCk$^hxp+6CXyzWgFB+4l{I1BAab~qz5~s))90*1uP0wpxy<3d zHHMKANAsD^^BMPgWIsKVb#oe%%1?nb+qANz@!HzSYr~{V=(8n%H5P z_>+2Il6I9Vj+&C)aCv;MvoT&K-J?3WcdSH0J)7>?Qq`M3Uy*_T5hZ(cN;d|Rj;Ez3 z1-hRVXR-$N7x0HYvZ;31T>UtUE_BiGY@6qJm(%>?+qxSuTfjM|_JxzOfVh>ug9EBe zRq7J~mAAMEa5_WI_ueeRY+?lqBC1=w~$ay*PYZMYfXqESLIn@$!0R-HV5PlHhmmwiYB@aZawwk z=Wg`Q*(Y2~+So5DAJ(0mBjdc_3G#)_GbZP)G*i>VQ3H=v_gBvi3v6)=+w-74CAxVn zVfWR^GU3j3#p$D`#48jYZ>t1+reZe6=PVADQ&Ns>phZGHU*0=($y#FA{cpe{O@cL( zt$@R{Q||43hRC5NSy2Kdhg*MI%7l&(UxJ?eUfVKZCdHt>9Ui z>zcZPe#X5|!6Zd3mJ%$wFfiic{?UBN{tb9D@Fu2JAw1I$C*4lQOq4tzyH)gh#^k8_ zY7F&P{3!{N#O^;Lp#UhD$62L@v}?#eL+F$@h07<(J{iv0fH=iL@YJRKu z0t?l2a*M~63Jh^SyVoL4eu)*t*H6HmMDJKvhg#_^-!&efYfBSLM97W=uC@69y>1p9 z`{rreJv#NL_O*C=1+y zkIr6ipZvC~FMPPfZ!wnB3>N4|-qtt{VO~^z2T$&Ej=R>Kh~MpS<9suoUAW{s#)*1=nuvXW3C$-~3yquV@0j z@+)kP*1Y$Pi?&HIEYousTXJKKY+>%=>V1oUIzY%c;mDI3PAwa&8h_H1soKf;?Y`;B zfRHrOIUm(xcy69}V(lcceP}Px8)^{oCGUwTeM6wb?dA#K2h_;ypQ3ei)!}zx_JG2A zy~6&OW%=xW*k5LYhHoNkx6pF!<%!^!MyvKvU72oqFPvrAMo{i1sp0bh=3^lKB^EqC z>w5hIH~^_z9>MIC1`Hun65~H>op>maXZ|CaM#py43hxVQLl5kzbyS}aKWYp+T#(ut zhrOQgT4KGSqcZAdaZO8dAxqf>{Gm^{e>ogKqgH~551~i9u3zfOr`9DBdMh7FvMmV}$N^k}4$vGt=q@YnD9Ui85;ORZhK*)I!+QKn;Wb73NDskX z>9%T`@VW3%-Vc-SNR=8}{e~?@DhA*TL7Re6xUxM}FcdicE-Th=9=##GYtY~;s+SXV z{kz*!s&c3bhUE3(enc$0lkKGh8FGa?s>~hC=*ow~nFxYUB90|XxF#|EK71re%XWk= zHtL!MHS`LxGo8dNKCM^InpP5s*!ulV_Ptg+nr~Y|YZLE&af#gJx2vyjY81c9n5?cC zaJ`>Fw`}wG`;iLq%E|9uaxza=XAF;seDaOdk$TY;H2Cig`?Qo2D+s@Vdet<(;m2-r z$?rM%@%e0T4nXOqx{f!qj|3-W-b?r3`({Yayx{(t=)wAxiN1W7Aks0hrVGD`WD&ng zDz#~(xuxx_vjW(9=}4S`R)Hk>PJg%ML>`w+Iia&Yq0%CQhT#ZkZE5J9R;xOZ6npK=#pQKt%@pk>vsHZ3r+snN*;bph-+{jU zAJHr)13}5dL&VxR?TE=@gNQK1UA!H5EtscL1K+rSydHLho~4kRxdcT)J=fjrZE7|_d}Vs z`T@#p&=&}twUxo?jhVGdcN@)ux%2BCwuxPnv7Z~V^W^EjxJi7FvQsL~$k0o@%=y%r zUQwEt5I2;ysT8GC?G{(OVD<@S$M85?!RIXQkX@OxN8yQ9+ZUz6W{>aAK+jF!u04Zl z{Z=K$K+H(|h(FscR7(dyEoR1le_PP2)?5!K8h9)Noe7ly5<{FgYx?$YTG_(Db@+)N z&H>&h;TnR=76%_j$SAB>iB9{=MXiAeXK3)C`J*m%IUSfFOE9L<~LKp{9IFmxE@GMtOK9&gf@M z3CA+`t}UXuk)(;asdGd!t1>;~M8xqGbZ zSeVI>xG9}|A#y+IwCSa^XIP1-(jP0C@U~UpKCVh8{zT53N_5RS%f_?P-`e;D_iDQ@ zVFC8{D~~s4s<(zxm)km2nW@)&mvmdgyz7CcCM=o2gBUN~^g;~I330L6UyuaEv#qs0 zuDot)C2e$@43@yVYiqq7&M3E;+vv;bFx6%{;FS3*G5P>waYMm)#j}$MJ7)w}-wnG{ zpJ1-VU7rYwua(aEZHlUzW%Dh$S?Pi+7r;xHhUS3HSb5fAl4Nl0L>T$#hYdn6>Q^7y z4CHHLm+}U^{^%o(yCvrq7$NUVU{E>ZXoZvnBIYSIYf}c|_0PVhJ;tL0a z&CGsNpbga32B)BjqqLX>q(SoDllo6h-=;0nsj7>ONc4CNNp-2RRc5w(#;m8LA zYu6S*DL%D`m?M04Y+GAQv9 zmm(A6%Vil_z<;%9%RHhMOiR!Q2%CYOL&Z*T(%}0m5D7oCc*eWe5BhlMUOne2{gmE2 zM@$WfGa<`xdm!gA%M_2k5^`!ZX`wDwT8=9XN*Oh2N$nc7rMUf=%yd<~&qk@e&k`MM zNOHsfErn$#f1Wg`;wgJ0JR%sFPPE-Ko6anFsLGy=g(A)sG&sq7-$m zR2D6q;y7}=UEgPVcdI3yB%2YjLi;`XWls+TkKkQxr2EyQ^Dj;Dd%qSIMp0Ix9fyTh zUE&8+JR#?rfsrvEx4ZJGYfeC+QdaCW!|typFqv0+p-X)Aj!#G=U7FDLD$lsHPx__G zT-I{#DI_xQJiQwFanuGsrnsoykWYzsCj*qoJoDg9(4=VVXc64evLX@PpB(SMPAHW< z?R}w=1M|LOz4;p;+M~j#Q4afvV`vLe=GZAsH|P^;9|{=1zne|>N~ma)FFBXg{K}|1 zGeD=%dEDO~AXkxB-~03?J|vNxy^Z4d5QxJ&K~OuIQv>=+#plxlP7h~A9?qt+GBzYs zKDbY63F4#h5URLeW|*mGSP9Zy2=cntPaWKSI-c!cnswehV|VF~D4mD*Aj5&EF^#oo z7{{eAfjiSZ(xt5WN`Z?OY&TNmCJTTg8!$7O7=X(A1@$4PY|*dD3}0BZyDZY&Yx-(I z_&w$Uw|hS+PHZC~Sd-?iBY82^E6Du3KAS%C(Rv6uop_bQxthNK8P`3KyKSDI`xOhj zJnND{xhozL!>8^*f~JaYmt~i@n1P_pcN!CZu6)@&UAbX9#}bUxMD4ZtHEIAAZQ(*| z(efE*wMwL7LZB*kG_kDOVY=p8J4naCu`VcA&TjFZ_JfVh_+sm!?5nqJbjr#wQtV+D zD?7(f?=-fo@CG4mEn~vZ@b~q>Uyz6%B}YMS>ctES5w*;TMNRXtq!QBROV?0F0Y~j5 z3ehimr+5PjfRKQmU)MWG&(}OrI1sUYQkZRZ~+f zBX0-1akUG+xf_$c>UUqLHlrKv{wZ%}SUs66m@Yk;a}_N&+CQhy8XzW1;v>mv=w}Z! zkyyJNO}i2mzVvPV0W;w6Wni~nHeWImeR;C*@;dK^$`1(jY@GM&+&z3Vm1i5|>p>sY zkf}LXRrRbhk!W7lV7wXH0j_TA!oWMNZ($FkYf83Z45%RaF}kPuBBCNTBZrc|R2mW@ z8T3uov0`8@;hzzAT9(74Kf8Tz{&aKW>qJqk;6t1oHUdrRt-t2e#(oH~br#0dnmPLW zq3N4L!u>>#LVX3&E)r$8)$}j-qFo0TbgL(hfy88=H^TzDp1rK6(+8J92P^Br2{7yH z3T1|#JiMx=s5`H`b&EZGeWdB3aY#R9ZXc9?^yIho{p-SJ@`9BW{Fm;4L}V#`226~R zctJ+{D%SI}D%0w#@Y5UaV~!f^-6osw_{%-56!1N#aVPAvoTG7G@rFpvPBBArw&LF4 zAB};oqB@CFwx--^vZkwqS@ch8PvsiP`U$#*f>yrPI!man&UPd>Rl~8`D5de2Y^x_go(K)pl1|ggZ<{GtwcSc zK6O%}KnV(6c6duGaA9xEM#|MIHo-=LKU2_synMFxCJdl;&_}3$88Yk^W#T#GMsAs_ zLbR$cBs094oP>W~WISZ*)lgM7m>?xF*-QB2Or05^bfPgj8ne24+~l-(1A%T@allCs z%oYUISXLb+9kc2y$=AvM5f#@(7?5c}bL!}VacJ&a4dz%H{L|h>+|8)+vzxwYmcawE ze3}hqaZ1$ZPtd_!wV-P>zpGob97>;BB*ex(e>=rB!nJH#k;t<_F=Z*q#b-F!CwNJj ze1-sBl>>;=Wt>;;7P#O%S6h20m)}Ui!H*CAaF_VXGHlrF4KaK}Z9sO@b-gj$0olSP zVZDLAf(kN$J9XPhTNY~gWb~54khC&)^HEv!yGYA~?@5+8@C(0D^-0Mb2~B)#6+kna zNvWe@?G>RjF?c-4KqmAZYe}td$9>8_*t|I*skM1%8J-(`GkZM^TLhHQpV_yY_bNC3n}d~8;C-ml)cO5v4MJj zIk|Rr<=pHUv|Ge)*h{=|Id4h90MLy0RkYdVeJrPI-!f4o=TQP+{QOabYI{W?>Fegn;vJNznygVI` z{98D{w6}6OL$1;z8u3|^`%7P@|JQ(rT(@RE*B7aw!BOVlzAoUmbUxlCWOT*{QPW5Y zB!Q_lCaDTB~56$4Y9|Se=3Ubrc(4PKLoo%tSAn7SyMg6w+7TZkpZm<&G zp7YxOA`r$g`YolsVG%D3d9aYv zjxX-+ipJzAoZ5V$HrloPNk$s`NafuGZ3a1IbS7c9=DNC7ZZ9)8>!-D|3Dup`$@|*x zqurh!5k2S1^(P2cT~{auu7Pg>X1CfF)Ly}#<_Us=EstIKDeLs}LFm4d`q!_q#bnM6 z$fDh(2`5FRAE+mFxTnI9uHSPb@O769o2hbJik!%$>Q!HN$kuB1;#6 zl*Z3*X_~`b-3=v{+XQRe7Z}kGOPr(-XYmh{2Wc|jC*6rT%+98rZyJqgtG$!{N%6@~ zN0z9t57S7m3p@83A=E99Yd6EJr!O5e_vHHPWxje|fsI1zCHKj1_q%v)J4j5k9d|9| z@#{wKUea=PiM~Csz-}-xb~HwG`s#)SY{=Lz9r35KDV8hxqZrGl@9*v<&y@N9EW8R@ zY)Kt1|AL)nDVkrZn_>?>bDI8 zi>5vpYvxtX&}Dug=alB&{1O3T5lETlDnF#&m}yVT;1cq=i3I+PTX>?(8-Ayi*PLL0 zE$Xwf@oMl|VCQ^UALn%>6mMvnk@e%(0M}L`1eL&uhQ}+iBbiU~*>95WOlVJoh%OAv z)n5h>$9u#=$n&)YE-iq(+`TlDtfivzOWxqj9WYi`pSf(^0})rGS(mi=0wSpJj((8+ zx&;cR^p@h4XTK`{U^&N|@ALzG?#{<;%)x+jx|%fMfaJ0;EyfADd6A+;RZCn;bk8^^ zJ^R+@TT)#Nv5hV1OVB?k?1)UNlZqhF;{C(WoZZF0xQi%Q2CUGuH41`)-(Ul-p{jID zb1}@WDHv*K3Tr52>Xc?KZdEkGrCKl$1GR2S@iudKh`HsMZ+o;VocjXiam=<=7_7Pt zu5H68p?)2_A8X~Jl4tIS*PtpD`Yo0#qwcYjI2BiZGY76AjV_=nh8Z`1UieZ0_=(j6 z3B`SNh0w{)_k}7k7C1tJQz?7Pjts!f&s5&W7p>9U-mxaaO{Iqs_}1F)?wLRE6wb{L z^22bPvc8lI*5+UA@?e+iEA$r)X$4#?sf6E*X)VE z3@VC=i|v%;5|kg_*~|Ys_CKPT{@zv*+K+xgEUkNOB@WxZ(QT_GDvU6*UyII}$S!x9 zpi0bn|G%t=QN6IgTn_WUciOOqx*qH*HLdjXi^HGS7p$~6f~c9nilD6%dE>9|O%mlu zJkTE8Z7-5W6Q8E5R|#^wqb+vx38j`hA3ZIf9i&_`kQD@F*W@4ug40wC0B}E^A0ELM zKEJy{CW`)sNFQi1VOIYB<4gO`I?OrtCuY$KZ(&)X@M%8up}}m@Y4*%Uij&FTH&6Q% z?M{GC^UdS}&gwmv{$8GU`9yF(#J0q%B8EyIiMTj0#Z9ZjE(}=64zqv#qoo#_(D?b1 zdx4lQ#idlfXZ3h7sN9z;eS=)3EYeH%9jKDje-tfF4p=6o3Tmvyvd(pD_~VW3gsBAXbHy=YB^@4^nP zaTI#k|6evg+Y{&jd9ug*UH1nj?pA1Z-pf{2f$wQbQ4AMKimFsAA0EqYcGffPT_m`hnn+A;_j z{hl7&k}_3uVkmJ6+8>*^dF01}cAq1F9N5Mxj8Zi8uE{t~HijE zzjoW-4tH^TJaX%dVG8W0p*?mI_|1#`iKLyWIZxuURKo4ryAK57X^M)GX(c_L?u$`q zK$vmvXeZuUTL)OuKEWR>lU&CUbaAA*(-xhrw{XG5Wjj663q3ZX!>m}Q^mrnP_KT`s zK`9{k{^5%5FO6Rd&W-mjEhItrmz>h|{%JOoqz{JY>}xQQyl<;LjLN0*ui=YSC>e6( zu9)L-9IK=wmmB#~rXS^+%Lc4~thJ+>Ta$1I<*&mhskm8o0*s~PNViABW z)h=K7`Gt{5ddsyxqHD9|ihtmTsV;98`da)yBEy(Do(ew^n+zhh4Qn=}qNiYQ8%htq zths#9*Hssg`t?=cS&8El$2jWWWmRrL3Glo-eUZ%qN6q7oK2^Jh<$XSNsuoHagGUOV zb)h#5|0J#G_SCS~iOC;o(|w&3R~p_%E7-L@f752@x7qX*XKz|&>wE3bHqrm&%v^sH zPV^8U7{WX&`j7GI1Tmuf{~A5^LT~Nhr>*m`bv>Gh53Uqzj7y)arA-cA5G6vB+yt-b z9$68a;*{fTNyCMt9_FsGejK;R=P)I%4i{1p0!`*Vxz22*!bfRM3d1b0eJ^Gv-saw~ zSTuWuKVi-Ag_G}CeXajdup&@|&-NVrS(>Fw7(KpQhqpls)<4n5YaH0634a&JyYRWO zieflt+}}XK>9&fzU3cvan>r3BPcLWA5`F+xK=D5!J0v~66Qa--b{YIt z*mC)46)3#5k0>A25EIfR%FIrN98JOtXzUkZ!DnzRGD^xlJeV@9vm{XTi;&OJ(BtHR z4mt@m$J7Z-ELQ-y^4$2du_edgKk*f$7IejZ@f#m<<~`{)rTpF#&?iY)t+aQwy~5qI z!_lRL{pm-l;QrFw&EpQY)Rv7FM9T@I3LN~ zY;I-YSHJaiiEm`D2TP%I87teS2>LcZEq3bUTh0n)YwPN2ITcd|j(YRC;vaG=2F%pr zHw}k)>J3=zY?02ub*hb$&x-2x?^gO<#v>k+FMG6RL(Tle7`Yfd>Hsk#YdHOTb~Y*P zKjuBsiOqLphFO*Vsw4uq4#|~>WpZo{=B(H;m`g*dCq3HLM9trIi|zL_=JuDVYkw4p z3tr^=sRu%o->Rm3^n3E@z27+>!<7^;{+0kn{C0kv9SE9c@Rd4V`_QBr_o4WA;c~tc zPp%gY`(zX>I)s?F*CtV)4YXdK>TssSXjH9P%Y@SWv@`acy(buK@vJDObNs9O^f@ra zZ?{rF6m4XH|NL67txeh-rM<3^)Oms1>Q2M9mj`zh9kTj!ZjW)M$8TjLoG-T84a%d| zqTOoRlm*oz@||u=WYZ?MZ??I*wAo{9&vLE{?|%8gKi_PtP~tvw!Mme!Y_-31zydUJI!y9EuPAd$8H zaY2R`@Qk^8zsYy!2y=e6H{_JKneJz;RcMv?3P+HErsB6U<_+kG&h1>oV!rPjh=_ot zEdp&^*SR=r3kVI4meK+_H86URCKs?Zn24w=iIblrx6KsginiaAeW(^f3+?n7%;2Q7 zgFJh6qEUgj=M*E^Ns$*)LqdHFe7?rWSLxe6HbeNF+7LpE_A!!;Yk zng^R29V=I3T9#4o_b(KrG-^pf_y+vtM8CMs^H$o4{pyl2FVs>0M>5iS5-()Y>g-f; zQW1uaw|O~=1Cl1QdVY?Sz^lny5X|vGf+(9PP_4s|$EVfolXcK;wvCKF zsYU8;o?y^lyif{lHY#}Qk_bkD)lEyr#&u*$eI=8O_S!als=E4^gy`uh5oqm@zyR$` zYh`Nvmomtp6S#3K&rzi0Kgw_g$CmVEKH#Kj7Ide=G}r0aay-&{kbQ@7c5AHAFzS5b^fDH1?z1sC!wk&g!*n7rmO6Ic{$|Xxd#H&%g4AFplqKAGel( ztvVd~A}2WUJRC97Wot>%(D?x&`nd}p9VVXdXZ_p=eQm-VuH+8nQx~MwlN>0-Gt+JF zR92&(#lX~X9;x$EZ{vv2h|vi)(2U=ZpuMh0Rnlfs9LllK?2_}pF`)dXU%~uJ){3GI zU{BT#N$~;f)LIYCHmW92u}2_Fm!-$QxJ1Ool6qUM@fkQE_KBkjCHhcls;6c-_1E*U zroZFSQ?dqhe*_=?lL+an@jAv6cT6{W)h4V_Da%BV&*pvW$FHuRFr6cFfhd`;b*|I{ zhijR_pf@pZi#tPdf3|{zJ8ZZM~`Fo1ZNN{RdEVX;)EWY(84(^gek1=3q?q)m!dR<8R>yQcH& zEp^sWKGVLZe4t6;c|76e8V!YWy7|vyk$ew#MM2tNSZk4Bf5$4@Ol~`Fkype-b`~}_ zTGX&(^~^L6>r?)Z$UN{{#l`kVIK?HkdEnEMOE#nMGM^K%O&mOCQ>=%#Ofp&SDttAV zJITB)U%F{c|Ni#82tqP+^TsQ|$9w%aBxKmL(tNQy`t|41+5RULa+oh8g5`L4*&<%B zx0M6;WL^V$og|y}{!8S-!ou-M8NX3j@V>#@fb6^OCj>|Ea2w;Jistd^rX*54 zLidVJY0(N?v(B{K$=SG=q?T)iOtN(&##DrnNYa4x^Tpznf8EU*sGt{;cv0gIQ zJ*rixa-jH5vvG`!3Fh^ST60|v^IaXK(J0XH_G+7F^rd0EtSDp#@uc>zC-1z4(WBz1 zWYE45)$aG5KV}IIWi@o;YBz>n`5e($uC)f6dGi^X##YbB$C-PZINh+olXs1J-WJPy zS*CuiZqwi0zc@Tg!aeruLR%NDW$mfOUHKa1o>}-M4Ys;m)!z0OASIq}Gj8U@ai3|A zxx=JNb~&pUQkM&VGJUAe5wVN0!ZtIIQWUX;%*@Oj8KLinkmK$(b}mVuv_e=NZH+Q4 z|11pjv3Vnlni&f4N!_`uwGEj}!iNma88#LXF8+SRir1_1iBmI1ceGGDJ!RaRGaK&R zo9%1akJo-=S!?WWVK}co!nm$~5LABn1#F@2B39W|H2C_jgv1u_o0*7rH|9}od^Z;G zBhCai0~^k{l~qxU%9ZD=pME!s$#-SuZ4R1-$y&9?ofvP%G|DC{xl`#m|{vK&{2*bO?zA^X4;h^QL+ zRWYpIgjSq-nuU#A&a$WN2e4$N$eDv+QcnE|G79cA$_BeNeRFs3()W`xJKPQe@o;%G zl_nD}L^k)4cFtiM0<>Xu|LA9yn_*2+Kt>_R0AOah&Yt{{D2*B)YjW=c^d6xTui^oX;X`i1S+rLd_=3F|&IP2A;ZFT}|ULa8a5 zIisK0VRHYKMJP&#_z2BC-|CG(jm9Az#uWK&Z12xhQ*zm9ZobL)N*D|2P}~Z$p4JI3 z))T+%O>x}`yx~J+*zz}<7e^&E<{YjZs(2}y;popqr*GI`IyE>@2fmrPbZLiCC!aUR z&)uD;!4Ev-WI0&EIRc6p@kf$hCn)m;_i_+lXTolw5Ya1Cr35pa$Yx;Lw5T`ZyU*Q~ zupeTZc_N_i#!Lr5DQF*8CWjf~<3<+mt% zsaN?Q(Tm2$Z)&^*LGcEXr=w`IuBZxJp{)FPmD9ncNKU}Mlj59qRWS==W7UPi;$_lV zJI=RLg~1On$Unl%q3p59u7!Na#%w|4n?h-%PLX&J3-4tT}t^lZ}Apo{Jl(qC{8`(mmj!Y##}m|<+_zTv@!p- z@&`WVQQ)1}EvURk+&s3N&CwPlE2v2mdn~R^{qkO@SjT8hfK;Wq)YHzaUo#>jheL-K zi^rAw;}5J%Ckuy}l`$4$`Im-3cVVoLEgxN*!Q|so(}G^(-(z(PcdOj$8)JJOI^BAb zc=58pk;&8ali=~t*}x1i31;zwzQ%Ee!4$pVbbg~fhrb}u{*gK=d&PLLSQU-n-}e@7 zE9r@l4P*oYTMy$#fn%U}8MCH;d8YfA**X19vviTV#S#uI5rZdmZXIP zMZ@e}JxDTJs`?YWR)=`9y6E0!hwAyEFF{!vykIN8BuHiKY2^&zS{G+}DU!hAjOa{X zJ;a}?{A#-$+`Upk8beUaVYKGNl4#n9b(IPk3jHog;ZXaqilxUVX`@f|@qCE= zhBf5Dc1mgmIV!`$E~0JgJd-C*|2|oC;*+g-ImoxL14hGAC@FB>>l}9 z=+{-7m2LXZs_`ULhjfW7^7GAbGmzmJRytbVZy92@`r@Kbb*<;h9HMkV?+sr>8lu{X z5({8cQsM!*=T+Uc*CK7m-OWAPknEM}!lx@$vjBUc0lu0AzSrge0mQ3*VQ2B~4|n?v zq-RX-n|Jd>{f!=|Z_6H97RnRGfj2;b7fMz?RF(SG&L1c#SjC!_@p-8o zODhP<42M*&h6c{8w?$X4uy z(Z9l!GueU^=GMSek-;AF!H{&@oe(S0JD}Z(_&umJLerCb!ra*)b^ctuIpy&X>oac?_pfLk+dVMiKcYW<`&vM# z@{l&Z4BODG@dFR<;$Xn3bqAak3);i>pON3UVYQi83_9hL`jU4u17{%!76Fgj{B>=< zef~V9Ah%aS^u(`sBw29|*?;&7VG>x0zW)vL)3eA|d6 z4%OnzwgU~>Y_Cnp^%kV2mKB{|B3|kXcU;+17~8F_O_lwg;><_T1GPkdzNmers;wvC z@o0B2dsbJ#Y6=Sd2l~-m!DIl|(=-@VlFf$8g)|wAh3*Rpo(c-e!IJ*?Sl`2Z1znwTL>aDzMwU|5pAPneCtTqMR-cUG@vU`9NRjO&C zn_ob1tR|Bu80$^o{?t<6xni*6f#^{9{Bz27S%$s!)ISob+HMdlcUOHug^sZ~!Ah5GIL)NQHSlC=u6ol)MBgh;y+u+*Ek82` zu2tDr!;xC!YYGXfc>W?M!|l4pC$({bh2s9t%(KKQc|(2(nUTD13L!c`t{a^}u8VHO z{J^iKn)&kx`qPpnk{;dnC(nvLyc_ za?LPT^>g{WX!p*;T3sQ^gTm7pf($O2FdTkX!>3muP+x=W%-x+1*bOcP28HAuS6X}K zjaEPZ9;Ip)yxu(%bw<4BDr9VX5ewb(I#Qx^Wd7|^=AYDUC@@>7f#c|byz?~cgNkn(TEPHgRm>=JuI3u8*# z=5rQqzf%T9H$VGT(-20lRnJb(I(Y z$>=_O-_>ms_xP{RxvCg5?5U9Dr@^Ao0Q!ILThh5sCoZauU;p*#avexU)dH&}q$(RK9_MuR&~5`xLCf#XxS0<-w8 z^k%thlBFAnH`E>0Kk1Pp`{G9NJVm_;3f*VR>|+GJ-*}{PBDhkG$D};%KO%m)WD(Bu zU=W)aw;aRHF>n-91qiCtL*iBhKRT=BzkE5iHCjZ*a++PXo}WCKU-Xsvu)qlq&d;*z zqI4jfF=v%K6P>W`K;wJT*%4iCJoE!fe!U(by`PU0OUi$y9;L?o-o5fWHWNnZR%`rK z=DUt)a~{35oFl4(r&)8=*0ev0lO*c4iXxoQRD=eG#a_(x0>FC$6vd3_vR1;wOC5u` zCuX1jqm*OUL3{8&7UT|_5zr0(wF7V>jos&&2G+rT6IzY2(-JkjwI+soS{!a>QMEUPSHk2iK z`Yj;p)6S32#e%A=0k@3~ZG=(gOv`l>(0!G# zQbJ^ZzQX>WnLSV)(4Osje=ktYJn`L_D1D#Z;2u5)S~ZiK-y@;Ipu!tKjaH zc<{YuomC|ZGpy?*e^7yR&O0~mP+Gd~_acbh47>Q>hrNtW3>O%GToLNwZzHoT6m^NK z|C#|$#i+MCFZMAB9fIo^#70MBFdTGC1ygwSY9#@x(T2-uIqgk;L@#fy(J)42RTx_G zV8{!gUdJ&K9;Bo1M)9Wqu=aE4%1l3l<-TibtO85fF4VoVM#z}B)l2Qa$v4b)WwP?u z@;T8M5_*gf$X=bFFn$uKjD#TMcQSda*6uBVVKP(ns?)42cGA-lxKf#QyS#>>0draAf4 za&-i41WjXOXS1Xe()%PhYO@9zUgP>9Fe{Lg$XPz6|Ht#kl|CdKq*zyIhslj zC+r&h(7L%wjKgBK!Zz%fj^dsxq2x446WD>`@rC6C`a-Q$UG6TH4<-IALxDm%ilIdQ z!tu~W`pjz~yb-XyVSVg}*&=KVjPdBkI8(@A%6SkV{?&X?*{GL@|Qc{;j?vx*a(Pg@@6Rf0%WlHXS`x%`(eJ-lu=M z<+m8FBPAcM;m4?{M>u;H(7%kn#`)E9vrA zCO+YcySc5_5UGwE!t-zMMIFqfkBbuPAG@<1^q4cL(!RE-K1sfs9ep`B*iO5gkUCi{ zd=i8b+b8oR0LI<(*f6A+?W<>}GrzSO7k>p<2;EEgz~<4-7twBUXqSAg27ZC{NZSpB zQk=pXh2oqd1-@RY2U7+TwW+bukcF8P;rg+|x@D`{1ZH7JaEkVq#;>1$v8%Cg>Jw6d zAG54*Dd^n49=+bV%!)%=3RPFRPHxtkcQl>?sKp@mwDe0joryie8>oMk!zi_|cJby4 zrnGCQYm4PQHU=*UrGmeOMceUC84m$58?liApx=&P^rwxrJZ+kWQqnw(iFZ!I5-d*L zkkB{+!qGqRjvHPAnJZ>ILm{!CsM9}Bb_Xs1;(BtYmm{)8>@%Dm&wR^14r{kqOXL|N zuxf3nhWz{=yYi+643@%5AV2WaLtc#Hp{0GH}-~*S7 zQ0QmHCOnTWnvqbFb9 zc-!d=nKMlI>i!}i96kumf!7=0ACdRWKv)i~y8!pZ0>r5PeDU6`Q)2HnrN0}W7)weM zhwk2C!kETxi;Zu#Xvcb1-65J(STE7ikBWC z8HiwSnGuy?nR6T0E3;MhyPG&aUvNT?txr)*k3XSh4ZiMP;HW_VAb7V&uU_?+L_51a ztX3}F5;fG)a<-%(e?s%hP4`Q=?!oeT?Tt2+;_ssk|I>!U4X+dY*k*DM9P?UFvwz{N zp(r-?>{7&wTdG$kGGs_-y&5TK8t1sA;NUGhp(-BHd%jxN6oY5-Lg|Sv9@JTeK;4~A zzS~GSJvQfflVKWZW_q>@x`^#1jI>P+78eb4V2t-(!|P3xR_47@9T$Ek2SfJ|Rh#!H zeX>Yo^5e`XT3UA$$W+cIOe%eWVvNK-tv&*4gD@B8VK|ABxgD!G*%aIt^V(0^nMxA$ zthB>@_?A&}qwE#Sj*#5~>CB6Nq02iLHs^x&Jo^7KIp{X$%LJ}CV_T34@!)rsWutjo%i zaFjM|C+a-(CR3H;cKET(MIUs52iXw&If5Uo*3oP$%i?jc*%Ut^30LyV2+>V5q+yCb z13U)%;v@z!v+FLia7x!Q!Lr};Y!I3JMdg$G%_tM{fDi+Q#q9hom zn^~SINtUkD=}+^XRE=}2(w^vn&-vKy;akN`<2KxuNgO9lR!V0to(&O(oVVpj_&+@e^r0^$AMU#V~8i>0Ay}&Tr z;JWiS|0dODMDUz0<(9alad+9-vZ4ys{*-l2iC>2M^IccRK6b1b_u6EHuOM32k6R8E zl^c77RiKhVc-k#LyXNVQ+Hir_xho513kP&{Osf0DOW_JKR~Ce`&rh5->V^}YSAkWD zm_`C=b_mUf7)w~bzg%&MDQWaKT2w-s=3Da6>k5;b;@d}Hg|u$4J?8IN4~8MA?mm0t znsw`eG1c1H82OG}3#Q^c78iz%=yXRx}MxTSA zbedjhRqvzZVJD5E?N_fVY?T@=BLq%JuruhFSn`3fI4p?Va8la!ENs@Yfj1z{>EunR zv;8RKlgm$7Zu_ee0>};C+HA>{Ms6y^mUFfb7=&%3(V7PV*Uy4MZ?I&^)vn@T?SEiZ zl}D+Z+z!+QKP{XRuWA1L(C`bSDB zA>O11_&zq0C5O%*H*e!FzVbOOI&O$7s7e;e+?)6k&YB5N92-h6+^N$mULL56!1GVX zFa?57>Yo~Gt5i(XUq2H9as>`~9*e&88~AfOZxShW1e_=?Lvh~SwqpE<*2asu6)mh- z_lPiCcTfY?meK98 ze2&mh3+f4Zo4YoV+NafD&UZ0|uxqv8S=8(Fkk)|yJ&8LP=Lba4jKG^!lacU$ zRS_$lq!_ybM~_0hYNpfirwKhb?tXfA1oOS}{BKD}TH1CA?eu&ngy# zbRkeY$qBIc80Tk+WlSv|2_StN^>jgvmq=?=o+vLTVU{G^3%Qtlz*pbgaFXUQ_JD^g zZcF77HgBthg5w`mAj$HpaW1`f?7ELi6<>f~lU>eLcu;KW04XJXi4kbKWfW{)^IRI2 zZeJ06WQf@ppL1)}mgygfXEmayCY!jH72OZw*~#8Xa)~js$|=k;2-sy#aF(P;8X-mV zZjW0#SAcPsf|$QOv-&sRBLMeM4;FU!=q2klsRQ53k47A+=A7&SbMm;b7SZ)1!bUMl zPD~OSOSIp(x``Sk#u^|-k0JZ{*OGHMF=I?n>}LCKj9tsd;QGpP=Z@_LQqFYsHmfmUsl$j|x#Kw3sN}85|P6>>WCqOdRXIl83J_YcXm>(Lq z)}GcN`kLF{t>v<@9WYxSY(a)^^#VE`fLe=lk+!n@)*Y`FEH~uM?x-mYZZl{Y%(Qw4 z*w$bN-}dU3j4+vd~>Oz}%Z+C1&mYgx!P}F$eO_j^7D|OeXOcUtSaeNx7&ot*nc*xTUS{HZf z!D9l5uHW;Ebx6CB!*3GN3?#d<&d@aJXZ@4KO*e?LnF<+d;=ca*(d&l5NieM!?>!(F zxR3aCVUTl5jm>$5-Q6(juu_pjFK|Oz_t|~D*0dn6B+;<7L!Kpb8CFk&t6TVRX%E60 z2^XSDrqjU2t@bqLImj8#2I&|IUHx{JzcRPWdS8VeaVKuwHK1AeqV;X9!sag^m??q1 z?H)%@lXTmlzaFXkm^)vVS*D&@YUeo@^>5FsKZ~8;U}90W&Eu!m*3A?imfsJZyik^& z&k-yNYaiOaIsY!sDH5j9UO1KsxX-@^bXNpxdD46*n($cmJFywd0*5^nB_1pCwKAHl zhdf-cx->R;JFE7UB+H+}>d`I<8GlpS?J+`owm~AeW~@MRg)1ee{UkD;=*;Z>tqg6< zsf1`r>7`$z|M@~19nJJ-M(3-xoCuj!_H2ob`i#V}hl~A+u8n)#Rki65gt==k_j-`% z#^);wWzTH%E7J8F=tULRUW|gFrZ>;)Tj@PFF{eq<#nFLJ&{fo%+4NIPl zU!Ux~fQw!-Z4zNe6@7zMOFD#In~upiLff8>5~~18s+@OwUya&T?%87-3++iYS);mG z5X@Iw3x$NZ#nJ67KhUGC6p1tgfYCy8!7rdF<#6HKcL^7Ssf`@dsNSm|f=*vKaHLU} z*Wqq|3+4RC0I& zDC*_L29Bdrl}q2kr(V?ACOx-=GmgFg`K@$cO4%fEc0Rr;41_!_o&QZQhsgEByHTfF5%Lp1Vob0;jvaLLon{UxmG@ z&n&4;jyHLA@?4B7>CxDc&2eaQyTXCF6ZUFXS7?`R*R_J`(wXANGf{aO8bDy!8SLS) zO!P`I`2uTV2}w5e@#@GI+522wLyoJn&@Icx3u7T;J<9`vPAfI@Oxe-Pt-Zfw=uyp( z-1k9zIOr`{_e3EqEb+5ex8pH-60nsg+&2d@Vu1Xv)0=7}nDj(W3y&LS(g2cOALy$| z0`LYhI+ayeZeAq5q!k)xsJfZ95)!kF*p%PvI?Bt1KW_8Ds(Van(_1{K`%v_+u4_Lc z4?5cZ=<$?L!9IBt_&QvEPybrKf?iD~{g0zOGhmAlohK-F9)ICcb9e!#=b4_9&3E$g zcUV{~+7gjSnjdQvo{o4NJc}eW?p_pauQFv>)nGCep`Fv_@ zvjcmgwfk(A5^o0Xq<`Gortv|XRV4}-VmZDCHf5UES`RTTd(88cC@0&UeZ6e4E%JKd zZnl=~o4g5smOQBkF}R8HuktgSJWcdM93h)U-&retKWJpJrv|rBa<*C$@doZJw7tRx z?Q`1SPs8b=1d`kDLp+JIQA>YFT9Z4?WY^H~cvKdeyq`ag4t05Whx+N$PgsJuyM?X% z0{tAJ*h-W3g1(noAs%qc8`Uk)5mH-ZglFKZOyx)3aYVaSC4#2LS z&_cr)SdYkyCEW7kw)(R1Yn!(y%b+{UtROFy-yzlMT@eBVSUQTg}| z6coZuNshsPriuu_#fil$>&dG|BvY|Day@XtP$9NPoC)lK-6l>c*9Z$fUoEziQF7+9 z|A-Wt?R|uiu)pmEw6`w@8tp&*xH%vfz9=KS@X`SJM|607!Y^3_r}wr7#nyvvG`mBC zTjZFaj+tvxtpi3hZ#<|A&v-s)!Sdcs0PKm&^%pb`04Q5It)&q!;?)j{C!F6nzU?8D zo#D)xde$U?X=K5pemftbeh0=;l{!YF*$F>fph!8u=m&LGNZ2+ z8CGA;0KWbefH@)&#)YE;DO94PuJ-FJ#sSA#qda6S3C$K+E9Zki$pJ;*xawyre-Cj_J{RQ1$)gK71z(L6;@FJC4I$kpk1}A{R3b6z@Mzgs}NR^a!*n1$ifLf*{YyN&0qcrjsdE{0#P$Y1^hI#4i*nwr5Tdg?S;b zqRtZuH`?&cvW@K`SYf)FCk34H-Q{>{{aDelihxAEDIt(9ts1J&XT`cmKT@k@%G@1`gX~qs5#EWa< z$rTvBVuE8UYwp8k2up6a;QJaHuM7~oft&n)$$6Y|#;;=Z2FOclKE&*zzXIVf^rP8Mt;7FRfIOQ0{J6|AqU5rf_m$OdG0_Ze^y`FLGYQkE(dUeuKXT4N8Z~>-+*z->bbGG)cO%1{3X~^H1nm$V$PqE zz%_4m^g;&`@_&K7=2cbFkAg)oOHH=$Q)8xY+kw&0^>^WmSw7F&6a*3oD{-@b6U$R! z!#rIS!I~82qD+jKs98Dc`xu!h?aWQE*}cAzFh0IY54!5RJ-dBbIZ34lii$eh^ungz z&T<|z^s$>ACYO~%TZ+eYpbX7-~>(D}))ogJuHthBuK8wn`mA!b| z@%V$3{9S#&36D4Sow`OVei138IGXn2?@RX{}sw;sdA9dQ6qr}@SQEME*i zm?Kc;9#v&D9oe(~N7UTFxjBDhX9XqzXd*SYXVaIhgI)AOHve$teiOQ;G4)HD9@~S~ zL-2IPw^ZML^klm>H>>5jdyzWkL@I`Iy59orzZie*8yFh&R=Jcvn#exC${L2bziA5) z3a(tQsfAx#U#Hx3nr7S<$&GH0u^LLUTaKx=6^F_3DR1R zT%Pq#5k(8$Pk1U1QzA5+9e(V6UZIU|<*W2cGe)sMh_49c{mcT@P=EE+sFq!Vjrwi< zJ2dm2Vbj7J!q9sN_G%T&N_IRR48--N_D;z-|@;P@!5L9*}mo$Vy4W#hLf-#`HzSXxaoFQ$#Aq!FhYDJxak1}-&xNo zTPIO=o3DnoU9q^%&U(F}}MtJ355aScz4A$@4NAvg^8 z!v`yX;;*W)-PvAB!d3Et!ZL)FeCYR9Eq691L>TC+Ke-tuMQ@Q&WXe|;W>4T_ddz6aKfeLgek`GYpg{pgX##`8>`6do4756X}6d0A$! z0#~J92)FokjZKcv?ilP7V=@AQ!2wvPO#@X4&PBhqZbFOQGf!$$O9fp2gk*P`p+s3l z&aTM9b+7T_tYtB8D_BH^T+AM{AT%-GG-&|+b90IVTuZOwG`l$%aRI+}uk>@W8S3T+ zCSF?yth;UU6HF1TUW>$HtjDxEXVwNEu9U@t(>z=dbiZ}g%eiW6zc(!kT}qX%kRN%J zka)8Uzss9G5!>IxmY~c_$PzIPXSUj&c&7K#H%8q_6flpflKbbM`Mv1}9hp~r=OySQ zj%Vj16tbMNXkcMsAwDS9@0-oN?wdQ@l0+3EZp^0QcGf94g@xXf`@ziR%)kl*7Bl|k z>)oSWaHkk?7E(~(9~maR@*mNxNng>weeTFTb${Is?p?B`78MS|d5u2=YqB0VpD>?I zKch;viVv-6of17ud`#eYMcyYvAqU+=dZgCw=uadBKHLLZT8?bmJZdrhB+@&1a%9vn z44FH>w6CY&citj$A-ZJ+9Tz3$2$~g5gyC}!BY*~yWs1JZQbr!KaGqSO%J6wMV?zKb zNB9z>FEjcNanj^5R4p8|?)90Iu~QK&hRMfzAi7=gx{k%xum$ePqx*fS+@%Wx5)a-J zU&L>f$ivE1xrVrdA0c3m9KymGFUMidZ`dMLKRLsBAx>ksr>3(H+*XKgeilD$w|`rY zRR#@=-uY6`u@n*ySYh9r8Wh(r5*#tvO0a5e(;vO60Gz1gl*e%UJ6T1`kG$GrtX_#W zC)D-oS9f!#N{~5b?G*pKS|M8A$j*+p5OVIWQ_Sz7i6D{9K(d zs5c#&TcJwt2O z?9U2#E;Iz8s^679aN2>6%Sy1U0}i+IS%2++fAC4Yt8XBly za?D>@RNR)W1)c-HsCFh%QLxHr$ejZ8t08OU1bbZo1s@{nna7Hx$xu_g?WeQli%#sJ zB;@ht85}1#Ho*DFa>;cv_>qCQmbp2Fm!M-^hQLJ>NkZQAW!4}7hr`*N>tpY2EGh!O5Du=LdE5^&6nb(VMYXyMzc_95 z!U=jIe1d-N$=R_)j$Rm89xQs4iGO=HXR;v)9?4J%bxdj?g;w$_0u5y(3>L8< za~+n7DqBAhiz-HKsxzB`(Fwn)24N+g)P$6|I}j%&R^6eB;0RH$(r>SH%x6x(oT}%hUm`=6M+P zwIhavrbOVps$>XWjo8ZY+YfXxnctY=(V?pR)slVW5@EInOH=VfB4Snf30R?soIE+) zau^zSBvKsg|D`JRp!bQ?QFg!k zuw+*^)L0CV7BA%?9oU*wfZ}c(<6*d??zv6_=$L4?nsYN8@gC1jpTL(7Rj+P2PW{37 z6@1gk)k!L_lAV}co^}KA0)_$LJHZ(=bR6rAf_ut!NFQPs750%Ay-&+4J<$fbt zHDCDrwPd+SzBcj$A{5s%c}qzSb8Gd_wuQzXNFT5yAFkCmX_=CY+pDpM(OO+zzrKMs zR9v?u08@0RHB)3>t#_TfY5!aHv@6|e|ziHjue9{Kt$yvXERrfnt22MLK z90aXLEXR!2G;S6>7rfX2&csIIO>qg(2g*PQ%IFvWcc02yT@ml&;^$=6lh3BEXTJ|V zXi12v=i!Yk`aoVBLVBt?eG2b0_*90x&oO5DFAcO9>?_)oq=u#@VnH}w&W;&~s1fJ( zhbSlH{6_?Jzha}U^`H28Go8QYOjo5?Z8lwaHr}oH`u$H2+rD-7d6uKI(~ENW+;~A& zkXnMT&Yf^Yf0_2Win~HV4Du|@DhlO6Qv1OfzArzxkc^*>Qta8q|KoV~>%zd15v`q3 zY{W3E%hqyT9*hU*H*n&47Bb}uQ`_F2?-Im_yoP_zb^ms~OOc4YH>xt`dG@2SLqMQK>OYA;>k(#jZrNX7e`vNKCrTq`bL4>weC!Ww zs9RVyf_5ZFWbC4rvE9*M4L3~>=9R2%4Tv1^U+ncHS`+_lhS+H`r=SZE;@7?{+& zP3G%|Z*wSu(Au%eOv$}|?{nM6tWPnfoRD04Wrq1&&L;qphNxsWcvSOQ#4$FFx_5+4mdY zTHO|&si%!wk;M#yXg;D7%~!u34TTRd5>Jz^dtsZps|kO2}V2^nXG0=(D;*&tlD!*Y)XB0R|%M&kM=TTONYkZ#i* zzkF36-{h-G;KF*uP*vtbdRT$jcLAUI)r717|mgp&h;g{0@P(?wLZG?mgtLsJr8@;>5jf#Ba}mTnei9^TpE z6fo~h#)8Wf7jcp}Ly~5MIMGeWh(6~-_V))4Sb6Eo5M8#rdA#cO^*(G=xzLB&ETIsggfEvuxJ&|V~p$dJZBPyxZZM1DwmmFeoX1J)Yr6Y z-Wl<3HRw@s)`L8+PvvTzbZ(7vRuH`IKu1Wea-8kL8_1*A48B~wN*m;Wx|HsO+A#L5 zSGsaPOzt+YS{^;n9=)M?qap71NpR6%nv=fzyO)G~G{wMDUKGnt*S3NCb_1MJG>#)} z^lp#)xzUPHMwj7rGc#KPj0FaJ4{=RlBYIrn^V>zm3=f&@X)#%M1kI^2pjn7EyD*1faVF*)&3aoI{cd)eo0I7`R_K4gkrd#b~U6go7L|U(`zk!)^Ty50gKA z3zz6NR>FjXb^);w5|~#raX)vAgCVbNLHllA0#NFwj*PBh!HxEw{Ejmn>h}5e>pEwBxV%;{UBaKl(4>T(YHGHXwchug2F2z zyxc+K{RKKQghXByZ?OlD6H}He154qce)%hlH|g5{O01z=hNMe1NcGn@n>@;Aund6n z7-ukTuOaT2*rVXIF}<*?rp#rR>%Qo>{hwl*8{uaDTIVgJ&;g25yq}bvc$INb)aWdNwgbP!rK9f4NbjxAPxcj+c$coa%;~F87>A%`#?C4= z0RaBI;-ox=SN&#oO`03jHA1iqk!KWt0OH*jYv?Eb<#H3&g-&K>V+L6;I2u@Cl^jb5 z4$RVKEW3W{ZlR=hT zU1{~&FSyoln-~hG?Ox`eui~|N5#+=4jqO2Kd3{b2(UX|!JRo(%xB-dVeT>2L#@1TD zj%mllI0bTVYB@igS$mIM{rg)G{!fv%jEl^L)JZn;#5;#Z*x#cC!!7dbUe50@51b~Z zxEHZdmTWWqqgPS+ErY`cZNaTWuP&;&CK$u1YzyWGdZkV}tFi2s zMDVE}U&U;lN+9jL=2~ZCmX%Xyi(i3VB%Sc!A!*dez@d@h`U8Cf&*^i5egQyMCu5k- zd$55;D1%4VH}ODfJGYrEPb0(ElWI#$RQ1|y9+5udA7?u4aUR$ABBnW1FavQY>txo& z?FF+QqR1sWlc49r^n!$}HPYE0XoJDWb_hlZQH2y^!p)#A%x3rV;cdY|2&&F4syeQS zZM$Z+&CZDEV22WA5eXsV#tMkZQb@RrzRZS(j+~y7rRz0xg=BO*}Kg=GBbB=krezsK6+)ymRDVIBn$Qy4G z6TWP?)x03M`;3m}#*o>|xY#}*+o@YYq;j6Gh>i53hB~SAACb0mt)CxFB%a}{F>oZIZR$h*2gWhP0R*ECyXavx_v1T)1QyBsV(BTcVUfql}g)hWmC z)A+leyi2ypiOSw>f0#dl&b3paeO{NgyEo*lV5nxMoIWZ}d|t&#{m<^&!+LyVt0sG6 z-QvvU!sD8qpa>Jxws+9D|A^?@Igt=bu=RuhHW2Q2XJPI&$NWY{-DlLvhoSW2Pt@A5 zCDuW*wlaf2%ez%^e}AqEUkEh%Ahv*At9Uy2d3eXvdI!6vOBIU){pRv;k0;RF{-xV{Oq*{`Jvzv zT-_e9+KzrAU=K*Y8x-1~pv~U*=F1S>?r1+q zDZE2VtXUj7JMQfSILAqaPTFKB=Zg(O2Wk6^c$SsFOUf?y=9QF`?2H5f?mAh5c`7t$ zhd-nuh(bwD@fBZjpBS8)0|!a>jTOTQ9{I=n5!63i!8}#iO_{!gdu*rZ8Wh~VZ*h?a zyQAK&f*+H@ee`z`bRl{cshbnfeIs0PlM(R2on>r6i^XV1A-jC6-_6fj-S+|@-UOug5WbYzRHdf6z&Iyap zpk}Z{gjpY{y?H`=|Fci$&lx`_fXmnOyEqxNh-$^RS{+=2;A z4=Nn;%@3fcG}=ro8Z|^WsY64t%lwOfr#4ele`Vl=df{g<<8pBO@J>mq5D2(9G3;Lv z;2)qjCcdE!=uHS#y1M84Q(>EwnL z>#i>%K&95iAt7iEF+t?9SjWRLCdrFQVP864g29~)t!+ll<$dG|+jrgu9ssN07&|cn z&uqF=90xM4Z9NVMvn5+0z^(Z-kNA)u2PB)h;d#WE!$+H!hdoT)G^|lcis-Zc2sowq z8!NhV_d}s8o{^E7Gr<{9?tW#bX6r7rsp%lRqOCI@du{&JHXN^0PI200NPev%JQKkT zcEx33SvBD;*s%n!cA#IIYsmT^N^&A1iG@ynFQT1{1m4Jjhhnn(_EeG6;O?h*^Ct{7y-3}cZqA!Rf=UDKBD3o>` z;j+^M{RPx0@}T;s$G<x zm~=kZ{%cj33>{kZl=yf}IK`9x#vH{td(jbw9b({NRlBnieEn4;Q!pttIR>-2;d?X% znMCnd2Dg-4VWqov_b@kS>nmP)Td7?tAy+fB_(#AVHMgS}+Smkly173_q3b?ZvnV#IgbX_#U(c(C?Uq2h*d2vv)z_^?`*|fN z2(%m1MZ$g`bu#2H+yTB8o%T}M1RLP=VQjPiq2s)U7K`#GoL$*&#TnIi=L57FQWY@* z>82!=3~oZ*)PE?+NqzfqRAE=8;-K9Xg30)g$cymzbTs?Cb8{_rZZ-d#xDA(qL~~L% zFvd(A^>=b5n@$uCg#_|u@+kZnpdnO@|A_hxD2FO=u0xX3V;U)b3uNITHOQmhCWQOC@A2`!X4|6)&?&jDLYMDFOY{NBNK4>4cEW?rE@Hgl?~9InD;VURUcbx8naH79xgcTZfwrWjY%+ z7dr{TEMDK_1SVRc_aX+eof~8(gJZ(Io=K=)|l$OJ8nrer*A=L5lv9oO0+3d?K z)JRGEIxc_h%RR6<&u*1J+$qoWEAz3zGEM$x@^K4&8n+pvT-`$G`k8p&q>m4{a}Q*| zQwP5x48DsUKI6hR^fmi_9&x8+3p*rlazBHU-}XHYsFxip+?lzWK1g^~lm~LS-T1tu zhM3Gg3D=)Roh23cy;J3uZhI4f=~udgVDnZu1^msQIy*`V<&3RHdVNX$*)Jp^#@uXt zNxs1vmb#cdTAszdUI}`h!62wpbqQ{8fm!1z8{#eZ*QQPfw-SB_+texocu|MEs#ZvCfFNJz+k2y7vv)DY7ihMEzCZ{jccjGa z>Lbr^3lj@CkM-kNivZp|Y!S!;?^{-V3bwd|i~Rd<$elThy5Ls=9`|G|d%q+$#~rW& z)VyRf$&ecq3TnbD^x!U#D^->5p|a^Ez?T>2k7E}^opZm_lm6KbeYcK=$((!j4AvjT z*wOq`=5j%Hi1i2gEe%S~rkDTS2W~Euk|;e0W+uEwG%XC+c9}}EB1Hdr9$t`-rSsfh z)>@;6+Ds35(c(I(+EnaT`&-%bN_TZe9uL0%7nMgJ>239^h|ipo!S2VIY_|+~z|@Tw z2C|m2UH-LCU4br>K^m_eQBp>n=GKn>id@SdFY}&EUu_ zHJoK35SO&|yt(1ANKM7Ui`z=C#pHHzimox`$2Ioov4ubtmUdwm?DYM@K1kmcxDS$>J_e@FvGcb4#a%3-kG>5#=PDm5tfW(z&0mE$)HV;IQ1#h zT|Zlu!>Wa=+t?bQ#HX4EKaxc(oHjsEEq4L*(U$-{N+e&_tlVmh>WKLu-%xhk=P+mA1kXs^y z6}5lLUAGfANzYl!AAnG<5t3zs^UdQdn?!&ztGGBWX#ZO5_4( z8e@_B|M-gHx!QKus!A4w5bl-D-)_^Z7fl$8~h zSGo5OCa;lu0DCom6~SM*@N#D1{_=hV(Nv{5I2O{> z26BNK5}5%!F-ES>fWhtFm3anzD;u|^aadfcS&CNQngn70qL?Qf>gWEo#A?VcVXZ9Y zJfkC%MXm%SwFO8pY{7Kwr{-I<=7g`Qk#^Fc^9&|BQ*kZ?m>mtq=yywd=PaMA{qqXe zd!H!b;uhpT?FqqV6(4U3PIZ3}sDGcNZ;bz5SYqk>x;-ePAF|I03*QN4bNo$KuS|l0 zqS&m|$2+-jMW^A9UVrGN4tzvobm2waN9}E}W$Txn%P@YjU7|NCwY2SjKTI#G@0NSK zfl7BTW~Q*Qv(Z{X=XWygMPsBE(fWEqP(`N-<|bn-Hh`;Y4~9$>cB4?)3#om2rqIRF z<=pN!K)6T(n9U38NkV*Cj7N}N+nao+1Yr@Qu4r%PCtE6A{opSsF*;lmV%QT5DzhD; zROSBE`6%yNgTVAaWhg2xw^4Qg-O9K9Z{@M=a#mln_2W>&%i(X6LCY(GZ$`;YsS#8= zKvmn_+MDV%>rt)LWA;l0l1N%3Te~8~%ogG(p<=R-Ct`L8&ev}(=*<~j)8wOchJ7{j zmA#dci-PRa_I;*GSDI9FFc)8>6JI>XcyzX)giDY7za4UguXeschF9j<`6ZyIwsgKn`t;cyL>pk2jbj56cK zm&3+D<2Tf&svRM)$iaLI2Fkx?*$r^1M*lKoMbT5a!-kGV*V|P8u}BC;pEjm-28!D5 z6wyTGT6bkm40D>b$J;7y9x^Y!t1YHXZ9g{n6nqAQ%7OXz~6ZmQ6X?>XBftY5_qhbBWJP+?`BW%_P zQlJ%KmqYD^jqMr{>&*-tW4~;4?S)W0Nh_rJaJAWiXMDW_aIcU(%o;KoL7>W}617TI zxSN7zZezwmAg<=gAjk9#i5n231&Gcr z&J0++j}MPO(Q4rrwr+m^s!#Gy%fOwXzt}+-I#kE*^kku~7c{0hYr#dCSpU+~|A zT1Fs*Kt4}`0XWQ$ttn;B!eC!^*MS<5m6zzy+k?X88k;*KO)QJLae}i&v|f}Wi@F?{ zdb(8BR7(A2>UJ0Zs#k2^hl&uU_Ov*Ow#^rUy%H9R>w;ve-^GvVzgp^Rq8xj=Knc4W z{qFw|LpbI|FW>=Q_Lc|tqk73I*qOJzwf>sa(@E9Y(XjmB_ru;T-ZN%cMyJB<1n{x4 z9&%CmnFXSCz=7a9`A9lic^#*4se^C7QGjKg0$A~CT1B((3H5&`vQMf$&1NL)VT!3s z%c#T-P*B?e)ZJvhOq*ZusYv5jmQ*;T%IK=@`t9w2stj)ST4R-vs^iF?r~I&DhcJn} z@GWiP4aeQ%X=?Xstp#Emi_h**jDgoem~O5|`U}j>=6AYv+eGuHQFoL?e%MHya(4nT zv52EDkOxq^wpi3=eb%Rvg?!ztS1jZrN{&1vcZz2t6u}ye;|HhKN1q=zwlPE%jw6)! z?a2g0SiWKqfR(`!HxYjBXC}S|S^Dt2$lmd2`P;(+qad%B7eOb7p}GGN;U9s{OFKMN zopD~psOKjk-n-_*ipXzjKm8QC(|dwgS(|H%6yF4uu?_9OF0o(8B-B z)2w0JA2Af&tWT~iS|0=C8w}><(EEzE(9g-eLqj97Az&DHeIx%Z0W9k+CC|0G zUZuMra+TeV5T>qTOybAv0EV_QDMg~E0(RXo-?DMBP6i$UbCcqOLWVXC5^hS%@)ZZ` z{~RXINpIS=ngszpASt)ar^0-AU>lFT0J)MD`68yev-h0krjZ|ezo?_BJ4}U9I$pP_ zBm2yb{`gzO5%}##9+Kmnhc@g@{|~<_!`RnD4Y2zQg%=6DLD^5|$k55H`aY|TpnZZP z=$4B7TGzc(83TyLJ0U^rUh1=F6}FNa#!~D(m6Nxz=TWL^B4X;cLeoVV{*7mk3__?IVm>8P$6J8eZv^-?=tU%Nrd!xXjB>USnd z%xmEJYB7Q#H8LV%_G+eGzX;>3t2@oFHwjcrePSq;xiZHyexo?MCx)jNJ}+p;x*&w1 zxeylK^B)mm#WeLM0_`R}RR!^mVgc)mOLf)=QbS2ilGkR>>!a%k$>fR_TNnL+ zxnvY)+$|SaxoujSS;l}A_vm@;KfHPvDCF_IyhZTDQ)6|XMpK(o1%YZ%);Qb)nsimv zU*HOPASMzq5^x^p)Rv+DT?DOF~=bY!<&wXFl_5Ggf&-#q8eVvJdZ|)2j%Q3DY z5+o{2Tq{hbx+Vrdzn_@VGMJMP`WrLZg{94{d~8#z2bbzj2Wi@36t5LI)-e?0Wz5el zLlx;J8#1!58XRtDz|+@C@&0=-imiAeq5MtOQbn`nZDYvNok+MY_RuB)a>I?EZ1@`8 zwIW%;I(9$fjX2LgHjlerkN3#d5Z3Y%H*au;NC^=~iKVnP%iv<@a|g+YsE>CON^ko9 z$VgmDMYb5NDcE1U$F5^CY8T}W0l)CZ^!up_t|-)D(#I63?B~REhE|{B+IwB$cYA9w z*bFV&%Ze?8(a%5zUoY@E@k5(-3ndEgfho~6;p=Jr4KpA9@lR>8ayt`$IHD+S5PNsG zCuI5meFuANlsm`Zb|;uE{8}!8JAeZERy3)(KD@>AB~?M-p{*8{5lweTXe^H@AGqq$N^L?jx8r`5!^x;W9vZ zM6Brpihhh~FPx;qaXnP2`;we}CUul!YXX0SX})8IVzb{Sts*w<1zHC3V(W{H9oHmf z!RQFnDPJH#L-xFNce-u#wHx(Xs%Z3lkItvQ5~cz84{0 z$dj+DJi;f(I{{I)95(6&(()=QW>%B)d3q60H`8X?xWh@);|5=u!VlAi{2!*9`ImGV8x9^$MV0+FI3n+z3GIZO%O>e zn@0&$Sy5BnQqMsG9+mw3OtJ4jQuw>`=uM@HD(v$sn#ab7nuat<_?6i9?*j_&?h&6? zdG6_HEv*|D=M9!~xAQUGC0dh*?l=i_`5UA}BU`3yyXEVoxK6h(^)v5C)~7KAGn)Xd zh13=D5aAf?L7m|0D#UJ9y}VmN+`Z6=9{%v9clm|z)kQ%dDfb0Dx5fCz3A^5rBXAk# z2Z_GkxRy*^3Axth&w5aQCj|A+`-;FT(f14<`vlm!sz501#_8kAHpYD~YfV0NkNY)> zZ{J8t6CE=%-O>f0RXj83nZ8`rZ06vxwR`TZRr|0h0Aaa1eRJFeqx7gdrdO;f2PGSh z`zA0)O-myEC$F}4zbEnfb~2`lzDX)?XQv7^_`OrW&@@@6&7|EC;9m9d=r-uVKLj;(2l`V=KYKZA9} zQ^c)tGGMzpa+JCuR4(`j;~^^LU2eg?;@i+?h9-m;H5x!<_)3b=Ilq=^J}(x`>laio zGjA3v2MLB}!pg1Pu&L@NOwh2}_SDn@V_a zR2I9s`L{73&vMnA3>@OeYeg3RZK<6+ArMw4A`a{Innn&^3mpbykZUyYExJIYVz?49 zs|9*AaiYVa!gW&BkuKgmT}G8VL(wMSj`Y?yS@y3sNMi-SqPrIGUJq7lTg%#jfS{Cr z0wbg5$*C=#_lVBu3&4s_ZPe(@jKCE{1P5!~R2@U3rob@qFf+Txt4a5TEyVyzYFSeo zR_a2UKrPclhX&XG2)^vC|I+$VuASjs9z3S&7oc_M0wO87dFLcs+mxBSVjHoqH5p=P>&yNFzI`|`kV99sviz@MEvw6#>%wa$tDA#+vQ9=K-{b8U z%MQ0Ki?3O(_X$s?3nCxrk+>{JAXZ8rhGw2x2^Uq?7A2;+kn%#Dm`_ErSP4M=3d#TCP4*iYhZ-RF>XI7>ciI zX=z(q?CyStI?I15JvH%NczP9zYQ5NNINN~;wmrU03?WC)BReh;lzv3OT3alTEB?^& z;Kuw>xkwiC>~^n|CL$&Nke0LF!h<$l+sa-aBL_vOVnZu5s`n&MQN%S__v#J)dQyC$ zu?f94Jvz+7(S2K-)Age17@@wg`Mb!QnR)=p+fL;g;_&tgvt|UEz(A#z4CYcVbI#-> z{Vgve5J6^rBuGZ~Z6)Jz5Fy^ja%RnZ@PYBW#hF}x%dabc^_gRSl_+6Urv4k8ZTA1Yll;^wLvTN%V;j}#2-?5c!_a&Vv0m4uQN!vM&h5=xk2gqh zKJlOpL%t_@(Z%Kn-D(nHPDtOR*IXLU3~U9+ohn%HFRtgAYv;v zH#AOHczl9?+RPF2*wlPjF1CWpOU$(Im3fNz*y6e(#F0#hqpb(vY`{E%bzEM|fvWq$ zfZ2u-`fR`?4(w+aPQzYh%K(skI+XFkE&-SxpOs^hT?>B3J7<YlSR4m($LQ03)$46N4$!8?_(&!rN;d`tBatGm9%v*0NTrTm9idhR?LugV_W zrzf{cng0XYE9iWCo3^2^{xdURk(=o^v?+J9jCkYsq&IS70>j$_RJg2tO~>8;5wN+k z=tua$9-2#B#fyheH~wRFuo8uO%ZS6Ml^i_c%GdAN(h7Ah+8)TN?I%PQETTCn=~fbf z|D~Yrg7i=U_z2y>_Mwf|8{+VESngex40trL|B3azmlZr+J#0x~uqNg|guEr(NW$;n zWkj7#MF1O8GLzO^{UJlbfWhDO#FbR#Yve~UM&l`~v&EdLx3x~E)j5A-JA!4uK%OI7 zE@)8Rs5NRB+Vmo*aa^9UY@is#!Wd)K_{VTbWrWV9IYaMKu7mjV%X9c>>;cZP^54+Y z{FVHVC)&zQDi<=^KBM|WsruVCiO`2qWPo=j3h zW6XCdL1}o3f9uKjk~md4Noo_UZQ997U?bjbcJ1%KdwToq8^m-P`#Rsq%lTWDsW(CB#TCys(Z;@8FS?(DQ(J{QMsX*q&&;UnY_laoowZu* zrPL~zd0prCjh8M2e@bzVkun>mX3QWZ(hkPj^VM$jWYe?ev!aj1hxW_ECqsYEz7~jH z&>wDvhVq>^T)1JYfO~szg^B6oP>Of{M|$(`@vP>GKkLWig_^}~k+dNKz8=Gkn!mzHVL+5)=LEzcF%}FYW0b+Z9N|-P& z*B4;|_#{BE1q5S@Tg9R4G!Z$XwaDNVZ3%~yZ^|b>x43IkWq675{406aIlCeM;I`<@ z@5Hd0gUq0exvaryH;<1E8Jv#P9}>5ncr&)489k}JbS}lLr)O@w9^KdSfUdrKx=Xr6 z>ThP5mekE6tRJuGAkzKPvyJEe9w^v!#47=*U`j_GKWgpoNKH;O47RnK6rv zbD5E)tYW7ed%Fz=t&C^HJsDOVPD%;RD90p-|uqs`r%*RLiCdDZd<<_Xx<(8Hl+4W|A9 z1&?#zOg@sF=Zz^$)|;FzVA^(HJsN2p_|+5>A(VOCg(v56g9{a>8MKi8xTB?>a?qTM z`IVMnJ-;+#Kjog+O(J@?<%Q(=ZvJmw zPeqX_-WCs%rTK0*qn>7ukk7&PT(QlfFA)NeOyP6^N2&q$i(oIibQ!RVeBI8;Y!Z>6*Ykk%-rMSkO#>|R#&aef?t z(uka-=n+)=YXaGq?ITojc2(cqs_U5>CO@K8PO66&V{DeHf$_lb>5&pno1<)+G3sSZV8H7 zQg!7?H27H@?DZnk`8|bcDkBxwt!IbwdaJ{|qGss)q%>)^_~g)Y1+CX1rR^6BR@<|6 z5t{XhIrWKKb-^A7t#U>hmP1KXV{vBe3+_y3eZywRQAv{rBVMI+X)d=V#P6v6&vA05 zGX;{hRCfFrt=|(W`~(lkxHg$NTGAp8ZTMDMc{2RIq0|I>LjzSu^*M|ECQ^M-q54Y9 zny1`QMTKXF^K|{=;fw*&`y(>G^={v~S-HUwm;&FN_#p$iAh-D&!9E4qGg6M3s@tfC z{rIBx*)1vE3INE9U%nQcoA&X{?}-jBvS3TOA7h z#loZKt@-=-KtsN>O)KyD4vh+40YWjVm0xSeG*q?*`NuyQ@{5@@b*XJRdEb)OY0rTE zZE48E1~lGyuY47&Ha9Pv7LlqnW^rk-dJbjgiqpOy*smb6R8)^Ha+e~b|4L29wpJ+$ zy&zYqTIGE2=k1?Y;H5E}T1xirZlCfvY}00=jXhkGdHAK;x9wzod_%E92;aTZMJ6}g z**59X)qZ&XP7J29+h=hp6C(KNb}S>q9kyW% z!U?8iW@->P$mjWANH8WP-NLeg!sNsAr|sW74%BFVg4>od_{^#sc~tEGc8s0D9U{71 zAEg3`SwziV`-xy!lD^}rYPuHQqGuzVe0M~vj4mQ`JAtRgrCKOmjU*s|^qNJ5&PAR0 zNa1dOsa_&Yk6-rKsKeTnvoO8|qzy z_0jR7$8Q%H5r&~R;}}^d9x{b7CO2V%826bzq+%OP=WY2<`xgU|oBLx-|f&r z0k8f3^;DMjYvQjnnR=ngSks1*h~y;^{6SdQK3*wGREUhLKUzcYf-6gI zWNb(wJ;L&fiXbs%_UP)&{)Pp@>vc{mykGjS{cq1L)sk6Q-06t!k3C95aSl%*s=x14 zB?5gvBsSQz9uZaef&a}1?@*eCDe?7Hr)pX*HG^LDlHymTH#w@j;~2=nmpOYTRd@eV zVA*macgZ|0gnNSSi%ea4*&NC9P?Pa>974~H@b~{Pe>jOddb!)DH}^Cxja+YZR{piq zizpZq5xZ;(o^5(!M|f5H+uKJUsJ(UpC1U;9>W9u+uOq(1uzlPwRdjBk{RaY(UNRyX z+^<4|LfJoi$@H?6T9)sh@%v11A+B&PZ_$`8Ikn$iC|v0Nq8&Ph`QN6JjhgIsvb!@) zWYN-JX+vt7#+{&vLuSQG`%b+GS|iDhMvwr^V|#>Qo|weyHHlAnAm=Ksd^xw%gH3so zeI;~-w3yq5R+Fg-6)Chw)^{bLRbC}h3@(YGq3)q`B$A6J2dwNA2{(5Hqwj}FQz2nN zm)R{mUaU>3cj`U8mUFn!354A4xsX^l_CHGUYd_@|nLRRP#X)p7?9uAPa8jsJ3>%)^ zWe5vik{*h^BtWVA#9x}Xu#J8yR?>I5Gz;M)2E8^BX^=TrK#ab)#%h}LlGEgL zyFbFSQ$2r+RBqDi8+HEHjko_wy}FwQh3K{A8OzAavZpFD4)y_RW8_j>j6RtlkB5*; zL>Lkm|Dk|MknHtco6M5u;_UA-8sWN~z$>g#ZQ{uJZ8<&T zb8Xd9ld@+W&CGpzoOcn9yODes`W(36m5iH&Wq3pe`c}9pHrhFgaaOneRG(Pg?ZPHzuae&w6rzL7W|H;IIZ^NI*QK z1Ob!+NqBj^C&DoTCX~FE{pWMQh|j7A(_o$YN8o<)TnV*oz~iDH(mWq=Z9YxgK@dYB z#*+_M#@fpvl%22-*eFaTck49M2YD7*+Krw)sxF7GUcGz(x@ot};||l5>)l7C>`kWg z%Mao3Hg3?AB?el|m??x3ZqMTv=B0gI_$P^gGatkm*CNFo=luXR3Q%jKm{*=FK}BHu z)@HBqGDnxUj6=9#?>ypCqb$klw5_zGz1B@!x2{jg znY}dBWOuK?T$F$Mu?q2uD}1!U&?{oLEv=qtYf>zpI)jfH+-6qzPy713IZ z-~4d}`x5k}8NJ<|0K4ym6u5g4Kd;y5J}^xlThnL-dBDaex=xi!L(*1_(eI8G&xfow zgvl$H^h8L_Yc=_Rp3~@Zv^ri0^{O>D~ zy7b)8NhF@|2=SDA_|TF=B))#_K7jbhX;Nd}8t|rbN-bKWJ zvSUtNjPEORuKv4Ml9d>-;I7seg!gbewDxQqj0j5}LR}+WS3KB2h}FJWH+iF#e1BU? z*9)4Af+e*#YCd(y!tdKJ7EEh$(bpA1ZqZphdi$?$Lx2kt+Yxi8?^@$IEIgXFHr)&5 zywL!6A~WS2Z(Q7HL4`M?I{mDDkMNQH1GFc{Md8=^yT77c>@R)F?Rufd|RrtQqbfW zI}0d*ZSTC(`h_WdRPSzx?L0}4=w*&_Y?X;J@By&tmY3WUo?W&U5lfH&~N zoM>GLVF*+0RNFJ~G)8sJmaP(%B-AM)?DU8$-L+bjIa=12<9vJFhhOml$K>z-2u7|2 zOU4{qRJBQ6oPB13Rl#nD^jl-2@VOd1c?zH?q>vMe1&Dk+X{(Oy`%*MKw}VVaLemhc zmQON^Q-L^9*UQL#PErUUwU0Ig>90az4(OUy_ZZq>)RhR^rGvT>P760Q%ebREM?#hah|tj;3wb-+0Egl z$J12FF^A*~EIPy$E!uf^)WCr>0W$Eoa(;jBCG-yjr_J%uhmcY0wD&&b{5Ezx9yM-- zcw&H^5L$kr*nayH5Hc^iuHBvak03&kR#Pe_4LiVD{j~{o$eWLGE(0JsMzY$IxKf?N{;-rQ!k5jLe@ER!x@e`<)`0F6>cmW04 z3GzbGUz)2Ks8ijg&<4W;_Cgn#)N(F-*MX6qMZ*lNS_!S2eHMn{HJS3A)|uZSakNj& z3Vbh+N-Di;`w2fM3#{NW3BRCxm0Rh)H@EI{Ler^6eEnu4_$y$@6xgTAV?`dw;-GLTX)4E1(BG%*&pu#4Wp+cY+oz90U@V#(NO5t5- zA^ks4aC<}0v`JdbuaM-=V}MR<^E)w05<7H1WVm{iysR7 z6e+Td&tM~HkRcF{;QRuQ9L>hin8yzJz!$94S?NTr_9!S)pf3YSAhed(9-RVuCuEjp z7`+6S6RMlaI=n5@nEqswu)IP-S96PwVdw*(XAI@dK*Q)Vqj^K1Q$+8_m@V?q4x6eXc^tCAB<6nP>S38$X4+x7@ zSvBUpFRc+A_p58mF03*%IIvjEspoe39(dPhi9KW-01ucEz>w`TtlC`APe zrl0AxwQ1wo(D)ivXEwR32E4|8am)&Jn&0NnHop&9c#9Oi#I|&g%Icln;B0vO>v>|D*WQW~d(mdqq>c2E7tnmsje!RYQ`}|pX zeW4HnPj2Mn?;@<8j=fw1Ix zN3OY9H`k*n+rXwW6W65*tkQ`BQ3r%ZQJj+wWPVQbplF__?o3MTwN}Gm^_~5s&$zks zj&t}Ah_hu9=_^c346unSvN_psySY3wnZ@rO;io8iOMi$~4X2k@HRcOP-AdOPkhe>ybo< zd@22Gf~$S4V7YnxB&^mUP5*)>E+EGac6XjWiO44^H{gdXQ0KMvM2y_tKAz0)7~| zb&`@MUCT9OtUIn#JFwwYSmt=>{7ID#o@e^4IG%szc;-5~F*}U(4`FMPuR+(EuVE>I zbGnc5+#E+6aB7RzpKIofS>mWhA1BJQmSE+y(7h?YvEaR}!%r%LyJ4N>H9D)G=SoVq z>p)otq3E&IfTXOx6r9RLEnmqL!^|P~bmaqj((NTeXD*^g5u;wvjMZhT+QyaJ97P!w zA0CwT!VqWXhg12H;)>J6Q>eZk-|GG%pJx5v6ppJ3_Lqy%G9AZw2+I!0SxZzeD9@{e z@vg&M~6WV^(~t%D+iB3Ch~k{cV?;W2Rd%@ zl;@X~dYq`K3){*0>q9V)d0(La;0T+fq3kmmrRFC<%aSq&@A*LYp-Y<6#yU6cd2e8G z>bhB*zZQmCq~g#YsSsbp%Tf6VzM=R^x2q%}PLH#)9Wg&o}rba;19 zrKFJwkM1XZ9K<%u@EsWbY24=hF%i(VZahI(jyv!D9+cbYC*xudx<;P%3jKci0`||& zl6gASPh1)(L9*-b;@Tnf~c>i{VfVP~yd5d@x*yqxcdr>H|4VxBMr zsmBX0-KB_n7yool<`GQli>{|d1CHLlUEnc(2@TVw;dTN%m64d6?UieOY_oeqm(bkrh^M!6llimb9V10IjQ=X+iqW3-C7`(R*L;) z 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

    ~pApWC{)^ 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

    `cfO>>UI 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + instagram-with-circle + + instagram + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/content/themes/fipamo-default/assets/images/global/the-logo.svg b/content/themes/fipamo-default/assets/images/global/the-logo.svg new file mode 100644 index 0000000..f8d21b5 --- /dev/null +++ b/content/themes/fipamo-default/assets/images/global/the-logo.svg @@ -0,0 +1,33 @@ + + + + + diff --git a/content/themes/fipamo-default/assets/scripts/start.min.js b/content/themes/fipamo-default/assets/scripts/start.min.js new file mode 100644 index 0000000..b108df7 --- /dev/null +++ b/content/themes/fipamo-default/assets/scripts/start.min.js @@ -0,0 +1,376 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles +parcelRequire = (function (modules, cache, entry, globalName) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof parcelRequire === 'function' && parcelRequire; + var nodeRequire = typeof require === 'function' && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof parcelRequire === 'function' && parcelRequire; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + // Try the node require function if it exists. + if (nodeRequire && typeof name === 'string') { + return nodeRequire(name); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + localRequire.cache = {}; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports, this); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + newRequire.register = function (id, exports) { + modules[id] = [function (require, module) { + module.exports = exports; + }, {}]; + }; + + var error; + for (var i = 0; i < entry.length; i++) { + try { + newRequire(entry[i]); + } catch (e) { + // Save first error but execute all entries + if (!error) { + error = e; + } + } + } + + if (entry.length) { + // Expose entry point to Node, AMD or browser globals + // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js + var mainExports = newRequire(entry[entry.length - 1]); + + // CommonJS + if (typeof exports === "object" && typeof module !== "undefined") { + module.exports = mainExports; + + // RequireJS + } else if (typeof define === "function" && define.amd) { + define(function () { + return mainExports; + }); + + // + + \ No newline at end of file diff --git a/content/themes/fipamo-default/index.twig b/content/themes/fipamo-default/index.twig new file mode 100644 index 0000000..48c3c08 --- /dev/null +++ b/content/themes/fipamo-default/index.twig @@ -0,0 +1,33 @@ +{% extends "fipamo-default/frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + + {% block mainContent %} +

    +
    +
    + + + +
    +
    + {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/page.twig b/content/themes/fipamo-default/page.twig new file mode 100644 index 0000000..434b8a6 --- /dev/null +++ b/content/themes/fipamo-default/page.twig @@ -0,0 +1,18 @@ +{% extends "fipamo-default/frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + + {% block mainContent %} +
    +
    + {{title}} +
    +
    +
    +
    +

    {{content | raw}}

    +
    +
    + {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/tags.twig b/content/themes/fipamo-default/tags.twig new file mode 100644 index 0000000..2c239f4 --- /dev/null +++ b/content/themes/fipamo-default/tags.twig @@ -0,0 +1,21 @@ +{% extends "fipamo-default/frame.twig" %} + +{% block title %} + {{ title }} +{% endblock %} + + {% block mainContent %} +
    +
    + {{title}} +
    +
    +
    +
    + {% for tag in tag_list %} + {{tag.title}}
    + {% endfor %} + +
    +
    + {% endblock %} \ No newline at end of file diff --git a/content/themes/fipamo-default/theme.json b/content/themes/fipamo-default/theme.json new file mode 100644 index 0000000..2516364 --- /dev/null +++ b/content/themes/fipamo-default/theme.json @@ -0,0 +1,7 @@ +{ + "name": "fipamo-default", + "display-name": "Fipamo Oh Won", + "author": "Are0h", + "description": "The most dangerous default theme in the known universe.", + "version": "1.0.0" +} \ No newline at end of file diff --git a/src/com/Base.js b/src/com/Base.js index c8e6733..cb7ec9a 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -74,6 +74,7 @@ export default class Base { e.stopPropagation(); e.preventDefault(); let setUpForm = data.formDataToJSON(document.getElementById("init-form")); + let api = new FipamoApi(); api .init(setUpForm) .then((response) => { @@ -82,7 +83,7 @@ export default class Base { } else { notify.alert(response.message, true); setTimeout(() => { - window.location = "/@/dashboard"; + window.location = "/dashboard"; }, 700); } }) -- 2.25.1 From 9afec7554c422030e273a29332970261d4c652b7 Mon Sep 17 00:00:00 2001 From: Ro Date: Sat, 24 Apr 2021 16:37:25 -0700 Subject: [PATCH 085/250] activated site restore from zip, fixed imgs to rendering src --- brain/api/v1/InitAPI.inc.php | 1 + brain/controller/APIControl.inc.php | 8 ++- brain/data/Render.inc.php | 25 ++++++- brain/data/Settings.inc.php | 4 +- brain/utility/DocTools.inc.php | 27 ++++++++ brain/utility/Setup.inc.php | 101 +++++++++++++++++++++++++++- src/com/Base.js | 4 +- src/libraries/FipamoAPI.js | 20 ++++++ src/libraries/FipamoAdminAPI.js | 19 ------ 9 files changed, 181 insertions(+), 28 deletions(-) diff --git a/brain/api/v1/InitAPI.inc.php b/brain/api/v1/InitAPI.inc.php index 778f6e9..dfa9b0e 100644 --- a/brain/api/v1/InitAPI.inc.php +++ b/brain/api/v1/InitAPI.inc.php @@ -13,6 +13,7 @@ class InitAPI $result = Setup::init($request); break; case "restore": + $result = Setup::restore($request); break; } diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index cd09474..92a0ff7 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -40,9 +40,15 @@ class APIControl } switch (isset($args["third"]) ? $args["third"] : "none") { + case "restore": case "init": - $result = InitApi::handleInitTasks($args["third"], $body); + $task = $args["third"]; + $result = InitApi::handleInitTasks( + $task, + $task == "init" ? $body : $request + ); break; + case "login": $result = AuthAPI::login($body); break; diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 3bdcb62..a67475c 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -16,7 +16,9 @@ class Render $settings = $config->getSettings(); $this->menu = $settings["menu"]; $this->pageInfo = [ - "keywords" => $settings["global"]["keywords"], + "keywords" => isset($settings["global"]["keywords"]) + ? $settings["global"]["keywords"] + : "fipamo, blog, jamstack, php, markdown, js", "description" => $settings["global"]["descriptions"], "image" => $settings["global"]["background"], ]; @@ -66,11 +68,21 @@ class Render //render markdown content and clean it $parser = new Parser(); $rendered = $parser->parse($page["content"]); - $sanitizer = \HtmlSanitizer\Sanitizer::create([ + $sanitizer = HtmlSanitizer\Sanitizer::create([ "extensions" => ["basic", "image", "list", "code"], + "tags" => [ + "img" => [ + "allowed_attributes" => ["src", "alt", "title", "class"], + "allowed_hosts" => null, + ], + ], ]); + $preclean = $sanitizer->sanitize($rendered->getContent()); - $cleaned = strip_tags($preclean, [ + + //just clean renderd string for now, Sanitize doesn't like relative img urls + //so another option is needed + $cleaned = strip_tags($rendered->getContent(), [ "a", "br", "p", @@ -159,6 +171,13 @@ class Render $html = $this->twig->render($template, $pageOptions); $location = "../public/tags/" . $item["slug"] . ".html"; + + //if tags folder doesn't exist, make it + if (!is_dir("../public/tags")) { + mkdir("../public/tags", 0755, true); + } else { + } + if (!is_file($location)) { file_put_contents($location, $html); } else { diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 9ae7226..4917c1e 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -109,7 +109,9 @@ class Settings if (isset($key)) { $member = Session::get("member"); $found = find($this->folks, ["handle" => $member["handle"]]); - return $found[$key]; + if ($found) { + return $found[$key]; + } } else { return $this->folks; } diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php index c64da0d..9650864 100644 --- a/brain/utility/DocTools.inc.php +++ b/brain/utility/DocTools.inc.php @@ -55,6 +55,33 @@ class DocTools } } + public static function deleteFolder($path) + { + if (!empty($path) && is_dir($path)) { + $dir = new RecursiveDirectoryIterator( + $path, + RecursiveDirectoryIterator::SKIP_DOTS + ); //upper dirs are not included,otherwise DISASTER HAPPENS :) + $files = new RecursiveIteratorIterator( + $dir, + RecursiveIteratorIterator::CHILD_FIRST + ); + foreach ($files as $f) { + if (is_file($f)) { + unlink($f); + } else { + $empty_dirs[] = $f; + } + } + if (!empty($empty_dirs)) { + foreach ($empty_dirs as $eachDir) { + rmdir($eachDir); + } + } + rmdir($path); + } + } + public static function objectToMD($object) { $markdown = diff --git a/brain/utility/Setup.inc.php b/brain/utility/Setup.inc.php index 1ce2593..a31c2f2 100644 --- a/brain/utility/Setup.inc.php +++ b/brain/utility/Setup.inc.php @@ -1,5 +1,5 @@ "requestLame", + "message" => "Still working on it.", + ]; + $body = $request->getParsedBody(); + + $backup = $request->getUploadedFiles(); + $file = $backup["backup-upload"]; + $name = $file->getClientFileName(); + + //park it so it can be read + $file->moveTo("../content" . "/" . $name); + + //open it and get files to verify user + $zip = new ZipArchive(); + if ($zip->open("../content" . "/" . $name) === true) { + $folks = json_decode($zip->getFromName("settings/folks.json"), true); + $found = find($folks, ["handle" => $body["restore_member_handle"]]); + + //if member is found in back up, check pass + if ($found) { + if (password_verify($body["restore_member_pass"], $found["password"])) { + //backup verified, restore site + + //set new secret key for older folks configs + $newFolks = []; + if (!isset($found["secret"])) { + $found["secret"] = StringTools::randomString(12); + } + array_push($newFolks, $found); + //dump files in folder + $zip->extractTo("../content"); + + //move to appropriate spots + rename( + "../content/settings/settings.json", + "../config/settings.json" + ); + + //rename("../content/settings/folks.json", "../config/folks.json"); + DocTools::writeSettings("../config/folks.json", $newFolks); + + rename("../content/settings/tags.json", "../config/tags.json"); + + rename( + "../content/public/assets/images/blog", + "../public/assets/images/blog" + ); + + rename("../content/content/pages/", "../content/pages"); + + //legacy check for old file structure + if (is_file("../content/pages/index.md")) { + if (!is_dir("../content/pages/start")) { + //Directory does not exist, so lets create it. + mkdir("../content/pages/start", 0755, true); + //move start page to appropriate spot + rename( + "../content/pages/index.md", + "../content/pages/start/index.md" + ); + } + } else { + //chill + } + + //clean up + + DocTools::deleteFolder("../content/settings"); + DocTools::deleteFolder("../content/public"); + DocTools::deleteFolder("../content/content"); + + echo "AUTH VERIFIED"; + } else { + $result = [ + "type" => "requestLame", + "message" => "Check that password, champ.", + ]; + } + } else { + $result = [ + "type" => "requestLame", + "message" => "No member found by that name, hoss", + ]; + } + + $zip->close(); + $zipPath = "../content/" . $name; + //trash zip when done + unlink($zipPath); + } else { + $result = [ + "type" => "requestLame", + "message" => "Could not open backup. RATS!", + ]; + } + return $result; } } diff --git a/src/com/Base.js b/src/com/Base.js index cb7ec9a..7ca7585 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -95,7 +95,7 @@ export default class Base { handleRestore(e) { e.stopPropagation(); e.preventDefault(); - let admin = new FipamoAdminAPI(); + let api = new FipamoApi(); var form = document.getElementById("init-restore"); admin .handleInitRestore(form) @@ -105,7 +105,7 @@ export default class Base { } else { notify.alert(response.message, true); setTimeout(() => { - //window.location = '/@/dashboard'; + window.location = "/dashboard"; }, 700); } }) diff --git a/src/libraries/FipamoAPI.js b/src/libraries/FipamoAPI.js index 8e092bb..014a619 100644 --- a/src/libraries/FipamoAPI.js +++ b/src/libraries/FipamoAPI.js @@ -6,6 +6,7 @@ export const CONTENT_TYPE_JSON = "json"; export const CONTENT_TYPE_FORM = "x-www-form-urlencoded"; export const API_STATUS = "/api/v1/status"; export const API_INIT = "/api/v1/init"; +export const API_RESTORE = "/api/v1/restore"; export const API_LOGIN = "/api/v1/login"; export const API_GET_PAGES = "/api/v1/page/published"; export const API_GET_PAGE = "/api/v1/page/single"; @@ -52,6 +53,25 @@ export default class FipamoAPI { }); }); } + + handleInitRestore(form) { + return new Promise((resolve, reject) => { + var url, event, method, type, data; + + url = API_RESTORE; + event = DataEvent.API_BACKUP_RESTORE; + method = REQUEST_TYPE_POST; + type = CONTENT_TYPE_FORM; + data = new FormData(form); + this._request(url, event, method, type, data) + .then((result) => { + resolve(result); + }) + .catch((err) => { + reject(err); + }); + }); + } getPages(num) { let pageNum = num; if (pageNum === null || pageNum === "" || !pageNum) pageNum = 1; diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index f0c2c25..55b05d7 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -22,7 +22,6 @@ export const API_REINDEX_PAGES = "/api/v1/settings/reindex"; export const API_CREATE_BACKUP = "/api/v1/backup/create"; export const API_DOWNLOAD_BACKUP = "/api/v1/backup/download"; export const API_RESTORE_BACKUP = "/api/v1/backup/restore"; -export const API_INIT_RESTORE_BACKUP = "/api/v1/backup/init-restore"; export const API_SEND_MAIL = "/api/v1/mailer"; import * as DataEvent from "../com/events/DataEvent"; export default class APIUtils { @@ -227,24 +226,6 @@ export default class APIUtils { }); }); } - handleInitRestore(form) { - return new Promise((resolve, reject) => { - var url, event, method, type, data; - - url = API_INIT_RESTORE_BACKUP; - event = DataEvent.API_BACKUP_RESTORE; - method = REQUEST_TYPE_POST; - type = CONTENT_TYPE_FORM; - data = new FormData(form); - this._request(url, event, method, type, data) - .then((result) => { - resolve(result); - }) - .catch((err) => { - reject(err); - }); - }); - } handleReindex(data) { return new Promise((resolve, reject) => { -- 2.25.1 From c6f7c56f4a63e90d9c51b567c6f51ee70f0efc6b Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 25 Apr 2021 15:48:46 -0700 Subject: [PATCH 086/250] Activated site back up via zip and added download link in settings --- .gitignore | 1 + brain/api/v1/SettingsAPI.inc.php | 6 +++ brain/controller/APIControl.inc.php | 59 +++++++++++++++++++++-- brain/controller/DashControl.inc.php | 4 +- brain/data/Settings.inc.php | 71 ++++++++++++++++++++++++++++ brain/views/dash/settings.twig | 2 +- src/libraries/FipamoAdminAPI.js | 2 +- 7 files changed, 139 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 591c5c1..a72b4e4 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ config/pages.json config/tags.json *.DS_Store config.codekit3 +/config/backups \ No newline at end of file diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index d9e502c..f8fa99b 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -54,4 +54,10 @@ class SettingsAPI return $result; } + + public static function createBackup() + { + $result = Settings::makeBackup(); + return $result; + } } diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index 92a0ff7..60735d2 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -15,15 +15,57 @@ class APIControl ResponseInterface $response, array $args ): ResponseInterface { + $filename = ""; switch (isset($args["third"]) ? $args["third"] : "none") { case "status": $result = AuthAPI::status(); break; + case "files": + if (Session::active()) { + if ($args["third"] == "backup") { + $filename = "../config/backups/latest_backup.zip"; + if (file_exists($filename)) { + header("Content-Type: application/zip"); + header( + 'Content-Disposition: attachment; filename="' . + basename($filename) . + '"' + ); + header("Content-Length: " . filesize($filename)); + + flush(); + // return readfile($filename); + //readfile($filename); + // delete file + //unlink($filename); + } + } + } else { + $result = [ + "message" => "API access denied, homie", + "type" => "API_ERROR", + ]; + } default: break; } - $response->getBody()->write(json_encode($result)); - return $response->withHeader("Content-Type", "application/json"); + + $freshResponse = $response; + + if ($args["third"] == "files") { + $freshResponse + ->getBody() + ->write(file_get_contents("../config/backups/latest_back.zip")); + + $freshResponse->withHeader("Content-Type", "application/zip"); + return $freshResponse->withAddedHeader( + "Content-Disposition", + "attachment; filename=latest_backup.zip" + ); + } else { + $response->getBody()->write(json_encode($result)); + return $response->withHeader("Content-Type", "application/json"); + } } public static function post( ServerRequestInterface $request, @@ -48,7 +90,18 @@ class APIControl $task == "init" ? $body : $request ); break; - + case "backup": + $token = $request->getHeader("fipamo-access-token"); + //Verify token for admin tasks + if (Session::verifyToken($token[0])) { + $result = SettingsAPI::createBackup(); + } else { + $result = [ + "message" => "API access denied, homie", + "type" => "API_ERROR", + ]; + } + break; case "login": $result = AuthAPI::login($body); break; diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 69ba850..532cc88 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -24,6 +24,7 @@ class DashControl $themes = $config->getThemes(); $template = "dash/settings.twig"; $member = Session::get("member"); + $updated = new \Moment\Moment($settings["global"]["last_backup"]); $pageOptions = [ "title" => "Dash Settings", "private" => $settings["global"]["private"], @@ -33,7 +34,7 @@ class DashControl "siteTitle" => $settings["global"]["title"], "baseUrl" => $settings["global"]["base_url"], "desc" => $settings["global"]["descriptions"], - "lastBackup" => $settings["global"]["last_backup"], + "lastBackup" => $updated->format("Y M D d"), "currentTheme" => $settings["global"]["theme"], "themes" => $themes, "mailOption" => $settings["email"]["active"], @@ -115,6 +116,7 @@ class DashControl header("Location: /dashboard"); die(); break; + default: //$secret = ; $template = "dash/start.twig"; diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 4917c1e..535a5a9 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -168,6 +168,77 @@ class Settings DocTools::writeSettings("../config/settings.json", $settings); } + public static function makeBackup() + { + //make sure back directory is there + if (!is_dir("../config/backups")) { + mkdir("../config/backups", 0755, true); + } + //creat backup zip + $zip = new ZipArchive(); + $zip->open( + "../config/backups/latest_back.zip", + ZipArchive::CREATE | ZipArchive::OVERWRITE + ); + //gather data and path info for md pages + $pagePath = "../content/pages"; + $yearPaths = glob($pagePath . "/*", GLOB_ONLYDIR); + foreach ($yearPaths as $years) { + $year = explode("/", $years); + //grap the index and save it + if (trim($year[3]) == "start") { + $options = [ + "add_path" => "content/pages/" . $year[3] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($years . "/*.md", GLOB_BRACE, $options); + } + $monthsPath = glob($pagePath . "/" . $year[3] . "/*", GLOB_ONLYDIR); + foreach ($monthsPath as $months) { + $month = explode("/", $months); + //once info is collected, add md pages to zip + $options = [ + "add_path" => "content/pages/" . $year[3] . "/" . $month[4] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($months . "/*.md", GLOB_BRACE, $options); + } + } + + //tather data and path info for blog images + $blogImagesPath = "../public/assets/images/blog"; + $yearPaths = glob($blogImagesPath . "/*", GLOB_ONLYDIR); + foreach ($yearPaths as $years) { + $year = explode("/", $years); + $monthsPath = glob($blogImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); + foreach ($monthsPath as $months) { + $month = explode("/", $months); + //once info is collected, add images pages to zip + $options = [ + "add_path" => + "public/assets/images/blog/" . $year[5] . "/" . $month[6] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); + } + } + + //add directory for settings and save them + $zip->addEmptyDir("settings"); + $zip->addFile("../config/settings.json", "settings/settings.json"); + $zip->addFile("../config/folks.json", "settings/folks.json"); + $zip->addFile("../config/tags.json", "settings/tags.json"); + //save zip file + $zip->close(); + + //update settings file with latest back up date + $updated = new \Moment\Moment(); + self::updateGlobalData("last_backup", $updated->format("Y-m-d\TH:i:sP")); + + $result = ["message" => "Backup created. THIS IS A SAFE SPACE!"]; + return $result; + } + public static function updateTags() { $tags = Sorting::tags(); diff --git a/brain/views/dash/settings.twig b/brain/views/dash/settings.twig index 39b5b45..79a91e2 100644 --- a/brain/views/dash/settings.twig +++ b/brain/views/dash/settings.twig @@ -64,7 +64,7 @@
    {% if lastBackup != '' %}
    - The last back up was created {{lastBackup}}
    + The last back up was created {{lastBackup}}
    {% else %} span No back ups. Frowny face. diff --git a/src/libraries/FipamoAdminAPI.js b/src/libraries/FipamoAdminAPI.js index 55b05d7..195bb5b 100644 --- a/src/libraries/FipamoAdminAPI.js +++ b/src/libraries/FipamoAdminAPI.js @@ -19,7 +19,7 @@ export const API_UPLOAD_BACKGROUND = "/api/v1/settings/add-feature-background"; export const API_PUBLISH_PAGES = "/api/v1/settings/publish"; export const API_NAV_SYNC = "/api/v1/settings/nav-sync"; export const API_REINDEX_PAGES = "/api/v1/settings/reindex"; -export const API_CREATE_BACKUP = "/api/v1/backup/create"; +export const API_CREATE_BACKUP = "/api/v1/backup"; export const API_DOWNLOAD_BACKUP = "/api/v1/backup/download"; export const API_RESTORE_BACKUP = "/api/v1/backup/restore"; export const API_SEND_MAIL = "/api/v1/mailer"; -- 2.25.1 From 53fd1a47c5ad6138d082b302496ac49a7eff2422 Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 25 Apr 2021 16:00:50 -0700 Subject: [PATCH 087/250] fixed minor error when updating avi in settings --- brain/controller/APIControl.inc.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/brain/controller/APIControl.inc.php b/brain/controller/APIControl.inc.php index 60735d2..e80c6a4 100644 --- a/brain/controller/APIControl.inc.php +++ b/brain/controller/APIControl.inc.php @@ -123,7 +123,13 @@ class APIControl case "settings": $token = $request->getHeader("fipamo-access-token"); if (Session::verifyToken($token[0])) { - $result = SettingsAPI::handleSettingsTask($request, $args, $body); + if (isset($body)) { + $postBody = $body; + } else { + $postBody = null; + } + + $result = SettingsAPI::handleSettingsTask($request, $args, $postBody); } else { $result = [ "message" => "API access denied, homie", -- 2.25.1 From b8cf4e403a46c1d19358193cd129dd02be171b27 Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 25 Apr 2021 19:49:32 -0700 Subject: [PATCH 088/250] fixed a typo in the README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 57dd11c..b763f2b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ ![This is Fipamo](https://playvicio.us/base-assets/images/fipamo-brand.png) + # Fipamo means to save -The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependecies. Just write and publish. +The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependencies. Just write and publish. Because nobody has time for all that. ## Check the (WIP) Docs to get you started.
    + [Getting Started](https://code.playvicio.us/Are0h/Fipamo/wiki/00---Start)
    [Install](https://code.playvicio.us/Are0h/Fipamo/wiki/01---Install)
    [Using Fipamo](https://code.playvicio.us/Are0h/Fipamo/wiki/02-Usage)
    -- 2.25.1 From 06787aac30616df3aac823a04414c8ef74e51f18 Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 25 Apr 2021 21:18:01 -0700 Subject: [PATCH 089/250] moved site restore to utility class, updated set up script, fixed minor error in front end api restore request --- brain/App.inc.php | 1 + brain/api/v1/SettingsAPI.inc.php | 2 +- brain/data/Settings.inc.php | 71 ---------------------- brain/utility/Maintenance.inc.php | 99 +++++++++++++++++++++++++++++++ brain/utility/Setup.inc.php | 11 +++- src/com/Base.js | 2 +- 6 files changed, 111 insertions(+), 75 deletions(-) create mode 100644 brain/utility/Maintenance.inc.php diff --git a/brain/App.inc.php b/brain/App.inc.php index ec8dca7..33dd18e 100644 --- a/brain/App.inc.php +++ b/brain/App.inc.php @@ -17,6 +17,7 @@ include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/DocTools.inc.php"; include "../brain/utility/Sorting.inc.php"; include "../brain/utility/Setup.inc.php"; +include "../brain/utility/Maintenance.inc.php"; class App { diff --git a/brain/api/v1/SettingsAPI.inc.php b/brain/api/v1/SettingsAPI.inc.php index f8fa99b..da6394e 100644 --- a/brain/api/v1/SettingsAPI.inc.php +++ b/brain/api/v1/SettingsAPI.inc.php @@ -57,7 +57,7 @@ class SettingsAPI public static function createBackup() { - $result = Settings::makeBackup(); + $result = Maintenance::makeBackup(); return $result; } } diff --git a/brain/data/Settings.inc.php b/brain/data/Settings.inc.php index 535a5a9..4917c1e 100644 --- a/brain/data/Settings.inc.php +++ b/brain/data/Settings.inc.php @@ -168,77 +168,6 @@ class Settings DocTools::writeSettings("../config/settings.json", $settings); } - public static function makeBackup() - { - //make sure back directory is there - if (!is_dir("../config/backups")) { - mkdir("../config/backups", 0755, true); - } - //creat backup zip - $zip = new ZipArchive(); - $zip->open( - "../config/backups/latest_back.zip", - ZipArchive::CREATE | ZipArchive::OVERWRITE - ); - //gather data and path info for md pages - $pagePath = "../content/pages"; - $yearPaths = glob($pagePath . "/*", GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode("/", $years); - //grap the index and save it - if (trim($year[3]) == "start") { - $options = [ - "add_path" => "content/pages/" . $year[3] . "/", - "remove_all_path" => true, - ]; - $zip->addGlob($years . "/*.md", GLOB_BRACE, $options); - } - $monthsPath = glob($pagePath . "/" . $year[3] . "/*", GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode("/", $months); - //once info is collected, add md pages to zip - $options = [ - "add_path" => "content/pages/" . $year[3] . "/" . $month[4] . "/", - "remove_all_path" => true, - ]; - $zip->addGlob($months . "/*.md", GLOB_BRACE, $options); - } - } - - //tather data and path info for blog images - $blogImagesPath = "../public/assets/images/blog"; - $yearPaths = glob($blogImagesPath . "/*", GLOB_ONLYDIR); - foreach ($yearPaths as $years) { - $year = explode("/", $years); - $monthsPath = glob($blogImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); - foreach ($monthsPath as $months) { - $month = explode("/", $months); - //once info is collected, add images pages to zip - $options = [ - "add_path" => - "public/assets/images/blog/" . $year[5] . "/" . $month[6] . "/", - "remove_all_path" => true, - ]; - $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); - } - } - - //add directory for settings and save them - $zip->addEmptyDir("settings"); - $zip->addFile("../config/settings.json", "settings/settings.json"); - $zip->addFile("../config/folks.json", "settings/folks.json"); - $zip->addFile("../config/tags.json", "settings/tags.json"); - //save zip file - $zip->close(); - - //update settings file with latest back up date - $updated = new \Moment\Moment(); - self::updateGlobalData("last_backup", $updated->format("Y-m-d\TH:i:sP")); - - $result = ["message" => "Backup created. THIS IS A SAFE SPACE!"]; - return $result; - } - public static function updateTags() { $tags = Sorting::tags(); diff --git a/brain/utility/Maintenance.inc.php b/brain/utility/Maintenance.inc.php new file mode 100644 index 0000000..2697e3e --- /dev/null +++ b/brain/utility/Maintenance.inc.php @@ -0,0 +1,99 @@ +open( + "../config/backups/latest_back.zip", + ZipArchive::CREATE | ZipArchive::OVERWRITE + ); + //gather data and path info for md pages + $pagePath = "../content/pages"; + $yearPaths = glob($pagePath . "/*", GLOB_ONLYDIR); + foreach ($yearPaths as $years) { + $year = explode("/", $years); + //grap the index and save it + if (trim($year[3]) == "start") { + $options = [ + "add_path" => "content/pages/" . $year[3] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($years . "/*.md", GLOB_BRACE, $options); + } + $monthsPath = glob($pagePath . "/" . $year[3] . "/*", GLOB_ONLYDIR); + foreach ($monthsPath as $months) { + $month = explode("/", $months); + //once info is collected, add md pages to zip + $options = [ + "add_path" => "content/pages/" . $year[3] . "/" . $month[4] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($months . "/*.md", GLOB_BRACE, $options); + } + } + + //gather data and path info for blog images + $blogImagesPath = "../public/assets/images/blog"; + $yearPaths = glob($blogImagesPath . "/*", GLOB_ONLYDIR); + foreach ($yearPaths as $years) { + $year = explode("/", $years); + $monthsPath = glob($blogImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); + foreach ($monthsPath as $months) { + $month = explode("/", $months); + //once info is collected, add images pages to zip + $options = [ + "add_path" => + "public/assets/images/blog/" . $year[5] . "/" . $month[6] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); + } + } + + //gather data and path info for user images + $userImagesPath = "../public/assets/images/user"; + $yearPaths = glob($userImagesPath . "/*", GLOB_ONLYDIR); + foreach ($yearPaths as $years) { + $year = explode("/", $years); + $monthsPath = glob($userImagesPath . "/" . $year[5] . "/*", GLOB_ONLYDIR); + foreach ($monthsPath as $months) { + $month = explode("/", $months); + //once info is collected, add images pages to zip + $options = [ + "add_path" => + "public/assets/images/user/" . $year[5] . "/" . $month[6] . "/", + "remove_all_path" => true, + ]; + $zip->addGlob($months . "/*.*", GLOB_BRACE, $options); + } + } + + //add directory for settings and save them + $zip->addEmptyDir("settings"); + $zip->addFile("../config/settings.json", "settings/settings.json"); + $zip->addFile("../config/folks.json", "settings/folks.json"); + $zip->addFile("../config/tags.json", "settings/tags.json"); + //save zip file + $zip->close(); + + //update settings file with latest back up date + $updated = new \Moment\Moment(); + Settings::updateGlobalData( + "last_backup", + $updated->format("Y-m-d\TH:i:sP") + ); + + $result = ["message" => "Backup created. THIS IS A SAFE SPACE!"]; + return $result; + } +} diff --git a/brain/utility/Setup.inc.php b/brain/utility/Setup.inc.php index a31c2f2..05d2cfa 100644 --- a/brain/utility/Setup.inc.php +++ b/brain/utility/Setup.inc.php @@ -142,6 +142,11 @@ class SetUp "../public/assets/images/blog" ); + rename( + "../content/public/assets/images/user", + "../public/assets/images/user" + ); + rename("../content/content/pages/", "../content/pages"); //legacy check for old file structure @@ -164,8 +169,10 @@ class SetUp DocTools::deleteFolder("../content/settings"); DocTools::deleteFolder("../content/public"); DocTools::deleteFolder("../content/content"); - - echo "AUTH VERIFIED"; + $result = [ + "type" => "requestGood", + "message" => "Site Restored! Redirecting", + ]; } else { $result = [ "type" => "requestLame", diff --git a/src/com/Base.js b/src/com/Base.js index 7ca7585..6e1328c 100644 --- a/src/com/Base.js +++ b/src/com/Base.js @@ -97,7 +97,7 @@ export default class Base { e.preventDefault(); let api = new FipamoApi(); var form = document.getElementById("init-restore"); - admin + api .handleInitRestore(form) .then((response) => { if (response.type === DataEvent.REQUEST_LAME) { -- 2.25.1 From f3dfd3411a389898df860916e12b512881916efc Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 26 Apr 2021 13:19:47 -0700 Subject: [PATCH 090/250] added meta data to page template --- brain/data/Render.inc.php | 5 +++-- content/themes/fipamo-default/page.twig | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index a67475c..51ed995 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -55,13 +55,14 @@ class Render foreach ($taglist as $tag) { $label = trim($tag); array_push($tags, [ - "tag_name" => $label, + "label" => $label . " ", "slug" => StringTools::safeString($label), ]); } + $meta = [ "who" => $page["author"], - "when" => $page["updated"], + "when" => $page["created"], "tags" => $tags, ]; diff --git a/content/themes/fipamo-default/page.twig b/content/themes/fipamo-default/page.twig index 434b8a6..6d9852d 100644 --- a/content/themes/fipamo-default/page.twig +++ b/content/themes/fipamo-default/page.twig @@ -13,6 +13,14 @@

    {{content | raw}}

    +
    + + {{meta['who']}} dropped this {{ meta['when'] }}
    + tags: + {% for tag in meta['tags'] %} + {{ tag.label }} + {% endfor %} +
    {% endblock %} \ No newline at end of file -- 2.25.1 From 95aecde73b5978e18132a120f7f0d7f541394868 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 26 Apr 2021 22:44:55 +0000 Subject: [PATCH 091/250] quick patch to render class for dynamic theme rendering --- brain/data/Render.inc.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 51ed995..19e008e 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -15,6 +15,7 @@ class Render $this->twig = new \Twig\Environment($this->loader, []); $settings = $config->getSettings(); $this->menu = $settings["menu"]; + $this->theme = $settings["global"]["theme"]; $this->pageInfo = [ "keywords" => isset($settings["global"]["keywords"]) ? $settings["global"]["keywords"] @@ -104,7 +105,7 @@ class Render //$cleaned = html_entity_decode($cleaned, ENT_QUOTES, "UTF-8"); if ($page["layout"] == "index") { - $template = "fipamo-default/index.twig"; + $template = $this->theme . "/index.twig"; $location = "../public/index.html"; $dir = null; @@ -119,7 +120,7 @@ class Render "menu" => $this->menu, ]; } else { - $template = "fipamo-default/page.twig"; + $template = $this->theme . "/page.twig"; $location = "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; $dir = "../public/" . $page["path"]; @@ -142,7 +143,7 @@ class Render public function renderArchive() { $archive = Sorting::archive(); - $template = "fipamo-default/archive.twig"; + $template = $this->theme . "/archive.twig"; $pageOptions = [ "title" => "Archive", "background" => $this->pageInfo["image"], @@ -160,7 +161,7 @@ class Render { $list = Sorting::tags(); foreach ($list as $item) { - $template = "fipamo-default/tags.twig"; + $template = $this->theme . "/tags.twig"; $pageOptions = [ "title" => "Pages Tagged as " . $item["tag_name"], "background" => $this->pageInfo["image"], -- 2.25.1 From 4d44ea2a06d24edc044eb70f6de35e54f774f821 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 27 Apr 2021 00:31:49 +0000 Subject: [PATCH 092/250] added base style and script assets for dash --- .gitignore | 6 + public/assets/css/dash.css | 3485 +++++++++++++++++++++++++++++ public/assets/scripts/dash.min.js | 11 + 3 files changed, 3502 insertions(+) create mode 100644 public/assets/css/dash.css create mode 100644 public/assets/scripts/dash.min.js diff --git a/.gitignore b/.gitignore index a72b4e4..827555c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,12 @@ public/* !public/index.php !public/assets public/assets/* +!public/assets/css +public/assets/css/* +!public/assets/css/dash.css +!public/assets/scripts +public/assets/scripts/* +!public/assets/scripts/dash.min.js !public/assets/images public/assets/images/* !public/assets/images/global/ diff --git a/public/assets/css/dash.css b/public/assets/css/dash.css new file mode 100644 index 0000000..14f31ec --- /dev/null +++ b/public/assets/css/dash.css @@ -0,0 +1,3485 @@ +/* Bulma Utilities */ +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; +} +.columns.is-mobile > .column.is-narrow { + flex: none; + width: unset; +} +.columns.is-mobile > .column.is-full { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; +} +.columns.is-mobile > .column.is-half { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; +} +.columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; +} +.columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; +} +.columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; +} +.columns.is-mobile > .column.is-four-fifths { + flex: none; + width: 80%; +} +.columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; +} +.columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; +} +.columns.is-mobile > .column.is-offset-half { + margin-left: 50%; +} +.columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; +} +.columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; +} +.columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; +} +.columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; +} +.columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; +} +.columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; +} +.columns.is-mobile > .column.is-0 { + flex: none; + width: 0%; +} +.columns.is-mobile > .column.is-offset-0 { + margin-left: 0%; +} +.columns.is-mobile > .column.is-1 { + flex: none; + width: 8.3333333333%; +} +.columns.is-mobile > .column.is-offset-1 { + margin-left: 8.3333333333%; +} +.columns.is-mobile > .column.is-2 { + flex: none; + width: 16.6666666667%; +} +.columns.is-mobile > .column.is-offset-2 { + margin-left: 16.6666666667%; +} +.columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; +} +.columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; +} +.columns.is-mobile > .column.is-4 { + flex: none; + width: 33.3333333333%; +} +.columns.is-mobile > .column.is-offset-4 { + margin-left: 33.3333333333%; +} +.columns.is-mobile > .column.is-5 { + flex: none; + width: 41.6666666667%; +} +.columns.is-mobile > .column.is-offset-5 { + margin-left: 41.6666666667%; +} +.columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; +} +.columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; +} +.columns.is-mobile > .column.is-7 { + flex: none; + width: 58.3333333333%; +} +.columns.is-mobile > .column.is-offset-7 { + margin-left: 58.3333333333%; +} +.columns.is-mobile > .column.is-8 { + flex: none; + width: 66.6666666667%; +} +.columns.is-mobile > .column.is-offset-8 { + margin-left: 66.6666666667%; +} +.columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; +} +.columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; +} +.columns.is-mobile > .column.is-10 { + flex: none; + width: 83.3333333333%; +} +.columns.is-mobile > .column.is-offset-10 { + margin-left: 83.3333333333%; +} +.columns.is-mobile > .column.is-11 { + flex: none; + width: 91.6666666667%; +} +.columns.is-mobile > .column.is-offset-11 { + margin-left: 91.6666666667%; +} +.columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; +} +.columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; +} +@media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; + width: unset; + } + .column.is-full-mobile { + flex: none; + width: 100%; + } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; + } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; + } + .column.is-half-mobile { + flex: none; + width: 50%; + } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; + } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; + } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; + } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; + } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; + } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; + } + .column.is-offset-half-mobile { + margin-left: 50%; + } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; + } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; + } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; + } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; + } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; + } + .column.is-0-mobile { + flex: none; + width: 0%; + } + .column.is-offset-0-mobile { + margin-left: 0%; + } + .column.is-1-mobile { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-mobile { + margin-left: 8.3333333333%; + } + .column.is-2-mobile { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-mobile { + margin-left: 16.6666666667%; + } + .column.is-3-mobile { + flex: none; + width: 25%; + } + .column.is-offset-3-mobile { + margin-left: 25%; + } + .column.is-4-mobile { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-mobile { + margin-left: 33.3333333333%; + } + .column.is-5-mobile { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-mobile { + margin-left: 41.6666666667%; + } + .column.is-6-mobile { + flex: none; + width: 50%; + } + .column.is-offset-6-mobile { + margin-left: 50%; + } + .column.is-7-mobile { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-mobile { + margin-left: 58.3333333333%; + } + .column.is-8-mobile { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-mobile { + margin-left: 66.6666666667%; + } + .column.is-9-mobile { + flex: none; + width: 75%; + } + .column.is-offset-9-mobile { + margin-left: 75%; + } + .column.is-10-mobile { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-mobile { + margin-left: 83.3333333333%; + } + .column.is-11-mobile { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-mobile { + margin-left: 91.6666666667%; + } + .column.is-12-mobile { + flex: none; + width: 100%; + } + .column.is-offset-12-mobile { + margin-left: 100%; + } +} +@media screen and (min-width: 769px), print { + .column.is-narrow, .column.is-narrow-tablet { + flex: none; + width: unset; + } + .column.is-full, .column.is-full-tablet { + flex: none; + width: 100%; + } + .column.is-three-quarters, .column.is-three-quarters-tablet { + flex: none; + width: 75%; + } + .column.is-two-thirds, .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; + } + .column.is-half, .column.is-half-tablet { + flex: none; + width: 50%; + } + .column.is-one-third, .column.is-one-third-tablet { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter, .column.is-one-quarter-tablet { + flex: none; + width: 25%; + } + .column.is-one-fifth, .column.is-one-fifth-tablet { + flex: none; + width: 20%; + } + .column.is-two-fifths, .column.is-two-fifths-tablet { + flex: none; + width: 40%; + } + .column.is-three-fifths, .column.is-three-fifths-tablet { + flex: none; + width: 60%; + } + .column.is-four-fifths, .column.is-four-fifths-tablet { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { + margin-left: 75%; + } + .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; + } + .column.is-offset-half, .column.is-offset-half-tablet { + margin-left: 50%; + } + .column.is-offset-one-third, .column.is-offset-one-third-tablet { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { + margin-left: 25%; + } + .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { + margin-left: 20%; + } + .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { + margin-left: 40%; + } + .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { + margin-left: 60%; + } + .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { + margin-left: 80%; + } + .column.is-0, .column.is-0-tablet { + flex: none; + width: 0%; + } + .column.is-offset-0, .column.is-offset-0-tablet { + margin-left: 0%; + } + .column.is-1, .column.is-1-tablet { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1, .column.is-offset-1-tablet { + margin-left: 8.3333333333%; + } + .column.is-2, .column.is-2-tablet { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2, .column.is-offset-2-tablet { + margin-left: 16.6666666667%; + } + .column.is-3, .column.is-3-tablet { + flex: none; + width: 25%; + } + .column.is-offset-3, .column.is-offset-3-tablet { + margin-left: 25%; + } + .column.is-4, .column.is-4-tablet { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4, .column.is-offset-4-tablet { + margin-left: 33.3333333333%; + } + .column.is-5, .column.is-5-tablet { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5, .column.is-offset-5-tablet { + margin-left: 41.6666666667%; + } + .column.is-6, .column.is-6-tablet { + flex: none; + width: 50%; + } + .column.is-offset-6, .column.is-offset-6-tablet { + margin-left: 50%; + } + .column.is-7, .column.is-7-tablet { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7, .column.is-offset-7-tablet { + margin-left: 58.3333333333%; + } + .column.is-8, .column.is-8-tablet { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8, .column.is-offset-8-tablet { + margin-left: 66.6666666667%; + } + .column.is-9, .column.is-9-tablet { + flex: none; + width: 75%; + } + .column.is-offset-9, .column.is-offset-9-tablet { + margin-left: 75%; + } + .column.is-10, .column.is-10-tablet { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10, .column.is-offset-10-tablet { + margin-left: 83.3333333333%; + } + .column.is-11, .column.is-11-tablet { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11, .column.is-offset-11-tablet { + margin-left: 91.6666666667%; + } + .column.is-12, .column.is-12-tablet { + flex: none; + width: 100%; + } + .column.is-offset-12, .column.is-offset-12-tablet { + margin-left: 100%; + } +} +@media screen and (max-width: 1023px) { + .column.is-narrow-touch { + flex: none; + width: unset; + } + .column.is-full-touch { + flex: none; + width: 100%; + } + .column.is-three-quarters-touch { + flex: none; + width: 75%; + } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; + } + .column.is-half-touch { + flex: none; + width: 50%; + } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-touch { + flex: none; + width: 25%; + } + .column.is-one-fifth-touch { + flex: none; + width: 20%; + } + .column.is-two-fifths-touch { + flex: none; + width: 40%; + } + .column.is-three-fifths-touch { + flex: none; + width: 60%; + } + .column.is-four-fifths-touch { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-touch { + margin-left: 75%; + } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; + } + .column.is-offset-half-touch { + margin-left: 50%; + } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-touch { + margin-left: 25%; + } + .column.is-offset-one-fifth-touch { + margin-left: 20%; + } + .column.is-offset-two-fifths-touch { + margin-left: 40%; + } + .column.is-offset-three-fifths-touch { + margin-left: 60%; + } + .column.is-offset-four-fifths-touch { + margin-left: 80%; + } + .column.is-0-touch { + flex: none; + width: 0%; + } + .column.is-offset-0-touch { + margin-left: 0%; + } + .column.is-1-touch { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-touch { + margin-left: 8.3333333333%; + } + .column.is-2-touch { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-touch { + margin-left: 16.6666666667%; + } + .column.is-3-touch { + flex: none; + width: 25%; + } + .column.is-offset-3-touch { + margin-left: 25%; + } + .column.is-4-touch { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-touch { + margin-left: 33.3333333333%; + } + .column.is-5-touch { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-touch { + margin-left: 41.6666666667%; + } + .column.is-6-touch { + flex: none; + width: 50%; + } + .column.is-offset-6-touch { + margin-left: 50%; + } + .column.is-7-touch { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-touch { + margin-left: 58.3333333333%; + } + .column.is-8-touch { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-touch { + margin-left: 66.6666666667%; + } + .column.is-9-touch { + flex: none; + width: 75%; + } + .column.is-offset-9-touch { + margin-left: 75%; + } + .column.is-10-touch { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-touch { + margin-left: 83.3333333333%; + } + .column.is-11-touch { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-touch { + margin-left: 91.6666666667%; + } + .column.is-12-touch { + flex: none; + width: 100%; + } + .column.is-offset-12-touch { + margin-left: 100%; + } +} +@media screen and (min-width: 1024px) { + .column.is-narrow-desktop { + flex: none; + width: unset; + } + .column.is-full-desktop { + flex: none; + width: 100%; + } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; + } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; + } + .column.is-half-desktop { + flex: none; + width: 50%; + } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; + } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; + } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; + } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; + } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; + } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; + } + .column.is-offset-half-desktop { + margin-left: 50%; + } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; + } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; + } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; + } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; + } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; + } + .column.is-0-desktop { + flex: none; + width: 0%; + } + .column.is-offset-0-desktop { + margin-left: 0%; + } + .column.is-1-desktop { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-desktop { + margin-left: 8.3333333333%; + } + .column.is-2-desktop { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-desktop { + margin-left: 16.6666666667%; + } + .column.is-3-desktop { + flex: none; + width: 25%; + } + .column.is-offset-3-desktop { + margin-left: 25%; + } + .column.is-4-desktop { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-desktop { + margin-left: 33.3333333333%; + } + .column.is-5-desktop { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-desktop { + margin-left: 41.6666666667%; + } + .column.is-6-desktop { + flex: none; + width: 50%; + } + .column.is-offset-6-desktop { + margin-left: 50%; + } + .column.is-7-desktop { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-desktop { + margin-left: 58.3333333333%; + } + .column.is-8-desktop { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-desktop { + margin-left: 66.6666666667%; + } + .column.is-9-desktop { + flex: none; + width: 75%; + } + .column.is-offset-9-desktop { + margin-left: 75%; + } + .column.is-10-desktop { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-desktop { + margin-left: 83.3333333333%; + } + .column.is-11-desktop { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-desktop { + margin-left: 91.6666666667%; + } + .column.is-12-desktop { + flex: none; + width: 100%; + } + .column.is-offset-12-desktop { + margin-left: 100%; + } +} +@media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; + width: unset; + } + .column.is-full-widescreen { + flex: none; + width: 100%; + } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; + } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; + } + .column.is-half-widescreen { + flex: none; + width: 50%; + } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; + } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; + } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; + } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; + } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; + } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; + } + .column.is-offset-half-widescreen { + margin-left: 50%; + } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; + } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; + } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; + } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; + } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; + } + .column.is-0-widescreen { + flex: none; + width: 0%; + } + .column.is-offset-0-widescreen { + margin-left: 0%; + } + .column.is-1-widescreen { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-widescreen { + margin-left: 8.3333333333%; + } + .column.is-2-widescreen { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-widescreen { + margin-left: 16.6666666667%; + } + .column.is-3-widescreen { + flex: none; + width: 25%; + } + .column.is-offset-3-widescreen { + margin-left: 25%; + } + .column.is-4-widescreen { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-widescreen { + margin-left: 33.3333333333%; + } + .column.is-5-widescreen { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-widescreen { + margin-left: 41.6666666667%; + } + .column.is-6-widescreen { + flex: none; + width: 50%; + } + .column.is-offset-6-widescreen { + margin-left: 50%; + } + .column.is-7-widescreen { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-widescreen { + margin-left: 58.3333333333%; + } + .column.is-8-widescreen { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-widescreen { + margin-left: 66.6666666667%; + } + .column.is-9-widescreen { + flex: none; + width: 75%; + } + .column.is-offset-9-widescreen { + margin-left: 75%; + } + .column.is-10-widescreen { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-widescreen { + margin-left: 83.3333333333%; + } + .column.is-11-widescreen { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-widescreen { + margin-left: 91.6666666667%; + } + .column.is-12-widescreen { + flex: none; + width: 100%; + } + .column.is-offset-12-widescreen { + margin-left: 100%; + } +} +@media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; + width: unset; + } + .column.is-full-fullhd { + flex: none; + width: 100%; + } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; + } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; + } + .column.is-half-fullhd { + flex: none; + width: 50%; + } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; + } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; + } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; + } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; + } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; + } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; + } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; + } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; + } + .column.is-offset-half-fullhd { + margin-left: 50%; + } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; + } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; + } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; + } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; + } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; + } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; + } + .column.is-0-fullhd { + flex: none; + width: 0%; + } + .column.is-offset-0-fullhd { + margin-left: 0%; + } + .column.is-1-fullhd { + flex: none; + width: 8.3333333333%; + } + .column.is-offset-1-fullhd { + margin-left: 8.3333333333%; + } + .column.is-2-fullhd { + flex: none; + width: 16.6666666667%; + } + .column.is-offset-2-fullhd { + margin-left: 16.6666666667%; + } + .column.is-3-fullhd { + flex: none; + width: 25%; + } + .column.is-offset-3-fullhd { + margin-left: 25%; + } + .column.is-4-fullhd { + flex: none; + width: 33.3333333333%; + } + .column.is-offset-4-fullhd { + margin-left: 33.3333333333%; + } + .column.is-5-fullhd { + flex: none; + width: 41.6666666667%; + } + .column.is-offset-5-fullhd { + margin-left: 41.6666666667%; + } + .column.is-6-fullhd { + flex: none; + width: 50%; + } + .column.is-offset-6-fullhd { + margin-left: 50%; + } + .column.is-7-fullhd { + flex: none; + width: 58.3333333333%; + } + .column.is-offset-7-fullhd { + margin-left: 58.3333333333%; + } + .column.is-8-fullhd { + flex: none; + width: 66.6666666667%; + } + .column.is-offset-8-fullhd { + margin-left: 66.6666666667%; + } + .column.is-9-fullhd { + flex: none; + width: 75%; + } + .column.is-offset-9-fullhd { + margin-left: 75%; + } + .column.is-10-fullhd { + flex: none; + width: 83.3333333333%; + } + .column.is-offset-10-fullhd { + margin-left: 83.3333333333%; + } + .column.is-11-fullhd { + flex: none; + width: 91.6666666667%; + } + .column.is-offset-11-fullhd { + margin-left: 91.6666666667%; + } + .column.is-12-fullhd { + flex: none; + width: 100%; + } + .column.is-offset-12-fullhd { + margin-left: 100%; + } +} + +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; +} +.columns:last-child { + margin-bottom: -0.75rem; +} +.columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); +} +.columns.is-centered { + justify-content: center; +} +.columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; +} +.columns.is-gapless > .column { + margin: 0; + padding: 0 !important; +} +.columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; +} +.columns.is-gapless:last-child { + margin-bottom: 0; +} +.columns.is-mobile { + display: flex; +} +.columns.is-multiline { + flex-wrap: wrap; +} +.columns.is-vcentered { + align-items: center; +} +@media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; + } +} +@media screen and (min-width: 1024px) { + .columns.is-desktop { + display: flex; + } +} + +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); +} +.columns.is-variable > .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); +} +.columns.is-variable.is-0 { + --columnGap: 0rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-0-mobile { + --columnGap: 0rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-0-tablet { + --columnGap: 0rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-0-touch { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-0-desktop { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; + } +} +.columns.is-variable.is-1 { + --columnGap: 0.25rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; + } +} +.columns.is-variable.is-2 { + --columnGap: 0.5rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; + } +} +.columns.is-variable.is-3 { + --columnGap: 0.75rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; + } +} +.columns.is-variable.is-4 { + --columnGap: 1rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-4-mobile { + --columnGap: 1rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-4-tablet { + --columnGap: 1rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-4-touch { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-4-desktop { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; + } +} +.columns.is-variable.is-5 { + --columnGap: 1.25rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; + } +} +.columns.is-variable.is-6 { + --columnGap: 1.5rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; + } +} +.columns.is-variable.is-7 { + --columnGap: 1.75rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; + } +} +.columns.is-variable.is-8 { + --columnGap: 2rem; +} +@media screen and (max-width: 768px) { + .columns.is-variable.is-8-mobile { + --columnGap: 2rem; + } +} +@media screen and (min-width: 769px), print { + .columns.is-variable.is-8-tablet { + --columnGap: 2rem; + } +} +@media screen and (min-width: 769px) and (max-width: 1023px) { + .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; + } +} +@media screen and (max-width: 1023px) { + .columns.is-variable.is-8-touch { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1024px) { + .columns.is-variable.is-8-desktop { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1024px) and (max-width: 1215px) { + .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1216px) { + .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; + } +} +@media screen and (min-width: 1408px) { + .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; + } +} + +html { + line-height: 1.15; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; + line-height: 1em; +} + +figcaption, +figure, +main { + display: block; +} + +figure { + margin: 1em 40px; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +pre { + font-family: monospace, monospace; + font-size: 1em; +} + +a { + background-color: transparent; + -webkit-text-decoration-skip: objects; +} + +a:active, +a:hover { + outline-width: 0; +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted; +} + +b, +strong { + font-weight: inherit; + font-weight: bolder; +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +dfn { + font-style: italic; +} + +mark { + background-color: #ff0; + color: #000; +} + +small { + font-size: 80%; +} + +sub, +sup { + font-size: 60%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.55em; + background: #374857; + color: #374857; + border-radius: 2px; + padding: 0 2px 0 2px; + margin: 0 2px 0 0; +} + +audio, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +img { + border-style: none; +} + +svg:not(:root) { + overflow: hidden; +} + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; + font-size: 100%; + line-height: 1.15; + margin: 0; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +button, html [type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0; +} + +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText; +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; +} + +progress { + display: inline-block; + vertical-align: baseline; +} + +textarea { + overflow: auto; +} + +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0; +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type=search]::-webkit-search-cancel-button, +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; +} + +details, +menu { + display: block; +} + +summary { + display: list-item; +} + +canvas { + display: inline-block; +} + +template { + display: none; +} + +[hidden] { + display: none; +} + +h1, h2, h3 { + color: #f2f1ef; +} + +h1 { + font-size: 2em; + font-weight: 400; +} + +h2 { + font-size: 1.75em; + font-weight: 400; +} + +h3 { + font-size: 1.5em; + font-weight: 300; +} + +html, body { + background-color: #0f1419; + font: 400 1em Helvetica, Arial, sans-serif; + height: 100%; +} + +a { + font: 300 1em Helvetica, Arial, sans-serif; + color: #b2cce5; + text-decoration: underline; + -moz-transition: all 0.1s linear; + -webkit-transition: all 0.1s linear; + -o-transition: all 0.1s linear; + transition: all 0.1s linear; +} +a:hover { + color: #d8e5f2; +} + +svg.icons { + width: 25px; + fill: #b2cce5; +} + +#notifications { + perspective: 1000px; + position: fixed; + z-index: 2000; + height: 55px; + width: 100%; + display: block; + align-items: center; + justify-content: center; + padding: 0; + margin-top: -55px; +} +#notifications #notifyMessage { + margin: 0 auto; + transition: all 0.6s cubic-bezier(0.83, 0.05, 0.28, 1); + height: 50px; + width: 500px; + display: flex; + align-items: center; + justify-content: center; + opacity: 1; + transform-style: preserve-3d; + transform: rotateX(-120deg); + transform-origin: 50% 0; +} +#notifications #notifyMessage #notify-good, #notifications #notifyMessage #notify-lame, #notifications #notifyMessage #notify-working { + display: block; +} +#notifications #notifyMessage #notify-working-box { + -webkit-animation: spin 2s linear infinite; + -moz-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} +@-moz-keyframes spin { + 100% { + -moz-transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes spin { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +#notifications #notifyMessage .notify-icon { + background: #32302f; + padding: 8px 5px 5px 5px; + border-radius: 5px 0 0 5px; + height: 30px; + width: 30px; + text-align: center; + border: 2px solid #f2f1ef; +} +#notifications #notifyMessage p { + color: #f2f1ef; + background: black; + width: 400px; + height: 28px; + padding: 15px 0 0 5px; + border-radius: 0 5px 5px 0; + border: 2px solid #f2f1ef; + text-align: center; +} +#notifications #notifyMessage .icons { + fill: #f2f1ef; +} + +.notify-close { + transform-style: preserve-3d; + transform: rotateX(-120deg); +} + +.notify-open { + transform-style: preserve-3d; + transform: rotateX(0deg); +} + +.blog-container { + width: 100%; +} + +.main-container { + margin: 0 auto; + z-index: 10; + position: relative; +} +.main-container section header { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +.main-container section header #wrapper { + padding: 0.75rem; +} +.main-container section header #wrapper #left, .main-container section header #wrapper #right { + width: 49.7%; + display: inline-block; + vertical-align: top; + min-height: 60px; +} +.main-container section header #wrapper #left #the-logo, .main-container section header #wrapper #right #the-logo { + width: 40px; +} +.main-container section header #wrapper #right { + text-align: right; + color: #f2f1ef; +} +.main-container section header #wrapper #right a { + text-decoration-color: #fc6399; + font-weight: 400; +} +.main-container section header #wrapper #right label#the-title { + font-size: 1.2em; + font-weight: 400; + color: #f5ab35; + text-decoration: none; + display: block; + line-height: 0.8; +} +.main-container section header #wrapper #right #dash-menu { + text-align: right; +} + +/* Mozilla based browsers */ +::-moz-selection { + background-color: #fc6399; + color: #f2f1ef; +} + +/* Works in Safari */ +::selection { + background-color: #fc6399; + color: #f2f1ef; +} + +/* Works in Opera */ +::-o-selection { + background-color: #fc6399; + color: #f2f1ef; +} + +::-ms-selection { + background-color: #fc6399; + color: #f2f1ef; +} + +/* Works in Internet Explorer */ +::-webkit-selection { + background-color: #fc6399; + color: #f2f1ef; +} + +@media only screen and (max-width: 800px) { + .main-container section header #wrapper #left, .main-container section header #wrapper #right { + display: inline-block; + } +} +@media only screen and (max-width: 480px) { + .main-container section header #wrapper #left { + width: 30%; + } + .main-container section header #wrapper #right { + width: 70%; + } +} +#dash-index-content { + width: 100%; + height: 100%; + margin: 0 auto; +} +#dash-index-content #dash-index { + width: 100%; + height: 100%; + z-index: 10; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper { + width: 100%; + height: 100%; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init, #dash-index-content #dash-index #dash-index-wrapper .dash-restore { + width: 100%; + max-width: 900px; + margin: 0 auto; + color: #b2cce5; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init label, #dash-index-content #dash-index #dash-index-wrapper .dash-restore label { + color: #374857; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form { + background: #f2f1ef; + padding: 15px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form h1, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form h1 { + color: #374857; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form p, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form p { + color: black; + border-top: 1px solid #374857; + border-bottom: 1px solid #374857; + padding: 10px 0 10px 0; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form input.large[type=email], #dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=password], #dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=text], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input.large[type=email], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=password], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=text] { + margin-bottom: 15px; + margin-top: 5px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form button, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form button { + height: 30px; + width: 120px; + margin: 0 auto; + display: block; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-restore { + display: none; + visibility: hidden; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form { + width: 300px; + padding: 0.75em; + background: #374857; + border-radius: 3px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form input { + width: 290px; + margin: 0 0 10px 0; + height: 30px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form button { + width: 300px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu { + padding: 10px; + width: 90%; + max-width: 900px; + margin: 50px auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a { + display: inline-block; + vertical-align: top; + background: black; + width: 30%; + padding: 5px; + border-radius: 3px; + color: #f2f1ef; + margin: 0 10px 10px 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a:hover { + background: black; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a svg { + display: inline-block; + vertical-align: top; + fill: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-menu a label { + display: inline-block; + margin-top: 5px; + width: 85%; + text-align: center; + cursor: pointer; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent { + width: 100%; + max-width: 900px; + height: 100%; + padding: 5px 0 0 0; + margin: 0 auto; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list { + padding: 0.75em; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header { + height: 50px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header h3 { + vertical-align: top; + display: inline-block; + width: 49%; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu { + width: 50%; + text-align: right; + vertical-align: top; + display: inline-block; + margin: 24px 0 24px 0; + right: 10px; + color: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu a { + text-decoration-color: #fc6399; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link { + font-size: 1.5em; + font-weight: 300; + display: inline-block; + border-radius: 3px; + vertical-align: top; + text-decoration: none; + position: relative; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link label { + font-size: 1.4em; + font-weight: 700; + color: #f2f1ef; + padding: 5px; + vertical-align: top; + display: inline-block; + word-wrap: break-word; + width: 100%; + text-align: center; + text-shadow: 2px 2px 0 #32302f; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link span { + vertical-align: top; + margin: 0 auto; + width: 300px; + display: block; + font-family: "Lucida Console", Monaco, monospace; + font-size: 0.5em; + padding: 7px; + color: #f2f1ef; + text-align: center; + border-radius: 0 0 3px 3px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div { + width: 100%; + position: absolute; + bottom: 0; + border-radius: 0 0 3px 3px; + background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.65) 100%); +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options { + display: block; + vertical-align: top; + width: 300px; + position: relative; + text-align: center; + margin: 0 auto; + background: none; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options { + border-radius: 3px; + margin: 5px; + display: inline-block; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active=false] { + width: 65px; + background: black; + color: #f2f1ef; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active=true] { + width: 70px; + background: #fad396; + color: black; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(3) { + width: 100%; + margin-bottom: 20px; + height: 500px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4) { + width: 48.7%; + height: 275px; + margin: 0 15px 15px 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(5) { + width: 48.7%; + height: 550px; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 48.7%; + height: 550px; + margin: -260px 15px 0 0; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(7) { + width: 49%; + height: 275px; + margin: 15px 0 0 0; +} + +@media only screen and (max-width: 768px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 48.9%; + } +} +@media only screen and (max-width: 640px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6) { + width: 48.5%; + } +} +@media only screen and (max-width: 480px) { + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header h3 { + width: 40%; + } + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu { + width: 60%; + } + #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(3), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(4), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(5), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(6), #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a:nth-child(7) { + width: 100%; + margin: 15px 0 0 0; + height: 400px; + } +} +#settings-actions { + position: fixed; + width: 40%; + margin-top: -85px; + left: 50%; + margin-left: -20%; +} +#settings-actions #buttons { + width: 155px; + margin: 0 auto; +} +#settings-actions #buttons button { + margin: 5px; +} +#settings-actions #buttons button svg { + fill: #f2f1ef; +} +#settings-actions #buttons button[data-render=false] { + background: black; +} +#settings-actions #buttons button[data-render=false] svg { + fill: #f2f1ef; +} +#settings-actions #buttons button[data-render=true] { + background: white; +} +#settings-actions #buttons button[data-render=true] svg { + fill: black; +} + +#site-background { + margin: 0 0 10px 0; +} +#site-background img { + width: 100%; + border-radius: 0; + overflow: hidden; + cursor: pointer; +} +#site-background label { + position: absolute; + color: #f2f1ef; + margin: 5px; + background: black; + padding: 5px; + border-radius: 3px; +} +#site-background input { + visibility: hidden; + display: none; +} + +#settings-index { + width: 94%; + max-width: 900px; + margin: 0 auto; +} +#settings-index #settings-index-wrapper { + padding: 0.75rem; +} +#settings-index #settings-index-wrapper button { + margin-top: 5px; + width: 100%; + height: 45px; +} +#settings-index #settings-index-wrapper #member-settings, #settings-index #settings-index-wrapper #site-settings, #settings-index #settings-index-wrapper #option-settings, #settings-index #settings-index-wrapper #member-utils { + background: #374857; + padding: 5px; + border-radius: 5px 0 5px 0; + width: 100%; + margin: 20px auto; +} +#settings-index #settings-index-wrapper #member-settings label, #settings-index #settings-index-wrapper #site-settings label, #settings-index #settings-index-wrapper #option-settings label, #settings-index #settings-index-wrapper #member-utils label { + font-family: "Lucida Console", Monaco, monospace; + color: #f2f1ef; +} +#settings-index #settings-index-wrapper #member-settings span, #settings-index #settings-index-wrapper #site-settings span, #settings-index #settings-index-wrapper #option-settings span, #settings-index #settings-index-wrapper #member-utils span { + color: #b2cce5; +} +#settings-index #settings-index-wrapper #member-settings input, #settings-index #settings-index-wrapper #site-settings input, #settings-index #settings-index-wrapper #option-settings input, #settings-index #settings-index-wrapper #member-utils input { + width: 95%; + margin: 0 5px 10px 0; + height: 30px; + padding: 10px; +} +#settings-index #settings-index-wrapper #member-settings input#backup-upload, #settings-index #settings-index-wrapper #site-settings input#backup-upload, #settings-index #settings-index-wrapper #option-settings input#backup-upload, #settings-index #settings-index-wrapper #member-utils input#backup-upload { + visibility: hidden; + display: none; +} +#settings-index #settings-index-wrapper #member-settings .backup-meta, #settings-index #settings-index-wrapper #site-settings .backup-meta, #settings-index #settings-index-wrapper #option-settings .backup-meta, #settings-index #settings-index-wrapper #member-utils .backup-meta { + background: #0f1419; + color: #f2f1ef; + padding: 8px; + border-radius: 3px; + margin: 5px 0 0 0; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop, #settings-index #settings-index-wrapper #site-settings #member-avatar-drop, #settings-index #settings-index-wrapper #option-settings #member-avatar-drop, #settings-index #settings-index-wrapper #member-utils #member-avatar-drop { + display: inline-block; + margin: 0 0 10px 0; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop img, #settings-index #settings-index-wrapper #site-settings #member-avatar-drop img, #settings-index #settings-index-wrapper #option-settings #member-avatar-drop img, #settings-index #settings-index-wrapper #member-utils #member-avatar-drop img { + width: 100%; + border-radius: 5px; + overflow: hidden; + cursor: pointer; + display: block; + margin-bottom: 2px; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop input, #settings-index #settings-index-wrapper #site-settings #member-avatar-drop input, #settings-index #settings-index-wrapper #option-settings #member-avatar-drop input, #settings-index #settings-index-wrapper #member-utils #member-avatar-drop input { + visibility: hidden; + display: none; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop #privacy-toggle, #settings-index #settings-index-wrapper #site-settings #member-avatar-drop #privacy-toggle, #settings-index #settings-index-wrapper #option-settings #member-avatar-drop #privacy-toggle, #settings-index #settings-index-wrapper #member-utils #member-avatar-drop #privacy-toggle { + width: 50%; +} +#settings-index #settings-index-wrapper #member-settings #member-avatar-drop #render-toggle, #settings-index #settings-index-wrapper #site-settings #member-avatar-drop #render-toggle, #settings-index #settings-index-wrapper #option-settings #member-avatar-drop #render-toggle, #settings-index #settings-index-wrapper #member-utils #member-avatar-drop #render-toggle { + width: 50%; +} +#settings-index #settings-index-wrapper #member-settings #member-info, #settings-index #settings-index-wrapper #site-settings #member-info, #settings-index #settings-index-wrapper #option-settings #member-info, #settings-index #settings-index-wrapper #member-utils #member-info { + vertical-align: top; + display: inline-block; + width: 100%; +} +#settings-index #settings-index-wrapper #member-settings #member-info input, #settings-index #settings-index-wrapper #site-settings #member-info input, #settings-index #settings-index-wrapper #option-settings #member-info input, #settings-index #settings-index-wrapper #member-utils #member-info input { + width: 95%; + margin: 0 5px 10px 0; +} +#settings-index #settings-index-wrapper #member-settings textarea, #settings-index #settings-index-wrapper #site-settings textarea, #settings-index #settings-index-wrapper #option-settings textarea, #settings-index #settings-index-wrapper #member-utils textarea { + background: #0f1419; + width: 95%; + height: 155px; + color: #b2cce5; + padding: 10px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a { + width: 95%; + margin: 0 5px 5px 0; + height: 25px; + padding: 10px; + display: inline-block; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled=false] { + background: black; + color: #b2cce5; + border-radius: 3px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled=true] { + background: #b2cce5; + color: #374857; + border-radius: 3px; +} +#settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled=true] svg { + fill: #374857; + display: inline-block; + float: right; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings { + min-height: 240px; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option { + float: right; + font-family: "Lucida Console", Monaco, monospace; + font-size: 0.9em; + border-radius: 3px; + text-decoration: none; + margin: 0 0 0 5px; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option[data-enabled=true] { + color: #fc6399; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option[data-enabled=false] { + color: #f2f1ef; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings input { + margin: 0 5px 5px 0; + vertical-align: top; +} +#settings-index #settings-index-wrapper #option-settings #mail-settings div[data-enabled=false] { + display: none; + visibility: hidden; +} + +#error-index { + width: 100%; + max-width: 900px; + margin: 0 auto; + padding: 10px; + height: 100%; + z-index: 10; + position: relative; +} +#error-index label#title { + font-size: 100px; + color: #fc6399; + font-weight: 500; +} +#error-index label#message { + font-size: 50px; + color: #f5ab35; + font-weight: 500; +} +#error-index label#error { + font-size: 25px; + color: #F64747; + font-weight: 500; +} + +#nav-index { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#nav-index #nav-index-wrapper { + padding: 0.75rem; +} +#nav-index #nav-index-wrapper #nav-pages .nav-item { + display: block; + width: 98%; + background: #374857; + border-radius: 3px; + color: #f2f1ef; + height: 30px; + padding: 10px; + margin: 0 0 10px 0; + font-size: 1.5em; + cursor: move; +} +#nav-index #nav-index-wrapper #nav-pages label { + display: inline-block; + vertical-align: middle; + padding: 0; + margin: -15px 0 0 10px; + cursor: move; +} +#nav-index #nav-index-wrapper #nav-pages #nav-btns { + float: right; +} +#nav-index #nav-index-wrapper #nav-pages #nav-btns button { + font-size: 0.8em; + margin: 0 0 0 10px; +} + +@media only screen and (max-width: 375px) { + #nav-index #nav-index-wrapper #nav-pages .nav-item { + width: 94.5%; + font-size: 1em; + } + #nav-index #nav-index-wrapper #nav-pages .nav-item label { + width: 47%; + vertical-align: top; + margin-top: 0px; + line-height: 1em; + } +} +@media only screen and (max-width: 320px) { + #nav-index #nav-index-wrapper #nav-pages .nav-item { + width: 94.5%; + font-size: 1em; + } + #nav-index #nav-index-wrapper #nav-pages .nav-item label { + width: 37%; + vertical-align: top; + margin-top: 0px; + line-height: 1em; + } +} +form { + display: inline-block; +} + +input[type=email], input[type=password], input[type=text] { + border: 0; + border-radius: 5px; + padding: 5px; + margin: 10px 5px 0 0; + font: 15px "Lucida Console", Monaco, monospace; + display: inline-block; + background: #0f1419; + color: #f2f1ef; +} + +textarea { + border: 0; + border-radius: 3px; + color: #f2f1ef; + font: 15px "Lucida Console", Monaco, monospace; + ackground: #0f1419; +} + +button, input[type=submit] { + background: #fc6399; + color: #0f1419; + font: 14px Helvetica, Arial, sans-serif; + border-radius: 5px; + position: relative; + cursor: pointer; + border: 0; + padding: 5px 5px 0 5px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + font: 15px "Lucida Console", Monaco, monospace; +} + +select { + font: 14px "Lucida Console", Monaco, monospace; + border: 1px solid #b2cce5; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + color: #374857; +} + +::-webkit-input-placeholder { + font: 14px "Lucida Console", Monaco, monospace; + color: #bac7d3; +} + +:-moz-placeholder { + /* Firefox 18- */ + font: 14px "Lucida Console", Monaco, monospace; + color: #bac7d3; +} + +::-moz-placeholder { + /* Firefox 19+ */ + font: 14px "Lucida Console", Monaco, monospace; + color: #bac7d3; +} + +:-ms-input-placeholder { + font: 14px "Lucida Console", Monaco, monospace; + color: #bac7d3; +} + +#post-index { + width: 100%; + max-width: 900px; + margin: 0 auto; +} +#post-index #post-index-wrapper { + padding: 0.75rem; + overflow: hidden; +} +#post-index #post-index-wrapper #post-index-menu { + color: #f2f1ef; +} +#post-index #post-index-wrapper #post-index-menu a { + text-decoration-color: #fc6399; +} +#post-index #post-index-wrapper #post-index-menu a.add-new-post { + display: inline-block; + background: #fc6399; + border-radius: 3px; + padding: 3px; + color: #f2f1ef; + text-align: center; + margin-bottom: 10px; + float: right; +} +#post-index #post-index-wrapper #post-index-menu .current-filter { + color: #fc6399; + text-decoration-color: #b2cce5; +} +#post-index #post-index-wrapper #posts-list { + margin: 20px 0 0 0; +} +#post-index #post-index-wrapper #posts-list a.page-link { + background: #f2f1ef; + display: inline-block; + vertical-align: top; + width: 100%; + text-decoration: none; + margin: 0 0 20px 0; + border-radius: 3px; + overflow: hidden; + color: black; +} +#post-index #post-index-wrapper #posts-list a.page-link label { + font-size: 2em; + font-weight: 500; + padding: 10px; + display: inline-block; + vertical-align: top; + width: 100%; +} +#post-index #post-index-wrapper #posts-list a.page-link span { + display: inline-block; + vertical-align: top; + font-size: 0.8em; + font-family: "Lucida Console", Monaco, monospace; + width: 50%; + padding: 0 0 0 10px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg { + width: 100%; + height: 350px; + background-color: #fc6399; + position: relative; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta { + width: 100%; + background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.65) 100%); + border-radius: 3px; + margin: auto; + bottom: 0; + position: absolute; + padding: 0 0 20px 0; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta span { + color: #f2f1ef; + text-align: center; + margin: 0 auto; + display: block; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta label { + font-size: 1.4em; + font-weight: 700; + color: #f2f1ef; + padding: 5px; + vertical-align: top; + display: inline-block; + word-wrap: break-word; + width: 100%; + text-align: center; + text-shadow: 2px 2px 0 #32302f; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options { + margin: 0 auto; + width: 275px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options { + border-radius: 3px; + margin: 5px; + display: inline-block; + text-align: center; + padding: 2px; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active=false] { + width: 70px; + background: black; + color: #f2f1ef; +} +#post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active=true] { + width: 75px; + background: white; + color: black; +} +#post-index #post-index-wrapper #posts-list a.page-link p { + padding: 5px 10px 5px 10px; + font-size: 1.2em; + font-weight: 400; +} +#post-index #post-index-wrapper .paginate { + width: 260px; + display: block; + margin: 0 auto; +} +#post-index #post-index-wrapper .paginate a { + display: inline-block; + vertical-align: top; +} +#post-index #post-index-wrapper .paginate span.count { + text-align: center; + padding: 5px; + margin-top: -2px; + display: inline-block; + width: 190px; + font-size: 1.5em; + color: #f5ab35; +} + +#post-edit-index { + width: 100%; + overflow: hidden; +} +#post-edit-index #post-edit-index-wrapper { + width: 100%; +} +#post-edit-index #post-edit-index-wrapper #post-header { + background: #fc6399; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper { + max-width: 900px; + margin: 0 auto; + padding: 0.75rem; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper label { + color: #f2f1ef; + font-size: 0.8em; + font-family: "Lucida Console", Monaco, monospace; + font-weight: 600; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper span { + color: black; + font-size: 1.5em; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-title #post_title { + background: #fd95ba; + font-family: Helvetica, Arial, sans-serif; + width: 97.6%; + height: 80px; + font-size: 2em; + color: black; + padding: 5px; + margin: 0 0 5px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-title #calendar-icon { + background: #192128; + border-radius: 3px 0 0 3px; + display: inline-block; + padding: 5.2px; + color: #b2cce5; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post_tags { + background: #fd95ba; + font-family: Helvetica, Arial, sans-serif; + width: 97.6%; + height: 80px; + color: black; + padding: 5px; + margin: 0 0 5px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options { + display: inline-block; + vertical-align: top; + width: 100%; + padding: 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button:nth-child(1) { + border-radius: 3px 0 0 3px; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button:nth-child(3) { + border-radius: 0 3px 3px 0; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button { + width: 33.3%; + height: 39px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + margin: 0; + border-radius: 0; + display: inline-block; + vertical-align: top; + text-align: center; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=false] { + background: black; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=false] svg { + fill: #f2f1ef; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=true] { + background: #f6b54d; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=true] svg { + fill: black; +} +#post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #featured-image-upload, #post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-image-upload { + display: none; +} +#post-edit-index #post-edit-index-wrapper #post-feature { + width: 100%; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + min-height: 200px; + background: black; + color: #374857; + vertical-align: middle; + font-family: "Lucida Console", Monaco, monospace; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop label { + cursor: pointer; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-image-drop img { + width: 100%; + margin: 0; + padding: 0; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn { + position: absolute; + margin: 20px; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload { + padding-top: 4px; + background: #f2f1ef; +} +#post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload svg { + fill: #fc6399; +} +#post-edit-index #post-edit-index-wrapper #edit-post { + width: 100%; + max-width: 880px; + margin: 0 auto; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper { + max-width: 900px; + border-radius: 5px; + margin: 40px 0 40px 0; + overflow: hidden; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper pre { + margin: 0; +} +#post-edit-index #post-edit-index-wrapper #edit-post #edit-post-wrapper pre code { + font-family: "Lucida Console", Monaco, monospace; + padding: 5px; + border-radius: 5px; + line-height: 1.6em; + font-size: 1.25em; + color: #fde3a7; + word-wrap: normal; + white-space: pre-wrap; + line-break: normal; + -webkit-line-break: normal; + -o-line-break: normal; + -moz-line-break: normal; + display: inline-block; + width: 100%; + max-width: 900px; + min-height: 200px; +} + +@media only screen and (max-width: 800px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 37.6%; + } +} +@media only screen and (max-width: 768px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 43.1%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control { + max-width: 100%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 9.91%; + } +} +@media only screen and (max-width: 640px) { + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 42%; + } +} +@media only screen and (max-width: 480px) { + #post-index #post-index-wrapper #post-index-menu a { + font-size: 0.95em; + } + #post-index #post-index-wrapper #post-index-menu a label { + display: none; + visibility: hidden; + } + + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options { + margin: 5px 0 0 0; + width: 100%; + padding: 0; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 89.2%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 9.91%; + } +} +@media only screen and (max-width: 320px) { + #post-index #post-index-wrapper #post-index-menu a { + font-size: 0.95em; + } + #post-index #post-index-wrapper #post-index-menu a label { + display: none; + visibility: hidden; + } + + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post_title { + width: 96.4%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-options { + margin: 5px 0 0 0; + width: 100%; + padding: 0; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-title #post-date { + width: 83.1%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #post_tags { + width: 96.4%; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control .content-editor-btn-icon svg.icons { + width: 20px; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control .post-sumbit-btn svg.icons { + width: 20px; + } + #post-edit-index #post-edit-index-wrapper #post-header #post-meta #edit-control button { + width: 10%; + } +} +.dp-modal { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.75); + z-index: 2000; +} + +.dp { + position: relative; + background: #374857; + box-shadow: 2px 2px 16px rgba(0, 0, 0, 0.25); + line-height: 1.4; + border-radius: 4px; + max-height: 400px; + z-index: 5000; + padding-top: 6px; + overflow: hidden; + -webkit-tap-highlight-color: transparent; +} + +.dp:before { + content: " "; + height: 6px; + position: absolute; + top: 0; + left: 0; + right: 0; + background: #fc6399; +} + +.dp-permanent .dp { + padding-top: 0; + border: 1px solid #EEE; + box-shadow: none; +} + +.dp-permanent .dp:before { + display: none; +} + +.dp-cal { + min-height: 300px; +} + +.dp-below { + position: absolute; + font-size: 0.8em; + width: 400px; + max-width: 90vw; +} + +.dp-permanent { + position: relative; + font-size: 0.8em; + width: 400px; + max-width: 100vw; +} + +.dp-permanent .dp { + z-index: 0; +} + +.dp-modal .dp { + position: absolute; + top: 50%; + left: 50%; + max-width: 600px; + width: calc(100% - 4em); + transform: translate(-50%, -50%); + animation: slide-up 0.3s forwards; +} + +.dp-months { + padding: 24px; +} + +.dp-years { + box-sizing: border-box; + max-height: 400px; + padding: 8px 0; + /* HACK for Chrome on Android */ + overflow: auto !important; +} + +.dp-cal-month, .dp-cal-year, .dp-day, .dp-month, .dp-year { + box-sizing: border-box; + text-align: center; + text-decoration: none; + position: relative; + color: #f2f1ef; + border-radius: 2px; + border: 0; + background: transparent; +} + +.dp-cal-header { + position: relative; + text-align: center; + padding-bottom: 16px; + background: #232e38; +} + +.dp-next, .dp-prev { + position: absolute; + width: 30px; + height: 30px; + overflow: hidden; + top: 14px; + color: black; + border-radius: 2px; + border: 0; + background: transparent; +} + +.dp-next:focus, .dp-prev:focus, .dp-next:hover, .dp-prev:hover { + outline: none; + color: inherit; +} + +.dp-prev { + left: 24px; +} + +.dp-next { + right: 24px; +} + +.dp-prev:before, .dp-next:before { + content: ""; + border: 2px solid; + width: 10px; + height: 10px; + display: inline-block; + transform: rotate(-45deg); + transition: border-color 0.2s; + margin: 9px 0 40px 4px; +} + +.dp-prev:before { + border-right: 0; + border-bottom: 0; +} + +.dp-next:before { + border-left: 0; + border-top: 0; + margin-left: 0; + margin-right: 4px; +} + +.dp-cal-month, .dp-cal-year { + display: inline-block; + font-size: 1.4em; + padding: 16px 8px 8px; + outline: none; +} + +.dp-cal-footer { + text-align: center; + background: #232e38; +} + +.dp-day-today:after { + content: ""; + height: 0; + width: 0; + border: 7px solid #fc6399; + border-bottom-color: transparent; + border-left-color: transparent; + position: absolute; + top: 0; + right: 0; +} + +.dp-close, .dp-clear, .dp-today { + box-sizing: border-box; + display: inline-block; + width: 33%; + padding: 8px; + text-decoration: none; + color: black; + border: 0; + background: transparent; +} + +.dp-permanent .dp-close, .dp-permanent .dp-clear { + display: none; +} + +.dp-close:active, .dp-clear:active, .dp-today:active, .dp-next:active, .dp-prev:active, .dp-cal-month:active, .dp-cal-year:active { + background: #fc6399; + color: #f2f1ef; +} + +@media screen and (min-device-width: 1200px) { + .dp-close:hover, .dp-close:focus, .dp-clear:hover, .dp-clear:focus, .dp-today:hover, .dp-today:focus, .dp-next:hover, .dp-next:focus, .dp-prev:hover, .dp-prev:focus, .dp-cal-month:focus, .dp-cal-month:hover, .dp-cal-year:hover, .dp-cal-year:focus { + background: #fc6399; + color: #f2f1ef; + } +} +.dp-col-header, .dp-day { + width: 14.28571429%; + display: inline-block; + padding: 8px; + text-align: center; +} + +.dp-col-header { + color: #AAA; + text-transform: uppercase; + font-weight: 300; + font-size: 0.8em; + padding: 8px 0; +} + +.dp-month { + width: 33%; + display: inline-block; + padding: 8px; +} + +.dp-year { + display: block; + padding: 8px 40px; + width: 100%; +} + +.dp-edge-day { + color: #AAA; +} + +.dp-day:hover, .dp-month:hover, .dp-year:hover, .dp-current:focus, .dp-current, .dp-day:focus, .dp-month:focus, .dp-year:focus { + outline: none; + background: black; + color: #f2f1ef; +} + +.dp-selected:hover, .dp-selected:focus, .dp-selected { + background: #fc6399; + color: black; +} + +.dp-day-disabled { + background: transparent; + color: #DDD; +} + +.dp-day-disabled:focus, .dp-day-disabled:hover { + background: #DDD; +} + +.dp-focuser { + position: absolute; + z-index: 0; + top: 50%; + left: 50%; +} + +@media (max-width: 480px), (max-height: 480px) { + .dp-modal .dp { + font-size: 0.9em; + width: auto; + width: 100%; + } + + .dp-day-of-week, .dp-day { + padding: 8px; + } +} +@keyframes slide-up { + 0% { + transform: translate(-50%, 100%); + } + 100% { + transform: translate(-50%, -50%); + } +} +#edit-control { + top: 1px; + border-radius: 3px; + width: 100%; + max-width: 880px; + margin-top: 30px; + z-index: 2000; +} +#edit-control button:nth-child(1) { + border-radius: 3px 0 0 3px; +} +#edit-control button:nth-child(10) { + border-radius: 0 3px 3px 0; +} +#edit-control button { + background: #b2cce5; + width: 10%; + height: 39px; + -moz-transition: all 0.3s linear; + -webkit-transition: all 0.3s linear; + -o-transition: all 0.3s linear; + transition: all 0.3s linear; + margin: 0; + border-radius: 0; + display: inline-block; + vertical-align: top; + text-align: center; +} +#edit-control button:hover { + background: #6699cb; +} +#edit-control #option-update { + padding: 5px 5px 1px 5px; + display: inline-block; + vertical-align: top; + text-align: center; +} +#edit-control .icon-hide { + display: none; + visibility: hidden; +} +#edit-control .submit-start { + background: #f2f1ef; +} +#edit-control .submit-start svg { + fill: #32cd32; +} +#edit-control .submit-cool { + background: #32cd32; +} +#edit-control .submit-cool svg { + fill: #f2f1ef; +} +#edit-control .submit-delete { + background: #F64747 !important; +} +#edit-control .submit-delete svg { + fill: #f2f1ef !important; +} +#edit-control #option-date { + height: 30px; + padding-top: 6px; +} +#edit-control #option-date svg { + margin: -13px 5px 0 0; + display: inline-block; + vertical-align: top; + fill: #f2f1ef; +} +#edit-control .content-editor-btn-icon { + padding: 5px 5px 1px 5px; + color: #374857; +} +#edit-control .content-editor-btn-icon svg { + fill: #374857; +} +#edit-control .content-editor-btn-text { + padding: 5px; + color: #374857; +} +#edit-control #option-bold { + font-weight: bold; + text-decoration: none; +} +#edit-control #option-italic { + font-weight: bold; + text-decoration: none; + font-style: italic; +} +#edit-control #option-strikethrough { + font-weight: bold; + text-decoration: line-through; + font-style: italic; +} + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b3844; +} + +.hljs, .hljs-subst { + color: #ebdbb2; +} + +.hljs-deletion, .hljs-formula, .hljs-keyword .hljs-selector-tag { + color: #fde3a7; + font-style: italic; +} + +.hljs-link { + color: #fc6399; +} + +.hljs-built_in, .hljs-emphasis, .hljs-name, .hljs-quote, .hljs-strong, .hljs-title, .hljs-variable { + color: #ffa07a; +} + +.hljs-attr, .hljs-params, .hljs-template-tag, .hljs-type { + color: #89c4f4; +} + +.hljs-builtin-name, .hljs-doctag, .hljs-literal, .hljs-number { + color: #8f3f71; +} + +.hljs-code, .hljs-meta, .hljs-regexp, .hljs-selector-id, .hljs-template-variable { + color: #f5ab35; +} + +.hljs-addition, .hljs-meta-string, .hljs-section, .hljs-selector-attr, .hljs-selector-class, .hljs-string, .hljs-symbol { + color: #f6dd74; +} + +.hljs-attribute, .hljs-bullet, .hljs-class, .hljs-function, .hljs-function .hljs-keyword, .hljs-meta-keyword, .hljs-selector-pseudo, .hljs-tag { + color: #bac7d3; +} + +.hljs-comment { + color: #928374; +} + +.hljs-link_label, .hljs-literal, .hljs-number { + color: #d3869b; +} + +.hljs-comment, .hljs-emphasis { + font-style: italic; +} + +.hljs-section, .hljs-strong, .hljs-tag { + font-weight: normal; +} + +/*# sourceMappingURL=dash.css.map */ diff --git a/public/assets/scripts/dash.min.js b/public/assets/scripts/dash.min.js new file mode 100644 index 0000000..781de13 --- /dev/null +++ b/public/assets/scripts/dash.min.js @@ -0,0 +1,11 @@ +!function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:D,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:P,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=this;return new Promise((function(t,i){var l=new XMLHttpRequest;if(l.upload.onprogress=a.handleLoadProgress,l.open(n,e,!0),l.onload=function(){if(200==l.status){var e=JSON.parse(l.response);t(e)}else{var n=JSON.parse(l.response);i(n)}},"PUT"==n||n==x)switch(r){case P:l.setRequestHeader("Content-type","application/"+r),l.send(JSON.stringify(o));break;case _:l.send(o)}else l.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),O="POST",C="createNewPage",A="editPage",M="deletePage",N="json",L="x-www-form-urlencoded",R=function(){function t(){var n=this;e(this,t),this.percentComplete=0,this.token=null,this._request("/api/v1/status").then((function(e){e.type===s&&(n.token=e.token)}))}return n(t,[{key:"syncSettings",value:function(e){var t=this;return new Promise((function(n,r){t._request("/api/v1/settings/sync",v,O,N,e).then((function(e){n(e)})).catch((function(e){r(e)}))}))}},{key:"imageUpload",value:function(e,t){var n=this;return new Promise((function(r,o){var a="";switch(e){case"avatar-upload":a="/api/v1/settings/add-avatar";break;case"background-upload":a="/api/v1/settings/add-feature-background";break;default:a="/api/v1/page/add-entry-image"}for(var i=new FormData,l=0;l2&&void 0!==arguments[2]?arguments[2]:"GET",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=this;return new Promise((function(i,l){var u=new XMLHttpRequest;if(u.upload.onprogress=a.handleLoadProgress,u.open(n,e,!0),u.onload=function(){if(200==u.status){var e=JSON.parse(u.response);i(e)}else{var t=JSON.parse(u.response);l(t)}},"PUT"==n||n==O)switch(t!==g&&t!==w&&t!==v&&t!==m&&t!==E&&t!==y&&t!==b&&t!==I||u.setRequestHeader("fipamo-access-token",a.token),r){case N:u.setRequestHeader("Content-type","application/"+r),u.send(JSON.stringify(o));break;case L:u.send(o)}else u.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),H=function(){function t(){e(this,t)}return n(t,[{key:"imgLoad",value:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){200===r.status?t(r.response):n(new Error("Image didn't load successfully; error code:"+r.statusText))},r.onerror=function(){n(new Error("There was a network error."))},r.send()}))}},{key:"loadImage",value:function(e){var t=this;return new Promise((function(n,r){(new Image).crossOrigin="",t.imgLoad(e).then((function(e){var t=window.URL.createObjectURL(e);n(t)}),(function(e){r(e)}))}))}},{key:"formDataToJSON",value:function(e){var t={};return new FormData(e).forEach((function(e,n){t.hasOwnProperty(n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e})),t}}]),t}(),F=function(){function t(){e(this,t)}return n(t,[{key:"cleanString",value:function(e){return e.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g,"").toLowerCase().replace(/[\/_| -]+/g,"-")}},{key:"decodeHTML",value:function(e,t){var n=0,r=0,o=!1;void 0===t&&(t=2),e=e.toString().replace(/</g,"<").replace(/>/g,">");var a={ENT_NOQUOTES:0,ENT_HTML_QUOTE_SINGLE:1,ENT_HTML_QUOTE_DOUBLE:2,ENT_COMPAT:2,ENT_QUOTES:3,ENT_IGNORE:4};if(0===t&&(o=!0),"number"!=typeof t){for(t=[].concat(t),r=0;r]*>/g,"\n"),r.append("id",document.getElementById("post-edit-index").getAttribute("data-index")),r.append("uuid",document.getElementById("post-edit-index").getAttribute("data-uuid")),r.append("layout",document.getElementById("post-edit-index").getAttribute("data-layout")),r.append("current_title",document.getElementById("post-edit-index").getAttribute("data-slug")),r.append("content",a),r.append("title",document.getElementById("post_title").value),r.append("created",document.getElementById("post-date").getAttribute("data-raw")),r.append("slug",(new F).cleanString(document.getElementById("post_title").value)),r.append("tags",document.getElementById("post_tags").value),r.append("menu",document.getElementById("option-menu-pin").getAttribute("data-active")),r.append("featured",document.getElementById("option-feature").getAttribute("data-active")),r.append("published",document.getElementById("option-published").getAttribute("data-active")),null!=e||null!=e)e.type.match("image.*")?r.append("feature_image",e,e.name):n("Not an image file");else{var i=document.getElementById("featured-image").src;null!=i||null!=i?r.append("feature_image",i):r.append("feature_image",null)}t(r)}))}}]),t}(),q="editorDelete",U="editorUploadImage",Y="editorSave",j="editorUpdate";new function t(){e(this,t)};var W=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],z=function(e,t){var n=document.createElement("div");return function(t){var r=function(){var t={position:"absolute",left:-9999,top:0,zIndex:-2e3};return"TEXTAREA"===e.tagName&&W.push("width"),W.forEach((function(n){t[n]=getComputedStyle(e)[n]})),t}();Object.keys(r).forEach((function(e){n.style[e]=r[e]})),n.innerHTML=t,e.parentNode.insertBefore(n,e.nextSibling)}(t),{rect:function(){var e=n.ownerDocument.getElementById("caret-position-marker"),t={left:e.offsetLeft,top:e.offsetTop,height:e.offsetHeight};return n.parentNode.removeChild(n),t}}};function G(e){return(G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.customPos,n=e.iframe,r=e.noShadowCaret;return n?{iframe:n,window:n.contentWindow,document:n.contentDocument||n.contentWindow.document,noShadowCaret:r,customPos:t}:{window:window,document:document,noShadowCaret:r,customPos:t}},V=function(e){return"object"===G(e)&&null!==e},J=function(e,t){var n=function(){return e.selectionStart},r=function(r){var o=function(e){return e.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"
    ")};(t.customPos||0===t.customPos)&&(r=t.customPos);var a=void 0===r?n():r,i=e.value.slice(0,a),l=e.value.slice(a),u=''.concat(o(i),"");u+='|',u+=''.concat(o(l),"");var s=z(e,u).rect();return s.pos=n(),s};return{getPos:n,setPos:function(t){return e.setSelectionRange(t,t),e},getOffset:function(n){var o=function(e,t){var n=t&&t.window||window,r=t&&t.document||document,o=e.getBoundingClientRect(),a=r.documentElement,i=n.pageXOffset||a.scrollLeft,l=n.pageYOffset||a.scrollTop;return{top:o.top+l,left:o.left+i}}(e),a=r(n);return{top:o.top+a.top+t.document.body.scrollTop,left:o.left+a.left+t.document.body.scrollLeft,height:a.height}},getPosition:r}},$=function(e,t){return function(e){return!!(e.contentEditable?"true"===e.contentEditable:"true"===e.getAttribute("contenteditable"))}(e)?function(e,t){var n=function(){var n=r(),o={height:0,left:0,right:0};if(!n)return o;var a=t.customPos||0===t.customPos;if(n.endOffset-1>0&&n.endContainer!==e||a){var i=n.cloneRange(),l=a?t.customPos:n.endOffset;i.setStart(n.endContainer,l-1<0?0:l-1),i.setEnd(n.endContainer,l);var u=i.getBoundingClientRect();o={height:u.height,left:u.left+u.width,top:u.top},i.detach()}if((!o||o&&0===o.height)&&!t.noShadowCaret){var s=n.cloneRange(),c=t.document.createTextNode("|");s.insertNode(c),s.selectNode(c);var d=s.getBoundingClientRect();o={height:d.height,left:d.left,top:d.top},c.parentNode.removeChild(c),s.detach()}if(o){var f=t.document.documentElement;o.top+=t.window.pageYOffset-(f.clientTop||0),o.left+=t.window.pageXOffset-(f.clientLeft||0)}return o},r=function(){if(t.window.getSelection){var e=t.window.getSelection();return e.rangeCount>0?e.getRangeAt(0):null}},o=function(){var t=r(),n=t.cloneRange();n.selectNodeContents(e),n.setEnd(t.endContainer,t.endOffset);var o=n.toString().length;return n.detach(),o};return{getPos:o,setPos:function(n){var r=t.window.getSelection();if(r){var o=0,a=!1;!function e(i,l){for(var u=0;u=i){a=!0;var c=t.document.createRange();c.setStart(s,i-o),r.removeAllRanges(),r.addRange(c);break}o+=s.length}else e(n,s)}}(n,e)}return e},getPosition:function(){var r=n(),a=o(),i=e.getBoundingClientRect(),l=i.top+t.document.body.scrollTop,u=i.left+t.document.body.scrollLeft;return r.left-=u,r.top-=l,r.pos=a,r},getOffset:n,getRange:r}}(e,t):J(e,t)},Z=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n;V(t)&&(r=t,t=null);var o=Q(r),a=$(e,o);return t||0===t?a.setPos(t):a.getPosition()},K=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(a,t);var r=i(a);function a(t,n){var o;return e(this,a),(o=r.call(this)).textEditor=t,o.fixLimit=n,o.caretPos=null,o.url="",o.setInputs(),window.addEventListener("scroll",(function(){})),o.refresh(),o}return n(a,[{key:"setInputs",value:function(){for(var e=this,t=this,n=document.querySelectorAll(".editor-button"),r=0,o=n.length;r/g)>-1){var o=Z(e.textEditor).pos;t.refresh(),Z(e.textEditor,o)}}))}},{key:"refresh",value:function(){var e=this.textEditor.innerText;e=e.replace(new RegExp("\r?\n","g"),"
    ");var t=document.createElement("div");t.innerText=e,this.textEditor.innerHTML=t.innerText,this.textEditor.style.maxWidth="900px"}},{key:"notify",value:function(e,t){switch(e){case void 0:document.getElementById("submit-update").classList.add("icon-hide"),document.getElementById("submit-good").classList.remove("icon-hide"),document.getElementById("edit-update").classList.remove("submit-start"),document.getElementById("edit-update").classList.add("submit-cool"),setTimeout((function(){document.getElementById("submit-update").classList.remove("icon-hide"),document.getElementById("submit-good").classList.add("icon-hide"),document.getElementById("edit-update").classList.add("submit-start"),document.getElementById("edit-update").classList.remove("submit-cool")}),2e3);break;case void 0:break;case U:var n,r;Z(this.textEditor,this.caretPos),(n=window.getSelection()).rangeCount&&((r=n.getRangeAt(0)).deleteContents(),r.insertNode(document.createTextNode("![image alt text]("+t+" 'image title')"))),this.refresh()}}},{key:"handleEditorOption",value:function(e){var t,n,r;if(e.preventDefault(),(t=window.getSelection()).rangeCount)switch(n=t.getRangeAt(0),r=t.getRangeAt(0).toString(),n.deleteContents(),e.target.id){case"edit-bold":n.insertNode(document.createTextNode("**"+r+"**"));break;case"edit-italic":n.insertNode(document.createTextNode("*"+r+"*"));break;case"edit-strikethrough":n.insertNode(document.createTextNode(""+r+""));break;case"edit-header1":n.insertNode(document.createTextNode("# "+r));break;case"edit-header2":n.insertNode(document.createTextNode("## "+r));break;case"edit-header3":n.insertNode(document.createTextNode("### "+r));break;case"edit-image":this.caretPos=Z(this.textEditor).pos,this.emitEvent(U);break;case"submit-save":case"edit-save":this.emitEvent(Y);break;case"submit-update":case"edit-update":this.emitEvent(j);break;case"edit-link":n.insertNode(document.createTextNode("["+r+"](PASTE URL HERE)"));break;case"edit-delete":this.emitEvent(q)}this.refresh()}}]),a}(function(){function t(){e(this,t),this.listeners=new Map}return n(t,[{key:"addListener",value:function(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}},{key:"removeListener",value:function(e,t){var n,r=this.listeners.get(e);return!!(r&&r.length&&(n=r.reduce((function(e,n,r){return"function"==typeof n&&n===t?e=r:e}),-1))>-1)&&(r.splice(n,1),this.listeners.set(e,r),!0)}},{key:"emitEvent",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r-1}function ie(e,t){return e.apply(null,t)}var le={arr:function(e){return Array.isArray(e)},obj:function(e){return ae(Object.prototype.toString.call(e),"Object")},pth:function(e){return le.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return e.nodeType||le.svg(e)},str:function(e){return"string"==typeof e},fnc:function(e){return"function"==typeof e},und:function(e){return void 0===e},nil:function(e){return le.und(e)||null===e},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return le.hex(e)||le.rgb(e)||le.hsl(e)},key:function(e){return!ee.hasOwnProperty(e)&&!te.hasOwnProperty(e)&&"targets"!==e&&"keyframes"!==e}};function ue(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map((function(e){return parseFloat(e)})):[]}function se(e,t){var n=ue(e),r=oe(le.und(n[0])?1:n[0],.1,100),o=oe(le.und(n[1])?100:n[1],.1,100),a=oe(le.und(n[2])?10:n[2],.1,100),i=oe(le.und(n[3])?0:n[3],.1,100),l=Math.sqrt(o/r),u=a/(2*Math.sqrt(o*r)),s=u<1?l*Math.sqrt(1-u*u):0,c=u<1?(u*l-i)/s:-i+l;function d(e){var n=t?t*e/1e3:e;return n=u<1?Math.exp(-n*u*l)*(1*Math.cos(s*n)+c*Math.sin(s*n)):(1+c*n)*Math.exp(-n*l),0===e||1===e?e:1-n}return t?d:function(){var t=re.springs[e];if(t)return t;for(var n=1/6,r=0,o=0;;)if(1===d(r+=n)){if(++o>=16)break}else o=0;var a=r*n*1e3;return re.springs[e]=a,a}}function ce(e){return void 0===e&&(e=10),function(t){return Math.ceil(oe(t,1e-6,1)*e)*(1/e)}}var de,fe,he=function(){var e=.1;function t(e,t){return 1-3*t+3*e}function n(e,t){return 3*t-6*e}function r(e){return 3*e}function o(e,o,a){return((t(o,a)*e+n(o,a))*e+r(o))*e}function a(e,o,a){return 3*t(o,a)*e*e+2*n(o,a)*e+r(o)}return function(t,n,r,i){if(0<=t&&t<=1&&0<=r&&r<=1){var l=new Float32Array(11);if(t!==n||r!==i)for(var u=0;u<11;++u)l[u]=o(u*e,t,r);return function(e){return t===n&&r===i||0===e||1===e?e:o(s(e),n,i)}}function s(n){for(var i=0,u=1;10!==u&&l[u]<=n;++u)i+=e;--u;var s=i+(n-l[u])/(l[u+1]-l[u])*e,c=a(s,t,r);return c>=.001?function(e,t,n,r){for(var i=0;i<4;++i){var l=a(t,n,r);if(0===l)return t;t-=(o(t,n,r)-e)/l}return t}(n,s,t,r):0===c?s:function(e,t,n,r,a){var i,l,u=0;do{(i=o(l=t+(n-t)/2,r,a)-e)>0?n=l:t=l}while(Math.abs(i)>1e-7&&++u<10);return l}(n,i,i+e,t,r)}}}(),pe=(de={linear:function(){return function(e){return e}}},fe={Sine:function(){return function(e){return 1-Math.cos(e*Math.PI/2)}},Circ:function(){return function(e){return 1-Math.sqrt(1-e*e)}},Back:function(){return function(e){return e*e*(3*e-2)}},Bounce:function(){return function(e){for(var t,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}},Elastic:function(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var n=oe(e,1,10),r=oe(t,.1,2);return function(e){return 0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach((function(e,t){fe[e]=function(){return function(e){return Math.pow(e,t+2)}}})),Object.keys(fe).forEach((function(e){var t=fe[e];de["easeIn"+e]=t,de["easeOut"+e]=function(e,n){return function(r){return 1-t(e,n)(1-r)}},de["easeInOut"+e]=function(e,n){return function(r){return r<.5?t(e,n)(2*r)/2:1-t(e,n)(-2*r+2)/2}},de["easeOutIn"+e]=function(e,n){return function(r){return r<.5?(1-t(e,n)(1-2*r))/2:(t(e,n)(2*r-1)+1)/2}}})),de);function ge(e,t){if(le.fnc(e))return e;var n=e.split("(")[0],r=pe[n],o=ue(e);switch(n){case"spring":return se(e,t);case"cubicBezier":return ie(he,o);case"steps":return ie(ce,o);default:return ie(r,o)}}function me(e){try{return document.querySelectorAll(e)}catch(e){return}}function ve(e,t){for(var n=e.length,r=arguments.length>=2?t:void 0,o=[],a=0;a1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(0==i)t=n=r=l;else{var c=l<.5?l*(1+i):l+i-l*i,d=2*l-c;t=s(d,c,a+1/3),n=s(d,c,a),r=s(d,c,a-1/3)}return"rgba("+255*t+","+255*n+","+255*r+","+u+")"}(e):void 0;var t,n}function Te(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function xe(e,t){return le.fnc(e)?e(t.target,t.id,t.total):e}function De(e,t){return e.getAttribute(t)}function Pe(e,t,n){if(we([n,"deg","rad","turn"],Te(t)))return t;var r=re.CSS[t+n];if(!le.und(r))return r;var o=document.createElement(e.tagName),a=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=100+n;var i=100/o.offsetWidth;a.removeChild(o);var l=i*parseFloat(t);return re.CSS[t+n]=l,l}function _e(e,t,n){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return n?Pe(e,o,n):o}}function Be(e,t){return le.dom(e)&&!le.inp(e)&&(!le.nil(De(e,t))||le.svg(e)&&e[t])?"attribute":le.dom(e)&&we(ne,t)?"transform":le.dom(e)&&"transform"!==t&&_e(e,t)?"css":null!=e[t]?"object":void 0}function Oe(e){if(le.dom(e)){for(var t,n=e.style.transform||"",r=/(\w+)\(([^)]*)\)/g,o=new Map;t=r.exec(n);)o.set(t[1],t[2]);return o}}function Ce(e,t,n,r){var o=ae(t,"scale")?1:0+function(e){return ae(e,"translate")||"perspective"===e?"px":ae(e,"rotate")||ae(e,"skew")?"deg":void 0}(t),a=Oe(e).get(t)||o;return n&&(n.transforms.list.set(t,a),n.transforms.last=t),r?Pe(e,a,r):a}function Ae(e,t,n,r){switch(Be(e,t)){case"transform":return Ce(e,t,r,n);case"css":return _e(e,t,n);case"attribute":return De(e,t);default:return e[t]||0}}function Me(e,t){var n=/^(\*=|\+=|-=)/.exec(e);if(!n)return e;var r=Te(e)||0,o=parseFloat(t),a=parseFloat(e.replace(n[0],""));switch(n[0][0]){case"+":return o+a+r;case"-":return o-a+r;case"*":return o*a+r}}function Ne(e,t){if(le.col(e))return Se(e);if(/\s/g.test(e))return e;var n=Te(e),r=n?e.substr(0,e.length-n.length):e;return t?r+t:r}function Le(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function Re(e){for(var t,n=e.points,r=0,o=0;o0&&(r+=Le(t,a)),t=a}return r}function He(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return function(e){return 2*Math.PI*De(e,"r")}(e);case"rect":return function(e){return 2*De(e,"width")+2*De(e,"height")}(e);case"line":return function(e){return Le({x:De(e,"x1"),y:De(e,"y1")},{x:De(e,"x2"),y:De(e,"y2")})}(e);case"polyline":return Re(e);case"polygon":return function(e){var t=e.points;return Re(e)+Le(t.getItem(t.numberOfItems-1),t.getItem(0))}(e)}}function Fe(e,t){var n=t||{},r=n.el||function(e){for(var t=e.parentNode;le.svg(t)&&le.svg(t.parentNode);)t=t.parentNode;return t}(e),o=r.getBoundingClientRect(),a=De(r,"viewBox"),i=o.width,l=o.height,u=n.viewBox||(a?a.split(" "):[0,0,i,l]);return{el:r,viewBox:u,x:u[0]/1,y:u[1]/1,w:i,h:l,vW:u[2],vH:u[3]}}function Xe(e,t,n){function r(n){void 0===n&&(n=0);var r=t+n>=1?t+n:0;return e.el.getPointAtLength(r)}var o=Fe(e.el,e.svg),a=r(),i=r(-1),l=r(1),u=n?1:o.w/o.vW,s=n?1:o.h/o.vH;switch(e.property){case"x":return(a.x-o.x)*u;case"y":return(a.y-o.y)*s;case"angle":return 180*Math.atan2(l.y-i.y,l.x-i.x)/Math.PI}}function qe(e,t){var n=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=Ne(le.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(n)?r.match(n).map(Number):[0],strings:le.str(e)||t?r.split(n):[]}}function Ue(e){return ve(e?ye(le.arr(e)?e.map(be):be(e)):[],(function(e,t,n){return n.indexOf(e)===t}))}function Ye(e){var t=Ue(e);return t.map((function(e,n){return{target:e,id:n,total:t.length,transforms:{list:Oe(e)}}}))}function je(e,t){var n=Ee(t);if(/^spring/.test(n.easing)&&(n.duration=se(n.easing)),le.arr(e)){var r=e.length;2===r&&!le.obj(e[0])?e={value:e}:le.fnc(t.duration)||(n.duration=t.duration/r)}var o=le.arr(e)?e:[e];return o.map((function(e,n){var r=le.obj(e)&&!le.pth(e)?e:{value:e};return le.und(r.delay)&&(r.delay=n?0:t.delay),le.und(r.endDelay)&&(r.endDelay=n===o.length-1?t.endDelay:0),r})).map((function(e){return ke(e,n)}))}function We(e,t){var n=[],r=t.keyframes;for(var o in r&&(t=ke(function(e){for(var t=ve(ye(e.map((function(e){return Object.keys(e)}))),(function(e){return le.key(e)})).reduce((function(e,t){return e.indexOf(t)<0&&e.push(t),e}),[]),n={},r=function(r){var o=t[r];n[o]=e.map((function(e){var t={};for(var n in e)le.key(n)?n==o&&(t.value=e[n]):t[n]=e[n];return t}))},o=0;o0?requestAnimationFrame(t):void 0}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",(function(){tt.suspendWhenDocumentHidden&&(et()?e=cancelAnimationFrame(e):(Ze.forEach((function(e){return e._onDocumentVisibility()})),Ke()))})),function(){e||et()&&tt.suspendWhenDocumentHidden||!(Ze.length>0)||(e=requestAnimationFrame(t))}}();function et(){return!!document&&document.hidden}function tt(e){void 0===e&&(e={});var t,n=0,r=0,o=0,a=0,i=null;function l(e){var t=window.Promise&&new Promise((function(e){return i=e}));return e.finished=t,t}var u=function(e){var t=Ie(ee,e),n=Ie(te,e),r=We(n,e),o=Ye(e.targets),a=Ve(o,r),i=Je(a,n),l=$e;return $e++,ke(t,{id:l,children:[],animatables:o,animations:a,duration:i.duration,delay:i.delay,endDelay:i.endDelay})}(e);function s(){var e=u.direction;"alternate"!==e&&(u.direction="normal"!==e?"normal":"reverse"),u.reversed=!u.reversed,t.forEach((function(e){return e.reversed=u.reversed}))}function c(e){return u.reversed?u.duration-e:e}function d(){n=0,r=c(u.currentTime)*(1/tt.speed)}function f(e,t){t&&t.seek(e-t.timelineOffset)}function h(e){for(var t=0,n=u.animations,r=n.length;t2||(y=Math.round(y*h)/h)),p.push(y)}var E=f.length;if(E){m=f[0];for(var I=0;I0&&(u.began=!0,p("begin")),!u.loopBegan&&u.currentTime>0&&(u.loopBegan=!0,p("loopBegin")),v<=g&&0!==u.currentTime&&h(0),(v>=m&&u.currentTime!==d||!d)&&h(d),v>g&&v=d&&(r=0,u.remaining&&!0!==u.remaining&&u.remaining--,u.remaining?(n=o,p("loopComplete"),u.loopBegan=!1,"alternate"===u.direction&&s()):(u.paused=!0,u.completed||(u.completed=!0,p("loopComplete"),p("complete"),!u.passThrough&&"Promise"in window&&(i(),l(u)))))}return l(u),u.reset=function(){var e=u.direction;u.passThrough=!1,u.currentTime=0,u.progress=0,u.paused=!0,u.began=!1,u.loopBegan=!1,u.changeBegan=!1,u.completed=!1,u.changeCompleted=!1,u.reversePlayback=!1,u.reversed="reverse"===e,u.remaining=u.loop,t=u.children;for(var n=a=t.length;n--;)u.children[n].reset();(u.reversed&&!0!==u.loop||"alternate"===e&&1===u.loop)&&u.remaining++,h(u.reversed?u.duration:0)},u._onDocumentVisibility=d,u.set=function(e,t){return Qe(e,t),u},u.tick=function(e){o=e,n||(n=o),g((o+(r-n))*tt.speed)},u.seek=function(e){g(c(e))},u.pause=function(){u.paused=!0,d()},u.play=function(){u.paused&&(u.completed&&u.reset(),u.paused=!1,Ze.push(u),d(),Ke())},u.reverse=function(){s(),u.completed=!u.reversed,d()},u.restart=function(){u.reset(),u.play()},u.remove=function(e){rt(Ue(e),u)},u.reset(),u.autoplay&&u.play(),u}function nt(e,t){for(var n=t.length;n--;)we(e,t[n].animatable.target)&&t.splice(n,1)}function rt(e,t){var n=t.animations,r=t.children;nt(e,n);for(var o=r.length;o--;){var a=r[o],i=a.animations;nt(e,i),i.length||a.children.length||r.splice(o,1)}n.length||r.length||t.pause()}tt.version="3.2.1",tt.speed=1,tt.suspendWhenDocumentHidden=!0,tt.running=Ze,tt.remove=function(e){for(var t=Ue(e),n=Ze.length;n--;){rt(t,Ze[n])}},tt.get=Ae,tt.set=Qe,tt.convertPx=Pe,tt.path=function(e,t){var n=le.str(e)?me(e)[0]:e,r=t||100;return function(e){return{property:e,el:n,svg:Fe(n),totalLength:He(n)*(r/100)}}},tt.setDashoffset=function(e){var t=He(e);return e.setAttribute("stroke-dasharray",t),t},tt.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||"normal",r=t.easing?ge(t.easing):null,o=t.grid,a=t.axis,i=t.from||0,l="first"===i,u="center"===i,s="last"===i,c=le.arr(e),d=c?parseFloat(e[0]):parseFloat(e),f=c?parseFloat(e[1]):0,h=Te(c?e[1]:e)||0,p=t.start||0+(c?d:0),g=[],m=0;return function(e,t,v){if(l&&(i=0),u&&(i=(v-1)/2),s&&(i=v-1),!g.length){for(var y=0;y-1&&Ze.splice(o,1);for(var l=0;l'].join(""),document.getElementById("featured-image-drop").innerHTML="",document.getElementById("featured-image-drop").appendChild(n)}}(n),o.readAsDataURL(n)}}}},{key:"handleImageUpload",value:function(e,t){var n=this;dt.alert("Uploading Image",null),this.admin.imageUpload(e,t).then((function(e){e.type==d&&n.editor.notify(U,e.url),dt.alert("Image Added to Entry",!0)})).catch((function(){dt.alert("Uh oh. Image not added",!1)}))}}]),t}();ft.uploadFiles=[];var ht=function(){function t(n){e(this,t),this.currentPage=null,this.choosePage(n),this.start()}return n(t,[{key:"start",value:function(){}},{key:"choosePage",value:function(e){switch(this.currentPage="",e){case"edit":case"add":this.currentPage=new ft}}}]),t}(),pt=function(){function t(){e(this,t)}return n(t,[{key:"getInfo",value:function(){var e,t,n=document.getElementById("settings-handle").value,r=document.getElementById("settings-email").value,o=document.getElementById("settings-url").value,a=document.getElementById("settings-title").value,i=document.getElementById("settings-desc").value,l=document.getElementById("render-toggle").getAttribute("data-render"),u=document.getElementById("background").src,s="",c=document.querySelectorAll(".theme-select"),d=document.getElementById("smtp-domain").value,f=document.getElementById("smtp-email").value,h=document.getElementById("smtp-pass").value,p=document.getElementById("mg-domain").value,g=document.getElementById("mg-key").value,m="",v=document.querySelectorAll(".mail-option");for(e=0,t=c.length;e + * @author owenm + * @license MIT + */ +function wt(e){return(wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(){return(It=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Tt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var xt=Tt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Dt=Tt(/Edge/i),Pt=Tt(/firefox/i),_t=Tt(/safari/i)&&!Tt(/chrome/i)&&!Tt(/android/i),Bt=Tt(/iP(ad|od|hone)/i),Ot=Tt(/chrome/i)&&Tt(/android/i),Ct={capture:!1,passive:!1};function At(e,t,n){e.addEventListener(t,n,!xt&&Ct)}function Mt(e,t,n){e.removeEventListener(t,n,!xt&&Ct)}function Nt(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Lt(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Rt(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Nt(e,t):Nt(e,t))||r&&e===n)return e;if(e===n)break}while(e=Lt(e))}return null}var Ht,Ft=/\s+/g;function Xt(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Ft," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Ft," ")}}function qt(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function Ut(e,t){var n="";if("string"==typeof e)n=e;else do{var r=qt(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Yt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===jt())break;r=$t(r,!1)}return!1}function Gt(e,t,n){for(var r=0,o=0,a=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=St(n,["evt"]);ln.pluginEvent.bind(er)(e,t,kt({dragEl:cn,parentEl:dn,ghostEl:fn,rootEl:hn,nextEl:pn,lastDownEl:gn,cloneEl:mn,cloneHidden:vn,dragStarted:Bn,putSortable:kn,activeSortable:er.active,originalEvent:r,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En,hideGhostForTarget:Jn,unhideGhostForTarget:$n,cloneNowHidden:function(){vn=!0},cloneNowShown:function(){vn=!1},dispatchSortableEvent:function(e){sn({sortable:t,name:e,originalEvent:r})}},o))};function sn(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,a=e.cloneEl,i=e.toEl,l=e.fromEl,u=e.oldIndex,s=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[nn]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||xt||Dt?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=i||n,g.from=l||n,g.item=o||n,g.clone=a,g.oldIndex=u,g.newIndex=s,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=kt({},p,ln.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(kt({putSortable:kn,cloneEl:mn,targetEl:cn,rootEl:hn,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En},e))}var cn,dn,fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,Pn,_n,Bn,On,Cn,An,Mn,Nn=!1,Ln=!1,Rn=[],Hn=!1,Fn=!1,Xn=[],qn=!1,Un=[],Yn="undefined"!=typeof document,jn=Bt,Wn=Dt||xt?"cssFloat":"float",zn=Yn&&!Ot&&!Bt&&"draggable"in document.createElement("div"),Gn=function(){if(Yn){if(xt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),Qn=function(e,t){var n=qt(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Gt(e,0,t),a=Gt(e,1,t),i=o&&qt(o),l=a&&qt(a),u=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Wt(o).width,s=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Wt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var c="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==c?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||u>=r&&"none"===n[Wn]||a&&"none"===n[Wn]&&u+s>r)?"vertical":"horizontal"},Vn=function(e){function t(e,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,a,i),n)(r,o,a,i);var u=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===u||e.join&&e.indexOf(u)>-1}}var n={},r=e.group;r&&"object"==wt(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Jn=function(){!Gn&&fn&&qt(fn,"display","none")},$n=function(){!Gn&&fn&&qt(fn,"display","")};Yn&&document.addEventListener("click",(function(e){if(Ln)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Ln=!1,!1}),!0);var Zn=function(e){if(cn){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,a=e.clientY,Rn.some((function(e){if(!Qt(e)){var t=Wt(e),n=e[nn].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,l=a>=t.top-n&&a<=t.bottom+n;return n&&r&&l?i=e:void 0}})),i);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[nn]._onDragOver(n)}}var o,a,i},Kn=function(e){cn&&cn.parentNode[nn]._isOutsideThisEl(e.target)};function er(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=It({},t),e[nn]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Qn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==er.supportPointer&&"PointerEvent"in window&&!_t,emptyInsertThreshold:5};for(var r in ln.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in Vn(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&zn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?At(e,"pointerdown",this._onTapStart):(At(e,"mousedown",this._onTapStart),At(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(At(e,"dragover",this),At(e,"dragenter",this)),Rn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),It(this,rn())}function tr(e,t,n,r,o,a,i,l){var u,s,c=e[nn],d=c.options.onMove;return!window.CustomEvent||xt||Dt?(u=document.createEvent("Event")).initEvent("move",!0,!0):u=new CustomEvent("move",{bubbles:!0,cancelable:!0}),u.to=t,u.from=e,u.dragged=n,u.draggedRect=r,u.related=o||t,u.relatedRect=a||Wt(t),u.willInsertAfter=l,u.originalEvent=i,e.dispatchEvent(u),d&&(s=d.call(c,u,i)),s}function nr(e){e.draggable=!1}function rr(){qn=!1}function or(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function ar(e){return setTimeout(e,0)}function ir(e){return clearTimeout(e)}er.prototype={constructor:er,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(On=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,cn):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,a=e.type,i=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(i||e).target,u=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,s=r.filter;if(function(e){Un.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&Un.push(r)}}(n),!cn&&!(/mousedown|pointerdown/.test(a)&&0!==e.button||r.disabled)&&!u.isContentEditable&&(this.nativeDraggable||!_t||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=Rt(l,r.draggable,n,!1))&&l.animated||gn===l)){if(yn=Vt(l),wn=Vt(l,r.draggable),"function"==typeof s){if(s.call(this,e,l,this))return sn({sortable:t,rootEl:u,name:"filter",targetEl:l,toEl:n,fromEl:n}),un("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(s&&(s=s.split(",").some((function(r){if(r=Rt(u,r.trim(),n,!1))return sn({sortable:t,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),un("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Rt(u,r.handle,n,!1)||this._prepareDragStart(e,i,l)}}},_prepareDragStart:function(e,t,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!cn&&n.parentNode===a){var u=Wt(n);if(hn=a,dn=(cn=n).parentNode,pn=cn.nextSibling,gn=n,In=i.group,er.dragged=cn,Sn={target:cn,clientX:(t||e).clientX,clientY:(t||e).clientY},Pn=Sn.clientX-u.left,_n=Sn.clientY-u.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,cn.style["will-change"]="all",r=function(){un("delayEnded",o,{evt:e}),er.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!Pt&&o.nativeDraggable&&(cn.draggable=!0),o._triggerDragStart(e,t),sn({sortable:o,name:"choose",originalEvent:e}),Xt(cn,i.chosenClass,!0))},i.ignore.split(",").forEach((function(e){Yt(cn,e.trim(),nr)})),At(l,"dragover",Zn),At(l,"mousemove",Zn),At(l,"touchmove",Zn),At(l,"mouseup",o._onDrop),At(l,"touchend",o._onDrop),At(l,"touchcancel",o._onDrop),Pt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,cn.draggable=!0),un("delayStart",this,{evt:e}),!i.delay||i.delayOnTouchOnly&&!t||this.nativeDraggable&&(Dt||xt))r();else{if(er.eventCanceled)return void this._onDrop();At(l,"mouseup",o._disableDelayedDrag),At(l,"touchend",o._disableDelayedDrag),At(l,"touchcancel",o._disableDelayedDrag),At(l,"mousemove",o._delayedDragTouchMoveHandler),At(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&At(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){cn&&nr(cn),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._disableDelayedDrag),Mt(e,"touchend",this._disableDelayedDrag),Mt(e,"touchcancel",this._disableDelayedDrag),Mt(e,"mousemove",this._delayedDragTouchMoveHandler),Mt(e,"touchmove",this._delayedDragTouchMoveHandler),Mt(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?At(document,"pointermove",this._onTouchMove):At(document,t?"touchmove":"mousemove",this._onTouchMove):(At(cn,"dragend",this),At(hn,"dragstart",this._onDragStart));try{document.selection?ar((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(Nn=!1,hn&&cn){un("dragStarted",this,{evt:t}),this.nativeDraggable&&At(document,"dragover",Kn);var n=this.options;!e&&Xt(cn,n.dragClass,!1),Xt(cn,n.ghostClass,!0),er.active=this,e&&this._appendGhost(),sn({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Tn){this._lastX=Tn.clientX,this._lastY=Tn.clientY,Jn();for(var e=document.elementFromPoint(Tn.clientX,Tn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Tn.clientX,Tn.clientY))!==t;)t=e;if(cn.parentNode[nn]._isOutsideThisEl(e),t)do{if(t[nn]){if(t[nn]._onDragOver({clientX:Tn.clientX,clientY:Tn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);$n()}},_onTouchMove:function(e){if(Sn){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,a=fn&&Ut(fn,!0),i=fn&&a&&a.a,l=fn&&a&&a.d,u=jn&&Mn&&Jt(Mn),s=(o.clientX-Sn.clientX+r.x)/(i||1)+(u?u[0]-Xn[0]:0)/(i||1),c=(o.clientY-Sn.clientY+r.y)/(l||1)+(u?u[1]-Xn[1]:0)/(l||1);if(!er.active&&!Nn){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===cn)return B(!1);if(g&&a===e.target&&(i=g),i&&(n=Wt(i)),!1!==tr(hn,a,cn,t,i,n,e,!!i))return _(),a.appendChild(cn),dn=a,O(),B(!0)}else if(i.parentNode===a){n=Wt(i);var m,v,y,b=cn.parentNode!==a,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,a=n?e.width:e.height,i=n?t.left:t.top,l=n?t.right:t.bottom,u=n?t.width:t.height;return r===i||o===l||r+a/2===i+u/2}(cn.animated&&cn.toRect||t,i.animated&&i.toRect||n,o),E=o?"top":"left",I=zt(i,"top","top")||zt(cn,"top","top"),k=I?I.scrollTop:void 0;if(On!==i&&(v=n[E],Hn=!1,Fn=!w&&l.invertSwap||b),0!==(m=function(e,t,n,r,o,a,i,l){var u=r?e.clientY:e.clientX,s=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!i)if(l&&Anc+s*a/2:ud-An)return-Cn}else if(u>c+s*(1-o)/2&&ud-s*a/2))return u>c+s/2?1:-1;return 0}(e,i,n,o,w?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,Fn,On===i))){var S=Vt(cn);do{S-=m,y=dn.children[S]}while(y&&("none"===qt(y,"display")||y===fn))}if(0===m||y===i)return B(!1);On=i,Cn=m;var T=i.nextElementSibling,x=!1,D=tr(hn,a,cn,t,i,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),qn=!0,setTimeout(rr,30),_(),x&&!T?a.appendChild(cn):i.parentNode.insertBefore(cn,x?T:i),I&&en(I,0,k-I.scrollTop),dn=cn.parentNode,void 0===v||Fn||(An=Math.abs(v-Wt(i)[E])),O(),B(!0)}if(a.contains(cn))return B(!1)}return!1}function P(l,u){un(l,h,kt({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:i,completed:B,onMove:function(n,r){return tr(hn,a,cn,t,n,Wt(n),e,r)},changed:O},u))}function _(){P("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return P("dragOverCompleted",{insertion:t}),t&&(c?s._hideClone():s._showClone(h),h!==f&&(Xt(cn,kn?kn.options.ghostClass:s.options.ghostClass,!1),Xt(cn,l.ghostClass,!0)),kn!==h&&h!==er.active?kn=h:h===er.active&&kn&&(kn=null),f===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){P("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(i===cn&&!cn.animated||i===a&&!i.animated)&&(On=null),l.dragoverBubble||e.rootEl||i===document||(cn.parentNode[nn]._isOutsideThisEl(e.target),!t&&Zn(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function O(){bn=Vt(cn),En=Vt(cn,l.draggable),sn({sortable:h,name:"change",toEl:a,newIndex:bn,newDraggableIndex:En,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Mt(document,"mousemove",this._onTouchMove),Mt(document,"touchmove",this._onTouchMove),Mt(document,"pointermove",this._onTouchMove),Mt(document,"dragover",Zn),Mt(document,"mousemove",Zn),Mt(document,"touchmove",Zn)},_offUpEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._onDrop),Mt(e,"touchend",this._onDrop),Mt(e,"pointerup",this._onDrop),Mt(e,"touchcancel",this._onDrop),Mt(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;bn=Vt(cn),En=Vt(cn,n.draggable),un("drop",this,{evt:e}),dn=cn&&cn.parentNode,bn=Vt(cn),En=Vt(cn,n.draggable),er.eventCanceled||(Nn=!1,Fn=!1,Hn=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),ir(this.cloneId),ir(this._dragStartId),this.nativeDraggable&&(Mt(document,"drop",this),Mt(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),_t&&qt(document.body,"user-select",""),qt(cn,"transform",""),e&&(Bn&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),fn&&fn.parentNode&&fn.parentNode.removeChild(fn),(hn===dn||kn&&"clone"!==kn.lastPutMode)&&mn&&mn.parentNode&&mn.parentNode.removeChild(mn),cn&&(this.nativeDraggable&&Mt(cn,"dragend",this),nr(cn),cn.style["will-change"]="",Bn&&!Nn&&Xt(cn,kn?kn.options.ghostClass:this.options.ghostClass,!1),Xt(cn,this.options.chosenClass,!1),sn({sortable:this,name:"unchoose",toEl:dn,newIndex:null,newDraggableIndex:null,originalEvent:e}),hn!==dn?(bn>=0&&(sn({rootEl:dn,name:"add",toEl:dn,fromEl:hn,originalEvent:e}),sn({sortable:this,name:"remove",toEl:dn,originalEvent:e}),sn({rootEl:dn,name:"sort",toEl:dn,fromEl:hn,originalEvent:e}),sn({sortable:this,name:"sort",toEl:dn,originalEvent:e})),kn&&kn.save()):bn!==yn&&bn>=0&&(sn({sortable:this,name:"update",toEl:dn,originalEvent:e}),sn({sortable:this,name:"sort",toEl:dn,originalEvent:e})),er.active&&(null!=bn&&-1!==bn||(bn=yn,En=wn),sn({sortable:this,name:"end",toEl:dn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){un("nulling",this),hn=cn=dn=fn=pn=mn=gn=vn=Sn=Tn=Bn=bn=En=yn=wn=On=Cn=kn=In=er.dragged=er.ghost=er.clone=er.active=null,Un.forEach((function(e){e.checked=!0})),Un.length=xn=Dn=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":cn&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,a=this.options;r Date: Tue, 27 Apr 2021 01:28:11 +0000 Subject: [PATCH 093/250] =?UTF-8?q?removed=20redundant=20restore=20button,?= =?UTF-8?q?=20WIP=E2=80=99d=20mail=20button,=20move=20theme=20assets=20on?= =?UTF-8?q?=20render?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- brain/data/Render.inc.php | 15 +++++++++++++++ brain/views/dash/settings.twig | 2 -- public/assets/scripts/dash.min.js | 6 +++--- src/com/controllers/SettingsIndex.js | 16 ++++------------ 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/brain/data/Render.inc.php b/brain/data/Render.inc.php index 19e008e..7098f1d 100644 --- a/brain/data/Render.inc.php +++ b/brain/data/Render.inc.php @@ -23,6 +23,21 @@ class Render "description" => $settings["global"]["descriptions"], "image" => $settings["global"]["background"], ]; + //copy current theme assets to public + if (is_file("../public/assets/css/base.css")) { + unlink("../public/assets/css/base.css"); + } + copy( + "../content/themes/" . $this->theme . "/assets/css/base.css", + "../public/assets/css/base.css" + ); + if (is_file("../public/assets/scripts/start.min.js")) { + unlink("../public/assets/scripts/start.min.js"); + } + copy( + "../content/themes/" . $this->theme . "/assets/scripts/start.min.js", + "../public/assets/scripts/start.min.js" + ); } public function renderPages() diff --git a/brain/views/dash/settings.twig b/brain/views/dash/settings.twig index 79a91e2..6a5401a 100644 --- a/brain/views/dash/settings.twig +++ b/brain/views/dash/settings.twig @@ -69,8 +69,6 @@ {% else %} span No back ups. Frowny face. {% endif %} - -

  • diff --git a/public/assets/scripts/dash.min.js b/public/assets/scripts/dash.min.js index 781de13..f42f4bd 100644 --- a/public/assets/scripts/dash.min.js +++ b/public/assets/scripts/dash.min.js @@ -1,11 +1,11 @@ !function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:D,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:P,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=this;return new Promise((function(t,i){var l=new XMLHttpRequest;if(l.upload.onprogress=a.handleLoadProgress,l.open(n,e,!0),l.onload=function(){if(200==l.status){var e=JSON.parse(l.response);t(e)}else{var n=JSON.parse(l.response);i(n)}},"PUT"==n||n==x)switch(r){case P:l.setRequestHeader("Content-type","application/"+r),l.send(JSON.stringify(o));break;case _:l.send(o)}else l.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),O="POST",C="createNewPage",A="editPage",M="deletePage",N="json",L="x-www-form-urlencoded",R=function(){function t(){var n=this;e(this,t),this.percentComplete=0,this.token=null,this._request("/api/v1/status").then((function(e){e.type===s&&(n.token=e.token)}))}return n(t,[{key:"syncSettings",value:function(e){var t=this;return new Promise((function(n,r){t._request("/api/v1/settings/sync",v,O,N,e).then((function(e){n(e)})).catch((function(e){r(e)}))}))}},{key:"imageUpload",value:function(e,t){var n=this;return new Promise((function(r,o){var a="";switch(e){case"avatar-upload":a="/api/v1/settings/add-avatar";break;case"background-upload":a="/api/v1/settings/add-feature-background";break;default:a="/api/v1/page/add-entry-image"}for(var i=new FormData,l=0;l2&&void 0!==arguments[2]?arguments[2]:"GET",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,a=this;return new Promise((function(i,l){var u=new XMLHttpRequest;if(u.upload.onprogress=a.handleLoadProgress,u.open(n,e,!0),u.onload=function(){if(200==u.status){var e=JSON.parse(u.response);i(e)}else{var t=JSON.parse(u.response);l(t)}},"PUT"==n||n==O)switch(t!==g&&t!==w&&t!==v&&t!==m&&t!==E&&t!==y&&t!==b&&t!==I||u.setRequestHeader("fipamo-access-token",a.token),r){case N:u.setRequestHeader("Content-type","application/"+r),u.send(JSON.stringify(o));break;case L:u.send(o)}else u.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),H=function(){function t(){e(this,t)}return n(t,[{key:"imgLoad",value:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){200===r.status?t(r.response):n(new Error("Image didn't load successfully; error code:"+r.statusText))},r.onerror=function(){n(new Error("There was a network error."))},r.send()}))}},{key:"loadImage",value:function(e){var t=this;return new Promise((function(n,r){(new Image).crossOrigin="",t.imgLoad(e).then((function(e){var t=window.URL.createObjectURL(e);n(t)}),(function(e){r(e)}))}))}},{key:"formDataToJSON",value:function(e){var t={};return new FormData(e).forEach((function(e,n){t.hasOwnProperty(n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e})),t}}]),t}(),F=function(){function t(){e(this,t)}return n(t,[{key:"cleanString",value:function(e){return e.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g,"").toLowerCase().replace(/[\/_| -]+/g,"-")}},{key:"decodeHTML",value:function(e,t){var n=0,r=0,o=!1;void 0===t&&(t=2),e=e.toString().replace(/</g,"<").replace(/>/g,">");var a={ENT_NOQUOTES:0,ENT_HTML_QUOTE_SINGLE:1,ENT_HTML_QUOTE_DOUBLE:2,ENT_COMPAT:2,ENT_QUOTES:3,ENT_IGNORE:4};if(0===t&&(o=!0),"number"!=typeof t){for(t=[].concat(t),r=0;r]*>/g,"\n"),r.append("id",document.getElementById("post-edit-index").getAttribute("data-index")),r.append("uuid",document.getElementById("post-edit-index").getAttribute("data-uuid")),r.append("layout",document.getElementById("post-edit-index").getAttribute("data-layout")),r.append("current_title",document.getElementById("post-edit-index").getAttribute("data-slug")),r.append("content",a),r.append("title",document.getElementById("post_title").value),r.append("created",document.getElementById("post-date").getAttribute("data-raw")),r.append("slug",(new F).cleanString(document.getElementById("post_title").value)),r.append("tags",document.getElementById("post_tags").value),r.append("menu",document.getElementById("option-menu-pin").getAttribute("data-active")),r.append("featured",document.getElementById("option-feature").getAttribute("data-active")),r.append("published",document.getElementById("option-published").getAttribute("data-active")),null!=e||null!=e)e.type.match("image.*")?r.append("feature_image",e,e.name):n("Not an image file");else{var i=document.getElementById("featured-image").src;null!=i||null!=i?r.append("feature_image",i):r.append("feature_image",null)}t(r)}))}}]),t}(),q="editorDelete",U="editorUploadImage",Y="editorSave",j="editorUpdate";new function t(){e(this,t)};var W=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],z=function(e,t){var n=document.createElement("div");return function(t){var r=function(){var t={position:"absolute",left:-9999,top:0,zIndex:-2e3};return"TEXTAREA"===e.tagName&&W.push("width"),W.forEach((function(n){t[n]=getComputedStyle(e)[n]})),t}();Object.keys(r).forEach((function(e){n.style[e]=r[e]})),n.innerHTML=t,e.parentNode.insertBefore(n,e.nextSibling)}(t),{rect:function(){var e=n.ownerDocument.getElementById("caret-position-marker"),t={left:e.offsetLeft,top:e.offsetTop,height:e.offsetHeight};return n.parentNode.removeChild(n),t}}};function G(e){return(G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.customPos,n=e.iframe,r=e.noShadowCaret;return n?{iframe:n,window:n.contentWindow,document:n.contentDocument||n.contentWindow.document,noShadowCaret:r,customPos:t}:{window:window,document:document,noShadowCaret:r,customPos:t}},V=function(e){return"object"===G(e)&&null!==e},J=function(e,t){var n=function(){return e.selectionStart},r=function(r){var o=function(e){return e.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"
    ")};(t.customPos||0===t.customPos)&&(r=t.customPos);var a=void 0===r?n():r,i=e.value.slice(0,a),l=e.value.slice(a),u=''.concat(o(i),"");u+='|',u+=''.concat(o(l),"");var s=z(e,u).rect();return s.pos=n(),s};return{getPos:n,setPos:function(t){return e.setSelectionRange(t,t),e},getOffset:function(n){var o=function(e,t){var n=t&&t.window||window,r=t&&t.document||document,o=e.getBoundingClientRect(),a=r.documentElement,i=n.pageXOffset||a.scrollLeft,l=n.pageYOffset||a.scrollTop;return{top:o.top+l,left:o.left+i}}(e),a=r(n);return{top:o.top+a.top+t.document.body.scrollTop,left:o.left+a.left+t.document.body.scrollLeft,height:a.height}},getPosition:r}},$=function(e,t){return function(e){return!!(e.contentEditable?"true"===e.contentEditable:"true"===e.getAttribute("contenteditable"))}(e)?function(e,t){var n=function(){var n=r(),o={height:0,left:0,right:0};if(!n)return o;var a=t.customPos||0===t.customPos;if(n.endOffset-1>0&&n.endContainer!==e||a){var i=n.cloneRange(),l=a?t.customPos:n.endOffset;i.setStart(n.endContainer,l-1<0?0:l-1),i.setEnd(n.endContainer,l);var u=i.getBoundingClientRect();o={height:u.height,left:u.left+u.width,top:u.top},i.detach()}if((!o||o&&0===o.height)&&!t.noShadowCaret){var s=n.cloneRange(),c=t.document.createTextNode("|");s.insertNode(c),s.selectNode(c);var d=s.getBoundingClientRect();o={height:d.height,left:d.left,top:d.top},c.parentNode.removeChild(c),s.detach()}if(o){var f=t.document.documentElement;o.top+=t.window.pageYOffset-(f.clientTop||0),o.left+=t.window.pageXOffset-(f.clientLeft||0)}return o},r=function(){if(t.window.getSelection){var e=t.window.getSelection();return e.rangeCount>0?e.getRangeAt(0):null}},o=function(){var t=r(),n=t.cloneRange();n.selectNodeContents(e),n.setEnd(t.endContainer,t.endOffset);var o=n.toString().length;return n.detach(),o};return{getPos:o,setPos:function(n){var r=t.window.getSelection();if(r){var o=0,a=!1;!function e(i,l){for(var u=0;u=i){a=!0;var c=t.document.createRange();c.setStart(s,i-o),r.removeAllRanges(),r.addRange(c);break}o+=s.length}else e(n,s)}}(n,e)}return e},getPosition:function(){var r=n(),a=o(),i=e.getBoundingClientRect(),l=i.top+t.document.body.scrollTop,u=i.left+t.document.body.scrollLeft;return r.left-=u,r.top-=l,r.pos=a,r},getOffset:n,getRange:r}}(e,t):J(e,t)},Z=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n;V(t)&&(r=t,t=null);var o=Q(r),a=$(e,o);return t||0===t?a.setPos(t):a.getPosition()},K=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(a,t);var r=i(a);function a(t,n){var o;return e(this,a),(o=r.call(this)).textEditor=t,o.fixLimit=n,o.caretPos=null,o.url="",o.setInputs(),window.addEventListener("scroll",(function(){})),o.refresh(),o}return n(a,[{key:"setInputs",value:function(){for(var e=this,t=this,n=document.querySelectorAll(".editor-button"),r=0,o=n.length;r/g)>-1){var o=Z(e.textEditor).pos;t.refresh(),Z(e.textEditor,o)}}))}},{key:"refresh",value:function(){var e=this.textEditor.innerText;e=e.replace(new RegExp("\r?\n","g"),"
    ");var t=document.createElement("div");t.innerText=e,this.textEditor.innerHTML=t.innerText,this.textEditor.style.maxWidth="900px"}},{key:"notify",value:function(e,t){switch(e){case void 0:document.getElementById("submit-update").classList.add("icon-hide"),document.getElementById("submit-good").classList.remove("icon-hide"),document.getElementById("edit-update").classList.remove("submit-start"),document.getElementById("edit-update").classList.add("submit-cool"),setTimeout((function(){document.getElementById("submit-update").classList.remove("icon-hide"),document.getElementById("submit-good").classList.add("icon-hide"),document.getElementById("edit-update").classList.add("submit-start"),document.getElementById("edit-update").classList.remove("submit-cool")}),2e3);break;case void 0:break;case U:var n,r;Z(this.textEditor,this.caretPos),(n=window.getSelection()).rangeCount&&((r=n.getRangeAt(0)).deleteContents(),r.insertNode(document.createTextNode("![image alt text]("+t+" 'image title')"))),this.refresh()}}},{key:"handleEditorOption",value:function(e){var t,n,r;if(e.preventDefault(),(t=window.getSelection()).rangeCount)switch(n=t.getRangeAt(0),r=t.getRangeAt(0).toString(),n.deleteContents(),e.target.id){case"edit-bold":n.insertNode(document.createTextNode("**"+r+"**"));break;case"edit-italic":n.insertNode(document.createTextNode("*"+r+"*"));break;case"edit-strikethrough":n.insertNode(document.createTextNode(""+r+""));break;case"edit-header1":n.insertNode(document.createTextNode("# "+r));break;case"edit-header2":n.insertNode(document.createTextNode("## "+r));break;case"edit-header3":n.insertNode(document.createTextNode("### "+r));break;case"edit-image":this.caretPos=Z(this.textEditor).pos,this.emitEvent(U);break;case"submit-save":case"edit-save":this.emitEvent(Y);break;case"submit-update":case"edit-update":this.emitEvent(j);break;case"edit-link":n.insertNode(document.createTextNode("["+r+"](PASTE URL HERE)"));break;case"edit-delete":this.emitEvent(q)}this.refresh()}}]),a}(function(){function t(){e(this,t),this.listeners=new Map}return n(t,[{key:"addListener",value:function(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}},{key:"removeListener",value:function(e,t){var n,r=this.listeners.get(e);return!!(r&&r.length&&(n=r.reduce((function(e,n,r){return"function"==typeof n&&n===t?e=r:e}),-1))>-1)&&(r.splice(n,1),this.listeners.set(e,r),!0)}},{key:"emitEvent",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r-1}function ie(e,t){return e.apply(null,t)}var le={arr:function(e){return Array.isArray(e)},obj:function(e){return ae(Object.prototype.toString.call(e),"Object")},pth:function(e){return le.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return e.nodeType||le.svg(e)},str:function(e){return"string"==typeof e},fnc:function(e){return"function"==typeof e},und:function(e){return void 0===e},nil:function(e){return le.und(e)||null===e},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return le.hex(e)||le.rgb(e)||le.hsl(e)},key:function(e){return!ee.hasOwnProperty(e)&&!te.hasOwnProperty(e)&&"targets"!==e&&"keyframes"!==e}};function ue(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map((function(e){return parseFloat(e)})):[]}function se(e,t){var n=ue(e),r=oe(le.und(n[0])?1:n[0],.1,100),o=oe(le.und(n[1])?100:n[1],.1,100),a=oe(le.und(n[2])?10:n[2],.1,100),i=oe(le.und(n[3])?0:n[3],.1,100),l=Math.sqrt(o/r),u=a/(2*Math.sqrt(o*r)),s=u<1?l*Math.sqrt(1-u*u):0,c=u<1?(u*l-i)/s:-i+l;function d(e){var n=t?t*e/1e3:e;return n=u<1?Math.exp(-n*u*l)*(1*Math.cos(s*n)+c*Math.sin(s*n)):(1+c*n)*Math.exp(-n*l),0===e||1===e?e:1-n}return t?d:function(){var t=re.springs[e];if(t)return t;for(var n=1/6,r=0,o=0;;)if(1===d(r+=n)){if(++o>=16)break}else o=0;var a=r*n*1e3;return re.springs[e]=a,a}}function ce(e){return void 0===e&&(e=10),function(t){return Math.ceil(oe(t,1e-6,1)*e)*(1/e)}}var de,fe,he=function(){var e=.1;function t(e,t){return 1-3*t+3*e}function n(e,t){return 3*t-6*e}function r(e){return 3*e}function o(e,o,a){return((t(o,a)*e+n(o,a))*e+r(o))*e}function a(e,o,a){return 3*t(o,a)*e*e+2*n(o,a)*e+r(o)}return function(t,n,r,i){if(0<=t&&t<=1&&0<=r&&r<=1){var l=new Float32Array(11);if(t!==n||r!==i)for(var u=0;u<11;++u)l[u]=o(u*e,t,r);return function(e){return t===n&&r===i||0===e||1===e?e:o(s(e),n,i)}}function s(n){for(var i=0,u=1;10!==u&&l[u]<=n;++u)i+=e;--u;var s=i+(n-l[u])/(l[u+1]-l[u])*e,c=a(s,t,r);return c>=.001?function(e,t,n,r){for(var i=0;i<4;++i){var l=a(t,n,r);if(0===l)return t;t-=(o(t,n,r)-e)/l}return t}(n,s,t,r):0===c?s:function(e,t,n,r,a){var i,l,u=0;do{(i=o(l=t+(n-t)/2,r,a)-e)>0?n=l:t=l}while(Math.abs(i)>1e-7&&++u<10);return l}(n,i,i+e,t,r)}}}(),pe=(de={linear:function(){return function(e){return e}}},fe={Sine:function(){return function(e){return 1-Math.cos(e*Math.PI/2)}},Circ:function(){return function(e){return 1-Math.sqrt(1-e*e)}},Back:function(){return function(e){return e*e*(3*e-2)}},Bounce:function(){return function(e){for(var t,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}},Elastic:function(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var n=oe(e,1,10),r=oe(t,.1,2);return function(e){return 0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach((function(e,t){fe[e]=function(){return function(e){return Math.pow(e,t+2)}}})),Object.keys(fe).forEach((function(e){var t=fe[e];de["easeIn"+e]=t,de["easeOut"+e]=function(e,n){return function(r){return 1-t(e,n)(1-r)}},de["easeInOut"+e]=function(e,n){return function(r){return r<.5?t(e,n)(2*r)/2:1-t(e,n)(-2*r+2)/2}},de["easeOutIn"+e]=function(e,n){return function(r){return r<.5?(1-t(e,n)(1-2*r))/2:(t(e,n)(2*r-1)+1)/2}}})),de);function ge(e,t){if(le.fnc(e))return e;var n=e.split("(")[0],r=pe[n],o=ue(e);switch(n){case"spring":return se(e,t);case"cubicBezier":return ie(he,o);case"steps":return ie(ce,o);default:return ie(r,o)}}function me(e){try{return document.querySelectorAll(e)}catch(e){return}}function ve(e,t){for(var n=e.length,r=arguments.length>=2?t:void 0,o=[],a=0;a1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(0==i)t=n=r=l;else{var c=l<.5?l*(1+i):l+i-l*i,d=2*l-c;t=s(d,c,a+1/3),n=s(d,c,a),r=s(d,c,a-1/3)}return"rgba("+255*t+","+255*n+","+255*r+","+u+")"}(e):void 0;var t,n}function Te(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function xe(e,t){return le.fnc(e)?e(t.target,t.id,t.total):e}function De(e,t){return e.getAttribute(t)}function Pe(e,t,n){if(we([n,"deg","rad","turn"],Te(t)))return t;var r=re.CSS[t+n];if(!le.und(r))return r;var o=document.createElement(e.tagName),a=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;a.appendChild(o),o.style.position="absolute",o.style.width=100+n;var i=100/o.offsetWidth;a.removeChild(o);var l=i*parseFloat(t);return re.CSS[t+n]=l,l}function _e(e,t,n){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return n?Pe(e,o,n):o}}function Be(e,t){return le.dom(e)&&!le.inp(e)&&(!le.nil(De(e,t))||le.svg(e)&&e[t])?"attribute":le.dom(e)&&we(ne,t)?"transform":le.dom(e)&&"transform"!==t&&_e(e,t)?"css":null!=e[t]?"object":void 0}function Oe(e){if(le.dom(e)){for(var t,n=e.style.transform||"",r=/(\w+)\(([^)]*)\)/g,o=new Map;t=r.exec(n);)o.set(t[1],t[2]);return o}}function Ce(e,t,n,r){var o=ae(t,"scale")?1:0+function(e){return ae(e,"translate")||"perspective"===e?"px":ae(e,"rotate")||ae(e,"skew")?"deg":void 0}(t),a=Oe(e).get(t)||o;return n&&(n.transforms.list.set(t,a),n.transforms.last=t),r?Pe(e,a,r):a}function Ae(e,t,n,r){switch(Be(e,t)){case"transform":return Ce(e,t,r,n);case"css":return _e(e,t,n);case"attribute":return De(e,t);default:return e[t]||0}}function Me(e,t){var n=/^(\*=|\+=|-=)/.exec(e);if(!n)return e;var r=Te(e)||0,o=parseFloat(t),a=parseFloat(e.replace(n[0],""));switch(n[0][0]){case"+":return o+a+r;case"-":return o-a+r;case"*":return o*a+r}}function Ne(e,t){if(le.col(e))return Se(e);if(/\s/g.test(e))return e;var n=Te(e),r=n?e.substr(0,e.length-n.length):e;return t?r+t:r}function Le(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function Re(e){for(var t,n=e.points,r=0,o=0;o0&&(r+=Le(t,a)),t=a}return r}function He(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return function(e){return 2*Math.PI*De(e,"r")}(e);case"rect":return function(e){return 2*De(e,"width")+2*De(e,"height")}(e);case"line":return function(e){return Le({x:De(e,"x1"),y:De(e,"y1")},{x:De(e,"x2"),y:De(e,"y2")})}(e);case"polyline":return Re(e);case"polygon":return function(e){var t=e.points;return Re(e)+Le(t.getItem(t.numberOfItems-1),t.getItem(0))}(e)}}function Fe(e,t){var n=t||{},r=n.el||function(e){for(var t=e.parentNode;le.svg(t)&&le.svg(t.parentNode);)t=t.parentNode;return t}(e),o=r.getBoundingClientRect(),a=De(r,"viewBox"),i=o.width,l=o.height,u=n.viewBox||(a?a.split(" "):[0,0,i,l]);return{el:r,viewBox:u,x:u[0]/1,y:u[1]/1,w:i,h:l,vW:u[2],vH:u[3]}}function Xe(e,t,n){function r(n){void 0===n&&(n=0);var r=t+n>=1?t+n:0;return e.el.getPointAtLength(r)}var o=Fe(e.el,e.svg),a=r(),i=r(-1),l=r(1),u=n?1:o.w/o.vW,s=n?1:o.h/o.vH;switch(e.property){case"x":return(a.x-o.x)*u;case"y":return(a.y-o.y)*s;case"angle":return 180*Math.atan2(l.y-i.y,l.x-i.x)/Math.PI}}function qe(e,t){var n=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=Ne(le.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(n)?r.match(n).map(Number):[0],strings:le.str(e)||t?r.split(n):[]}}function Ue(e){return ve(e?ye(le.arr(e)?e.map(be):be(e)):[],(function(e,t,n){return n.indexOf(e)===t}))}function Ye(e){var t=Ue(e);return t.map((function(e,n){return{target:e,id:n,total:t.length,transforms:{list:Oe(e)}}}))}function je(e,t){var n=Ee(t);if(/^spring/.test(n.easing)&&(n.duration=se(n.easing)),le.arr(e)){var r=e.length;2===r&&!le.obj(e[0])?e={value:e}:le.fnc(t.duration)||(n.duration=t.duration/r)}var o=le.arr(e)?e:[e];return o.map((function(e,n){var r=le.obj(e)&&!le.pth(e)?e:{value:e};return le.und(r.delay)&&(r.delay=n?0:t.delay),le.und(r.endDelay)&&(r.endDelay=n===o.length-1?t.endDelay:0),r})).map((function(e){return ke(e,n)}))}function We(e,t){var n=[],r=t.keyframes;for(var o in r&&(t=ke(function(e){for(var t=ve(ye(e.map((function(e){return Object.keys(e)}))),(function(e){return le.key(e)})).reduce((function(e,t){return e.indexOf(t)<0&&e.push(t),e}),[]),n={},r=function(r){var o=t[r];n[o]=e.map((function(e){var t={};for(var n in e)le.key(n)?n==o&&(t.value=e[n]):t[n]=e[n];return t}))},o=0;o0?requestAnimationFrame(t):void 0}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",(function(){tt.suspendWhenDocumentHidden&&(et()?e=cancelAnimationFrame(e):(Ze.forEach((function(e){return e._onDocumentVisibility()})),Ke()))})),function(){e||et()&&tt.suspendWhenDocumentHidden||!(Ze.length>0)||(e=requestAnimationFrame(t))}}();function et(){return!!document&&document.hidden}function tt(e){void 0===e&&(e={});var t,n=0,r=0,o=0,a=0,i=null;function l(e){var t=window.Promise&&new Promise((function(e){return i=e}));return e.finished=t,t}var u=function(e){var t=Ie(ee,e),n=Ie(te,e),r=We(n,e),o=Ye(e.targets),a=Ve(o,r),i=Je(a,n),l=$e;return $e++,ke(t,{id:l,children:[],animatables:o,animations:a,duration:i.duration,delay:i.delay,endDelay:i.endDelay})}(e);function s(){var e=u.direction;"alternate"!==e&&(u.direction="normal"!==e?"normal":"reverse"),u.reversed=!u.reversed,t.forEach((function(e){return e.reversed=u.reversed}))}function c(e){return u.reversed?u.duration-e:e}function d(){n=0,r=c(u.currentTime)*(1/tt.speed)}function f(e,t){t&&t.seek(e-t.timelineOffset)}function h(e){for(var t=0,n=u.animations,r=n.length;t2||(y=Math.round(y*h)/h)),p.push(y)}var E=f.length;if(E){m=f[0];for(var I=0;I0&&(u.began=!0,p("begin")),!u.loopBegan&&u.currentTime>0&&(u.loopBegan=!0,p("loopBegin")),v<=g&&0!==u.currentTime&&h(0),(v>=m&&u.currentTime!==d||!d)&&h(d),v>g&&v=d&&(r=0,u.remaining&&!0!==u.remaining&&u.remaining--,u.remaining?(n=o,p("loopComplete"),u.loopBegan=!1,"alternate"===u.direction&&s()):(u.paused=!0,u.completed||(u.completed=!0,p("loopComplete"),p("complete"),!u.passThrough&&"Promise"in window&&(i(),l(u)))))}return l(u),u.reset=function(){var e=u.direction;u.passThrough=!1,u.currentTime=0,u.progress=0,u.paused=!0,u.began=!1,u.loopBegan=!1,u.changeBegan=!1,u.completed=!1,u.changeCompleted=!1,u.reversePlayback=!1,u.reversed="reverse"===e,u.remaining=u.loop,t=u.children;for(var n=a=t.length;n--;)u.children[n].reset();(u.reversed&&!0!==u.loop||"alternate"===e&&1===u.loop)&&u.remaining++,h(u.reversed?u.duration:0)},u._onDocumentVisibility=d,u.set=function(e,t){return Qe(e,t),u},u.tick=function(e){o=e,n||(n=o),g((o+(r-n))*tt.speed)},u.seek=function(e){g(c(e))},u.pause=function(){u.paused=!0,d()},u.play=function(){u.paused&&(u.completed&&u.reset(),u.paused=!1,Ze.push(u),d(),Ke())},u.reverse=function(){s(),u.completed=!u.reversed,d()},u.restart=function(){u.reset(),u.play()},u.remove=function(e){rt(Ue(e),u)},u.reset(),u.autoplay&&u.play(),u}function nt(e,t){for(var n=t.length;n--;)we(e,t[n].animatable.target)&&t.splice(n,1)}function rt(e,t){var n=t.animations,r=t.children;nt(e,n);for(var o=r.length;o--;){var a=r[o],i=a.animations;nt(e,i),i.length||a.children.length||r.splice(o,1)}n.length||r.length||t.pause()}tt.version="3.2.1",tt.speed=1,tt.suspendWhenDocumentHidden=!0,tt.running=Ze,tt.remove=function(e){for(var t=Ue(e),n=Ze.length;n--;){rt(t,Ze[n])}},tt.get=Ae,tt.set=Qe,tt.convertPx=Pe,tt.path=function(e,t){var n=le.str(e)?me(e)[0]:e,r=t||100;return function(e){return{property:e,el:n,svg:Fe(n),totalLength:He(n)*(r/100)}}},tt.setDashoffset=function(e){var t=He(e);return e.setAttribute("stroke-dasharray",t),t},tt.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||"normal",r=t.easing?ge(t.easing):null,o=t.grid,a=t.axis,i=t.from||0,l="first"===i,u="center"===i,s="last"===i,c=le.arr(e),d=c?parseFloat(e[0]):parseFloat(e),f=c?parseFloat(e[1]):0,h=Te(c?e[1]:e)||0,p=t.start||0+(c?d:0),g=[],m=0;return function(e,t,v){if(l&&(i=0),u&&(i=(v-1)/2),s&&(i=v-1),!g.length){for(var y=0;y-1&&Ze.splice(o,1);for(var l=0;l'].join(""),document.getElementById("featured-image-drop").innerHTML="",document.getElementById("featured-image-drop").appendChild(n)}}(n),o.readAsDataURL(n)}}}},{key:"handleImageUpload",value:function(e,t){var n=this;dt.alert("Uploading Image",null),this.admin.imageUpload(e,t).then((function(e){e.type==d&&n.editor.notify(U,e.url),dt.alert("Image Added to Entry",!0)})).catch((function(){dt.alert("Uh oh. Image not added",!1)}))}}]),t}();ft.uploadFiles=[];var ht=function(){function t(n){e(this,t),this.currentPage=null,this.choosePage(n),this.start()}return n(t,[{key:"start",value:function(){}},{key:"choosePage",value:function(e){switch(this.currentPage="",e){case"edit":case"add":this.currentPage=new ft}}}]),t}(),pt=function(){function t(){e(this,t)}return n(t,[{key:"getInfo",value:function(){var e,t,n=document.getElementById("settings-handle").value,r=document.getElementById("settings-email").value,o=document.getElementById("settings-url").value,a=document.getElementById("settings-title").value,i=document.getElementById("settings-desc").value,l=document.getElementById("render-toggle").getAttribute("data-render"),u=document.getElementById("background").src,s="",c=document.querySelectorAll(".theme-select"),d=document.getElementById("smtp-domain").value,f=document.getElementById("smtp-email").value,h=document.getElementById("smtp-pass").value,p=document.getElementById("mg-domain").value,g=document.getElementById("mg-key").value,m="",v=document.querySelectorAll(".mail-option");for(e=0,t=c.length;e0&&(u.began=!0,p("begin")),!u.loopBegan&&u.currentTime>0&&(u.loopBegan=!0,p("loopBegin")),v<=g&&0!==u.currentTime&&h(0),(v>=m&&u.currentTime!==d||!d)&&h(d),v>g&&v=d&&(r=0,u.remaining&&!0!==u.remaining&&u.remaining--,u.remaining?(n=o,p("loopComplete"),u.loopBegan=!1,"alternate"===u.direction&&s()):(u.paused=!0,u.completed||(u.completed=!0,p("loopComplete"),p("complete"),!u.passThrough&&"Promise"in window&&(i(),l(u)))))}return l(u),u.reset=function(){var e=u.direction;u.passThrough=!1,u.currentTime=0,u.progress=0,u.paused=!0,u.began=!1,u.loopBegan=!1,u.changeBegan=!1,u.completed=!1,u.changeCompleted=!1,u.reversePlayback=!1,u.reversed="reverse"===e,u.remaining=u.loop,t=u.children;for(var n=a=t.length;n--;)u.children[n].reset();(u.reversed&&!0!==u.loop||"alternate"===e&&1===u.loop)&&u.remaining++,h(u.reversed?u.duration:0)},u._onDocumentVisibility=d,u.set=function(e,t){return Qe(e,t),u},u.tick=function(e){o=e,n||(n=o),g((o+(r-n))*tt.speed)},u.seek=function(e){g(c(e))},u.pause=function(){u.paused=!0,d()},u.play=function(){u.paused&&(u.completed&&u.reset(),u.paused=!1,Ze.push(u),d(),Ke())},u.reverse=function(){s(),u.completed=!u.reversed,d()},u.restart=function(){u.reset(),u.play()},u.remove=function(e){rt(Ue(e),u)},u.reset(),u.autoplay&&u.play(),u}function nt(e,t){for(var n=t.length;n--;)we(e,t[n].animatable.target)&&t.splice(n,1)}function rt(e,t){var n=t.animations,r=t.children;nt(e,n);for(var o=r.length;o--;){var a=r[o],i=a.animations;nt(e,i),i.length||a.children.length||r.splice(o,1)}n.length||r.length||t.pause()}tt.version="3.2.1",tt.speed=1,tt.suspendWhenDocumentHidden=!0,tt.running=Ze,tt.remove=function(e){for(var t=Ue(e),n=Ze.length;n--;){rt(t,Ze[n])}},tt.get=Ae,tt.set=Qe,tt.convertPx=Pe,tt.path=function(e,t){var n=le.str(e)?me(e)[0]:e,r=t||100;return function(e){return{property:e,el:n,svg:Fe(n),totalLength:He(n)*(r/100)}}},tt.setDashoffset=function(e){var t=He(e);return e.setAttribute("stroke-dasharray",t),t},tt.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||"normal",r=t.easing?ge(t.easing):null,o=t.grid,a=t.axis,i=t.from||0,l="first"===i,u="center"===i,s="last"===i,c=le.arr(e),d=c?parseFloat(e[0]):parseFloat(e),f=c?parseFloat(e[1]):0,h=Te(c?e[1]:e)||0,p=t.start||0+(c?d:0),g=[],m=0;return function(e,t,v){if(l&&(i=0),u&&(i=(v-1)/2),s&&(i=v-1),!g.length){for(var y=0;y-1&&Ze.splice(o,1);for(var l=0;l'].join(""),document.getElementById("featured-image-drop").innerHTML="",document.getElementById("featured-image-drop").appendChild(n)}}(n),o.readAsDataURL(n)}}}},{key:"handleImageUpload",value:function(e,t){var n=this;dt.alert("Uploading Image",null),this.admin.imageUpload(e,t).then((function(e){e.type==d&&n.editor.notify(U,e.url),dt.alert("Image Added to Entry",!0)})).catch((function(){dt.alert("Uh oh. Image not added",!1)}))}}]),t}();ft.uploadFiles=[];var ht=function(){function t(n){e(this,t),this.currentPage=null,this.choosePage(n),this.start()}return n(t,[{key:"start",value:function(){}},{key:"choosePage",value:function(e){switch(this.currentPage="",e){case"edit":case"add":this.currentPage=new ft}}}]),t}(),pt=function(){function t(){e(this,t)}return n(t,[{key:"getInfo",value:function(){var e,t,n=document.getElementById("settings-handle").value,r=document.getElementById("settings-email").value,o=document.getElementById("settings-url").value,a=document.getElementById("settings-title").value,i=document.getElementById("settings-desc").value,l=document.getElementById("render-toggle").getAttribute("data-render"),u=document.getElementById("background").src,s="",c=document.querySelectorAll(".theme-select"),d=document.getElementById("smtp-domain").value,f=document.getElementById("smtp-email").value,h=document.getElementById("smtp-pass").value,p=document.getElementById("mg-domain").value,g=document.getElementById("mg-key").value,m="",v=document.querySelectorAll(".mail-option");for(e=0,t=c.length;e * @author owenm * @license MIT */ -function wt(e){return(wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(){return(It=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Tt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var xt=Tt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Dt=Tt(/Edge/i),Pt=Tt(/firefox/i),_t=Tt(/safari/i)&&!Tt(/chrome/i)&&!Tt(/android/i),Bt=Tt(/iP(ad|od|hone)/i),Ot=Tt(/chrome/i)&&Tt(/android/i),Ct={capture:!1,passive:!1};function At(e,t,n){e.addEventListener(t,n,!xt&&Ct)}function Mt(e,t,n){e.removeEventListener(t,n,!xt&&Ct)}function Nt(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Lt(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Rt(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Nt(e,t):Nt(e,t))||r&&e===n)return e;if(e===n)break}while(e=Lt(e))}return null}var Ht,Ft=/\s+/g;function Xt(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Ft," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Ft," ")}}function qt(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function Ut(e,t){var n="";if("string"==typeof e)n=e;else do{var r=qt(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Yt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===jt())break;r=$t(r,!1)}return!1}function Gt(e,t,n){for(var r=0,o=0,a=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=St(n,["evt"]);ln.pluginEvent.bind(er)(e,t,kt({dragEl:cn,parentEl:dn,ghostEl:fn,rootEl:hn,nextEl:pn,lastDownEl:gn,cloneEl:mn,cloneHidden:vn,dragStarted:Bn,putSortable:kn,activeSortable:er.active,originalEvent:r,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En,hideGhostForTarget:Jn,unhideGhostForTarget:$n,cloneNowHidden:function(){vn=!0},cloneNowShown:function(){vn=!1},dispatchSortableEvent:function(e){sn({sortable:t,name:e,originalEvent:r})}},o))};function sn(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,a=e.cloneEl,i=e.toEl,l=e.fromEl,u=e.oldIndex,s=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[nn]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||xt||Dt?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=i||n,g.from=l||n,g.item=o||n,g.clone=a,g.oldIndex=u,g.newIndex=s,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=kt({},p,ln.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(kt({putSortable:kn,cloneEl:mn,targetEl:cn,rootEl:hn,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En},e))}var cn,dn,fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,Pn,_n,Bn,On,Cn,An,Mn,Nn=!1,Ln=!1,Rn=[],Hn=!1,Fn=!1,Xn=[],qn=!1,Un=[],Yn="undefined"!=typeof document,jn=Bt,Wn=Dt||xt?"cssFloat":"float",zn=Yn&&!Ot&&!Bt&&"draggable"in document.createElement("div"),Gn=function(){if(Yn){if(xt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),Qn=function(e,t){var n=qt(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Gt(e,0,t),a=Gt(e,1,t),i=o&&qt(o),l=a&&qt(a),u=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Wt(o).width,s=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Wt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var c="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==c?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||u>=r&&"none"===n[Wn]||a&&"none"===n[Wn]&&u+s>r)?"vertical":"horizontal"},Vn=function(e){function t(e,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,a,i),n)(r,o,a,i);var u=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===u||e.join&&e.indexOf(u)>-1}}var n={},r=e.group;r&&"object"==wt(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Jn=function(){!Gn&&fn&&qt(fn,"display","none")},$n=function(){!Gn&&fn&&qt(fn,"display","")};Yn&&document.addEventListener("click",(function(e){if(Ln)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Ln=!1,!1}),!0);var Zn=function(e){if(cn){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,a=e.clientY,Rn.some((function(e){if(!Qt(e)){var t=Wt(e),n=e[nn].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,l=a>=t.top-n&&a<=t.bottom+n;return n&&r&&l?i=e:void 0}})),i);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[nn]._onDragOver(n)}}var o,a,i},Kn=function(e){cn&&cn.parentNode[nn]._isOutsideThisEl(e.target)};function er(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=It({},t),e[nn]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Qn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==er.supportPointer&&"PointerEvent"in window&&!_t,emptyInsertThreshold:5};for(var r in ln.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in Vn(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&zn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?At(e,"pointerdown",this._onTapStart):(At(e,"mousedown",this._onTapStart),At(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(At(e,"dragover",this),At(e,"dragenter",this)),Rn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),It(this,rn())}function tr(e,t,n,r,o,a,i,l){var u,s,c=e[nn],d=c.options.onMove;return!window.CustomEvent||xt||Dt?(u=document.createEvent("Event")).initEvent("move",!0,!0):u=new CustomEvent("move",{bubbles:!0,cancelable:!0}),u.to=t,u.from=e,u.dragged=n,u.draggedRect=r,u.related=o||t,u.relatedRect=a||Wt(t),u.willInsertAfter=l,u.originalEvent=i,e.dispatchEvent(u),d&&(s=d.call(c,u,i)),s}function nr(e){e.draggable=!1}function rr(){qn=!1}function or(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function ar(e){return setTimeout(e,0)}function ir(e){return clearTimeout(e)}er.prototype={constructor:er,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(On=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,cn):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,a=e.type,i=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(i||e).target,u=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,s=r.filter;if(function(e){Un.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&Un.push(r)}}(n),!cn&&!(/mousedown|pointerdown/.test(a)&&0!==e.button||r.disabled)&&!u.isContentEditable&&(this.nativeDraggable||!_t||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=Rt(l,r.draggable,n,!1))&&l.animated||gn===l)){if(yn=Vt(l),wn=Vt(l,r.draggable),"function"==typeof s){if(s.call(this,e,l,this))return sn({sortable:t,rootEl:u,name:"filter",targetEl:l,toEl:n,fromEl:n}),un("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(s&&(s=s.split(",").some((function(r){if(r=Rt(u,r.trim(),n,!1))return sn({sortable:t,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),un("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Rt(u,r.handle,n,!1)||this._prepareDragStart(e,i,l)}}},_prepareDragStart:function(e,t,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!cn&&n.parentNode===a){var u=Wt(n);if(hn=a,dn=(cn=n).parentNode,pn=cn.nextSibling,gn=n,In=i.group,er.dragged=cn,Sn={target:cn,clientX:(t||e).clientX,clientY:(t||e).clientY},Pn=Sn.clientX-u.left,_n=Sn.clientY-u.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,cn.style["will-change"]="all",r=function(){un("delayEnded",o,{evt:e}),er.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!Pt&&o.nativeDraggable&&(cn.draggable=!0),o._triggerDragStart(e,t),sn({sortable:o,name:"choose",originalEvent:e}),Xt(cn,i.chosenClass,!0))},i.ignore.split(",").forEach((function(e){Yt(cn,e.trim(),nr)})),At(l,"dragover",Zn),At(l,"mousemove",Zn),At(l,"touchmove",Zn),At(l,"mouseup",o._onDrop),At(l,"touchend",o._onDrop),At(l,"touchcancel",o._onDrop),Pt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,cn.draggable=!0),un("delayStart",this,{evt:e}),!i.delay||i.delayOnTouchOnly&&!t||this.nativeDraggable&&(Dt||xt))r();else{if(er.eventCanceled)return void this._onDrop();At(l,"mouseup",o._disableDelayedDrag),At(l,"touchend",o._disableDelayedDrag),At(l,"touchcancel",o._disableDelayedDrag),At(l,"mousemove",o._delayedDragTouchMoveHandler),At(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&At(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){cn&&nr(cn),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._disableDelayedDrag),Mt(e,"touchend",this._disableDelayedDrag),Mt(e,"touchcancel",this._disableDelayedDrag),Mt(e,"mousemove",this._delayedDragTouchMoveHandler),Mt(e,"touchmove",this._delayedDragTouchMoveHandler),Mt(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?At(document,"pointermove",this._onTouchMove):At(document,t?"touchmove":"mousemove",this._onTouchMove):(At(cn,"dragend",this),At(hn,"dragstart",this._onDragStart));try{document.selection?ar((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(Nn=!1,hn&&cn){un("dragStarted",this,{evt:t}),this.nativeDraggable&&At(document,"dragover",Kn);var n=this.options;!e&&Xt(cn,n.dragClass,!1),Xt(cn,n.ghostClass,!0),er.active=this,e&&this._appendGhost(),sn({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Tn){this._lastX=Tn.clientX,this._lastY=Tn.clientY,Jn();for(var e=document.elementFromPoint(Tn.clientX,Tn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Tn.clientX,Tn.clientY))!==t;)t=e;if(cn.parentNode[nn]._isOutsideThisEl(e),t)do{if(t[nn]){if(t[nn]._onDragOver({clientX:Tn.clientX,clientY:Tn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);$n()}},_onTouchMove:function(e){if(Sn){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,a=fn&&Ut(fn,!0),i=fn&&a&&a.a,l=fn&&a&&a.d,u=jn&&Mn&&Jt(Mn),s=(o.clientX-Sn.clientX+r.x)/(i||1)+(u?u[0]-Xn[0]:0)/(i||1),c=(o.clientY-Sn.clientY+r.y)/(l||1)+(u?u[1]-Xn[1]:0)/(l||1);if(!er.active&&!Nn){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===cn)return B(!1);if(g&&a===e.target&&(i=g),i&&(n=Wt(i)),!1!==tr(hn,a,cn,t,i,n,e,!!i))return _(),a.appendChild(cn),dn=a,O(),B(!0)}else if(i.parentNode===a){n=Wt(i);var m,v,y,b=cn.parentNode!==a,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,a=n?e.width:e.height,i=n?t.left:t.top,l=n?t.right:t.bottom,u=n?t.width:t.height;return r===i||o===l||r+a/2===i+u/2}(cn.animated&&cn.toRect||t,i.animated&&i.toRect||n,o),E=o?"top":"left",I=zt(i,"top","top")||zt(cn,"top","top"),k=I?I.scrollTop:void 0;if(On!==i&&(v=n[E],Hn=!1,Fn=!w&&l.invertSwap||b),0!==(m=function(e,t,n,r,o,a,i,l){var u=r?e.clientY:e.clientX,s=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!i)if(l&&Anc+s*a/2:ud-An)return-Cn}else if(u>c+s*(1-o)/2&&ud-s*a/2))return u>c+s/2?1:-1;return 0}(e,i,n,o,w?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,Fn,On===i))){var S=Vt(cn);do{S-=m,y=dn.children[S]}while(y&&("none"===qt(y,"display")||y===fn))}if(0===m||y===i)return B(!1);On=i,Cn=m;var T=i.nextElementSibling,x=!1,D=tr(hn,a,cn,t,i,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),qn=!0,setTimeout(rr,30),_(),x&&!T?a.appendChild(cn):i.parentNode.insertBefore(cn,x?T:i),I&&en(I,0,k-I.scrollTop),dn=cn.parentNode,void 0===v||Fn||(An=Math.abs(v-Wt(i)[E])),O(),B(!0)}if(a.contains(cn))return B(!1)}return!1}function P(l,u){un(l,h,kt({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:i,completed:B,onMove:function(n,r){return tr(hn,a,cn,t,n,Wt(n),e,r)},changed:O},u))}function _(){P("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return P("dragOverCompleted",{insertion:t}),t&&(c?s._hideClone():s._showClone(h),h!==f&&(Xt(cn,kn?kn.options.ghostClass:s.options.ghostClass,!1),Xt(cn,l.ghostClass,!0)),kn!==h&&h!==er.active?kn=h:h===er.active&&kn&&(kn=null),f===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){P("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(i===cn&&!cn.animated||i===a&&!i.animated)&&(On=null),l.dragoverBubble||e.rootEl||i===document||(cn.parentNode[nn]._isOutsideThisEl(e.target),!t&&Zn(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function O(){bn=Vt(cn),En=Vt(cn,l.draggable),sn({sortable:h,name:"change",toEl:a,newIndex:bn,newDraggableIndex:En,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Mt(document,"mousemove",this._onTouchMove),Mt(document,"touchmove",this._onTouchMove),Mt(document,"pointermove",this._onTouchMove),Mt(document,"dragover",Zn),Mt(document,"mousemove",Zn),Mt(document,"touchmove",Zn)},_offUpEvents:function(){var e=this.el.ownerDocument;Mt(e,"mouseup",this._onDrop),Mt(e,"touchend",this._onDrop),Mt(e,"pointerup",this._onDrop),Mt(e,"touchcancel",this._onDrop),Mt(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;bn=Vt(cn),En=Vt(cn,n.draggable),un("drop",this,{evt:e}),dn=cn&&cn.parentNode,bn=Vt(cn),En=Vt(cn,n.draggable),er.eventCanceled||(Nn=!1,Fn=!1,Hn=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),ir(this.cloneId),ir(this._dragStartId),this.nativeDraggable&&(Mt(document,"drop",this),Mt(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),_t&&qt(document.body,"user-select",""),qt(cn,"transform",""),e&&(Bn&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),fn&&fn.parentNode&&fn.parentNode.removeChild(fn),(hn===dn||kn&&"clone"!==kn.lastPutMode)&&mn&&mn.parentNode&&mn.parentNode.removeChild(mn),cn&&(this.nativeDraggable&&Mt(cn,"dragend",this),nr(cn),cn.style["will-change"]="",Bn&&!Nn&&Xt(cn,kn?kn.options.ghostClass:this.options.ghostClass,!1),Xt(cn,this.options.chosenClass,!1),sn({sortable:this,name:"unchoose",toEl:dn,newIndex:null,newDraggableIndex:null,originalEvent:e}),hn!==dn?(bn>=0&&(sn({rootEl:dn,name:"add",toEl:dn,fromEl:hn,originalEvent:e}),sn({sortable:this,name:"remove",toEl:dn,originalEvent:e}),sn({rootEl:dn,name:"sort",toEl:dn,fromEl:hn,originalEvent:e}),sn({sortable:this,name:"sort",toEl:dn,originalEvent:e})),kn&&kn.save()):bn!==yn&&bn>=0&&(sn({sortable:this,name:"update",toEl:dn,originalEvent:e}),sn({sortable:this,name:"sort",toEl:dn,originalEvent:e})),er.active&&(null!=bn&&-1!==bn||(bn=yn,En=wn),sn({sortable:this,name:"end",toEl:dn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){un("nulling",this),hn=cn=dn=fn=pn=mn=gn=vn=Sn=Tn=Bn=bn=En=yn=wn=On=Cn=kn=In=er.dragged=er.ghost=er.clone=er.active=null,Un.forEach((function(e){e.checked=!0})),Un.length=xn=Dn=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":cn&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,a=this.options;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function kt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var St=kt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Tt=kt(/Edge/i),xt=kt(/firefox/i),Dt=kt(/safari/i)&&!kt(/chrome/i)&&!kt(/android/i),Pt=kt(/iP(ad|od|hone)/i),_t=kt(/chrome/i)&&kt(/android/i),Bt={capture:!1,passive:!1};function Ot(e,t,n){e.addEventListener(t,n,!St&&Bt)}function Ct(e,t,n){e.removeEventListener(t,n,!St&&Bt)}function At(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Mt(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Nt(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&At(e,t):At(e,t))||r&&e===n)return e;if(e===n)break}while(e=Mt(e))}return null}var Lt,Rt=/\s+/g;function Ht(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Rt," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Rt," ")}}function Ft(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function Xt(e,t){var n="";if("string"==typeof e)n=e;else do{var r=Ft(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function qt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,a=r.length;if(n)for(;o=a:o<=a))return r;if(r===Ut())break;r=Vt(r,!1)}return!1}function Wt(e,t,n){for(var r=0,o=0,a=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=It(n,["evt"]);on.pluginEvent.bind(Zn)(e,t,Et({dragEl:un,parentEl:sn,ghostEl:cn,rootEl:dn,nextEl:fn,lastDownEl:hn,cloneEl:pn,cloneHidden:gn,dragStarted:Pn,putSortable:En,activeSortable:Zn.active,originalEvent:r,oldIndex:mn,oldDraggableIndex:yn,newIndex:vn,newDraggableIndex:bn,hideGhostForTarget:Qn,unhideGhostForTarget:Vn,cloneNowHidden:function(){gn=!0},cloneNowShown:function(){gn=!1},dispatchSortableEvent:function(e){ln({sortable:t,name:e,originalEvent:r})}},o))};function ln(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,a=e.cloneEl,i=e.toEl,l=e.fromEl,u=e.oldIndex,s=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[en]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||St||Tt?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=i||n,g.from=l||n,g.item=o||n,g.clone=a,g.oldIndex=u,g.newIndex=s,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=Et({},p,on.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(Et({putSortable:En,cloneEl:pn,targetEl:un,rootEl:dn,oldIndex:mn,oldDraggableIndex:yn,newIndex:vn,newDraggableIndex:bn},e))}var un,sn,cn,dn,fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,Pn,_n,Bn,On,Cn,An=!1,Mn=!1,Nn=[],Ln=!1,Rn=!1,Hn=[],Fn=!1,Xn=[],qn="undefined"!=typeof document,Un=Pt,Yn=Tt||St?"cssFloat":"float",jn=qn&&!_t&&!Pt&&"draggable"in document.createElement("div"),Wn=function(){if(qn){if(St)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),zn=function(e,t){var n=Ft(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Wt(e,0,t),a=Wt(e,1,t),i=o&&Ft(o),l=a&&Ft(a),u=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Yt(o).width,s=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Yt(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var c="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==c?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||u>=r&&"none"===n[Yn]||a&&"none"===n[Yn]&&u+s>r)?"vertical":"horizontal"},Gn=function(e){function t(e,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,a,i),n)(r,o,a,i);var u=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===u||e.join&&e.indexOf(u)>-1}}var n={},r=e.group;r&&"object"==yt(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Qn=function(){!Wn&&cn&&Ft(cn,"display","none")},Vn=function(){!Wn&&cn&&Ft(cn,"display","")};qn&&document.addEventListener("click",(function(e){if(Mn)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Mn=!1,!1}),!0);var Jn=function(e){if(un){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,a=e.clientY,Nn.some((function(e){if(!zt(e)){var t=Yt(e),n=e[en].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,l=a>=t.top-n&&a<=t.bottom+n;return n&&r&&l?i=e:void 0}})),i);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[en]._onDragOver(n)}}var o,a,i},$n=function(e){un&&un.parentNode[en]._isOutsideThisEl(e.target)};function Zn(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=wt({},t),e[en]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return zn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Zn.supportPointer&&"PointerEvent"in window&&!Dt,emptyInsertThreshold:5};for(var r in on.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in Gn(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&jn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Ot(e,"pointerdown",this._onTapStart):(Ot(e,"mousedown",this._onTapStart),Ot(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ot(e,"dragover",this),Ot(e,"dragenter",this)),Nn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),wt(this,tn())}function Kn(e,t,n,r,o,a,i,l){var u,s,c=e[en],d=c.options.onMove;return!window.CustomEvent||St||Tt?(u=document.createEvent("Event")).initEvent("move",!0,!0):u=new CustomEvent("move",{bubbles:!0,cancelable:!0}),u.to=t,u.from=e,u.dragged=n,u.draggedRect=r,u.related=o||t,u.relatedRect=a||Yt(t),u.willInsertAfter=l,u.originalEvent=i,e.dispatchEvent(u),d&&(s=d.call(c,u,i)),s}function er(e){e.draggable=!1}function tr(){Fn=!1}function nr(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function rr(e){return setTimeout(e,0)}function or(e){return clearTimeout(e)}Zn.prototype={constructor:Zn,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(_n=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,un):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,a=e.type,i=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(i||e).target,u=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,s=r.filter;if(function(e){Xn.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&Xn.push(r)}}(n),!un&&!(/mousedown|pointerdown/.test(a)&&0!==e.button||r.disabled)&&!u.isContentEditable&&(this.nativeDraggable||!Dt||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=Nt(l,r.draggable,n,!1))&&l.animated||hn===l)){if(mn=Gt(l),yn=Gt(l,r.draggable),"function"==typeof s){if(s.call(this,e,l,this))return ln({sortable:t,rootEl:u,name:"filter",targetEl:l,toEl:n,fromEl:n}),an("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(s&&(s=s.split(",").some((function(r){if(r=Nt(u,r.trim(),n,!1))return ln({sortable:t,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),an("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Nt(u,r.handle,n,!1)||this._prepareDragStart(e,i,l)}}},_prepareDragStart:function(e,t,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!un&&n.parentNode===a){var u=Yt(n);if(dn=a,sn=(un=n).parentNode,fn=un.nextSibling,hn=n,wn=i.group,Zn.dragged=un,In={target:un,clientX:(t||e).clientX,clientY:(t||e).clientY},xn=In.clientX-u.left,Dn=In.clientY-u.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,un.style["will-change"]="all",r=function(){an("delayEnded",o,{evt:e}),Zn.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!xt&&o.nativeDraggable&&(un.draggable=!0),o._triggerDragStart(e,t),ln({sortable:o,name:"choose",originalEvent:e}),Ht(un,i.chosenClass,!0))},i.ignore.split(",").forEach((function(e){qt(un,e.trim(),er)})),Ot(l,"dragover",Jn),Ot(l,"mousemove",Jn),Ot(l,"touchmove",Jn),Ot(l,"mouseup",o._onDrop),Ot(l,"touchend",o._onDrop),Ot(l,"touchcancel",o._onDrop),xt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,un.draggable=!0),an("delayStart",this,{evt:e}),!i.delay||i.delayOnTouchOnly&&!t||this.nativeDraggable&&(Tt||St))r();else{if(Zn.eventCanceled)return void this._onDrop();Ot(l,"mouseup",o._disableDelayedDrag),Ot(l,"touchend",o._disableDelayedDrag),Ot(l,"touchcancel",o._disableDelayedDrag),Ot(l,"mousemove",o._delayedDragTouchMoveHandler),Ot(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&Ot(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){un&&er(un),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Ct(e,"mouseup",this._disableDelayedDrag),Ct(e,"touchend",this._disableDelayedDrag),Ct(e,"touchcancel",this._disableDelayedDrag),Ct(e,"mousemove",this._delayedDragTouchMoveHandler),Ct(e,"touchmove",this._delayedDragTouchMoveHandler),Ct(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?Ot(document,"pointermove",this._onTouchMove):Ot(document,t?"touchmove":"mousemove",this._onTouchMove):(Ot(un,"dragend",this),Ot(dn,"dragstart",this._onDragStart));try{document.selection?rr((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(An=!1,dn&&un){an("dragStarted",this,{evt:t}),this.nativeDraggable&&Ot(document,"dragover",$n);var n=this.options;!e&&Ht(un,n.dragClass,!1),Ht(un,n.ghostClass,!0),Zn.active=this,e&&this._appendGhost(),ln({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(kn){this._lastX=kn.clientX,this._lastY=kn.clientY,Qn();for(var e=document.elementFromPoint(kn.clientX,kn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(kn.clientX,kn.clientY))!==t;)t=e;if(un.parentNode[en]._isOutsideThisEl(e),t)do{if(t[en]){if(t[en]._onDragOver({clientX:kn.clientX,clientY:kn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Vn()}},_onTouchMove:function(e){if(In){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,a=cn&&Xt(cn,!0),i=cn&&a&&a.a,l=cn&&a&&a.d,u=Un&&Cn&&Qt(Cn),s=(o.clientX-In.clientX+r.x)/(i||1)+(u?u[0]-Hn[0]:0)/(i||1),c=(o.clientY-In.clientY+r.y)/(l||1)+(u?u[1]-Hn[1]:0)/(l||1);if(!Zn.active&&!An){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===un)return B(!1);if(g&&a===e.target&&(i=g),i&&(n=Yt(i)),!1!==Kn(dn,a,un,t,i,n,e,!!i))return _(),a.appendChild(un),sn=a,O(),B(!0)}else if(i.parentNode===a){n=Yt(i);var m,v,y,b=un.parentNode!==a,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,a=n?e.width:e.height,i=n?t.left:t.top,l=n?t.right:t.bottom,u=n?t.width:t.height;return r===i||o===l||r+a/2===i+u/2}(un.animated&&un.toRect||t,i.animated&&i.toRect||n,o),E=o?"top":"left",I=jt(i,"top","top")||jt(un,"top","top"),k=I?I.scrollTop:void 0;if(_n!==i&&(v=n[E],Ln=!1,Rn=!w&&l.invertSwap||b),0!==(m=function(e,t,n,r,o,a,i,l){var u=r?e.clientY:e.clientX,s=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!i)if(l&&Onc+s*a/2:ud-On)return-Bn}else if(u>c+s*(1-o)/2&&ud-s*a/2))return u>c+s/2?1:-1;return 0}(e,i,n,o,w?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,Rn,_n===i))){var S=Gt(un);do{S-=m,y=sn.children[S]}while(y&&("none"===Ft(y,"display")||y===cn))}if(0===m||y===i)return B(!1);_n=i,Bn=m;var T=i.nextElementSibling,x=!1,D=Kn(dn,a,un,t,i,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),Fn=!0,setTimeout(tr,30),_(),x&&!T?a.appendChild(un):i.parentNode.insertBefore(un,x?T:i),I&&Zt(I,0,k-I.scrollTop),sn=un.parentNode,void 0===v||Rn||(On=Math.abs(v-Yt(i)[E])),O(),B(!0)}if(a.contains(un))return B(!1)}return!1}function P(l,u){an(l,h,Et({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:i,completed:B,onMove:function(n,r){return Kn(dn,a,un,t,n,Yt(n),e,r)},changed:O},u))}function _(){P("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return P("dragOverCompleted",{insertion:t}),t&&(c?s._hideClone():s._showClone(h),h!==f&&(Ht(un,En?En.options.ghostClass:s.options.ghostClass,!1),Ht(un,l.ghostClass,!0)),En!==h&&h!==Zn.active?En=h:h===Zn.active&&En&&(En=null),f===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){P("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(i===un&&!un.animated||i===a&&!i.animated)&&(_n=null),l.dragoverBubble||e.rootEl||i===document||(un.parentNode[en]._isOutsideThisEl(e.target),!t&&Jn(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function O(){vn=Gt(un),bn=Gt(un,l.draggable),ln({sortable:h,name:"change",toEl:a,newIndex:vn,newDraggableIndex:bn,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Ct(document,"mousemove",this._onTouchMove),Ct(document,"touchmove",this._onTouchMove),Ct(document,"pointermove",this._onTouchMove),Ct(document,"dragover",Jn),Ct(document,"mousemove",Jn),Ct(document,"touchmove",Jn)},_offUpEvents:function(){var e=this.el.ownerDocument;Ct(e,"mouseup",this._onDrop),Ct(e,"touchend",this._onDrop),Ct(e,"pointerup",this._onDrop),Ct(e,"touchcancel",this._onDrop),Ct(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;vn=Gt(un),bn=Gt(un,n.draggable),an("drop",this,{evt:e}),sn=un&&un.parentNode,vn=Gt(un),bn=Gt(un,n.draggable),Zn.eventCanceled||(An=!1,Rn=!1,Ln=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),or(this.cloneId),or(this._dragStartId),this.nativeDraggable&&(Ct(document,"drop",this),Ct(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Dt&&Ft(document.body,"user-select",""),Ft(un,"transform",""),e&&(Pn&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),cn&&cn.parentNode&&cn.parentNode.removeChild(cn),(dn===sn||En&&"clone"!==En.lastPutMode)&&pn&&pn.parentNode&&pn.parentNode.removeChild(pn),un&&(this.nativeDraggable&&Ct(un,"dragend",this),er(un),un.style["will-change"]="",Pn&&!An&&Ht(un,En?En.options.ghostClass:this.options.ghostClass,!1),Ht(un,this.options.chosenClass,!1),ln({sortable:this,name:"unchoose",toEl:sn,newIndex:null,newDraggableIndex:null,originalEvent:e}),dn!==sn?(vn>=0&&(ln({rootEl:sn,name:"add",toEl:sn,fromEl:dn,originalEvent:e}),ln({sortable:this,name:"remove",toEl:sn,originalEvent:e}),ln({rootEl:sn,name:"sort",toEl:sn,fromEl:dn,originalEvent:e}),ln({sortable:this,name:"sort",toEl:sn,originalEvent:e})),En&&En.save()):vn!==mn&&vn>=0&&(ln({sortable:this,name:"update",toEl:sn,originalEvent:e}),ln({sortable:this,name:"sort",toEl:sn,originalEvent:e})),Zn.active&&(null!=vn&&-1!==vn||(vn=mn,bn=yn),ln({sortable:this,name:"end",toEl:sn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){an("nulling",this),dn=un=sn=cn=fn=pn=hn=gn=In=kn=Pn=vn=bn=mn=yn=_n=Bn=En=wn=Zn.dragged=Zn.ghost=Zn.clone=Zn.active=null,Xn.forEach((function(e){e.checked=!0})),Xn.length=Sn=Tn=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":un&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,a=this.options;r { document.getElementById("background-upload").click(); }); - document.getElementById("restore-backup").addEventListener("click", () => { - document.getElementById("backup-upload").click(); - }); document.getElementById("avatar-upload").addEventListener( "change", (e) => { @@ -59,13 +56,7 @@ export default class SettingsIndex { }, false ); - document.getElementById("backup-upload").addEventListener( - "change", - (e) => { - self.handleBackup(e); - }, - false - ); + //handle privacy toggle //document //.getElementById('privacy-toggle') @@ -124,8 +115,9 @@ export default class SettingsIndex { } } handleMailer() { - let mailer = new Mailer(); - mailer.sendMail(); + //let mailer = new Mailer(); + //mailer.sendMail(); + notify.alert("Mail will be active soon. Hang tight", true); } handleThemes(e) { e.stopPropagation(); -- 2.25.1 From dd0e5ce1eed0eef651fc1aefc600125f13db27f2 Mon Sep 17 00:00:00 2001 From: Ro Date: Tue, 27 Apr 2021 01:37:23 +0000 Subject: [PATCH 094/250] updated base theme script --- .../assets/scripts/start.min.js | 378 +----------------- 1 file changed, 2 insertions(+), 376 deletions(-) diff --git a/content/themes/fipamo-default/assets/scripts/start.min.js b/content/themes/fipamo-default/assets/scripts/start.min.js index b108df7..a6af2c0 100644 --- a/content/themes/fipamo-default/assets/scripts/start.min.js +++ b/content/themes/fipamo-default/assets/scripts/start.min.js @@ -1,376 +1,2 @@ -// modules are defined as an array -// [ module function, map of requires ] -// -// map of requires is short require name -> numeric require -// -// anything defined in a previous bundle is accessed via the -// orig method which is the require for previous bundles -parcelRequire = (function (modules, cache, entry, globalName) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof parcelRequire === 'function' && parcelRequire; - var nodeRequire = typeof require === 'function' && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof parcelRequire === 'function' && parcelRequire; - if (!jumped && currentRequire) { - return currentRequire(name, true); - } - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) { - return previousRequire(name, true); - } - - // Try the node require function if it exists. - if (nodeRequire && typeof name === 'string') { - return nodeRequire(name); - } - - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - - localRequire.resolve = resolve; - localRequire.cache = {}; - - var module = cache[name] = new newRequire.Module(name); - - modules[name][0].call(module.exports, localRequire, module, module.exports, this); - } - - return cache[name].exports; - - function localRequire(x){ - return newRequire(localRequire.resolve(x)); - } - - function resolve(x){ - return modules[name][1][x] || x; - } - } - - function Module(moduleName) { - this.id = moduleName; - this.bundle = newRequire; - this.exports = {}; - } - - newRequire.isParcelRequire = true; - newRequire.Module = Module; - newRequire.modules = modules; - newRequire.cache = cache; - newRequire.parent = previousRequire; - newRequire.register = function (id, exports) { - modules[id] = [function (require, module) { - module.exports = exports; - }, {}]; - }; - - var error; - for (var i = 0; i < entry.length; i++) { - try { - newRequire(entry[i]); - } catch (e) { - // Save first error but execute all entries - if (!error) { - error = e; - } - } - } - - if (entry.length) { - // Expose entry point to Node, AMD or browser globals - // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js - var mainExports = newRequire(entry[entry.length - 1]); - - // CommonJS - if (typeof exports === "object" && typeof module !== "undefined") { - module.exports = mainExports; - - // RequireJS - } else if (typeof define === "function" && define.amd) { - define(function () { - return mainExports; - }); - - // + {% endblock %} \ No newline at end of file diff --git a/public/assets/css/dash.css b/public/assets/css/dash.css index 14f31ec..0d34d82 100644 --- a/public/assets/css/dash.css +++ b/public/assets/css/dash.css @@ -2154,18 +2154,19 @@ svg.icons { max-width: 900px; margin: 0 auto; } -#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form { +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset { width: 300px; padding: 0.75em; background: #374857; border-radius: 3px; + color: #f2f1ef; } -#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form input { +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form input, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset input { width: 290px; margin: 0 0 10px 0; height: 30px; } -#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form button { +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form button, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset button { width: 300px; } #dash-index-content #dash-index #dash-index-wrapper #dash-menu { diff --git a/public/assets/scripts/dash.min.js b/public/assets/scripts/dash.min.js index 8233aac..2b81808 100644 --- a/public/assets/scripts/dash.min.js +++ b/public/assets/scripts/dash.min.js @@ -1,11 +1,11 @@ -!function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:D,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:_,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=this;return new Promise((function(t,a){var l=new XMLHttpRequest;if(l.upload.onprogress=i.handleLoadProgress,l.open(n,e,!0),l.onload=function(){if(200==l.status){var e=JSON.parse(l.response);t(e)}else{var n=JSON.parse(l.response);a(n)}},"PUT"==n||n==x)switch(r){case _:l.setRequestHeader("Content-type","application/"+r),l.send(JSON.stringify(o));break;case P:l.send(o)}else l.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),O="POST",C="createNewPage",M="editPage",A="deletePage",N="json",L="x-www-form-urlencoded",R=function(){function t(){var n=this;e(this,t),this.percentComplete=0,this.token=null,this._request("/api/v1/status").then((function(e){e.type===u&&(n.token=e.token)}))}return n(t,[{key:"syncSettings",value:function(e){var t=this;return new Promise((function(n,r){t._request("/api/v1/settings/sync",v,O,N,e).then((function(e){n(e)})).catch((function(e){r(e)}))}))}},{key:"imageUpload",value:function(e,t){var n=this;return new Promise((function(r,o){var i="";switch(e){case"avatar-upload":i="/api/v1/settings/add-avatar";break;case"background-upload":i="/api/v1/settings/add-feature-background";break;default:i="/api/v1/page/add-entry-image"}for(var a=new FormData,l=0;l2&&void 0!==arguments[2]?arguments[2]:"GET",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=this;return new Promise((function(a,l){var s=new XMLHttpRequest;if(s.upload.onprogress=i.handleLoadProgress,s.open(n,e,!0),s.onload=function(){if(200==s.status){var e=JSON.parse(s.response);a(e)}else{var t=JSON.parse(s.response);l(t)}},"PUT"==n||n==O)switch(t!==g&&t!==w&&t!==v&&t!==m&&t!==E&&t!==y&&t!==b&&t!==I||s.setRequestHeader("fipamo-access-token",i.token),r){case N:s.setRequestHeader("Content-type","application/"+r),s.send(JSON.stringify(o));break;case L:s.send(o)}else s.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),H=function(){function t(){e(this,t)}return n(t,[{key:"imgLoad",value:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){200===r.status?t(r.response):n(new Error("Image didn't load successfully; error code:"+r.statusText))},r.onerror=function(){n(new Error("There was a network error."))},r.send()}))}},{key:"loadImage",value:function(e){var t=this;return new Promise((function(n,r){(new Image).crossOrigin="",t.imgLoad(e).then((function(e){var t=window.URL.createObjectURL(e);n(t)}),(function(e){r(e)}))}))}},{key:"formDataToJSON",value:function(e){var t={};return new FormData(e).forEach((function(e,n){t.hasOwnProperty(n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e})),t}}]),t}(),F=function(){function t(){e(this,t)}return n(t,[{key:"cleanString",value:function(e){return e.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g,"").toLowerCase().replace(/[\/_| -]+/g,"-")}},{key:"decodeHTML",value:function(e,t){var n=0,r=0,o=!1;void 0===t&&(t=2),e=e.toString().replace(/</g,"<").replace(/>/g,">");var i={ENT_NOQUOTES:0,ENT_HTML_QUOTE_SINGLE:1,ENT_HTML_QUOTE_DOUBLE:2,ENT_COMPAT:2,ENT_QUOTES:3,ENT_IGNORE:4};if(0===t&&(o=!0),"number"!=typeof t){for(t=[].concat(t),r=0;r]*>/g,"\n"),r.append("id",document.getElementById("post-edit-index").getAttribute("data-index")),r.append("uuid",document.getElementById("post-edit-index").getAttribute("data-uuid")),r.append("layout",document.getElementById("post-edit-index").getAttribute("data-layout")),r.append("current_title",document.getElementById("post-edit-index").getAttribute("data-slug")),r.append("content",i),r.append("title",document.getElementById("post_title").value),r.append("created",document.getElementById("post-date").getAttribute("data-raw")),r.append("slug",(new F).cleanString(document.getElementById("post_title").value)),r.append("tags",document.getElementById("post_tags").value),r.append("menu",document.getElementById("option-menu-pin").getAttribute("data-active")),r.append("featured",document.getElementById("option-feature").getAttribute("data-active")),r.append("published",document.getElementById("option-published").getAttribute("data-active")),null!=e||null!=e)e.type.match("image.*")?r.append("feature_image",e,e.name):n("Not an image file");else{var a=document.getElementById("featured-image").src;null!=a||null!=a?r.append("feature_image",a):r.append("feature_image",null)}t(r)}))}}]),t}(),q="editorDelete",U="editorUploadImage",Y="editorSave",j="editorUpdate";new function t(){e(this,t)};var W=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],z=function(e,t){var n=document.createElement("div");return function(t){var r=function(){var t={position:"absolute",left:-9999,top:0,zIndex:-2e3};return"TEXTAREA"===e.tagName&&W.push("width"),W.forEach((function(n){t[n]=getComputedStyle(e)[n]})),t}();Object.keys(r).forEach((function(e){n.style[e]=r[e]})),n.innerHTML=t,e.parentNode.insertBefore(n,e.nextSibling)}(t),{rect:function(){var e=n.ownerDocument.getElementById("caret-position-marker"),t={left:e.offsetLeft,top:e.offsetTop,height:e.offsetHeight};return n.parentNode.removeChild(n),t}}};function G(e){return(G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Q=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.customPos,n=e.iframe,r=e.noShadowCaret;return n?{iframe:n,window:n.contentWindow,document:n.contentDocument||n.contentWindow.document,noShadowCaret:r,customPos:t}:{window:window,document:document,noShadowCaret:r,customPos:t}},V=function(e){return"object"===G(e)&&null!==e},J=function(e,t){var n=function(){return e.selectionStart},r=function(r){var o=function(e){return e.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"
    ")};(t.customPos||0===t.customPos)&&(r=t.customPos);var i=void 0===r?n():r,a=e.value.slice(0,i),l=e.value.slice(i),s=''.concat(o(a),"");s+='|',s+=''.concat(o(l),"");var u=z(e,s).rect();return u.pos=n(),u};return{getPos:n,setPos:function(t){return e.setSelectionRange(t,t),e},getOffset:function(n){var o=function(e,t){var n=t&&t.window||window,r=t&&t.document||document,o=e.getBoundingClientRect(),i=r.documentElement,a=n.pageXOffset||i.scrollLeft,l=n.pageYOffset||i.scrollTop;return{top:o.top+l,left:o.left+a}}(e),i=r(n);return{top:o.top+i.top+t.document.body.scrollTop,left:o.left+i.left+t.document.body.scrollLeft,height:i.height}},getPosition:r}},$=function(e,t){return function(e){return!!(e.contentEditable?"true"===e.contentEditable:"true"===e.getAttribute("contenteditable"))}(e)?function(e,t){var n=function(){var n=r(),o={height:0,left:0,right:0};if(!n)return o;var i=t.customPos||0===t.customPos;if(n.endOffset-1>0&&n.endContainer!==e||i){var a=n.cloneRange(),l=i?t.customPos:n.endOffset;a.setStart(n.endContainer,l-1<0?0:l-1),a.setEnd(n.endContainer,l);var s=a.getBoundingClientRect();o={height:s.height,left:s.left+s.width,top:s.top},a.detach()}if((!o||o&&0===o.height)&&!t.noShadowCaret){var u=n.cloneRange(),c=t.document.createTextNode("|");u.insertNode(c),u.selectNode(c);var d=u.getBoundingClientRect();o={height:d.height,left:d.left,top:d.top},c.parentNode.removeChild(c),u.detach()}if(o){var f=t.document.documentElement;o.top+=t.window.pageYOffset-(f.clientTop||0),o.left+=t.window.pageXOffset-(f.clientLeft||0)}return o},r=function(){if(t.window.getSelection){var e=t.window.getSelection();return e.rangeCount>0?e.getRangeAt(0):null}},o=function(){var t=r(),n=t.cloneRange();n.selectNodeContents(e),n.setEnd(t.endContainer,t.endOffset);var o=n.toString().length;return n.detach(),o};return{getPos:o,setPos:function(n){var r=t.window.getSelection();if(r){var o=0,i=!1;!function e(a,l){for(var s=0;s=a){i=!0;var c=t.document.createRange();c.setStart(u,a-o),r.removeAllRanges(),r.addRange(c);break}o+=u.length}else e(n,u)}}(n,e)}return e},getPosition:function(){var r=n(),i=o(),a=e.getBoundingClientRect(),l=a.top+t.document.body.scrollTop,s=a.left+t.document.body.scrollLeft;return r.left-=s,r.top-=l,r.pos=i,r},getOffset:n,getRange:r}}(e,t):J(e,t)},Z=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n;V(t)&&(r=t,t=null);var o=Q(r),i=$(e,o);return t||0===t?i.setPos(t):i.getPosition()},K=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(i,t);var r=a(i);function i(t,n){var o;return e(this,i),(o=r.call(this)).textEditor=t,o.fixLimit=n,o.caretPos=null,o.url="",o.setInputs(),window.addEventListener("scroll",(function(){})),o.refresh(),o}return n(i,[{key:"setInputs",value:function(){for(var e=this,t=this,n=document.querySelectorAll(".editor-button"),r=0,o=n.length;r/g)>-1){var o=Z(e.textEditor).pos;t.refresh(),Z(e.textEditor,o)}}))}},{key:"refresh",value:function(){var e=this.textEditor.innerText;e=e.replace(new RegExp("\r?\n","g"),"
    ");var t=document.createElement("div");t.innerText=e,this.textEditor.innerHTML=t.innerText,this.textEditor.style.maxWidth="900px"}},{key:"notify",value:function(e,t){switch(e){case void 0:document.getElementById("submit-update").classList.add("icon-hide"),document.getElementById("submit-good").classList.remove("icon-hide"),document.getElementById("edit-update").classList.remove("submit-start"),document.getElementById("edit-update").classList.add("submit-cool"),setTimeout((function(){document.getElementById("submit-update").classList.remove("icon-hide"),document.getElementById("submit-good").classList.add("icon-hide"),document.getElementById("edit-update").classList.add("submit-start"),document.getElementById("edit-update").classList.remove("submit-cool")}),2e3);break;case void 0:break;case U:var n,r;Z(this.textEditor,this.caretPos),(n=window.getSelection()).rangeCount&&((r=n.getRangeAt(0)).deleteContents(),r.insertNode(document.createTextNode("![image alt text]("+t+" 'image title')"))),this.refresh()}}},{key:"handleEditorOption",value:function(e){var t,n,r;if(e.preventDefault(),(t=window.getSelection()).rangeCount)switch(n=t.getRangeAt(0),r=t.getRangeAt(0).toString(),n.deleteContents(),e.target.id){case"edit-bold":n.insertNode(document.createTextNode("**"+r+"**"));break;case"edit-italic":n.insertNode(document.createTextNode("*"+r+"*"));break;case"edit-strikethrough":n.insertNode(document.createTextNode(""+r+""));break;case"edit-header1":n.insertNode(document.createTextNode("# "+r));break;case"edit-header2":n.insertNode(document.createTextNode("## "+r));break;case"edit-header3":n.insertNode(document.createTextNode("### "+r));break;case"edit-image":this.caretPos=Z(this.textEditor).pos,this.emitEvent(U);break;case"submit-save":case"edit-save":this.emitEvent(Y);break;case"submit-update":case"edit-update":this.emitEvent(j);break;case"edit-link":n.insertNode(document.createTextNode("["+r+"](PASTE URL HERE)"));break;case"edit-delete":this.emitEvent(q)}this.refresh()}}]),i}(function(){function t(){e(this,t),this.listeners=new Map}return n(t,[{key:"addListener",value:function(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}},{key:"removeListener",value:function(e,t){var n,r=this.listeners.get(e);return!!(r&&r.length&&(n=r.reduce((function(e,n,r){return"function"==typeof n&&n===t?e=r:e}),-1))>-1)&&(r.splice(n,1),this.listeners.set(e,r),!0)}},{key:"emitEvent",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r-1}function ae(e,t){return e.apply(null,t)}var le={arr:function(e){return Array.isArray(e)},obj:function(e){return ie(Object.prototype.toString.call(e),"Object")},pth:function(e){return le.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return e.nodeType||le.svg(e)},str:function(e){return"string"==typeof e},fnc:function(e){return"function"==typeof e},und:function(e){return void 0===e},nil:function(e){return le.und(e)||null===e},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return le.hex(e)||le.rgb(e)||le.hsl(e)},key:function(e){return!ee.hasOwnProperty(e)&&!te.hasOwnProperty(e)&&"targets"!==e&&"keyframes"!==e}};function se(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map((function(e){return parseFloat(e)})):[]}function ue(e,t){var n=se(e),r=oe(le.und(n[0])?1:n[0],.1,100),o=oe(le.und(n[1])?100:n[1],.1,100),i=oe(le.und(n[2])?10:n[2],.1,100),a=oe(le.und(n[3])?0:n[3],.1,100),l=Math.sqrt(o/r),s=i/(2*Math.sqrt(o*r)),u=s<1?l*Math.sqrt(1-s*s):0,c=s<1?(s*l-a)/u:-a+l;function d(e){var n=t?t*e/1e3:e;return n=s<1?Math.exp(-n*s*l)*(1*Math.cos(u*n)+c*Math.sin(u*n)):(1+c*n)*Math.exp(-n*l),0===e||1===e?e:1-n}return t?d:function(){var t=re.springs[e];if(t)return t;for(var n=1/6,r=0,o=0;;)if(1===d(r+=n)){if(++o>=16)break}else o=0;var i=r*n*1e3;return re.springs[e]=i,i}}function ce(e){return void 0===e&&(e=10),function(t){return Math.ceil(oe(t,1e-6,1)*e)*(1/e)}}var de,fe,he=function(){var e=.1;function t(e,t){return 1-3*t+3*e}function n(e,t){return 3*t-6*e}function r(e){return 3*e}function o(e,o,i){return((t(o,i)*e+n(o,i))*e+r(o))*e}function i(e,o,i){return 3*t(o,i)*e*e+2*n(o,i)*e+r(o)}return function(t,n,r,a){if(0<=t&&t<=1&&0<=r&&r<=1){var l=new Float32Array(11);if(t!==n||r!==a)for(var s=0;s<11;++s)l[s]=o(s*e,t,r);return function(e){return t===n&&r===a||0===e||1===e?e:o(u(e),n,a)}}function u(n){for(var a=0,s=1;10!==s&&l[s]<=n;++s)a+=e;--s;var u=a+(n-l[s])/(l[s+1]-l[s])*e,c=i(u,t,r);return c>=.001?function(e,t,n,r){for(var a=0;a<4;++a){var l=i(t,n,r);if(0===l)return t;t-=(o(t,n,r)-e)/l}return t}(n,u,t,r):0===c?u:function(e,t,n,r,i){var a,l,s=0;do{(a=o(l=t+(n-t)/2,r,i)-e)>0?n=l:t=l}while(Math.abs(a)>1e-7&&++s<10);return l}(n,a,a+e,t,r)}}}(),pe=(de={linear:function(){return function(e){return e}}},fe={Sine:function(){return function(e){return 1-Math.cos(e*Math.PI/2)}},Circ:function(){return function(e){return 1-Math.sqrt(1-e*e)}},Back:function(){return function(e){return e*e*(3*e-2)}},Bounce:function(){return function(e){for(var t,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}},Elastic:function(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var n=oe(e,1,10),r=oe(t,.1,2);return function(e){return 0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach((function(e,t){fe[e]=function(){return function(e){return Math.pow(e,t+2)}}})),Object.keys(fe).forEach((function(e){var t=fe[e];de["easeIn"+e]=t,de["easeOut"+e]=function(e,n){return function(r){return 1-t(e,n)(1-r)}},de["easeInOut"+e]=function(e,n){return function(r){return r<.5?t(e,n)(2*r)/2:1-t(e,n)(-2*r+2)/2}},de["easeOutIn"+e]=function(e,n){return function(r){return r<.5?(1-t(e,n)(1-2*r))/2:(t(e,n)(2*r-1)+1)/2}}})),de);function ge(e,t){if(le.fnc(e))return e;var n=e.split("(")[0],r=pe[n],o=se(e);switch(n){case"spring":return ue(e,t);case"cubicBezier":return ae(he,o);case"steps":return ae(ce,o);default:return ae(r,o)}}function me(e){try{return document.querySelectorAll(e)}catch(e){return}}function ve(e,t){for(var n=e.length,r=arguments.length>=2?t:void 0,o=[],i=0;i1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(0==a)t=n=r=l;else{var c=l<.5?l*(1+a):l+a-l*a,d=2*l-c;t=u(d,c,i+1/3),n=u(d,c,i),r=u(d,c,i-1/3)}return"rgba("+255*t+","+255*n+","+255*r+","+s+")"}(e):void 0;var t,n}function Te(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function xe(e,t){return le.fnc(e)?e(t.target,t.id,t.total):e}function De(e,t){return e.getAttribute(t)}function _e(e,t,n){if(we([n,"deg","rad","turn"],Te(t)))return t;var r=re.CSS[t+n];if(!le.und(r))return r;var o=document.createElement(e.tagName),i=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;i.appendChild(o),o.style.position="absolute",o.style.width=100+n;var a=100/o.offsetWidth;i.removeChild(o);var l=a*parseFloat(t);return re.CSS[t+n]=l,l}function Pe(e,t,n){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return n?_e(e,o,n):o}}function Be(e,t){return le.dom(e)&&!le.inp(e)&&(!le.nil(De(e,t))||le.svg(e)&&e[t])?"attribute":le.dom(e)&&we(ne,t)?"transform":le.dom(e)&&"transform"!==t&&Pe(e,t)?"css":null!=e[t]?"object":void 0}function Oe(e){if(le.dom(e)){for(var t,n=e.style.transform||"",r=/(\w+)\(([^)]*)\)/g,o=new Map;t=r.exec(n);)o.set(t[1],t[2]);return o}}function Ce(e,t,n,r){var o=ie(t,"scale")?1:0+function(e){return ie(e,"translate")||"perspective"===e?"px":ie(e,"rotate")||ie(e,"skew")?"deg":void 0}(t),i=Oe(e).get(t)||o;return n&&(n.transforms.list.set(t,i),n.transforms.last=t),r?_e(e,i,r):i}function Me(e,t,n,r){switch(Be(e,t)){case"transform":return Ce(e,t,r,n);case"css":return Pe(e,t,n);case"attribute":return De(e,t);default:return e[t]||0}}function Ae(e,t){var n=/^(\*=|\+=|-=)/.exec(e);if(!n)return e;var r=Te(e)||0,o=parseFloat(t),i=parseFloat(e.replace(n[0],""));switch(n[0][0]){case"+":return o+i+r;case"-":return o-i+r;case"*":return o*i+r}}function Ne(e,t){if(le.col(e))return Se(e);if(/\s/g.test(e))return e;var n=Te(e),r=n?e.substr(0,e.length-n.length):e;return t?r+t:r}function Le(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function Re(e){for(var t,n=e.points,r=0,o=0;o0&&(r+=Le(t,i)),t=i}return r}function He(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return function(e){return 2*Math.PI*De(e,"r")}(e);case"rect":return function(e){return 2*De(e,"width")+2*De(e,"height")}(e);case"line":return function(e){return Le({x:De(e,"x1"),y:De(e,"y1")},{x:De(e,"x2"),y:De(e,"y2")})}(e);case"polyline":return Re(e);case"polygon":return function(e){var t=e.points;return Re(e)+Le(t.getItem(t.numberOfItems-1),t.getItem(0))}(e)}}function Fe(e,t){var n=t||{},r=n.el||function(e){for(var t=e.parentNode;le.svg(t)&&le.svg(t.parentNode);)t=t.parentNode;return t}(e),o=r.getBoundingClientRect(),i=De(r,"viewBox"),a=o.width,l=o.height,s=n.viewBox||(i?i.split(" "):[0,0,a,l]);return{el:r,viewBox:s,x:s[0]/1,y:s[1]/1,w:a,h:l,vW:s[2],vH:s[3]}}function Xe(e,t,n){function r(n){void 0===n&&(n=0);var r=t+n>=1?t+n:0;return e.el.getPointAtLength(r)}var o=Fe(e.el,e.svg),i=r(),a=r(-1),l=r(1),s=n?1:o.w/o.vW,u=n?1:o.h/o.vH;switch(e.property){case"x":return(i.x-o.x)*s;case"y":return(i.y-o.y)*u;case"angle":return 180*Math.atan2(l.y-a.y,l.x-a.x)/Math.PI}}function qe(e,t){var n=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=Ne(le.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(n)?r.match(n).map(Number):[0],strings:le.str(e)||t?r.split(n):[]}}function Ue(e){return ve(e?ye(le.arr(e)?e.map(be):be(e)):[],(function(e,t,n){return n.indexOf(e)===t}))}function Ye(e){var t=Ue(e);return t.map((function(e,n){return{target:e,id:n,total:t.length,transforms:{list:Oe(e)}}}))}function je(e,t){var n=Ee(t);if(/^spring/.test(n.easing)&&(n.duration=ue(n.easing)),le.arr(e)){var r=e.length;2===r&&!le.obj(e[0])?e={value:e}:le.fnc(t.duration)||(n.duration=t.duration/r)}var o=le.arr(e)?e:[e];return o.map((function(e,n){var r=le.obj(e)&&!le.pth(e)?e:{value:e};return le.und(r.delay)&&(r.delay=n?0:t.delay),le.und(r.endDelay)&&(r.endDelay=n===o.length-1?t.endDelay:0),r})).map((function(e){return ke(e,n)}))}function We(e,t){var n=[],r=t.keyframes;for(var o in r&&(t=ke(function(e){for(var t=ve(ye(e.map((function(e){return Object.keys(e)}))),(function(e){return le.key(e)})).reduce((function(e,t){return e.indexOf(t)<0&&e.push(t),e}),[]),n={},r=function(r){var o=t[r];n[o]=e.map((function(e){var t={};for(var n in e)le.key(n)?n==o&&(t.value=e[n]):t[n]=e[n];return t}))},o=0;o0?requestAnimationFrame(t):void 0}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",(function(){tt.suspendWhenDocumentHidden&&(et()?e=cancelAnimationFrame(e):(Ze.forEach((function(e){return e._onDocumentVisibility()})),Ke()))})),function(){e||et()&&tt.suspendWhenDocumentHidden||!(Ze.length>0)||(e=requestAnimationFrame(t))}}();function et(){return!!document&&document.hidden}function tt(e){void 0===e&&(e={});var t,n=0,r=0,o=0,i=0,a=null;function l(e){var t=window.Promise&&new Promise((function(e){return a=e}));return e.finished=t,t}var s=function(e){var t=Ie(ee,e),n=Ie(te,e),r=We(n,e),o=Ye(e.targets),i=Ve(o,r),a=Je(i,n),l=$e;return $e++,ke(t,{id:l,children:[],animatables:o,animations:i,duration:a.duration,delay:a.delay,endDelay:a.endDelay})}(e);function u(){var e=s.direction;"alternate"!==e&&(s.direction="normal"!==e?"normal":"reverse"),s.reversed=!s.reversed,t.forEach((function(e){return e.reversed=s.reversed}))}function c(e){return s.reversed?s.duration-e:e}function d(){n=0,r=c(s.currentTime)*(1/tt.speed)}function f(e,t){t&&t.seek(e-t.timelineOffset)}function h(e){for(var t=0,n=s.animations,r=n.length;t2||(y=Math.round(y*h)/h)),p.push(y)}var E=f.length;if(E){m=f[0];for(var I=0;I0&&(s.began=!0,p("begin")),!s.loopBegan&&s.currentTime>0&&(s.loopBegan=!0,p("loopBegin")),v<=g&&0!==s.currentTime&&h(0),(v>=m&&s.currentTime!==d||!d)&&h(d),v>g&&v=d&&(r=0,s.remaining&&!0!==s.remaining&&s.remaining--,s.remaining?(n=o,p("loopComplete"),s.loopBegan=!1,"alternate"===s.direction&&u()):(s.paused=!0,s.completed||(s.completed=!0,p("loopComplete"),p("complete"),!s.passThrough&&"Promise"in window&&(a(),l(s)))))}return l(s),s.reset=function(){var e=s.direction;s.passThrough=!1,s.currentTime=0,s.progress=0,s.paused=!0,s.began=!1,s.loopBegan=!1,s.changeBegan=!1,s.completed=!1,s.changeCompleted=!1,s.reversePlayback=!1,s.reversed="reverse"===e,s.remaining=s.loop,t=s.children;for(var n=i=t.length;n--;)s.children[n].reset();(s.reversed&&!0!==s.loop||"alternate"===e&&1===s.loop)&&s.remaining++,h(s.reversed?s.duration:0)},s._onDocumentVisibility=d,s.set=function(e,t){return Qe(e,t),s},s.tick=function(e){o=e,n||(n=o),g((o+(r-n))*tt.speed)},s.seek=function(e){g(c(e))},s.pause=function(){s.paused=!0,d()},s.play=function(){s.paused&&(s.completed&&s.reset(),s.paused=!1,Ze.push(s),d(),Ke())},s.reverse=function(){u(),s.completed=!s.reversed,d()},s.restart=function(){s.reset(),s.play()},s.remove=function(e){rt(Ue(e),s)},s.reset(),s.autoplay&&s.play(),s}function nt(e,t){for(var n=t.length;n--;)we(e,t[n].animatable.target)&&t.splice(n,1)}function rt(e,t){var n=t.animations,r=t.children;nt(e,n);for(var o=r.length;o--;){var i=r[o],a=i.animations;nt(e,a),a.length||i.children.length||r.splice(o,1)}n.length||r.length||t.pause()}tt.version="3.2.1",tt.speed=1,tt.suspendWhenDocumentHidden=!0,tt.running=Ze,tt.remove=function(e){for(var t=Ue(e),n=Ze.length;n--;){rt(t,Ze[n])}},tt.get=Me,tt.set=Qe,tt.convertPx=_e,tt.path=function(e,t){var n=le.str(e)?me(e)[0]:e,r=t||100;return function(e){return{property:e,el:n,svg:Fe(n),totalLength:He(n)*(r/100)}}},tt.setDashoffset=function(e){var t=He(e);return e.setAttribute("stroke-dasharray",t),t},tt.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||"normal",r=t.easing?ge(t.easing):null,o=t.grid,i=t.axis,a=t.from||0,l="first"===a,s="center"===a,u="last"===a,c=le.arr(e),d=c?parseFloat(e[0]):parseFloat(e),f=c?parseFloat(e[1]):0,h=Te(c?e[1]:e)||0,p=t.start||0+(c?d:0),g=[],m=0;return function(e,t,v){if(l&&(a=0),s&&(a=(v-1)/2),u&&(a=v-1),!g.length){for(var y=0;y-1&&Ze.splice(o,1);for(var l=0;l'].join(""),document.getElementById("featured-image-drop").innerHTML="",document.getElementById("featured-image-drop").appendChild(n)}}(n),o.readAsDataURL(n)}}}},{key:"handleImageUpload",value:function(e,t){var n=this;dt.alert("Uploading Image",null),this.admin.imageUpload(e,t).then((function(e){e.type==d&&n.editor.notify(U,e.url),dt.alert("Image Added to Entry",!0)})).catch((function(){dt.alert("Uh oh. Image not added",!1)}))}}]),t}();ft.uploadFiles=[];var ht=function(){function t(n){e(this,t),this.currentPage=null,this.choosePage(n),this.start()}return n(t,[{key:"start",value:function(){}},{key:"choosePage",value:function(e){switch(this.currentPage="",e){case"edit":case"add":this.currentPage=new ft}}}]),t}(),pt=function(){function t(){e(this,t)}return n(t,[{key:"getInfo",value:function(){var e,t,n=document.getElementById("settings-handle").value,r=document.getElementById("settings-email").value,o=document.getElementById("settings-url").value,i=document.getElementById("settings-title").value,a=document.getElementById("settings-desc").value,l=document.getElementById("render-toggle").getAttribute("data-render"),s=document.getElementById("background").src,u="",c=document.querySelectorAll(".theme-select"),d=document.getElementById("smtp-domain").value,f=document.getElementById("smtp-email").value,h=document.getElementById("smtp-pass").value,p=document.getElementById("mg-domain").value,g=document.getElementById("mg-key").value,m="",v=document.querySelectorAll(".mail-option");for(e=0,t=c.length;e2&&void 0!==arguments[2]?arguments[2]:_,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:B,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=this;return new Promise((function(t,a){var s=new XMLHttpRequest;if(s.upload.onprogress=i.handleLoadProgress,s.open(n,e,!0),s.onload=function(){if(200==s.status){var e=JSON.parse(s.response);t(e)}else{var n=JSON.parse(s.response);a(n)}},"PUT"==n||n==P)switch(r){case B:s.setRequestHeader("Content-type","application/"+r),s.send(JSON.stringify(o));break;case C:s.send(o)}else s.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),M="POST",A="createNewPage",N="editPage",L="deletePage",R="json",H="x-www-form-urlencoded",F=function(){function t(){var n=this;e(this,t),this.percentComplete=0,this.token=null,this._request("/api/v1/status").then((function(e){e.type===u&&(n.token=e.token)}))}return n(t,[{key:"syncSettings",value:function(e){var t=this;return new Promise((function(n,r){t._request("/api/v1/settings/sync",v,M,R,e).then((function(e){n(e)})).catch((function(e){r(e)}))}))}},{key:"imageUpload",value:function(e,t){var n=this;return new Promise((function(r,o){var i="";switch(e){case"avatar-upload":i="/api/v1/settings/add-avatar";break;case"background-upload":i="/api/v1/settings/add-feature-background";break;default:i="/api/v1/page/add-entry-image"}for(var a=new FormData,s=0;s2&&void 0!==arguments[2]?arguments[2]:"GET",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:R,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,i=this;return new Promise((function(a,s){var l=new XMLHttpRequest;if(l.upload.onprogress=i.handleLoadProgress,l.open(n,e,!0),l.onload=function(){if(200==l.status){var e=JSON.parse(l.response);a(e)}else{var t=JSON.parse(l.response);s(t)}},"PUT"==n||n==M)switch(t!==g&&t!==w&&t!==v&&t!==m&&t!==E&&t!==y&&t!==b&&t!==I||l.setRequestHeader("fipamo-access-token",i.token),r){case R:l.setRequestHeader("Content-type","application/"+r),l.send(JSON.stringify(o));break;case H:l.send(o)}else l.send()}))}},{key:"handleLoadProgress",value:function(e){this.percentComplete=Math.ceil(e.loaded/e.total*100)}}]),t}(),X=function(){function t(){e(this,t)}return n(t,[{key:"imgLoad",value:function(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){200===r.status?t(r.response):n(new Error("Image didn't load successfully; error code:"+r.statusText))},r.onerror=function(){n(new Error("There was a network error."))},r.send()}))}},{key:"loadImage",value:function(e){var t=this;return new Promise((function(n,r){(new Image).crossOrigin="",t.imgLoad(e).then((function(e){var t=window.URL.createObjectURL(e);n(t)}),(function(e){r(e)}))}))}},{key:"formDataToJSON",value:function(e){var t={};return new FormData(e).forEach((function(e,n){t.hasOwnProperty(n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e})),t}}]),t}(),q=function(){function t(){e(this,t)}return n(t,[{key:"cleanString",value:function(e){return e.replace(/(^\-+|[^a-zA-Z0-9\/_| -]+|\-+$)/g,"").toLowerCase().replace(/[\/_| -]+/g,"-")}},{key:"decodeHTML",value:function(e,t){var n=0,r=0,o=!1;void 0===t&&(t=2),e=e.toString().replace(/</g,"<").replace(/>/g,">");var i={ENT_NOQUOTES:0,ENT_HTML_QUOTE_SINGLE:1,ENT_HTML_QUOTE_DOUBLE:2,ENT_COMPAT:2,ENT_QUOTES:3,ENT_IGNORE:4};if(0===t&&(o=!0),"number"!=typeof t){for(t=[].concat(t),r=0;r]*>/g,"\n"),r.append("id",document.getElementById("post-edit-index").getAttribute("data-index")),r.append("uuid",document.getElementById("post-edit-index").getAttribute("data-uuid")),r.append("layout",document.getElementById("post-edit-index").getAttribute("data-layout")),r.append("current_title",document.getElementById("post-edit-index").getAttribute("data-slug")),r.append("content",i),r.append("title",document.getElementById("post_title").value),r.append("created",document.getElementById("post-date").getAttribute("data-raw")),r.append("slug",(new q).cleanString(document.getElementById("post_title").value)),r.append("tags",document.getElementById("post_tags").value),r.append("menu",document.getElementById("option-menu-pin").getAttribute("data-active")),r.append("featured",document.getElementById("option-feature").getAttribute("data-active")),r.append("published",document.getElementById("option-published").getAttribute("data-active")),null!=e||null!=e)e.type.match("image.*")?r.append("feature_image",e,e.name):n("Not an image file");else{var a=document.getElementById("featured-image").src;null!=a||null!=a?r.append("feature_image",a):r.append("feature_image",null)}t(r)}))}}]),t}(),Y="editorDelete",j="editorUploadImage",W="editorSave",z="editorUpdate";new function t(){e(this,t)};var G=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],Q=function(e,t){var n=document.createElement("div");return function(t){var r=function(){var t={position:"absolute",left:-9999,top:0,zIndex:-2e3};return"TEXTAREA"===e.tagName&&G.push("width"),G.forEach((function(n){t[n]=getComputedStyle(e)[n]})),t}();Object.keys(r).forEach((function(e){n.style[e]=r[e]})),n.innerHTML=t,e.parentNode.insertBefore(n,e.nextSibling)}(t),{rect:function(){var e=n.ownerDocument.getElementById("caret-position-marker"),t={left:e.offsetLeft,top:e.offsetTop,height:e.offsetHeight};return n.parentNode.removeChild(n),t}}};function V(e){return(V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var J=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.customPos,n=e.iframe,r=e.noShadowCaret;return n?{iframe:n,window:n.contentWindow,document:n.contentDocument||n.contentWindow.document,noShadowCaret:r,customPos:t}:{window:window,document:document,noShadowCaret:r,customPos:t}},$=function(e){return"object"===V(e)&&null!==e},Z=function(e,t){var n=function(){return e.selectionStart},r=function(r){var o=function(e){return e.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"
    ")};(t.customPos||0===t.customPos)&&(r=t.customPos);var i=void 0===r?n():r,a=e.value.slice(0,i),s=e.value.slice(i),l=''.concat(o(a),"");l+='|',l+=''.concat(o(s),"");var u=Q(e,l).rect();return u.pos=n(),u};return{getPos:n,setPos:function(t){return e.setSelectionRange(t,t),e},getOffset:function(n){var o=function(e,t){var n=t&&t.window||window,r=t&&t.document||document,o=e.getBoundingClientRect(),i=r.documentElement,a=n.pageXOffset||i.scrollLeft,s=n.pageYOffset||i.scrollTop;return{top:o.top+s,left:o.left+a}}(e),i=r(n);return{top:o.top+i.top+t.document.body.scrollTop,left:o.left+i.left+t.document.body.scrollLeft,height:i.height}},getPosition:r}},K=function(e,t){return function(e){return!!(e.contentEditable?"true"===e.contentEditable:"true"===e.getAttribute("contenteditable"))}(e)?function(e,t){var n=function(){var n=r(),o={height:0,left:0,right:0};if(!n)return o;var i=t.customPos||0===t.customPos;if(n.endOffset-1>0&&n.endContainer!==e||i){var a=n.cloneRange(),s=i?t.customPos:n.endOffset;a.setStart(n.endContainer,s-1<0?0:s-1),a.setEnd(n.endContainer,s);var l=a.getBoundingClientRect();o={height:l.height,left:l.left+l.width,top:l.top},a.detach()}if((!o||o&&0===o.height)&&!t.noShadowCaret){var u=n.cloneRange(),c=t.document.createTextNode("|");u.insertNode(c),u.selectNode(c);var d=u.getBoundingClientRect();o={height:d.height,left:d.left,top:d.top},c.parentNode.removeChild(c),u.detach()}if(o){var f=t.document.documentElement;o.top+=t.window.pageYOffset-(f.clientTop||0),o.left+=t.window.pageXOffset-(f.clientLeft||0)}return o},r=function(){if(t.window.getSelection){var e=t.window.getSelection();return e.rangeCount>0?e.getRangeAt(0):null}},o=function(){var t=r(),n=t.cloneRange();n.selectNodeContents(e),n.setEnd(t.endContainer,t.endOffset);var o=n.toString().length;return n.detach(),o};return{getPos:o,setPos:function(n){var r=t.window.getSelection();if(r){var o=0,i=!1;!function e(a,s){for(var l=0;l=a){i=!0;var c=t.document.createRange();c.setStart(u,a-o),r.removeAllRanges(),r.addRange(c);break}o+=u.length}else e(n,u)}}(n,e)}return e},getPosition:function(){var r=n(),i=o(),a=e.getBoundingClientRect(),s=a.top+t.document.body.scrollTop,l=a.left+t.document.body.scrollLeft;return r.left-=l,r.top-=s,r.pos=i,r},getOffset:n,getRange:r}}(e,t):Z(e,t)},ee=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n;$(t)&&(r=t,t=null);var o=J(r),i=K(e,o);return t||0===t?i.setPos(t):i.getPosition()},te=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(i,t);var r=a(i);function i(t,n){var o;return e(this,i),(o=r.call(this)).textEditor=t,o.fixLimit=n,o.caretPos=null,o.url="",o.setInputs(),window.addEventListener("scroll",(function(){})),o.refresh(),o}return n(i,[{key:"setInputs",value:function(){for(var e=this,t=this,n=document.querySelectorAll(".editor-button"),r=0,o=n.length;r/g)>-1){var o=ee(e.textEditor).pos;t.refresh(),ee(e.textEditor,o)}}))}},{key:"refresh",value:function(){var e=this.textEditor.innerText;e=e.replace(new RegExp("\r?\n","g"),"
    ");var t=document.createElement("div");t.innerText=e,this.textEditor.innerHTML=t.innerText,this.textEditor.style.maxWidth="900px"}},{key:"notify",value:function(e,t){switch(e){case void 0:document.getElementById("submit-update").classList.add("icon-hide"),document.getElementById("submit-good").classList.remove("icon-hide"),document.getElementById("edit-update").classList.remove("submit-start"),document.getElementById("edit-update").classList.add("submit-cool"),setTimeout((function(){document.getElementById("submit-update").classList.remove("icon-hide"),document.getElementById("submit-good").classList.add("icon-hide"),document.getElementById("edit-update").classList.add("submit-start"),document.getElementById("edit-update").classList.remove("submit-cool")}),2e3);break;case void 0:break;case j:var n,r;ee(this.textEditor,this.caretPos),(n=window.getSelection()).rangeCount&&((r=n.getRangeAt(0)).deleteContents(),r.insertNode(document.createTextNode("![image alt text]("+t+" 'image title')"))),this.refresh()}}},{key:"handleEditorOption",value:function(e){var t,n,r;if(e.preventDefault(),(t=window.getSelection()).rangeCount)switch(n=t.getRangeAt(0),r=t.getRangeAt(0).toString(),n.deleteContents(),e.target.id){case"edit-bold":n.insertNode(document.createTextNode("**"+r+"**"));break;case"edit-italic":n.insertNode(document.createTextNode("*"+r+"*"));break;case"edit-strikethrough":n.insertNode(document.createTextNode(""+r+""));break;case"edit-header1":n.insertNode(document.createTextNode("# "+r));break;case"edit-header2":n.insertNode(document.createTextNode("## "+r));break;case"edit-header3":n.insertNode(document.createTextNode("### "+r));break;case"edit-image":this.caretPos=ee(this.textEditor).pos,this.emitEvent(j);break;case"submit-save":case"edit-save":this.emitEvent(W);break;case"submit-update":case"edit-update":this.emitEvent(z);break;case"edit-link":n.insertNode(document.createTextNode("["+r+"](PASTE URL HERE)"));break;case"edit-delete":this.emitEvent(Y)}this.refresh()}}]),i}(function(){function t(){e(this,t),this.listeners=new Map}return n(t,[{key:"addListener",value:function(e,t){this.listeners.has(e)||this.listeners.set(e,[]),this.listeners.get(e).push(t)}},{key:"removeListener",value:function(e,t){var n,r=this.listeners.get(e);return!!(r&&r.length&&(n=r.reduce((function(e,n,r){return"function"==typeof n&&n===t?e=r:e}),-1))>-1)&&(r.splice(n,1),this.listeners.set(e,r),!0)}},{key:"emitEvent",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r-1}function le(e,t){return e.apply(null,t)}var ue={arr:function(e){return Array.isArray(e)},obj:function(e){return se(Object.prototype.toString.call(e),"Object")},pth:function(e){return ue.obj(e)&&e.hasOwnProperty("totalLength")},svg:function(e){return e instanceof SVGElement},inp:function(e){return e instanceof HTMLInputElement},dom:function(e){return e.nodeType||ue.svg(e)},str:function(e){return"string"==typeof e},fnc:function(e){return"function"==typeof e},und:function(e){return void 0===e},nil:function(e){return ue.und(e)||null===e},hex:function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},rgb:function(e){return/^rgb/.test(e)},hsl:function(e){return/^hsl/.test(e)},col:function(e){return ue.hex(e)||ue.rgb(e)||ue.hsl(e)},key:function(e){return!ne.hasOwnProperty(e)&&!re.hasOwnProperty(e)&&"targets"!==e&&"keyframes"!==e}};function ce(e){var t=/\(([^)]+)\)/.exec(e);return t?t[1].split(",").map((function(e){return parseFloat(e)})):[]}function de(e,t){var n=ce(e),r=ae(ue.und(n[0])?1:n[0],.1,100),o=ae(ue.und(n[1])?100:n[1],.1,100),i=ae(ue.und(n[2])?10:n[2],.1,100),a=ae(ue.und(n[3])?0:n[3],.1,100),s=Math.sqrt(o/r),l=i/(2*Math.sqrt(o*r)),u=l<1?s*Math.sqrt(1-l*l):0,c=l<1?(l*s-a)/u:-a+s;function d(e){var n=t?t*e/1e3:e;return n=l<1?Math.exp(-n*l*s)*(1*Math.cos(u*n)+c*Math.sin(u*n)):(1+c*n)*Math.exp(-n*s),0===e||1===e?e:1-n}return t?d:function(){var t=ie.springs[e];if(t)return t;for(var n=1/6,r=0,o=0;;)if(1===d(r+=n)){if(++o>=16)break}else o=0;var i=r*n*1e3;return ie.springs[e]=i,i}}function fe(e){return void 0===e&&(e=10),function(t){return Math.ceil(ae(t,1e-6,1)*e)*(1/e)}}var he,pe,ge=function(){var e=.1;function t(e,t){return 1-3*t+3*e}function n(e,t){return 3*t-6*e}function r(e){return 3*e}function o(e,o,i){return((t(o,i)*e+n(o,i))*e+r(o))*e}function i(e,o,i){return 3*t(o,i)*e*e+2*n(o,i)*e+r(o)}return function(t,n,r,a){if(0<=t&&t<=1&&0<=r&&r<=1){var s=new Float32Array(11);if(t!==n||r!==a)for(var l=0;l<11;++l)s[l]=o(l*e,t,r);return function(e){return t===n&&r===a||0===e||1===e?e:o(u(e),n,a)}}function u(n){for(var a=0,l=1;10!==l&&s[l]<=n;++l)a+=e;--l;var u=a+(n-s[l])/(s[l+1]-s[l])*e,c=i(u,t,r);return c>=.001?function(e,t,n,r){for(var a=0;a<4;++a){var s=i(t,n,r);if(0===s)return t;t-=(o(t,n,r)-e)/s}return t}(n,u,t,r):0===c?u:function(e,t,n,r,i){var a,s,l=0;do{(a=o(s=t+(n-t)/2,r,i)-e)>0?n=s:t=s}while(Math.abs(a)>1e-7&&++l<10);return s}(n,a,a+e,t,r)}}}(),me=(he={linear:function(){return function(e){return e}}},pe={Sine:function(){return function(e){return 1-Math.cos(e*Math.PI/2)}},Circ:function(){return function(e){return 1-Math.sqrt(1-e*e)}},Back:function(){return function(e){return e*e*(3*e-2)}},Bounce:function(){return function(e){for(var t,n=4;e<((t=Math.pow(2,--n))-1)/11;);return 1/Math.pow(4,3-n)-7.5625*Math.pow((3*t-2)/22-e,2)}},Elastic:function(e,t){void 0===e&&(e=1),void 0===t&&(t=.5);var n=ae(e,1,10),r=ae(t,.1,2);return function(e){return 0===e||1===e?e:-n*Math.pow(2,10*(e-1))*Math.sin((e-1-r/(2*Math.PI)*Math.asin(1/n))*(2*Math.PI)/r)}}},["Quad","Cubic","Quart","Quint","Expo"].forEach((function(e,t){pe[e]=function(){return function(e){return Math.pow(e,t+2)}}})),Object.keys(pe).forEach((function(e){var t=pe[e];he["easeIn"+e]=t,he["easeOut"+e]=function(e,n){return function(r){return 1-t(e,n)(1-r)}},he["easeInOut"+e]=function(e,n){return function(r){return r<.5?t(e,n)(2*r)/2:1-t(e,n)(-2*r+2)/2}},he["easeOutIn"+e]=function(e,n){return function(r){return r<.5?(1-t(e,n)(1-2*r))/2:(t(e,n)(2*r-1)+1)/2}}})),he);function ve(e,t){if(ue.fnc(e))return e;var n=e.split("(")[0],r=me[n],o=ce(e);switch(n){case"spring":return de(e,t);case"cubicBezier":return le(ge,o);case"steps":return le(fe,o);default:return le(r,o)}}function ye(e){try{return document.querySelectorAll(e)}catch(e){return}}function be(e,t){for(var n=e.length,r=arguments.length>=2?t:void 0,o=[],i=0;i1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(0==a)t=n=r=s;else{var c=s<.5?s*(1+a):s+a-s*a,d=2*s-c;t=u(d,c,i+1/3),n=u(d,c,i),r=u(d,c,i-1/3)}return"rgba("+255*t+","+255*n+","+255*r+","+l+")"}(e):void 0;var t,n}function De(e){var t=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(e);if(t)return t[1]}function Pe(e,t){return ue.fnc(e)?e(t.target,t.id,t.total):e}function _e(e,t){return e.getAttribute(t)}function Be(e,t,n){if(Ie([n,"deg","rad","turn"],De(t)))return t;var r=ie.CSS[t+n];if(!ue.und(r))return r;var o=document.createElement(e.tagName),i=e.parentNode&&e.parentNode!==document?e.parentNode:document.body;i.appendChild(o),o.style.position="absolute",o.style.width=100+n;var a=100/o.offsetWidth;i.removeChild(o);var s=a*parseFloat(t);return ie.CSS[t+n]=s,s}function Ce(e,t,n){if(t in e.style){var r=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),o=e.style[t]||getComputedStyle(e).getPropertyValue(r)||"0";return n?Be(e,o,n):o}}function Oe(e,t){return ue.dom(e)&&!ue.inp(e)&&(!ue.nil(_e(e,t))||ue.svg(e)&&e[t])?"attribute":ue.dom(e)&&Ie(oe,t)?"transform":ue.dom(e)&&"transform"!==t&&Ce(e,t)?"css":null!=e[t]?"object":void 0}function Me(e){if(ue.dom(e)){for(var t,n=e.style.transform||"",r=/(\w+)\(([^)]*)\)/g,o=new Map;t=r.exec(n);)o.set(t[1],t[2]);return o}}function Ae(e,t,n,r){var o=se(t,"scale")?1:0+function(e){return se(e,"translate")||"perspective"===e?"px":se(e,"rotate")||se(e,"skew")?"deg":void 0}(t),i=Me(e).get(t)||o;return n&&(n.transforms.list.set(t,i),n.transforms.last=t),r?Be(e,i,r):i}function Ne(e,t,n,r){switch(Oe(e,t)){case"transform":return Ae(e,t,r,n);case"css":return Ce(e,t,n);case"attribute":return _e(e,t);default:return e[t]||0}}function Le(e,t){var n=/^(\*=|\+=|-=)/.exec(e);if(!n)return e;var r=De(e)||0,o=parseFloat(t),i=parseFloat(e.replace(n[0],""));switch(n[0][0]){case"+":return o+i+r;case"-":return o-i+r;case"*":return o*i+r}}function Re(e,t){if(ue.col(e))return xe(e);if(/\s/g.test(e))return e;var n=De(e),r=n?e.substr(0,e.length-n.length):e;return t?r+t:r}function He(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function Fe(e){for(var t,n=e.points,r=0,o=0;o0&&(r+=He(t,i)),t=i}return r}function Xe(e){if(e.getTotalLength)return e.getTotalLength();switch(e.tagName.toLowerCase()){case"circle":return function(e){return 2*Math.PI*_e(e,"r")}(e);case"rect":return function(e){return 2*_e(e,"width")+2*_e(e,"height")}(e);case"line":return function(e){return He({x:_e(e,"x1"),y:_e(e,"y1")},{x:_e(e,"x2"),y:_e(e,"y2")})}(e);case"polyline":return Fe(e);case"polygon":return function(e){var t=e.points;return Fe(e)+He(t.getItem(t.numberOfItems-1),t.getItem(0))}(e)}}function qe(e,t){var n=t||{},r=n.el||function(e){for(var t=e.parentNode;ue.svg(t)&&ue.svg(t.parentNode);)t=t.parentNode;return t}(e),o=r.getBoundingClientRect(),i=_e(r,"viewBox"),a=o.width,s=o.height,l=n.viewBox||(i?i.split(" "):[0,0,a,s]);return{el:r,viewBox:l,x:l[0]/1,y:l[1]/1,w:a,h:s,vW:l[2],vH:l[3]}}function Ue(e,t,n){function r(n){void 0===n&&(n=0);var r=t+n>=1?t+n:0;return e.el.getPointAtLength(r)}var o=qe(e.el,e.svg),i=r(),a=r(-1),s=r(1),l=n?1:o.w/o.vW,u=n?1:o.h/o.vH;switch(e.property){case"x":return(i.x-o.x)*l;case"y":return(i.y-o.y)*u;case"angle":return 180*Math.atan2(s.y-a.y,s.x-a.x)/Math.PI}}function Ye(e,t){var n=/[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/g,r=Re(ue.pth(e)?e.totalLength:e,t)+"";return{original:r,numbers:r.match(n)?r.match(n).map(Number):[0],strings:ue.str(e)||t?r.split(n):[]}}function je(e){return be(e?we(ue.arr(e)?e.map(Ee):Ee(e)):[],(function(e,t,n){return n.indexOf(e)===t}))}function We(e){var t=je(e);return t.map((function(e,n){return{target:e,id:n,total:t.length,transforms:{list:Me(e)}}}))}function ze(e,t){var n=ke(t);if(/^spring/.test(n.easing)&&(n.duration=de(n.easing)),ue.arr(e)){var r=e.length;2===r&&!ue.obj(e[0])?e={value:e}:ue.fnc(t.duration)||(n.duration=t.duration/r)}var o=ue.arr(e)?e:[e];return o.map((function(e,n){var r=ue.obj(e)&&!ue.pth(e)?e:{value:e};return ue.und(r.delay)&&(r.delay=n?0:t.delay),ue.und(r.endDelay)&&(r.endDelay=n===o.length-1?t.endDelay:0),r})).map((function(e){return Te(e,n)}))}function Ge(e,t){var n=[],r=t.keyframes;for(var o in r&&(t=Te(function(e){for(var t=be(we(e.map((function(e){return Object.keys(e)}))),(function(e){return ue.key(e)})).reduce((function(e,t){return e.indexOf(t)<0&&e.push(t),e}),[]),n={},r=function(r){var o=t[r];n[o]=e.map((function(e){var t={};for(var n in e)ue.key(n)?n==o&&(t.value=e[n]):t[n]=e[n];return t}))},o=0;o0?requestAnimationFrame(t):void 0}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",(function(){rt.suspendWhenDocumentHidden&&(nt()?e=cancelAnimationFrame(e):(et.forEach((function(e){return e._onDocumentVisibility()})),tt()))})),function(){e||nt()&&rt.suspendWhenDocumentHidden||!(et.length>0)||(e=requestAnimationFrame(t))}}();function nt(){return!!document&&document.hidden}function rt(e){void 0===e&&(e={});var t,n=0,r=0,o=0,i=0,a=null;function s(e){var t=window.Promise&&new Promise((function(e){return a=e}));return e.finished=t,t}var l=function(e){var t=Se(ne,e),n=Se(re,e),r=Ge(n,e),o=We(e.targets),i=$e(o,r),a=Ze(i,n),s=Ke;return Ke++,Te(t,{id:s,children:[],animatables:o,animations:i,duration:a.duration,delay:a.delay,endDelay:a.endDelay})}(e);function u(){var e=l.direction;"alternate"!==e&&(l.direction="normal"!==e?"normal":"reverse"),l.reversed=!l.reversed,t.forEach((function(e){return e.reversed=l.reversed}))}function c(e){return l.reversed?l.duration-e:e}function d(){n=0,r=c(l.currentTime)*(1/rt.speed)}function f(e,t){t&&t.seek(e-t.timelineOffset)}function h(e){for(var t=0,n=l.animations,r=n.length;t2||(y=Math.round(y*h)/h)),p.push(y)}var E=f.length;if(E){m=f[0];for(var I=0;I0&&(l.began=!0,p("begin")),!l.loopBegan&&l.currentTime>0&&(l.loopBegan=!0,p("loopBegin")),v<=g&&0!==l.currentTime&&h(0),(v>=m&&l.currentTime!==d||!d)&&h(d),v>g&&v=d&&(r=0,l.remaining&&!0!==l.remaining&&l.remaining--,l.remaining?(n=o,p("loopComplete"),l.loopBegan=!1,"alternate"===l.direction&&u()):(l.paused=!0,l.completed||(l.completed=!0,p("loopComplete"),p("complete"),!l.passThrough&&"Promise"in window&&(a(),s(l)))))}return s(l),l.reset=function(){var e=l.direction;l.passThrough=!1,l.currentTime=0,l.progress=0,l.paused=!0,l.began=!1,l.loopBegan=!1,l.changeBegan=!1,l.completed=!1,l.changeCompleted=!1,l.reversePlayback=!1,l.reversed="reverse"===e,l.remaining=l.loop,t=l.children;for(var n=i=t.length;n--;)l.children[n].reset();(l.reversed&&!0!==l.loop||"alternate"===e&&1===l.loop)&&l.remaining++,h(l.reversed?l.duration:0)},l._onDocumentVisibility=d,l.set=function(e,t){return Je(e,t),l},l.tick=function(e){o=e,n||(n=o),g((o+(r-n))*rt.speed)},l.seek=function(e){g(c(e))},l.pause=function(){l.paused=!0,d()},l.play=function(){l.paused&&(l.completed&&l.reset(),l.paused=!1,et.push(l),d(),tt())},l.reverse=function(){u(),l.completed=!l.reversed,d()},l.restart=function(){l.reset(),l.play()},l.remove=function(e){it(je(e),l)},l.reset(),l.autoplay&&l.play(),l}function ot(e,t){for(var n=t.length;n--;)Ie(e,t[n].animatable.target)&&t.splice(n,1)}function it(e,t){var n=t.animations,r=t.children;ot(e,n);for(var o=r.length;o--;){var i=r[o],a=i.animations;ot(e,a),a.length||i.children.length||r.splice(o,1)}n.length||r.length||t.pause()}rt.version="3.2.1",rt.speed=1,rt.suspendWhenDocumentHidden=!0,rt.running=et,rt.remove=function(e){for(var t=je(e),n=et.length;n--;){it(t,et[n])}},rt.get=Ne,rt.set=Je,rt.convertPx=Be,rt.path=function(e,t){var n=ue.str(e)?ye(e)[0]:e,r=t||100;return function(e){return{property:e,el:n,svg:qe(n),totalLength:Xe(n)*(r/100)}}},rt.setDashoffset=function(e){var t=Xe(e);return e.setAttribute("stroke-dasharray",t),t},rt.stagger=function(e,t){void 0===t&&(t={});var n=t.direction||"normal",r=t.easing?ve(t.easing):null,o=t.grid,i=t.axis,a=t.from||0,s="first"===a,l="center"===a,u="last"===a,c=ue.arr(e),d=c?parseFloat(e[0]):parseFloat(e),f=c?parseFloat(e[1]):0,h=De(c?e[1]:e)||0,p=t.start||0+(c?d:0),g=[],m=0;return function(e,t,v){if(s&&(a=0),l&&(a=(v-1)/2),u&&(a=v-1),!g.length){for(var y=0;y-1&&et.splice(o,1);for(var s=0;s'].join(""),document.getElementById("featured-image-drop").innerHTML="",document.getElementById("featured-image-drop").appendChild(n)}}(n),o.readAsDataURL(n)}}}},{key:"handleImageUpload",value:function(e,t){var n=this;ht.alert("Uploading Image",null),this.admin.imageUpload(e,t).then((function(e){e.type==d&&n.editor.notify(j,e.url),ht.alert("Image Added to Entry",!0)})).catch((function(){ht.alert("Uh oh. Image not added",!1)}))}}]),t}();pt.uploadFiles=[];var gt=function(){function t(n){e(this,t),this.currentPage=null,this.choosePage(n),this.start()}return n(t,[{key:"start",value:function(){}},{key:"choosePage",value:function(e){switch(this.currentPage="",e){case"edit":case"add":this.currentPage=new pt}}}]),t}(),mt=function(){function t(){e(this,t)}return n(t,[{key:"getInfo",value:function(){var e,t,n=document.getElementById("settings-handle").value,r=document.getElementById("settings-email").value,o=document.getElementById("settings-url").value,i=document.getElementById("settings-title").value,a=document.getElementById("settings-desc").value,s=document.getElementById("render-toggle").getAttribute("data-render"),l=document.getElementById("background").src,u="",c=document.querySelectorAll(".theme-select"),d=document.getElementById("smtp-domain").value,f=document.getElementById("smtp-email").value,h=document.getElementById("smtp-pass").value,p=document.getElementById("mg-domain").value,g=document.getElementById("mg-key").value,m="",v=document.querySelectorAll(".mail-option");for(e=0,t=c.length;e * @author owenm * @license MIT */ -function wt(e){return(wt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function It(){return(It=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Tt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var xt=Tt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Dt=Tt(/Edge/i),_t=Tt(/firefox/i),Pt=Tt(/safari/i)&&!Tt(/chrome/i)&&!Tt(/android/i),Bt=Tt(/iP(ad|od|hone)/i),Ot=Tt(/chrome/i)&&Tt(/android/i),Ct={capture:!1,passive:!1};function Mt(e,t,n){e.addEventListener(t,n,!xt&&Ct)}function At(e,t,n){e.removeEventListener(t,n,!xt&&Ct)}function Nt(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Lt(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Rt(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Nt(e,t):Nt(e,t))||r&&e===n)return e;if(e===n)break}while(e=Lt(e))}return null}var Ht,Ft=/\s+/g;function Xt(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(Ft," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(Ft," ")}}function qt(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function Ut(e,t){var n="";if("string"==typeof e)n=e;else do{var r=qt(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Yt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,i=r.length;if(n)for(;o=i:o<=i))return r;if(r===jt())break;r=$t(r,!1)}return!1}function Gt(e,t,n){for(var r=0,o=0,i=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=St(n,["evt"]);ln.pluginEvent.bind(er)(e,t,kt({dragEl:cn,parentEl:dn,ghostEl:fn,rootEl:hn,nextEl:pn,lastDownEl:gn,cloneEl:mn,cloneHidden:vn,dragStarted:Bn,putSortable:kn,activeSortable:er.active,originalEvent:r,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En,hideGhostForTarget:Jn,unhideGhostForTarget:$n,cloneNowHidden:function(){vn=!0},cloneNowShown:function(){vn=!1},dispatchSortableEvent:function(e){un({sortable:t,name:e,originalEvent:r})}},o))};function un(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,i=e.cloneEl,a=e.toEl,l=e.fromEl,s=e.oldIndex,u=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[nn]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||xt||Dt?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=l||n,g.item=o||n,g.clone=i,g.oldIndex=s,g.newIndex=u,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=kt({},p,ln.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(kt({putSortable:kn,cloneEl:mn,targetEl:cn,rootEl:hn,oldIndex:yn,oldDraggableIndex:wn,newIndex:bn,newDraggableIndex:En},e))}var cn,dn,fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,_n,Pn,Bn,On,Cn,Mn,An,Nn=!1,Ln=!1,Rn=[],Hn=!1,Fn=!1,Xn=[],qn=!1,Un=[],Yn="undefined"!=typeof document,jn=Bt,Wn=Dt||xt?"cssFloat":"float",zn=Yn&&!Ot&&!Bt&&"draggable"in document.createElement("div"),Gn=function(){if(Yn){if(xt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),Qn=function(e,t){var n=qt(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Gt(e,0,t),i=Gt(e,1,t),a=o&&qt(o),l=i&&qt(i),s=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+Wt(o).width,u=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Wt(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a.float&&"none"!==a.float){var c="left"===a.float?"left":"right";return!i||"both"!==l.clear&&l.clear!==c?"horizontal":"vertical"}return o&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||s>=r&&"none"===n[Wn]||i&&"none"===n[Wn]&&s+u>r)?"vertical":"horizontal"},Vn=function(e){function t(e,n){return function(r,o,i,a){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||l))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,i,a),n)(r,o,i,a);var s=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===s||e.join&&e.indexOf(s)>-1}}var n={},r=e.group;r&&"object"==wt(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Jn=function(){!Gn&&fn&&qt(fn,"display","none")},$n=function(){!Gn&&fn&&qt(fn,"display","")};Yn&&document.addEventListener("click",(function(e){if(Ln)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Ln=!1,!1}),!0);var Zn=function(e){if(cn){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,i=e.clientY,Rn.some((function(e){if(!Qt(e)){var t=Wt(e),n=e[nn].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,l=i>=t.top-n&&i<=t.bottom+n;return n&&r&&l?a=e:void 0}})),a);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[nn]._onDragOver(n)}}var o,i,a},Kn=function(e){cn&&cn.parentNode[nn]._isOutsideThisEl(e.target)};function er(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=It({},t),e[nn]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Qn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==er.supportPointer&&"PointerEvent"in window&&!Pt,emptyInsertThreshold:5};for(var r in ln.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in Vn(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&zn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Mt(e,"pointerdown",this._onTapStart):(Mt(e,"mousedown",this._onTapStart),Mt(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Mt(e,"dragover",this),Mt(e,"dragenter",this)),Rn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),It(this,rn())}function tr(e,t,n,r,o,i,a,l){var s,u,c=e[nn],d=c.options.onMove;return!window.CustomEvent||xt||Dt?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=t,s.from=e,s.dragged=n,s.draggedRect=r,s.related=o||t,s.relatedRect=i||Wt(t),s.willInsertAfter=l,s.originalEvent=a,e.dispatchEvent(s),d&&(u=d.call(c,s,a)),u}function nr(e){e.draggable=!1}function rr(){qn=!1}function or(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function ir(e){return setTimeout(e,0)}function ar(e){return clearTimeout(e)}er.prototype={constructor:er,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(On=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,cn):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,i=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,l=(a||e).target,s=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||l,u=r.filter;if(function(e){Un.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&Un.push(r)}}(n),!cn&&!(/mousedown|pointerdown/.test(i)&&0!==e.button||r.disabled)&&!s.isContentEditable&&(this.nativeDraggable||!Pt||!l||"SELECT"!==l.tagName.toUpperCase())&&!((l=Rt(l,r.draggable,n,!1))&&l.animated||gn===l)){if(yn=Vt(l),wn=Vt(l,r.draggable),"function"==typeof u){if(u.call(this,e,l,this))return un({sortable:t,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),sn("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(u&&(u=u.split(",").some((function(r){if(r=Rt(s,r.trim(),n,!1))return un({sortable:t,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),sn("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Rt(s,r.handle,n,!1)||this._prepareDragStart(e,a,l)}}},_prepareDragStart:function(e,t,n){var r,o=this,i=o.el,a=o.options,l=i.ownerDocument;if(n&&!cn&&n.parentNode===i){var s=Wt(n);if(hn=i,dn=(cn=n).parentNode,pn=cn.nextSibling,gn=n,In=a.group,er.dragged=cn,Sn={target:cn,clientX:(t||e).clientX,clientY:(t||e).clientY},_n=Sn.clientX-s.left,Pn=Sn.clientY-s.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,cn.style["will-change"]="all",r=function(){sn("delayEnded",o,{evt:e}),er.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!_t&&o.nativeDraggable&&(cn.draggable=!0),o._triggerDragStart(e,t),un({sortable:o,name:"choose",originalEvent:e}),Xt(cn,a.chosenClass,!0))},a.ignore.split(",").forEach((function(e){Yt(cn,e.trim(),nr)})),Mt(l,"dragover",Zn),Mt(l,"mousemove",Zn),Mt(l,"touchmove",Zn),Mt(l,"mouseup",o._onDrop),Mt(l,"touchend",o._onDrop),Mt(l,"touchcancel",o._onDrop),_t&&this.nativeDraggable&&(this.options.touchStartThreshold=4,cn.draggable=!0),sn("delayStart",this,{evt:e}),!a.delay||a.delayOnTouchOnly&&!t||this.nativeDraggable&&(Dt||xt))r();else{if(er.eventCanceled)return void this._onDrop();Mt(l,"mouseup",o._disableDelayedDrag),Mt(l,"touchend",o._disableDelayedDrag),Mt(l,"touchcancel",o._disableDelayedDrag),Mt(l,"mousemove",o._delayedDragTouchMoveHandler),Mt(l,"touchmove",o._delayedDragTouchMoveHandler),a.supportPointer&&Mt(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,a.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){cn&&nr(cn),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;At(e,"mouseup",this._disableDelayedDrag),At(e,"touchend",this._disableDelayedDrag),At(e,"touchcancel",this._disableDelayedDrag),At(e,"mousemove",this._delayedDragTouchMoveHandler),At(e,"touchmove",this._delayedDragTouchMoveHandler),At(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?Mt(document,"pointermove",this._onTouchMove):Mt(document,t?"touchmove":"mousemove",this._onTouchMove):(Mt(cn,"dragend",this),Mt(hn,"dragstart",this._onDragStart));try{document.selection?ir((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(Nn=!1,hn&&cn){sn("dragStarted",this,{evt:t}),this.nativeDraggable&&Mt(document,"dragover",Kn);var n=this.options;!e&&Xt(cn,n.dragClass,!1),Xt(cn,n.ghostClass,!0),er.active=this,e&&this._appendGhost(),un({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Tn){this._lastX=Tn.clientX,this._lastY=Tn.clientY,Jn();for(var e=document.elementFromPoint(Tn.clientX,Tn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Tn.clientX,Tn.clientY))!==t;)t=e;if(cn.parentNode[nn]._isOutsideThisEl(e),t)do{if(t[nn]){if(t[nn]._onDragOver({clientX:Tn.clientX,clientY:Tn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);$n()}},_onTouchMove:function(e){if(Sn){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,i=fn&&Ut(fn,!0),a=fn&&i&&i.a,l=fn&&i&&i.d,s=jn&&An&&Jt(An),u=(o.clientX-Sn.clientX+r.x)/(a||1)+(s?s[0]-Xn[0]:0)/(a||1),c=(o.clientY-Sn.clientY+r.y)/(l||1)+(s?s[1]-Xn[1]:0)/(l||1);if(!er.active&&!Nn){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===cn)return B(!1);if(g&&i===e.target&&(a=g),a&&(n=Wt(a)),!1!==tr(hn,i,cn,t,a,n,e,!!a))return P(),i.appendChild(cn),dn=i,O(),B(!0)}else if(a.parentNode===i){n=Wt(a);var m,v,y,b=cn.parentNode!==i,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,i=n?e.width:e.height,a=n?t.left:t.top,l=n?t.right:t.bottom,s=n?t.width:t.height;return r===a||o===l||r+i/2===a+s/2}(cn.animated&&cn.toRect||t,a.animated&&a.toRect||n,o),E=o?"top":"left",I=zt(a,"top","top")||zt(cn,"top","top"),k=I?I.scrollTop:void 0;if(On!==a&&(v=n[E],Hn=!1,Fn=!w&&l.invertSwap||b),0!==(m=function(e,t,n,r,o,i,a,l){var s=r?e.clientY:e.clientX,u=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!a)if(l&&Mnc+u*i/2:sd-Mn)return-Cn}else if(s>c+u*(1-o)/2&&sd-u*i/2))return s>c+u/2?1:-1;return 0}(e,a,n,o,w?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,Fn,On===a))){var S=Vt(cn);do{S-=m,y=dn.children[S]}while(y&&("none"===qt(y,"display")||y===fn))}if(0===m||y===a)return B(!1);On=a,Cn=m;var T=a.nextElementSibling,x=!1,D=tr(hn,i,cn,t,a,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),qn=!0,setTimeout(rr,30),P(),x&&!T?i.appendChild(cn):a.parentNode.insertBefore(cn,x?T:a),I&&en(I,0,k-I.scrollTop),dn=cn.parentNode,void 0===v||Fn||(Mn=Math.abs(v-Wt(a)[E])),O(),B(!0)}if(i.contains(cn))return B(!1)}return!1}function _(l,s){sn(l,h,kt({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:a,completed:B,onMove:function(n,r){return tr(hn,i,cn,t,n,Wt(n),e,r)},changed:O},s))}function P(){_("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return _("dragOverCompleted",{insertion:t}),t&&(c?u._hideClone():u._showClone(h),h!==f&&(Xt(cn,kn?kn.options.ghostClass:u.options.ghostClass,!1),Xt(cn,l.ghostClass,!0)),kn!==h&&h!==er.active?kn=h:h===er.active&&kn&&(kn=null),f===h&&(h._ignoreWhileAnimating=a),h.animateAll((function(){_("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(a===cn&&!cn.animated||a===i&&!a.animated)&&(On=null),l.dragoverBubble||e.rootEl||a===document||(cn.parentNode[nn]._isOutsideThisEl(e.target),!t&&Zn(e)),!l.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function O(){bn=Vt(cn),En=Vt(cn,l.draggable),un({sortable:h,name:"change",toEl:i,newIndex:bn,newDraggableIndex:En,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){At(document,"mousemove",this._onTouchMove),At(document,"touchmove",this._onTouchMove),At(document,"pointermove",this._onTouchMove),At(document,"dragover",Zn),At(document,"mousemove",Zn),At(document,"touchmove",Zn)},_offUpEvents:function(){var e=this.el.ownerDocument;At(e,"mouseup",this._onDrop),At(e,"touchend",this._onDrop),At(e,"pointerup",this._onDrop),At(e,"touchcancel",this._onDrop),At(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;bn=Vt(cn),En=Vt(cn,n.draggable),sn("drop",this,{evt:e}),dn=cn&&cn.parentNode,bn=Vt(cn),En=Vt(cn,n.draggable),er.eventCanceled||(Nn=!1,Fn=!1,Hn=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),ar(this.cloneId),ar(this._dragStartId),this.nativeDraggable&&(At(document,"drop",this),At(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Pt&&qt(document.body,"user-select",""),qt(cn,"transform",""),e&&(Bn&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),fn&&fn.parentNode&&fn.parentNode.removeChild(fn),(hn===dn||kn&&"clone"!==kn.lastPutMode)&&mn&&mn.parentNode&&mn.parentNode.removeChild(mn),cn&&(this.nativeDraggable&&At(cn,"dragend",this),nr(cn),cn.style["will-change"]="",Bn&&!Nn&&Xt(cn,kn?kn.options.ghostClass:this.options.ghostClass,!1),Xt(cn,this.options.chosenClass,!1),un({sortable:this,name:"unchoose",toEl:dn,newIndex:null,newDraggableIndex:null,originalEvent:e}),hn!==dn?(bn>=0&&(un({rootEl:dn,name:"add",toEl:dn,fromEl:hn,originalEvent:e}),un({sortable:this,name:"remove",toEl:dn,originalEvent:e}),un({rootEl:dn,name:"sort",toEl:dn,fromEl:hn,originalEvent:e}),un({sortable:this,name:"sort",toEl:dn,originalEvent:e})),kn&&kn.save()):bn!==yn&&bn>=0&&(un({sortable:this,name:"update",toEl:dn,originalEvent:e}),un({sortable:this,name:"sort",toEl:dn,originalEvent:e})),er.active&&(null!=bn&&-1!==bn||(bn=yn,En=wn),un({sortable:this,name:"end",toEl:dn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){sn("nulling",this),hn=cn=dn=fn=pn=mn=gn=vn=Sn=Tn=Bn=bn=En=yn=wn=On=Cn=kn=In=er.dragged=er.ghost=er.clone=er.active=null,Un.forEach((function(e){e.checked=!0})),Un.length=xn=Dn=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":cn&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,i=this.options;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Dt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var Pt=Dt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),_t=Dt(/Edge/i),Bt=Dt(/firefox/i),Ct=Dt(/safari/i)&&!Dt(/chrome/i)&&!Dt(/android/i),Ot=Dt(/iP(ad|od|hone)/i),Mt=Dt(/chrome/i)&&Dt(/android/i),At={capture:!1,passive:!1};function Nt(e,t,n){e.addEventListener(t,n,!Pt&&At)}function Lt(e,t,n){e.removeEventListener(t,n,!Pt&&At)}function Rt(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Ht(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Ft(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Rt(e,t):Rt(e,t))||r&&e===n)return e;if(e===n)break}while(e=Ht(e))}return null}var Xt,qt=/\s+/g;function Ut(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(qt," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(qt," ")}}function Yt(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function jt(e,t){var n="";if("string"==typeof e)n=e;else do{var r=Yt(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Wt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,i=r.length;if(n)for(;o=i:o<=i))return r;if(r===zt())break;r=Kt(r,!1)}return!1}function Vt(e,t,n){for(var r=0,o=0,i=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=xt(n,["evt"]);un.pluginEvent.bind(nr)(e,t,Tt({dragEl:fn,parentEl:hn,ghostEl:pn,rootEl:gn,nextEl:mn,lastDownEl:vn,cloneEl:yn,cloneHidden:bn,dragStarted:On,putSortable:Tn,activeSortable:nr.active,originalEvent:r,oldIndex:wn,oldDraggableIndex:In,newIndex:En,newDraggableIndex:kn,hideGhostForTarget:Zn,unhideGhostForTarget:Kn,cloneNowHidden:function(){bn=!0},cloneNowShown:function(){bn=!1},dispatchSortableEvent:function(e){dn({sortable:t,name:e,originalEvent:r})}},o))};function dn(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,i=e.cloneEl,a=e.toEl,s=e.fromEl,l=e.oldIndex,u=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[on]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||Pt||_t?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=s||n,g.item=o||n,g.clone=i,g.oldIndex=l,g.newIndex=u,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=Tt({},p,un.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(Tt({putSortable:Tn,cloneEl:yn,targetEl:fn,rootEl:gn,oldIndex:wn,oldDraggableIndex:In,newIndex:En,newDraggableIndex:kn},e))}var fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,Pn,_n,Bn,Cn,On,Mn,An,Nn,Ln,Rn=!1,Hn=!1,Fn=[],Xn=!1,qn=!1,Un=[],Yn=!1,jn=[],Wn="undefined"!=typeof document,zn=Ot,Gn=_t||Pt?"cssFloat":"float",Qn=Wn&&!Mt&&!Ot&&"draggable"in document.createElement("div"),Vn=function(){if(Wn){if(Pt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),Jn=function(e,t){var n=Yt(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Vt(e,0,t),i=Vt(e,1,t),a=o&&Yt(o),s=i&&Yt(i),l=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+Gt(o).width,u=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+Gt(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a.float&&"none"!==a.float){var c="left"===a.float?"left":"right";return!i||"both"!==s.clear&&s.clear!==c?"horizontal":"vertical"}return o&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||l>=r&&"none"===n[Gn]||i&&"none"===n[Gn]&&l+u>r)?"vertical":"horizontal"},$n=function(e){function t(e,n){return function(r,o,i,a){var s=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||s))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,i,a),n)(r,o,i,a);var l=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===l||e.join&&e.indexOf(l)>-1}}var n={},r=e.group;r&&"object"==It(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Zn=function(){!Vn&&pn&&Yt(pn,"display","none")},Kn=function(){!Vn&&pn&&Yt(pn,"display","")};Wn&&document.addEventListener("click",(function(e){if(Hn)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Hn=!1,!1}),!0);var er=function(e){if(fn){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,i=e.clientY,Fn.some((function(e){if(!Jt(e)){var t=Gt(e),n=e[on].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,s=i>=t.top-n&&i<=t.bottom+n;return n&&r&&s?a=e:void 0}})),a);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[on]._onDragOver(n)}}var o,i,a},tr=function(e){fn&&fn.parentNode[on]._isOutsideThisEl(e.target)};function nr(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=St({},t),e[on]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Jn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==nr.supportPointer&&"PointerEvent"in window&&!Ct,emptyInsertThreshold:5};for(var r in un.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in $n(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&Qn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Nt(e,"pointerdown",this._onTapStart):(Nt(e,"mousedown",this._onTapStart),Nt(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Nt(e,"dragover",this),Nt(e,"dragenter",this)),Fn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),St(this,an())}function rr(e,t,n,r,o,i,a,s){var l,u,c=e[on],d=c.options.onMove;return!window.CustomEvent||Pt||_t?(l=document.createEvent("Event")).initEvent("move",!0,!0):l=new CustomEvent("move",{bubbles:!0,cancelable:!0}),l.to=t,l.from=e,l.dragged=n,l.draggedRect=r,l.related=o||t,l.relatedRect=i||Gt(t),l.willInsertAfter=s,l.originalEvent=a,e.dispatchEvent(l),d&&(u=d.call(c,l,a)),u}function or(e){e.draggable=!1}function ir(){Yn=!1}function ar(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function sr(e){return setTimeout(e,0)}function lr(e){return clearTimeout(e)}nr.prototype={constructor:nr,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(Mn=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,fn):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,i=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,s=(a||e).target,l=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,u=r.filter;if(function(e){jn.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&jn.push(r)}}(n),!fn&&!(/mousedown|pointerdown/.test(i)&&0!==e.button||r.disabled)&&!l.isContentEditable&&(this.nativeDraggable||!Ct||!s||"SELECT"!==s.tagName.toUpperCase())&&!((s=Ft(s,r.draggable,n,!1))&&s.animated||vn===s)){if(wn=$t(s),In=$t(s,r.draggable),"function"==typeof u){if(u.call(this,e,s,this))return dn({sortable:t,rootEl:l,name:"filter",targetEl:s,toEl:n,fromEl:n}),cn("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(u&&(u=u.split(",").some((function(r){if(r=Ft(l,r.trim(),n,!1))return dn({sortable:t,rootEl:r,name:"filter",targetEl:s,fromEl:n,toEl:n}),cn("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Ft(l,r.handle,n,!1)||this._prepareDragStart(e,a,s)}}},_prepareDragStart:function(e,t,n){var r,o=this,i=o.el,a=o.options,s=i.ownerDocument;if(n&&!fn&&n.parentNode===i){var l=Gt(n);if(gn=i,hn=(fn=n).parentNode,mn=fn.nextSibling,vn=n,Sn=a.group,nr.dragged=fn,xn={target:fn,clientX:(t||e).clientX,clientY:(t||e).clientY},Bn=xn.clientX-l.left,Cn=xn.clientY-l.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,fn.style["will-change"]="all",r=function(){cn("delayEnded",o,{evt:e}),nr.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!Bt&&o.nativeDraggable&&(fn.draggable=!0),o._triggerDragStart(e,t),dn({sortable:o,name:"choose",originalEvent:e}),Ut(fn,a.chosenClass,!0))},a.ignore.split(",").forEach((function(e){Wt(fn,e.trim(),or)})),Nt(s,"dragover",er),Nt(s,"mousemove",er),Nt(s,"touchmove",er),Nt(s,"mouseup",o._onDrop),Nt(s,"touchend",o._onDrop),Nt(s,"touchcancel",o._onDrop),Bt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,fn.draggable=!0),cn("delayStart",this,{evt:e}),!a.delay||a.delayOnTouchOnly&&!t||this.nativeDraggable&&(_t||Pt))r();else{if(nr.eventCanceled)return void this._onDrop();Nt(s,"mouseup",o._disableDelayedDrag),Nt(s,"touchend",o._disableDelayedDrag),Nt(s,"touchcancel",o._disableDelayedDrag),Nt(s,"mousemove",o._delayedDragTouchMoveHandler),Nt(s,"touchmove",o._delayedDragTouchMoveHandler),a.supportPointer&&Nt(s,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,a.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){fn&&or(fn),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Lt(e,"mouseup",this._disableDelayedDrag),Lt(e,"touchend",this._disableDelayedDrag),Lt(e,"touchcancel",this._disableDelayedDrag),Lt(e,"mousemove",this._delayedDragTouchMoveHandler),Lt(e,"touchmove",this._delayedDragTouchMoveHandler),Lt(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?Nt(document,"pointermove",this._onTouchMove):Nt(document,t?"touchmove":"mousemove",this._onTouchMove):(Nt(fn,"dragend",this),Nt(gn,"dragstart",this._onDragStart));try{document.selection?sr((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(Rn=!1,gn&&fn){cn("dragStarted",this,{evt:t}),this.nativeDraggable&&Nt(document,"dragover",tr);var n=this.options;!e&&Ut(fn,n.dragClass,!1),Ut(fn,n.ghostClass,!0),nr.active=this,e&&this._appendGhost(),dn({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Dn){this._lastX=Dn.clientX,this._lastY=Dn.clientY,Zn();for(var e=document.elementFromPoint(Dn.clientX,Dn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Dn.clientX,Dn.clientY))!==t;)t=e;if(fn.parentNode[on]._isOutsideThisEl(e),t)do{if(t[on]){if(t[on]._onDragOver({clientX:Dn.clientX,clientY:Dn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Kn()}},_onTouchMove:function(e){if(xn){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,i=pn&&jt(pn,!0),a=pn&&i&&i.a,s=pn&&i&&i.d,l=zn&&Ln&&Zt(Ln),u=(o.clientX-xn.clientX+r.x)/(a||1)+(l?l[0]-Un[0]:0)/(a||1),c=(o.clientY-xn.clientY+r.y)/(s||1)+(l?l[1]-Un[1]:0)/(s||1);if(!nr.active&&!Rn){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===fn)return B(!1);if(g&&i===e.target&&(a=g),a&&(n=Gt(a)),!1!==rr(gn,i,fn,t,a,n,e,!!a))return _(),i.appendChild(fn),hn=i,C(),B(!0)}else if(a.parentNode===i){n=Gt(a);var m,v,y,b=fn.parentNode!==i,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,i=n?e.width:e.height,a=n?t.left:t.top,s=n?t.right:t.bottom,l=n?t.width:t.height;return r===a||o===s||r+i/2===a+l/2}(fn.animated&&fn.toRect||t,a.animated&&a.toRect||n,o),E=o?"top":"left",I=Qt(a,"top","top")||Qt(fn,"top","top"),k=I?I.scrollTop:void 0;if(Mn!==a&&(v=n[E],Xn=!1,qn=!w&&s.invertSwap||b),0!==(m=function(e,t,n,r,o,i,a,s){var l=r?e.clientY:e.clientX,u=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!a)if(s&&Nnc+u*i/2:ld-Nn)return-An}else if(l>c+u*(1-o)/2&&ld-u*i/2))return l>c+u/2?1:-1;return 0}(e,a,n,o,w?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,qn,Mn===a))){var S=$t(fn);do{S-=m,y=hn.children[S]}while(y&&("none"===Yt(y,"display")||y===pn))}if(0===m||y===a)return B(!1);Mn=a,An=m;var T=a.nextElementSibling,x=!1,D=rr(gn,i,fn,t,a,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),Yn=!0,setTimeout(ir,30),_(),x&&!T?i.appendChild(fn):a.parentNode.insertBefore(fn,x?T:a),I&&nn(I,0,k-I.scrollTop),hn=fn.parentNode,void 0===v||qn||(Nn=Math.abs(v-Gt(a)[E])),C(),B(!0)}if(i.contains(fn))return B(!1)}return!1}function P(s,l){cn(s,h,Tt({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:a,completed:B,onMove:function(n,r){return rr(gn,i,fn,t,n,Gt(n),e,r)},changed:C},l))}function _(){P("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return P("dragOverCompleted",{insertion:t}),t&&(c?u._hideClone():u._showClone(h),h!==f&&(Ut(fn,Tn?Tn.options.ghostClass:u.options.ghostClass,!1),Ut(fn,s.ghostClass,!0)),Tn!==h&&h!==nr.active?Tn=h:h===nr.active&&Tn&&(Tn=null),f===h&&(h._ignoreWhileAnimating=a),h.animateAll((function(){P("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(a===fn&&!fn.animated||a===i&&!a.animated)&&(Mn=null),s.dragoverBubble||e.rootEl||a===document||(fn.parentNode[on]._isOutsideThisEl(e.target),!t&&er(e)),!s.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function C(){En=$t(fn),kn=$t(fn,s.draggable),dn({sortable:h,name:"change",toEl:i,newIndex:En,newDraggableIndex:kn,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Lt(document,"mousemove",this._onTouchMove),Lt(document,"touchmove",this._onTouchMove),Lt(document,"pointermove",this._onTouchMove),Lt(document,"dragover",er),Lt(document,"mousemove",er),Lt(document,"touchmove",er)},_offUpEvents:function(){var e=this.el.ownerDocument;Lt(e,"mouseup",this._onDrop),Lt(e,"touchend",this._onDrop),Lt(e,"pointerup",this._onDrop),Lt(e,"touchcancel",this._onDrop),Lt(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;En=$t(fn),kn=$t(fn,n.draggable),cn("drop",this,{evt:e}),hn=fn&&fn.parentNode,En=$t(fn),kn=$t(fn,n.draggable),nr.eventCanceled||(Rn=!1,qn=!1,Xn=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),lr(this.cloneId),lr(this._dragStartId),this.nativeDraggable&&(Lt(document,"drop",this),Lt(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Ct&&Yt(document.body,"user-select",""),Yt(fn,"transform",""),e&&(On&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),pn&&pn.parentNode&&pn.parentNode.removeChild(pn),(gn===hn||Tn&&"clone"!==Tn.lastPutMode)&&yn&&yn.parentNode&&yn.parentNode.removeChild(yn),fn&&(this.nativeDraggable&&Lt(fn,"dragend",this),or(fn),fn.style["will-change"]="",On&&!Rn&&Ut(fn,Tn?Tn.options.ghostClass:this.options.ghostClass,!1),Ut(fn,this.options.chosenClass,!1),dn({sortable:this,name:"unchoose",toEl:hn,newIndex:null,newDraggableIndex:null,originalEvent:e}),gn!==hn?(En>=0&&(dn({rootEl:hn,name:"add",toEl:hn,fromEl:gn,originalEvent:e}),dn({sortable:this,name:"remove",toEl:hn,originalEvent:e}),dn({rootEl:hn,name:"sort",toEl:hn,fromEl:gn,originalEvent:e}),dn({sortable:this,name:"sort",toEl:hn,originalEvent:e})),Tn&&Tn.save()):En!==wn&&En>=0&&(dn({sortable:this,name:"update",toEl:hn,originalEvent:e}),dn({sortable:this,name:"sort",toEl:hn,originalEvent:e})),nr.active&&(null!=En&&-1!==En||(En=wn,kn=In),dn({sortable:this,name:"end",toEl:hn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){cn("nulling",this),gn=fn=hn=pn=mn=yn=vn=bn=xn=Dn=On=En=kn=wn=In=Mn=An=Tn=Sn=nr.dragged=nr.ghost=nr.clone=nr.active=null,jn.forEach((function(e){e.checked=!0})),jn.length=Pn=_n=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":fn&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,i=this.options;r this.handleRestore(e)); } + } else if (document.getElementById("dash-reset")) { + document + .getElementById("get-secret-btn") + .addEventListener("click", (e) => this.handleReset(e)); + + document + .getElementById("reset-btn") + .addEventListener("click", (e) => this.handleReset(e)); } else { new DashManager(); } @@ -123,7 +131,7 @@ export default class Base { notify.alert(response.message, true); setTimeout(() => { window.location = "/dashboard"; - }, 700); + }, 800); } }) .catch((err) => { @@ -131,6 +139,62 @@ export default class Base { notify.alert(err, false); }); } + + handleReset(e) { + e.stopPropagation(); + e.preventDefault(); + let self = this; + let api = new FipamoApi(); + if (e.target.id == "get-secret-btn") { + let data = { + email: document.getElementById("email").value, + task: "retrieveSecret", + }; + this.processing = true; + api + .getSecret(data) + .then((response) => { + self.processing = false; + if (response.secret) { + document.getElementById("secret").value = response.secret; + notify.alert(response.message, true); + } else { + if (response.type == "mailSent") { + notify.alert(response.message, true); + } else { + notify.alert(response.message, false); + } + } + }) + .catch((err) => { + self.processing = false; + notify.alert(err, false); + }); + } else { + let data = { + newPass: document.getElementById("new_password").value, + newPassConfirm: document.getElementById("new_password2").value, + secret: document.getElementById("secret").value, + }; + api + .setNewPass(data) + .then((response) => { + self.processing = false; + if (response.type == "passNotCreated") { + notify.alert(response.message, false); + } else { + notify.alert(response.message, true); + setTimeout(() => { + window.location = "/dashboard"; + }, 1000); + } + }) + .catch((err) => { + self.processing = false; + notify.alert(err, false); + }); + } + } handleOptions(e) { e.stopPropagation(); e.preventDefault(); diff --git a/src/com/events/DataEvent.js b/src/com/events/DataEvent.js index 0f28bef..fd0a8f2 100644 --- a/src/com/events/DataEvent.js +++ b/src/com/events/DataEvent.js @@ -1,49 +1,51 @@ -export const AUTH_STATUS = 'getAuthStatus'; -export const REQUEST_GOOD = 'requestGood'; -export const REQUEST_LAME = 'requestLame'; -export const API_REQUEST_GOOD = 'apiUseAuthorized'; -export const API_REQUEST_LAME = 'apiUseNotAuthorized'; -export const IMG_REQUEST_GOOD = 'imgRequestGood'; -export const IMG_REQUEST_LAME = 'imgRequestLame'; -export const SETTINGS_LOADED = 'settingsLoaded'; -export const POST_IMAGE_ADDED = 'postImageAdded'; -export const FEATURE_IMAGE_ADDED = 'featureImageAdded'; -export const PAGE_ERROR = 'postError'; -export const PAGE_ADDED = 'postAdded'; -export const PAGE_UPDATED = 'postUpdated'; -export const PAGE_DELETED = 'postImageAdded'; -export const PAGES_RENDERED = 'pagesRendered'; -export const PAGES_NOT_RENDERED = 'pagesNotRendered'; -export const TAG_PAGES_RENDERED = 'tagPagesRendered'; -export const TAG_PAGES_NOT_RENDERED = 'tagPagesNotRendered'; -export const SETTINGS_UPDATED = 'settingsUpdated'; -export const SETTINGS_NOT_UPDATED = 'settingsNotUpdated'; -export const MENU_ADD_ITEM = 'menuAddItem'; -export const MENU_DELETE_ITEM = 'menuDeleteItem'; -export const MENU_UPDATED = 'menuUpdated'; -export const AVATAR_UPLOADED = 'avatarUploaded'; -export const SITE_BACKGROUND_UPLOADED = 'siteBackgroundUploaded'; -export const UPLOAD_PROGRESS = 'uploadProgress'; -export const API_PAGE_WRITE = 'writingItDown'; -export const API_PAGE_CREATE = 'writingNewEntry'; -export const API_PAGE_DELETE = 'erasingPage'; -export const API_SETTINGS_WRITE = 'savingSettings'; -export const API_BACKUP_CREATE = 'createBackup'; -export const API_BACKUP_DOWNLOAD = 'downloadBackup'; -export const API_BACKUP_RESTORE = 'downloadBackup'; -export const API_IMAGES_UPLOAD = 'uploadProfileImages'; -export const API_RENDER_PAGES = 'renderPages'; -export const API_REINDEX_PAGES = 'reindexPages'; -export const API_INIT = 'blogInit'; -export const API_INIT_GOOD = 'blogInitGood'; -export const API_INIT_LAME = 'blogInitLame'; -export const SEND_MAIL = 'sendMail'; +export const AUTH_STATUS = "getAuthStatus"; +export const REQUEST_GOOD = "requestGood"; +export const REQUEST_LAME = "requestLame"; +export const API_REQUEST_GOOD = "apiUseAuthorized"; +export const API_REQUEST_LAME = "apiUseNotAuthorized"; +export const IMG_REQUEST_GOOD = "imgRequestGood"; +export const IMG_REQUEST_LAME = "imgRequestLame"; +export const SETTINGS_LOADED = "settingsLoaded"; +export const POST_IMAGE_ADDED = "postImageAdded"; +export const FEATURE_IMAGE_ADDED = "featureImageAdded"; +export const PAGE_ERROR = "postError"; +export const PAGE_ADDED = "postAdded"; +export const PAGE_UPDATED = "postUpdated"; +export const PAGE_DELETED = "postImageAdded"; +export const PAGES_RENDERED = "pagesRendered"; +export const PAGES_NOT_RENDERED = "pagesNotRendered"; +export const TAG_PAGES_RENDERED = "tagPagesRendered"; +export const TAG_PAGES_NOT_RENDERED = "tagPagesNotRendered"; +export const SETTINGS_UPDATED = "settingsUpdated"; +export const SETTINGS_NOT_UPDATED = "settingsNotUpdated"; +export const MENU_ADD_ITEM = "menuAddItem"; +export const MENU_DELETE_ITEM = "menuDeleteItem"; +export const MENU_UPDATED = "menuUpdated"; +export const AVATAR_UPLOADED = "avatarUploaded"; +export const SITE_BACKGROUND_UPLOADED = "siteBackgroundUploaded"; +export const UPLOAD_PROGRESS = "uploadProgress"; +export const API_PAGE_WRITE = "writingItDown"; +export const API_PAGE_CREATE = "writingNewEntry"; +export const API_PAGE_DELETE = "erasingPage"; +export const API_SETTINGS_WRITE = "savingSettings"; +export const API_BACKUP_CREATE = "createBackup"; +export const API_BACKUP_DOWNLOAD = "downloadBackup"; +export const API_BACKUP_RESTORE = "downloadBackup"; +export const API_IMAGES_UPLOAD = "uploadProfileImages"; +export const API_RENDER_PAGES = "renderPages"; +export const API_REINDEX_PAGES = "reindexPages"; +export const API_INIT = "blogInit"; +export const API_INIT_GOOD = "blogInitGood"; +export const API_INIT_LAME = "blogInitLame"; +export const API_GET_SECRET = "retrieveSecret"; +export const API_RESET_PASS = "resetPassword"; +export const SEND_MAIL = "sendMail"; class DataEvent { - //-------------------------- - // methods - //-------------------------- - //-------------------------- - // event handlers - //-------------------------- + //-------------------------- + // methods + //-------------------------- + //-------------------------- + // event handlers + //-------------------------- } export default new DataEvent(); diff --git a/src/libraries/FipamoAPI.js b/src/libraries/FipamoAPI.js index 014a619..00f701f 100644 --- a/src/libraries/FipamoAPI.js +++ b/src/libraries/FipamoAPI.js @@ -10,6 +10,8 @@ export const API_RESTORE = "/api/v1/restore"; export const API_LOGIN = "/api/v1/login"; export const API_GET_PAGES = "/api/v1/page/published"; export const API_GET_PAGE = "/api/v1/page/single"; +export const API_GET_SECRET = "/api/v1/get-secret"; +export const API_RESET_PASS = "/api/v1/reset-password"; import * as DataEvent from "../com/events/DataEvent"; export default class FipamoAPI { //-------------------------- @@ -90,6 +92,42 @@ export default class FipamoAPI { }); } + getSecret(data) { + return new Promise((resolve, reject) => { + this._request( + API_GET_SECRET, + DataEvent.API_GET_SECRET, + REQUEST_TYPE_POST, + CONTENT_TYPE_JSON, + data + ) + .then((result) => { + resolve(result); + }) + .catch((err) => { + reject(err); + }); + }); + } + + setNewPass(data) { + return new Promise((resolve, reject) => { + this._request( + API_RESET_PASS, + DataEvent.API_RESET_PASS, + REQUEST_TYPE_POST, + CONTENT_TYPE_JSON, + data + ) + .then((result) => { + resolve(result); + }) + .catch((err) => { + reject(err); + }); + }); + } + getPage(id) { return new Promise((resolve, reject) => { this._request( diff --git a/src/styles/main/_index.sass b/src/styles/main/_index.sass index 691e167..d9f504c 100644 --- a/src/styles/main/_index.sass +++ b/src/styles/main/_index.sass @@ -49,11 +49,12 @@ max-width: 900px margin: 0 auto - #dash-form + #dash-form, #dash-reset width: 300px padding: 0.75em background: $primary border-radius: 3px + color: $white input width: 290px -- 2.25.1 From b51d63633f178f57a961f8cc2acb663383170c04 Mon Sep 17 00:00:00 2001 From: Ro Date: Mon, 10 May 2021 15:41:35 -0700 Subject: [PATCH 102/250] expanded composer json --- composer.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/composer.json b/composer.json index 3c7cf3b..4a76845 100644 --- a/composer.json +++ b/composer.json @@ -1,4 +1,19 @@ { + "name":"fipamo", + "descriptions":"The most chill no database blog framework ever.", + "version":"2.1.0-beta", + "homepage":"https://fipamo.blog", + "authors": [ + { + "name": "Are0h", + "homepage": "https://roiskinda.cool" + } + ], + "support": { + "source": "https://code.playvicio.us/Are0h/Fipamo", + "wiki": "https://code.playvicio.us/Are0h/Fipamo/wiki/_pages", + "issues":"https://code.playvicio.us/Are0h/Fipamo/issues" + }, "require": { "slim/slim": "4.*", "slim/psr7": "^1.2", -- 2.25.1 From 8e3d359486d6dd732ad5e509c245cdf7cfbceaa0 Mon Sep 17 00:00:00 2001 From: Ro Date: Fri, 21 May 2021 14:07:25 -0700 Subject: [PATCH 103/250] ui overall part 1: login, init, pass reset forms --- brain/views/dash/_frame.twig | 33 ++-- brain/views/dash/forms/login.twig | 3 +- brain/views/dash/init.twig | 57 +++---- brain/views/dash/reset-password.twig | 9 +- brain/views/dash/start.twig | 2 +- public/assets/css/dash.css | 241 +++++++++++++++------------ public/assets/scripts/dash.min.js | 2 +- src/com/Base.js | 4 +- src/styles/main/_colors.sass | 4 +- src/styles/main/_forms.sass | 44 +++-- src/styles/main/_index.sass | 61 ++++--- src/styles/main/_structure.sass | 10 +- 12 files changed, 256 insertions(+), 214 deletions(-) diff --git a/brain/views/dash/_frame.twig b/brain/views/dash/_frame.twig index d96b0ad..067c796 100644 --- a/brain/views/dash/_frame.twig +++ b/brain/views/dash/_frame.twig @@ -26,22 +26,25 @@
    - + + + {% endif %} + {% block mainContent %}{% endblock %}
    diff --git a/brain/views/dash/forms/login.twig b/brain/views/dash/forms/login.twig index ef74839..08ea8da 100644 --- a/brain/views/dash/forms/login.twig +++ b/brain/views/dash/forms/login.twig @@ -1,10 +1,11 @@
    + diff --git a/brain/views/dash/init.twig b/brain/views/dash/init.twig index e1628b6..1e75a4b 100644 --- a/brain/views/dash/init.twig +++ b/brain/views/dash/init.twig @@ -12,51 +12,32 @@
    -
    -

    What up

    -

    Just fill these in and it'll get you started.

    -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    - + + + + + + + +

    +
    -
    - -
    +
    -

    Restore from backup

    -

    Let's verify your backup

    -
    -
    - -
    -
    - -
    -
    - -
    + + +
    + + +
    +

    +

    +
    -
    - -
    diff --git a/brain/views/dash/reset-password.twig b/brain/views/dash/reset-password.twig index 28d31dc..d120466 100644 --- a/brain/views/dash/reset-password.twig +++ b/brain/views/dash/reset-password.twig @@ -13,20 +13,21 @@
    +
    diff --git a/brain/views/dash/start.twig b/brain/views/dash/start.twig index 833090e..4cce6e7 100644 --- a/brain/views/dash/start.twig +++ b/brain/views/dash/start.twig @@ -5,7 +5,7 @@ {% endblock %} {% block stylesheets %} - + {% endblock %} {% block mainContent %} diff --git a/public/assets/css/dash.css b/public/assets/css/dash.css index 0d34d82..8e7bcd2 100644 --- a/public/assets/css/dash.css +++ b/public/assets/css/dash.css @@ -1746,8 +1746,8 @@ sub { sup { top: -0.55em; - background: #374857; - color: #374857; + background: #1D3040; + color: #1D3040; border-radius: 2px; padding: 0 2px 0 2px; margin: 0 2px 0 0; @@ -1885,7 +1885,7 @@ template { } h1, h2, h3 { - color: #f2f1ef; + color: #EFEBE3; } h1 { @@ -1904,7 +1904,8 @@ h3 { } html, body { - background-color: #0f1419; + background: #1D3040; + background: linear-gradient(0deg, #1d3040 0%, #2d4a63 100%); font: 400 1em Helvetica, Arial, sans-serif; height: 100%; } @@ -1919,7 +1920,10 @@ a { transition: all 0.1s linear; } a:hover { - color: #d8e5f2; + background: #1D3040; + color: #b2cce5; + border-radius: 5px; + padding: 5px; } svg.icons { @@ -1983,20 +1987,20 @@ svg.icons { height: 30px; width: 30px; text-align: center; - border: 2px solid #f2f1ef; + border: 2px solid #EFEBE3; } #notifications #notifyMessage p { - color: #f2f1ef; + color: #EFEBE3; background: black; width: 400px; height: 28px; padding: 15px 0 0 5px; border-radius: 0 5px 5px 0; - border: 2px solid #f2f1ef; + border: 2px solid #EFEBE3; text-align: center; } #notifications #notifyMessage .icons { - fill: #f2f1ef; + fill: #EFEBE3; } .notify-close { @@ -2017,6 +2021,7 @@ svg.icons { margin: 0 auto; z-index: 10; position: relative; + height: 100%; } .main-container section header { width: 100%; @@ -2037,7 +2042,7 @@ svg.icons { } .main-container section header #wrapper #right { text-align: right; - color: #f2f1ef; + color: #EFEBE3; } .main-container section header #wrapper #right a { text-decoration-color: #fc6399; @@ -2058,30 +2063,30 @@ svg.icons { /* Mozilla based browsers */ ::-moz-selection { background-color: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } /* Works in Safari */ ::selection { background-color: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } /* Works in Opera */ ::-o-selection { background-color: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } ::-ms-selection { background-color: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } /* Works in Internet Explorer */ ::-webkit-selection { background-color: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } @media only screen and (max-width: 800px) { @@ -2115,35 +2120,41 @@ svg.icons { } #dash-index-content #dash-index #dash-index-wrapper .dash-init, #dash-index-content #dash-index #dash-index-wrapper .dash-restore { width: 100%; - max-width: 900px; - margin: 0 auto; - color: #b2cce5; -} -#dash-index-content #dash-index #dash-index-wrapper .dash-init label, #dash-index-content #dash-index #dash-index-wrapper .dash-restore label { - color: #374857; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #1D3040; } #dash-index-content #dash-index #dash-index-wrapper .dash-init form, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form { - background: #f2f1ef; + background: #EFEBE3; padding: 15px; + width: 300px; + border-radius: 5px; + text-align: center; } -#dash-index-content #dash-index #dash-index-wrapper .dash-init form h1, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form h1 { - color: #374857; +#dash-index-content #dash-index #dash-index-wrapper .dash-init form #the-logo, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form #the-logo { + width: 40px; + margin: 20px; } -#dash-index-content #dash-index #dash-index-wrapper .dash-init form p, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form p { - color: black; - border-top: 1px solid #374857; - border-bottom: 1px solid #374857; - padding: 10px 0 10px 0; -} -#dash-index-content #dash-index #dash-index-wrapper .dash-init form input.large[type=email], #dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=password], #dash-index-content #dash-index #dash-index-wrapper .dash-init form input[type=text], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input.large[type=email], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=password], #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input[type=text] { - margin-bottom: 15px; - margin-top: 5px; +#dash-index-content #dash-index #dash-index-wrapper .dash-init form input, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form input { + width: 290px; + margin: 0 0 10px 0; + height: 30px; } #dash-index-content #dash-index #dash-index-wrapper .dash-init form button, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form button { - height: 30px; - width: 120px; - margin: 0 auto; + width: 300px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form div, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form div { + background: #1D3040; + color: #EFEBE3; + border-radius: 3px; + padding: 5px; +} +#dash-index-content #dash-index #dash-index-wrapper .dash-init form div label, #dash-index-content #dash-index #dash-index-wrapper .dash-restore form div label { display: block; + padding: 5px; + color: #f5ab35; } #dash-index-content #dash-index #dash-index-wrapper .dash-restore { display: none; @@ -2151,15 +2162,23 @@ svg.icons { } #dash-index-content #dash-index #dash-index-wrapper #dash-login { width: 100%; - max-width: 900px; + height: 100%; margin: 0 auto; + display: flex; + align-items: center; + justify-content: center; } #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset { width: 300px; padding: 0.75em; - background: #374857; - border-radius: 3px; - color: #f2f1ef; + background: #EFEBE3; + border-radius: 5px; + color: #EFEBE3; + text-align: center; +} +#dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form #the-logo, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset #the-logo { + width: 40px; + margin: 20px; } #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-form input, #dash-index-content #dash-index #dash-index-wrapper #dash-login #dash-reset input { width: 290px; @@ -2182,7 +2201,7 @@ svg.icons { width: 30%; padding: 5px; border-radius: 3px; - color: #f2f1ef; + color: #EFEBE3; margin: 0 10px 10px 0; } #dash-index-content #dash-index #dash-index-wrapper #dash-menu a:hover { @@ -2191,7 +2210,7 @@ svg.icons { #dash-index-content #dash-index #dash-index-wrapper #dash-menu a svg { display: inline-block; vertical-align: top; - fill: #f2f1ef; + fill: #EFEBE3; } #dash-index-content #dash-index #dash-index-wrapper #dash-menu a label { display: inline-block; @@ -2226,7 +2245,7 @@ svg.icons { display: inline-block; margin: 24px 0 24px 0; right: 10px; - color: #f2f1ef; + color: #EFEBE3; } #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list .recent-header .index-menu a { text-decoration-color: #fc6399; @@ -2243,7 +2262,7 @@ svg.icons { #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link label { font-size: 1.4em; font-weight: 700; - color: #f2f1ef; + color: #EFEBE3; padding: 5px; vertical-align: top; display: inline-block; @@ -2260,7 +2279,7 @@ svg.icons { font-family: "Lucida Console", Monaco, monospace; font-size: 0.5em; padding: 7px; - color: #f2f1ef; + color: #EFEBE3; text-align: center; border-radius: 0 0 3px 3px; } @@ -2288,7 +2307,7 @@ svg.icons { #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active=false] { width: 65px; background: black; - color: #f2f1ef; + color: #EFEBE3; } #dash-index-content #dash-index #dash-index-wrapper #dash-recent #recent-list a.post-link div #options .item-options[data-active=true] { width: 70px; @@ -2358,13 +2377,13 @@ svg.icons { margin: 5px; } #settings-actions #buttons button svg { - fill: #f2f1ef; + fill: #EFEBE3; } #settings-actions #buttons button[data-render=false] { background: black; } #settings-actions #buttons button[data-render=false] svg { - fill: #f2f1ef; + fill: #EFEBE3; } #settings-actions #buttons button[data-render=true] { background: white; @@ -2384,7 +2403,7 @@ svg.icons { } #site-background label { position: absolute; - color: #f2f1ef; + color: #EFEBE3; margin: 5px; background: black; padding: 5px; @@ -2409,7 +2428,7 @@ svg.icons { height: 45px; } #settings-index #settings-index-wrapper #member-settings, #settings-index #settings-index-wrapper #site-settings, #settings-index #settings-index-wrapper #option-settings, #settings-index #settings-index-wrapper #member-utils { - background: #374857; + background: #1D3040; padding: 5px; border-radius: 5px 0 5px 0; width: 100%; @@ -2417,7 +2436,7 @@ svg.icons { } #settings-index #settings-index-wrapper #member-settings label, #settings-index #settings-index-wrapper #site-settings label, #settings-index #settings-index-wrapper #option-settings label, #settings-index #settings-index-wrapper #member-utils label { font-family: "Lucida Console", Monaco, monospace; - color: #f2f1ef; + color: #EFEBE3; } #settings-index #settings-index-wrapper #member-settings span, #settings-index #settings-index-wrapper #site-settings span, #settings-index #settings-index-wrapper #option-settings span, #settings-index #settings-index-wrapper #member-utils span { color: #b2cce5; @@ -2433,8 +2452,8 @@ svg.icons { display: none; } #settings-index #settings-index-wrapper #member-settings .backup-meta, #settings-index #settings-index-wrapper #site-settings .backup-meta, #settings-index #settings-index-wrapper #option-settings .backup-meta, #settings-index #settings-index-wrapper #member-utils .backup-meta { - background: #0f1419; - color: #f2f1ef; + background: black; + color: #EFEBE3; padding: 8px; border-radius: 3px; margin: 5px 0 0 0; @@ -2471,7 +2490,7 @@ svg.icons { margin: 0 5px 10px 0; } #settings-index #settings-index-wrapper #member-settings textarea, #settings-index #settings-index-wrapper #site-settings textarea, #settings-index #settings-index-wrapper #option-settings textarea, #settings-index #settings-index-wrapper #member-utils textarea { - background: #0f1419; + background: black; width: 95%; height: 155px; color: #b2cce5; @@ -2491,11 +2510,11 @@ svg.icons { } #settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled=true] { background: #b2cce5; - color: #374857; + color: #1D3040; border-radius: 3px; } #settings-index #settings-index-wrapper #option-settings #theme-settings a[data-enabled=true] svg { - fill: #374857; + fill: #1D3040; display: inline-block; float: right; } @@ -2514,7 +2533,7 @@ svg.icons { color: #fc6399; } #settings-index #settings-index-wrapper #option-settings #mail-settings a.mail-option[data-enabled=false] { - color: #f2f1ef; + color: #EFEBE3; } #settings-index #settings-index-wrapper #option-settings #mail-settings input { margin: 0 5px 5px 0; @@ -2561,9 +2580,9 @@ svg.icons { #nav-index #nav-index-wrapper #nav-pages .nav-item { display: block; width: 98%; - background: #374857; + background: #1D3040; border-radius: 3px; - color: #f2f1ef; + color: #EFEBE3; height: 30px; padding: 10px; margin: 0 0 10px 0; @@ -2612,71 +2631,81 @@ svg.icons { form { display: inline-block; } +form a { + color: #1D3040; +} +form p { + background: #f5ab35; + color: #1D3040; + padding: 5px; + display: block; + border-radius: 5px; + text-align: left; +} input[type=email], input[type=password], input[type=text] { border: 0; border-radius: 5px; padding: 5px; margin: 10px 5px 0 0; - font: 15px "Lucida Console", Monaco, monospace; + font: 18px Helvetica, Arial, sans-serif; display: inline-block; - background: #0f1419; - color: #f2f1ef; + background: #1D3040; + color: #f5ab35; } textarea { border: 0; border-radius: 3px; - color: #f2f1ef; - font: 15px "Lucida Console", Monaco, monospace; - ackground: #0f1419; + color: #EFEBE3; + font: 15px Helvetica, Arial, sans-serif; + background: #1D3040; } button, input[type=submit] { background: #fc6399; - color: #0f1419; - font: 14px Helvetica, Arial, sans-serif; + color: #1D3040; + font: 20px Helvetica, Arial, sans-serif; border-radius: 5px; position: relative; cursor: pointer; border: 0; - padding: 5px 5px 0 5px; + padding: 10px 0 5px 0; -moz-transition: all 0.3s linear; -webkit-transition: all 0.3s linear; -o-transition: all 0.3s linear; transition: all 0.3s linear; - font: 15px "Lucida Console", Monaco, monospace; } select { - font: 14px "Lucida Console", Monaco, monospace; + font: 14px Helvetica, Arial, sans-serif; border: 1px solid #b2cce5; -webkit-appearance: none; -moz-appearance: none; appearance: none; - color: #374857; + color: #1D3040; } ::-webkit-input-placeholder { - font: 14px "Lucida Console", Monaco, monospace; - color: #bac7d3; + font: 25px Helvetica, Arial, sans-serif; + color: #EFEBE3; } :-moz-placeholder { /* Firefox 18- */ - font: 14px "Lucida Console", Monaco, monospace; - color: #bac7d3; + font: 25px Helvetica, Arial, sans-serif; + color: #EFEBE3; } ::-moz-placeholder { /* Firefox 19+ */ - font: 14px "Lucida Console", Monaco, monospace; - color: #bac7d3; + font: 25px Helvetica, Arial, sans-serif; + color: #EFEBE3; } :-ms-input-placeholder { - font: 14px "Lucida Console", Monaco, monospace; - color: #bac7d3; + font: 25px Helvetica, Arial, sans-serif; + color: #EFEBE3; } #post-index { @@ -2689,7 +2718,7 @@ select { overflow: hidden; } #post-index #post-index-wrapper #post-index-menu { - color: #f2f1ef; + color: #EFEBE3; } #post-index #post-index-wrapper #post-index-menu a { text-decoration-color: #fc6399; @@ -2699,7 +2728,7 @@ select { background: #fc6399; border-radius: 3px; padding: 3px; - color: #f2f1ef; + color: #EFEBE3; text-align: center; margin-bottom: 10px; float: right; @@ -2712,7 +2741,7 @@ select { margin: 20px 0 0 0; } #post-index #post-index-wrapper #posts-list a.page-link { - background: #f2f1ef; + background: #EFEBE3; display: inline-block; vertical-align: top; width: 100%; @@ -2754,7 +2783,7 @@ select { padding: 0 0 20px 0; } #post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta span { - color: #f2f1ef; + color: #EFEBE3; text-align: center; margin: 0 auto; display: block; @@ -2762,7 +2791,7 @@ select { #post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta label { font-size: 1.4em; font-weight: 700; - color: #f2f1ef; + color: #EFEBE3; padding: 5px; vertical-align: top; display: inline-block; @@ -2785,7 +2814,7 @@ select { #post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active=false] { width: 70px; background: black; - color: #f2f1ef; + color: #EFEBE3; } #post-index #post-index-wrapper #posts-list a.page-link div.page-bg #meta #options .meta-options[data-active=true] { width: 75px; @@ -2832,7 +2861,7 @@ select { padding: 0.75rem; } #post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper label { - color: #f2f1ef; + color: #EFEBE3; font-size: 0.8em; font-family: "Lucida Console", Monaco, monospace; font-weight: 600; @@ -2852,7 +2881,7 @@ select { margin: 0 0 5px 0; } #post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-title #calendar-icon { - background: #192128; + background: #05090b; border-radius: 3px 0 0 3px; display: inline-block; padding: 5.2px; @@ -2896,7 +2925,7 @@ select { background: black; } #post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=false] svg { - fill: #f2f1ef; + fill: #EFEBE3; } #post-edit-index #post-edit-index-wrapper #post-header #post-header-wrapper #post-meta #post-options button[data-active=true] { background: #f6b54d; @@ -2917,7 +2946,7 @@ select { width: 100%; min-height: 200px; background: black; - color: #374857; + color: #1D3040; vertical-align: middle; font-family: "Lucida Console", Monaco, monospace; } @@ -2935,7 +2964,7 @@ select { } #post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload { padding-top: 4px; - background: #f2f1ef; + background: #EFEBE3; } #post-edit-index #post-edit-index-wrapper #post-feature #featured-new-image-btn #new-feature-upload svg { fill: #fc6399; @@ -3060,7 +3089,7 @@ select { .dp { position: relative; - background: #374857; + background: #1D3040; box-shadow: 2px 2px 16px rgba(0, 0, 0, 0.25); line-height: 1.4; border-radius: 4px; @@ -3140,7 +3169,7 @@ select { text-align: center; text-decoration: none; position: relative; - color: #f2f1ef; + color: #EFEBE3; border-radius: 2px; border: 0; background: transparent; @@ -3150,7 +3179,7 @@ select { position: relative; text-align: center; padding-bottom: 16px; - background: #232e38; + background: #0d161d; } .dp-next, .dp-prev { @@ -3210,7 +3239,7 @@ select { .dp-cal-footer { text-align: center; - background: #232e38; + background: #0d161d; } .dp-day-today:after { @@ -3242,13 +3271,13 @@ select { .dp-close:active, .dp-clear:active, .dp-today:active, .dp-next:active, .dp-prev:active, .dp-cal-month:active, .dp-cal-year:active { background: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } @media screen and (min-device-width: 1200px) { .dp-close:hover, .dp-close:focus, .dp-clear:hover, .dp-clear:focus, .dp-today:hover, .dp-today:focus, .dp-next:hover, .dp-next:focus, .dp-prev:hover, .dp-prev:focus, .dp-cal-month:focus, .dp-cal-month:hover, .dp-cal-year:hover, .dp-cal-year:focus { background: #fc6399; - color: #f2f1ef; + color: #EFEBE3; } } .dp-col-header, .dp-day { @@ -3285,7 +3314,7 @@ select { .dp-day:hover, .dp-month:hover, .dp-year:hover, .dp-current:focus, .dp-current, .dp-day:focus, .dp-month:focus, .dp-year:focus { outline: none; background: black; - color: #f2f1ef; + color: #EFEBE3; } .dp-selected:hover, .dp-selected:focus, .dp-selected { @@ -3370,7 +3399,7 @@ select { visibility: hidden; } #edit-control .submit-start { - background: #f2f1ef; + background: #EFEBE3; } #edit-control .submit-start svg { fill: #32cd32; @@ -3379,13 +3408,13 @@ select { background: #32cd32; } #edit-control .submit-cool svg { - fill: #f2f1ef; + fill: #EFEBE3; } #edit-control .submit-delete { background: #F64747 !important; } #edit-control .submit-delete svg { - fill: #f2f1ef !important; + fill: #EFEBE3 !important; } #edit-control #option-date { height: 30px; @@ -3395,18 +3424,18 @@ select { margin: -13px 5px 0 0; display: inline-block; vertical-align: top; - fill: #f2f1ef; + fill: #EFEBE3; } #edit-control .content-editor-btn-icon { padding: 5px 5px 1px 5px; - color: #374857; + color: #1D3040; } #edit-control .content-editor-btn-icon svg { - fill: #374857; + fill: #1D3040; } #edit-control .content-editor-btn-text { padding: 5px; - color: #374857; + color: #1D3040; } #edit-control #option-bold { font-weight: bold; @@ -3427,7 +3456,7 @@ select { display: block; overflow-x: auto; padding: 0.5em; - background: #2b3844; + background: #13202b; } .hljs, .hljs-subst { @@ -3464,7 +3493,7 @@ select { } .hljs-attribute, .hljs-bullet, .hljs-class, .hljs-function, .hljs-function .hljs-keyword, .hljs-meta-keyword, .hljs-selector-pseudo, .hljs-tag { - color: #bac7d3; + color: #90b1cc; } .hljs-comment { diff --git a/public/assets/scripts/dash.min.js b/public/assets/scripts/dash.min.js index 2b81808..d0f4342 100644 --- a/public/assets/scripts/dash.min.js +++ b/public/assets/scripts/dash.min.js @@ -7,5 +7,5 @@ * @license MIT */ function It(e){return(It="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function kt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function St(){return(St=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Dt(e){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(e)}var Pt=Dt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),_t=Dt(/Edge/i),Bt=Dt(/firefox/i),Ct=Dt(/safari/i)&&!Dt(/chrome/i)&&!Dt(/android/i),Ot=Dt(/iP(ad|od|hone)/i),Mt=Dt(/chrome/i)&&Dt(/android/i),At={capture:!1,passive:!1};function Nt(e,t,n){e.addEventListener(t,n,!Pt&&At)}function Lt(e,t,n){e.removeEventListener(t,n,!Pt&&At)}function Rt(e,t){if(t){if(">"===t[0]&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch(e){return!1}return!1}}function Ht(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function Ft(e,t,n,r){if(e){n=n||document;do{if(null!=t&&(">"===t[0]?e.parentNode===n&&Rt(e,t):Rt(e,t))||r&&e===n)return e;if(e===n)break}while(e=Ht(e))}return null}var Xt,qt=/\s+/g;function Ut(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(qt," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(qt," ")}}function Yt(e,t,n){var r=e&&e.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),void 0===t?n:n[t];t in r||-1!==t.indexOf("webkit")||(t="-webkit-"+t),r[t]=n+("string"==typeof n?"":"px")}}function jt(e,t){var n="";if("string"==typeof e)n=e;else do{var r=Yt(e,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function Wt(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,i=r.length;if(n)for(;o=i:o<=i))return r;if(r===zt())break;r=Kt(r,!1)}return!1}function Vt(e,t,n){for(var r=0,o=0,i=e.children;o2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=xt(n,["evt"]);un.pluginEvent.bind(nr)(e,t,Tt({dragEl:fn,parentEl:hn,ghostEl:pn,rootEl:gn,nextEl:mn,lastDownEl:vn,cloneEl:yn,cloneHidden:bn,dragStarted:On,putSortable:Tn,activeSortable:nr.active,originalEvent:r,oldIndex:wn,oldDraggableIndex:In,newIndex:En,newDraggableIndex:kn,hideGhostForTarget:Zn,unhideGhostForTarget:Kn,cloneNowHidden:function(){bn=!0},cloneNowShown:function(){bn=!1},dispatchSortableEvent:function(e){dn({sortable:t,name:e,originalEvent:r})}},o))};function dn(e){!function(e){var t=e.sortable,n=e.rootEl,r=e.name,o=e.targetEl,i=e.cloneEl,a=e.toEl,s=e.fromEl,l=e.oldIndex,u=e.newIndex,c=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,h=e.putSortable,p=e.extraEventProperties;if(t=t||n&&n[on]){var g,m=t.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||Pt||_t?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=a||n,g.from=s||n,g.item=o||n,g.clone=i,g.oldIndex=l,g.newIndex=u,g.oldDraggableIndex=c,g.newDraggableIndex=d,g.originalEvent=f,g.pullMode=h?h.lastPutMode:void 0;var y=Tt({},p,un.getEventProperties(r,t));for(var b in y)g[b]=y[b];n&&n.dispatchEvent(g),m[v]&&m[v].call(t,g)}}(Tt({putSortable:Tn,cloneEl:yn,targetEl:fn,rootEl:gn,oldIndex:wn,oldDraggableIndex:In,newIndex:En,newDraggableIndex:kn},e))}var fn,hn,pn,gn,mn,vn,yn,bn,wn,En,In,kn,Sn,Tn,xn,Dn,Pn,_n,Bn,Cn,On,Mn,An,Nn,Ln,Rn=!1,Hn=!1,Fn=[],Xn=!1,qn=!1,Un=[],Yn=!1,jn=[],Wn="undefined"!=typeof document,zn=Ot,Gn=_t||Pt?"cssFloat":"float",Qn=Wn&&!Mt&&!Ot&&"draggable"in document.createElement("div"),Vn=function(){if(Wn){if(Pt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto","auto"===e.style.pointerEvents}}(),Jn=function(e,t){var n=Yt(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=Vt(e,0,t),i=Vt(e,1,t),a=o&&Yt(o),s=i&&Yt(i),l=a&&parseInt(a.marginLeft)+parseInt(a.marginRight)+Gt(o).width,u=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+Gt(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&a.float&&"none"!==a.float){var c="left"===a.float?"left":"right";return!i||"both"!==s.clear&&s.clear!==c?"horizontal":"vertical"}return o&&("block"===a.display||"flex"===a.display||"table"===a.display||"grid"===a.display||l>=r&&"none"===n[Gn]||i&&"none"===n[Gn]&&l+u>r)?"vertical":"horizontal"},$n=function(e){function t(e,n){return function(r,o,i,a){var s=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==e&&(n||s))return!0;if(null==e||!1===e)return!1;if(n&&"clone"===e)return e;if("function"==typeof e)return t(e(r,o,i,a),n)(r,o,i,a);var l=(n?r:o).options.group.name;return!0===e||"string"==typeof e&&e===l||e.join&&e.indexOf(l)>-1}}var n={},r=e.group;r&&"object"==It(r)||(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Zn=function(){!Vn&&pn&&Yt(pn,"display","none")},Kn=function(){!Vn&&pn&&Yt(pn,"display","")};Wn&&document.addEventListener("click",(function(e){if(Hn)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Hn=!1,!1}),!0);var er=function(e){if(fn){e=e.touches?e.touches[0]:e;var t=(o=e.clientX,i=e.clientY,Fn.some((function(e){if(!Jt(e)){var t=Gt(e),n=e[on].options.emptyInsertThreshold,r=o>=t.left-n&&o<=t.right+n,s=i>=t.top-n&&i<=t.bottom+n;return n&&r&&s?a=e:void 0}})),a);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[on]._onDragOver(n)}}var o,i,a},tr=function(e){fn&&fn.parentNode[on]._isOutsideThisEl(e.target)};function nr(e,t){if(!e||!e.nodeType||1!==e.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=St({},t),e[on]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Jn(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData("Text",t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==nr.supportPointer&&"PointerEvent"in window&&!Ct,emptyInsertThreshold:5};for(var r in un.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var o in $n(t),this)"_"===o.charAt(0)&&"function"==typeof this[o]&&(this[o]=this[o].bind(this));this.nativeDraggable=!t.forceFallback&&Qn,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Nt(e,"pointerdown",this._onTapStart):(Nt(e,"mousedown",this._onTapStart),Nt(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Nt(e,"dragover",this),Nt(e,"dragenter",this)),Fn.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),St(this,an())}function rr(e,t,n,r,o,i,a,s){var l,u,c=e[on],d=c.options.onMove;return!window.CustomEvent||Pt||_t?(l=document.createEvent("Event")).initEvent("move",!0,!0):l=new CustomEvent("move",{bubbles:!0,cancelable:!0}),l.to=t,l.from=e,l.dragged=n,l.draggedRect=r,l.related=o||t,l.relatedRect=i||Gt(t),l.willInsertAfter=s,l.originalEvent=a,e.dispatchEvent(l),d&&(u=d.call(c,l,a)),u}function or(e){e.draggable=!1}function ir(){Yn=!1}function ar(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function sr(e){return setTimeout(e,0)}function lr(e){return clearTimeout(e)}nr.prototype={constructor:nr,_isOutsideThisEl:function(e){this.el.contains(e)||e===this.el||(Mn=null)},_getDirection:function(e,t){return"function"==typeof this.options.direction?this.options.direction.call(this,e,t,fn):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,o=r.preventOnFilter,i=e.type,a=e.touches&&e.touches[0]||e.pointerType&&"touch"===e.pointerType&&e,s=(a||e).target,l=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,u=r.filter;if(function(e){jn.length=0;var t=e.getElementsByTagName("input"),n=t.length;for(;n--;){var r=t[n];r.checked&&jn.push(r)}}(n),!fn&&!(/mousedown|pointerdown/.test(i)&&0!==e.button||r.disabled)&&!l.isContentEditable&&(this.nativeDraggable||!Ct||!s||"SELECT"!==s.tagName.toUpperCase())&&!((s=Ft(s,r.draggable,n,!1))&&s.animated||vn===s)){if(wn=$t(s),In=$t(s,r.draggable),"function"==typeof u){if(u.call(this,e,s,this))return dn({sortable:t,rootEl:l,name:"filter",targetEl:s,toEl:n,fromEl:n}),cn("filter",t,{evt:e}),void(o&&e.cancelable&&e.preventDefault())}else if(u&&(u=u.split(",").some((function(r){if(r=Ft(l,r.trim(),n,!1))return dn({sortable:t,rootEl:r,name:"filter",targetEl:s,fromEl:n,toEl:n}),cn("filter",t,{evt:e}),!0}))))return void(o&&e.cancelable&&e.preventDefault());r.handle&&!Ft(l,r.handle,n,!1)||this._prepareDragStart(e,a,s)}}},_prepareDragStart:function(e,t,n){var r,o=this,i=o.el,a=o.options,s=i.ownerDocument;if(n&&!fn&&n.parentNode===i){var l=Gt(n);if(gn=i,hn=(fn=n).parentNode,mn=fn.nextSibling,vn=n,Sn=a.group,nr.dragged=fn,xn={target:fn,clientX:(t||e).clientX,clientY:(t||e).clientY},Bn=xn.clientX-l.left,Cn=xn.clientY-l.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,fn.style["will-change"]="all",r=function(){cn("delayEnded",o,{evt:e}),nr.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!Bt&&o.nativeDraggable&&(fn.draggable=!0),o._triggerDragStart(e,t),dn({sortable:o,name:"choose",originalEvent:e}),Ut(fn,a.chosenClass,!0))},a.ignore.split(",").forEach((function(e){Wt(fn,e.trim(),or)})),Nt(s,"dragover",er),Nt(s,"mousemove",er),Nt(s,"touchmove",er),Nt(s,"mouseup",o._onDrop),Nt(s,"touchend",o._onDrop),Nt(s,"touchcancel",o._onDrop),Bt&&this.nativeDraggable&&(this.options.touchStartThreshold=4,fn.draggable=!0),cn("delayStart",this,{evt:e}),!a.delay||a.delayOnTouchOnly&&!t||this.nativeDraggable&&(_t||Pt))r();else{if(nr.eventCanceled)return void this._onDrop();Nt(s,"mouseup",o._disableDelayedDrag),Nt(s,"touchend",o._disableDelayedDrag),Nt(s,"touchcancel",o._disableDelayedDrag),Nt(s,"mousemove",o._delayedDragTouchMoveHandler),Nt(s,"touchmove",o._delayedDragTouchMoveHandler),a.supportPointer&&Nt(s,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,a.delay)}}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){fn&&or(fn),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;Lt(e,"mouseup",this._disableDelayedDrag),Lt(e,"touchend",this._disableDelayedDrag),Lt(e,"touchcancel",this._disableDelayedDrag),Lt(e,"mousemove",this._delayedDragTouchMoveHandler),Lt(e,"touchmove",this._delayedDragTouchMoveHandler),Lt(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t=t||"touch"==e.pointerType&&e,!this.nativeDraggable||t?this.options.supportPointer?Nt(document,"pointermove",this._onTouchMove):Nt(document,t?"touchmove":"mousemove",this._onTouchMove):(Nt(fn,"dragend",this),Nt(gn,"dragstart",this._onDragStart));try{document.selection?sr((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(e){}},_dragStarted:function(e,t){if(Rn=!1,gn&&fn){cn("dragStarted",this,{evt:t}),this.nativeDraggable&&Nt(document,"dragover",tr);var n=this.options;!e&&Ut(fn,n.dragClass,!1),Ut(fn,n.ghostClass,!0),nr.active=this,e&&this._appendGhost(),dn({sortable:this,name:"start",originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Dn){this._lastX=Dn.clientX,this._lastY=Dn.clientY,Zn();for(var e=document.elementFromPoint(Dn.clientX,Dn.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Dn.clientX,Dn.clientY))!==t;)t=e;if(fn.parentNode[on]._isOutsideThisEl(e),t)do{if(t[on]){if(t[on]._onDragOver({clientX:Dn.clientX,clientY:Dn.clientY,target:e,rootEl:t})&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Kn()}},_onTouchMove:function(e){if(xn){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,o=e.touches?e.touches[0]:e,i=pn&&jt(pn,!0),a=pn&&i&&i.a,s=pn&&i&&i.d,l=zn&&Ln&&Zt(Ln),u=(o.clientX-xn.clientX+r.x)/(a||1)+(l?l[0]-Un[0]:0)/(a||1),c=(o.clientY-xn.clientY+r.y)/(s||1)+(l?l[1]-Un[1]:0)/(s||1);if(!nr.active&&!Rn){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))r.right+o||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+o}(e,o,this)&&!g.animated){if(g===fn)return B(!1);if(g&&i===e.target&&(a=g),a&&(n=Gt(a)),!1!==rr(gn,i,fn,t,a,n,e,!!a))return _(),i.appendChild(fn),hn=i,C(),B(!0)}else if(a.parentNode===i){n=Gt(a);var m,v,y,b=fn.parentNode!==i,w=!function(e,t,n){var r=n?e.left:e.top,o=n?e.right:e.bottom,i=n?e.width:e.height,a=n?t.left:t.top,s=n?t.right:t.bottom,l=n?t.width:t.height;return r===a||o===s||r+i/2===a+l/2}(fn.animated&&fn.toRect||t,a.animated&&a.toRect||n,o),E=o?"top":"left",I=Qt(a,"top","top")||Qt(fn,"top","top"),k=I?I.scrollTop:void 0;if(Mn!==a&&(v=n[E],Xn=!1,qn=!w&&s.invertSwap||b),0!==(m=function(e,t,n,r,o,i,a,s){var l=r?e.clientY:e.clientX,u=r?n.height:n.width,c=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!a)if(s&&Nnc+u*i/2:ld-Nn)return-An}else if(l>c+u*(1-o)/2&&ld-u*i/2))return l>c+u/2?1:-1;return 0}(e,a,n,o,w?1:s.swapThreshold,null==s.invertedSwapThreshold?s.swapThreshold:s.invertedSwapThreshold,qn,Mn===a))){var S=$t(fn);do{S-=m,y=hn.children[S]}while(y&&("none"===Yt(y,"display")||y===pn))}if(0===m||y===a)return B(!1);Mn=a,An=m;var T=a.nextElementSibling,x=!1,D=rr(gn,i,fn,t,a,n,e,x=1===m);if(!1!==D)return 1!==D&&-1!==D||(x=1===D),Yn=!0,setTimeout(ir,30),_(),x&&!T?i.appendChild(fn):a.parentNode.insertBefore(fn,x?T:a),I&&nn(I,0,k-I.scrollTop),hn=fn.parentNode,void 0===v||qn||(Nn=Math.abs(v-Gt(a)[E])),C(),B(!0)}if(i.contains(fn))return B(!1)}return!1}function P(s,l){cn(s,h,Tt({evt:e,isOwner:c,axis:o?"vertical":"horizontal",revert:r,dragRect:t,targetRect:n,canSort:d,fromSortable:f,target:a,completed:B,onMove:function(n,r){return rr(gn,i,fn,t,n,Gt(n),e,r)},changed:C},l))}function _(){P("dragOverAnimationCapture"),h.captureAnimationState(),h!==f&&f.captureAnimationState()}function B(t){return P("dragOverCompleted",{insertion:t}),t&&(c?u._hideClone():u._showClone(h),h!==f&&(Ut(fn,Tn?Tn.options.ghostClass:u.options.ghostClass,!1),Ut(fn,s.ghostClass,!0)),Tn!==h&&h!==nr.active?Tn=h:h===nr.active&&Tn&&(Tn=null),f===h&&(h._ignoreWhileAnimating=a),h.animateAll((function(){P("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==f&&(f.animateAll(),f._ignoreWhileAnimating=null)),(a===fn&&!fn.animated||a===i&&!a.animated)&&(Mn=null),s.dragoverBubble||e.rootEl||a===document||(fn.parentNode[on]._isOutsideThisEl(e.target),!t&&er(e)),!s.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),p=!0}function C(){En=$t(fn),kn=$t(fn,s.draggable),dn({sortable:h,name:"change",toEl:i,newIndex:En,newDraggableIndex:kn,originalEvent:e})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){Lt(document,"mousemove",this._onTouchMove),Lt(document,"touchmove",this._onTouchMove),Lt(document,"pointermove",this._onTouchMove),Lt(document,"dragover",er),Lt(document,"mousemove",er),Lt(document,"touchmove",er)},_offUpEvents:function(){var e=this.el.ownerDocument;Lt(e,"mouseup",this._onDrop),Lt(e,"touchend",this._onDrop),Lt(e,"pointerup",this._onDrop),Lt(e,"touchcancel",this._onDrop),Lt(document,"selectstart",this)},_onDrop:function(e){var t=this.el,n=this.options;En=$t(fn),kn=$t(fn,n.draggable),cn("drop",this,{evt:e}),hn=fn&&fn.parentNode,En=$t(fn),kn=$t(fn,n.draggable),nr.eventCanceled||(Rn=!1,qn=!1,Xn=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),lr(this.cloneId),lr(this._dragStartId),this.nativeDraggable&&(Lt(document,"drop",this),Lt(t,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Ct&&Yt(document.body,"user-select",""),Yt(fn,"transform",""),e&&(On&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),pn&&pn.parentNode&&pn.parentNode.removeChild(pn),(gn===hn||Tn&&"clone"!==Tn.lastPutMode)&&yn&&yn.parentNode&&yn.parentNode.removeChild(yn),fn&&(this.nativeDraggable&&Lt(fn,"dragend",this),or(fn),fn.style["will-change"]="",On&&!Rn&&Ut(fn,Tn?Tn.options.ghostClass:this.options.ghostClass,!1),Ut(fn,this.options.chosenClass,!1),dn({sortable:this,name:"unchoose",toEl:hn,newIndex:null,newDraggableIndex:null,originalEvent:e}),gn!==hn?(En>=0&&(dn({rootEl:hn,name:"add",toEl:hn,fromEl:gn,originalEvent:e}),dn({sortable:this,name:"remove",toEl:hn,originalEvent:e}),dn({rootEl:hn,name:"sort",toEl:hn,fromEl:gn,originalEvent:e}),dn({sortable:this,name:"sort",toEl:hn,originalEvent:e})),Tn&&Tn.save()):En!==wn&&En>=0&&(dn({sortable:this,name:"update",toEl:hn,originalEvent:e}),dn({sortable:this,name:"sort",toEl:hn,originalEvent:e})),nr.active&&(null!=En&&-1!==En||(En=wn,kn=In),dn({sortable:this,name:"end",toEl:hn,originalEvent:e}),this.save())))),this._nulling()},_nulling:function(){cn("nulling",this),gn=fn=hn=pn=mn=yn=vn=bn=xn=Dn=On=En=kn=wn=In=Mn=An=Tn=Sn=nr.dragged=nr.ghost=nr.clone=nr.active=null,jn.forEach((function(e){e.checked=!0})),jn.length=Pn=_n=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":fn&&(this._onDragOver(e),function(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move");e.cancelable&&e.preventDefault()}(e));break;case"selectstart":e.preventDefault()}},toArray:function(){for(var e,t=[],n=this.el.children,r=0,o=n.length,i=this.options;r