From 5aa1919f39578e4376529160460ff536228c1b92 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Fri, 10 Apr 2020 18:31:13 +0800 Subject: [PATCH 1/9] basic boilerplate completed --- data.json | 3 + index.js | 23 + package-lock.json | 2125 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 27 + views/index.jsx | 16 + 5 files changed, 2194 insertions(+) create mode 100644 data.json create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 views/index.jsx diff --git a/data.json b/data.json new file mode 100644 index 000000000..e780557c4 --- /dev/null +++ b/data.json @@ -0,0 +1,3 @@ +{ + "recipes": [] +} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 000000000..5e6e85845 --- /dev/null +++ b/index.js @@ -0,0 +1,23 @@ +const jsonfile = require('jsonfile'); +const file = 'data.json'; +const express = require('express'); +const app = express(); + +app.use(express.static(__dirname+'/public/')); +app.use(express.json()); +app.use(express.urlencoded({ + extended: true +})); +const methodOverride = require('method-override') +app.use(methodOverride('_method')); +const reactEngine = require('express-react-views').createEngine(); +app.engine('jsx', reactEngine); +app.set('views', __dirname + '/views'); +app.set('view engine', 'jsx'); + +//all recipe index +app.get('/', (request, response) => { + response.render('index'); +}); + +app.listen(3000); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..38d2da402 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2125 @@ +{ + "name": "recipe-keeper", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", + "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", + "requires": { + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/generator": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", + "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", + "requires": { + "@babel/types": "^7.9.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/types": "^7.9.0" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz", + "integrity": "sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", + "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.9.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", + "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", + "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==" + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", + "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "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==", + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", + "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", + "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "requires": { + "@babel/helper-builder-react-jsx": "^7.9.0", + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz", + "integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==", + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz", + "integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", + "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@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.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.5", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "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/preset-react": { + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz", + "integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.4", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/register": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.9.0.tgz", + "integrity": "sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==", + "requires": { + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", + "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.5", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.0", + "@babel/types": "^7.9.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.9.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", + "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "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" + } + }, + "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" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "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" + } + }, + "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" + } + }, + "browserslist": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz", + "integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==", + "requires": { + "caniuse-lite": "^1.0.30001038", + "electron-to-chromium": "^1.3.390", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "caniuse-lite": { + "version": "1.0.30001040", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001040.tgz", + "integrity": "sha512-Ep0tEPeI5wCvmJNrXjE3etgfI+lkl1fTDU6Y3ZH1mhrjkPlVI9W4pcKbMo+BQLpEWKVYYp2EmYaRsqpPC3k7lQ==" + }, + "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" + } + }, + "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=" + }, + "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==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "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==" + }, + "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==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "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" + } + }, + "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" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.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.402", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.402.tgz", + "integrity": "sha512-gaCDfX7IUH0s3JmBiHCDPrvVcdnTTP1r4WLJc2dHkYYbLmXZ2XHiJCcGQ9Balf91aKTvuCKCyu2JjJYRykoI1w==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "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" + } + }, + "express-react-views": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/express-react-views/-/express-react-views-0.11.0.tgz", + "integrity": "sha512-K1Yu0o6i5p6AULSJOs1Kb7j71Yofgg448lKFXejsEqkX+x45gIS8XT74YdPWVW7VOKBLf9E+Ji3UE10smnN+uw==", + "requires": { + "@babel/core": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@babel/register": "^7.0.0", + "js-beautify": "^1.7.3", + "lodash.escaperegexp": "^4.1.2", + "object-assign": "^4.1.1" + } + }, + "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" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "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" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "optional": true + }, + "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==" + }, + "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" + } + }, + "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==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "js-beautify": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.11.0.tgz", + "integrity": "sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==", + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~1.0.3", + "nopt": "^4.0.3" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "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" + } + }, + "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==" + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "requires": { + "leven": "^3.1.0" + } + }, + "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.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "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==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "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==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "method-override": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-3.0.0.tgz", + "integrity": "sha512-IJ2NNN/mSl9w3kzWB92rcdHpz+HjkxhDJWNDBqSlas+zQdP8wBiJzITPg08M/k2uVvMow7Sk41atndNtt/PHSA==", + "requires": { + "debug": "3.1.0", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + }, + "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" + } + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "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.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" + } + }, + "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==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz", + "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==" + }, + "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" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "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.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" + } + }, + "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" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "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-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=" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "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-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-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=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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==", + "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==", + "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==" + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "requires": { + "find-up": "^2.1.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "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.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" + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "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==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "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==", + "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" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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=" + } + } + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "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==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "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": { + "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==" + } + } + }, + "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" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "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" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "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" + } + }, + "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=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "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" + } + }, + "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==" + }, + "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==", + "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==" + }, + "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==" + }, + "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=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..e8d403768 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "recipe-keeper", + "version": "1.0.0", + "description": "Create an online recipe keeper.", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Travisenquiry/recipe-keeper.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/Travisenquiry/recipe-keeper/issues" + }, + "homepage": "https://github.com/Travisenquiry/recipe-keeper#readme", + "dependencies": { + "express": "^4.17.1", + "express-react-views": "^0.11.0", + "jsonfile": "^6.0.1", + "method-override": "^3.0.0", + "react": "^16.13.1", + "react-dom": "^16.13.1" + } +} diff --git a/views/index.jsx b/views/index.jsx new file mode 100644 index 000000000..c601e0eb1 --- /dev/null +++ b/views/index.jsx @@ -0,0 +1,16 @@ +var React = require('react'); +class Index extends React.Component { + render() { + return ( + + +
+ To be continued +
+ + + ); + } +} + +module.exports = Index; \ No newline at end of file From 807fc669cfee991427c010c351afeec8acd1518e Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Fri, 10 Apr 2020 18:57:25 +0800 Subject: [PATCH 2/9] completed new/create --- data.json | 4 +--- index.js | 19 ++++++++++++++++++- views/edit.jsx | 16 ++++++++++++++++ views/id.jsx | 16 ++++++++++++++++ views/new.jsx | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 views/edit.jsx create mode 100644 views/id.jsx create mode 100644 views/new.jsx diff --git a/data.json b/data.json index e780557c4..24b006113 100644 --- a/data.json +++ b/data.json @@ -1,3 +1 @@ -{ - "recipes": [] -} \ No newline at end of file +{"recipes":[]} \ No newline at end of file diff --git a/index.js b/index.js index 5e6e85845..048a438e0 100644 --- a/index.js +++ b/index.js @@ -16,8 +16,25 @@ app.set('views', __dirname + '/views'); app.set('view engine', 'jsx'); //all recipe index -app.get('/', (request, response) => { +app.get('/recipes', (request, response) => { response.render('index'); }); +app.get('/recipes/new', (request, response) => { + response.render('new'); +}); + +app.post('/recipes', (request, response) => { + jsonfile.readFile(file, (err, obj) =>{ + let recipeSubmit = { + "title": request.body.title, + "ingredients": request.body.ingredients, + "instructions": request.body.instructions + } + obj["recipes"].push(recipeSubmit); + jsonfile.writeFile(file, obj, (err) =>{ + response.redirect('/recipes'); + }); + }); +}); app.listen(3000); \ No newline at end of file diff --git a/views/edit.jsx b/views/edit.jsx new file mode 100644 index 000000000..54c1d2cd8 --- /dev/null +++ b/views/edit.jsx @@ -0,0 +1,16 @@ +var React = require('react'); +class Edit extends React.Component { + render() { + return ( + + +
+ To be continued +
+ + + ); + } +} + +module.exports = Edit; \ No newline at end of file diff --git a/views/id.jsx b/views/id.jsx new file mode 100644 index 000000000..1592ebcc5 --- /dev/null +++ b/views/id.jsx @@ -0,0 +1,16 @@ +var React = require('react'); +class Id extends React.Component { + render() { + return ( + + +
+ To be continued +
+ + + ); + } +} + +module.exports = Id; \ No newline at end of file diff --git a/views/new.jsx b/views/new.jsx new file mode 100644 index 000000000..27f3ad8b7 --- /dev/null +++ b/views/new.jsx @@ -0,0 +1,32 @@ +var React = require('react'); +class New extends React.Component { + render() { + return ( + + +
+
+
+ Title: + +
+
+ Ingredients: + +
+
+ Instructions: + +
+
+ +
+
+
+ + + ); + } +} + +module.exports = New; \ No newline at end of file From 453633fd67de2557423952bbd263216808962fe3 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Fri, 10 Apr 2020 19:36:24 +0800 Subject: [PATCH 3/9] completed show --- data.json | 2 +- index.js | 18 ++++++++++++++++++ views/id.jsx | 4 +++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/data.json b/data.json index 24b006113..e6de9cd68 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -{"recipes":[]} \ No newline at end of file +{"recipes":[{"title":"test","ingredients":"test1","instructions":"test2"},{"title":"SECOND STUFF","ingredients":"hellow owrld!","instructions":"hello to the world!"}]} diff --git a/index.js b/index.js index 048a438e0..47832d04c 100644 --- a/index.js +++ b/index.js @@ -24,6 +24,24 @@ app.get('/recipes/new', (request, response) => { response.render('new'); }); +app.get('/recipes/:id', (request, response) => { + jsonfile.readFile(file, (err, obj) => { + let inputId = parseInt(request.params.id) - 1; + let recipe; + obj["recipes"].forEach((element, index) => { + if(index === inputId){ + recipe = element; + } + }); + if(recipe === undefined){ + response.status(404); + response.send("not found"); + }else { + response.render('id', recipe); + } + }); +}); + app.post('/recipes', (request, response) => { jsonfile.readFile(file, (err, obj) =>{ let recipeSubmit = { diff --git a/views/id.jsx b/views/id.jsx index 1592ebcc5..c504d8d8b 100644 --- a/views/id.jsx +++ b/views/id.jsx @@ -5,7 +5,9 @@ class Id extends React.Component {
- To be continued +

Title: {this.props.title}

+

Ingredients: {this.props.ingredients}

+

Instructions: {this.props.instructions}

From 85dff17a36cbe98117b2ea5e4a9727cdb56fcd8c Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Sat, 11 Apr 2020 14:48:40 +0800 Subject: [PATCH 4/9] completed edit and update --- data.json | 2 +- index.js | 33 +++++++++++++++++++++++++++++++++ views/edit.jsx | 20 +++++++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/data.json b/data.json index e6de9cd68..58864f763 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -{"recipes":[{"title":"test","ingredients":"test1","instructions":"test2"},{"title":"SECOND STUFF","ingredients":"hellow owrld!","instructions":"hello to the world!"}]} +{"recipes":[{"title":"HELLOAGAIN","ingredients":"AGAINANDAGAIN","instructions":"AGAIN"},{"title":"LMAO","ingredients":"OMAO","instructions":"LMAO"}]} diff --git a/index.js b/index.js index 47832d04c..03992ab6c 100644 --- a/index.js +++ b/index.js @@ -42,6 +42,27 @@ app.get('/recipes/:id', (request, response) => { }); }); +app.get('/recipes/:id/edit', (request, response) => { + jsonfile.readFile(file, (err, obj) => { + let inputId = parseInt(request.params.id) - 1; + let recipe = {}; + obj["recipes"].forEach((element, index) => { + if(index === inputId){ + recipe = { + "currentRecipe": element, + "currentId": parseInt(request.params.id) + } + } + }); + if(recipe === undefined){ + response.status(404); + response.send("not found"); + }else { + response.render('edit', recipe); + } + }); +}); + app.post('/recipes', (request, response) => { jsonfile.readFile(file, (err, obj) =>{ let recipeSubmit = { @@ -55,4 +76,16 @@ app.post('/recipes', (request, response) => { }); }); }); + +app.put("/recipes/:id", (request, response) => { + jsonfile.readFile(file, (err, obj) => { + obj["recipes"][parseInt(request.params.id-1)].title = request.body.title; + obj["recipes"][parseInt(request.params.id-1)].instructions = request.body.instructions; + obj["recipes"][parseInt(request.params.id-1)].ingredients = request.body.ingredients; + jsonfile.writeFile(file, obj, (err) => { + response.redirect("/recipes/" + (request.params.id)); + }); + }); +}); + app.listen(3000); \ No newline at end of file diff --git a/views/edit.jsx b/views/edit.jsx index 54c1d2cd8..c486ce941 100644 --- a/views/edit.jsx +++ b/views/edit.jsx @@ -1,11 +1,29 @@ var React = require('react'); class Edit extends React.Component { render() { + let currentId = this.props.currentId; + let putLink = "/recipes/" + currentId + "?_method=put"; return (
- To be continued +
+
+ Title: + +
+
+ Ingredients: + +
+
+ Instructions: + +
+
+ +
+
From 7593ddda311fce68be1543508da8d84b77187e48 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Sat, 11 Apr 2020 15:53:11 +0800 Subject: [PATCH 5/9] completed delete --- data.json | 2 +- index.js | 18 +++++++++++++++--- views/id.jsx | 12 +++++++++--- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/data.json b/data.json index 58864f763..d9e7fe47f 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -{"recipes":[{"title":"HELLOAGAIN","ingredients":"AGAINANDAGAIN","instructions":"AGAIN"},{"title":"LMAO","ingredients":"OMAO","instructions":"LMAO"}]} +{"recipes":[{"title":"recipe1","ingredients":"recipe1","instructions":"recipe1"},{"title":"recipe2","ingredients":"recipe2","instructions":"recipe2"}]} diff --git a/index.js b/index.js index 03992ab6c..308003e8d 100644 --- a/index.js +++ b/index.js @@ -27,13 +27,16 @@ app.get('/recipes/new', (request, response) => { app.get('/recipes/:id', (request, response) => { jsonfile.readFile(file, (err, obj) => { let inputId = parseInt(request.params.id) - 1; - let recipe; + let recipe = {}; obj["recipes"].forEach((element, index) => { if(index === inputId){ - recipe = element; + recipe = { + "currentRecipe": element, + "currentId": inputId + } } }); - if(recipe === undefined){ + if(recipe.currentRecipe === undefined){ response.status(404); response.send("not found"); }else { @@ -88,4 +91,13 @@ app.put("/recipes/:id", (request, response) => { }); }); +app.delete("/recipes/:id", (request, response) => { + jsonfile.readFile(file, (err, obj) => { + obj['recipes'].splice(request.params.id, 1); + jsonfile.writeFile(file, obj, (err) => { + response.redirect('/recipes'); + }); + }); +}); + app.listen(3000); \ No newline at end of file diff --git a/views/id.jsx b/views/id.jsx index c504d8d8b..2efd98c46 100644 --- a/views/id.jsx +++ b/views/id.jsx @@ -1,14 +1,20 @@ var React = require('react'); class Id extends React.Component { render() { + let currentId = "'" + this.props.currentId + "'"; + let deleteLink = "/recipes/" + this.props.currentId + "?_method=delete" return (
-

Title: {this.props.title}

-

Ingredients: {this.props.ingredients}

-

Instructions: {this.props.instructions}

+

Title: {this.props.currentRecipe.title}

+

Ingredients: {this.props.currentRecipe.ingredients}

+

Instructions: {this.props.currentRecipe.instructions}

+
+ + +
); From b942b5d2ba58b5a37ea3e369ae103f9e477d41f0 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Sat, 11 Apr 2020 16:19:27 +0800 Subject: [PATCH 6/9] completed index get, deliverables done --- data.json | 2 +- index.js | 7 ++++++- views/index.jsx | 11 ++++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/data.json b/data.json index d9e7fe47f..75f6b7045 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -{"recipes":[{"title":"recipe1","ingredients":"recipe1","instructions":"recipe1"},{"title":"recipe2","ingredients":"recipe2","instructions":"recipe2"}]} +{"recipes":[{"title":"recipe2","ingredients":"recipe2","instructions":"recipe2"},{"title":"test1","ingredients":"test1","instructions":"test1"},{"title":"hello1","ingredients":"hello","instructions":"hello"}]} diff --git a/index.js b/index.js index 308003e8d..926330e42 100644 --- a/index.js +++ b/index.js @@ -17,7 +17,12 @@ app.set('view engine', 'jsx'); //all recipe index app.get('/recipes', (request, response) => { - response.render('index'); + jsonfile.readFile(file, (err, obj) => { + let recipes = []; + recipes = obj; + response.render('index', recipes); + }); + }); app.get('/recipes/new', (request, response) => { diff --git a/views/index.jsx b/views/index.jsx index c601e0eb1..b30cb06ec 100644 --- a/views/index.jsx +++ b/views/index.jsx @@ -1,11 +1,20 @@ var React = require('react'); class Index extends React.Component { render() { + let currentLink; + let recipeList = this.props.recipes.map((element, index) => { + for(let i = 1; i < this.props.recipes.length; i++){ + currentLink = "/recipes/" + String(index + 1); + return
  • {element.title}
  • + } + }); return (
    - To be continued +
      + {recipeList} +
    From 8fb02d9ed1a05bcdbb246b10b26df80a01e2fbb1 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Sat, 11 Apr 2020 16:32:23 +0800 Subject: [PATCH 7/9] completed further 1 --- views/id.jsx | 1 + views/index.jsx | 2 ++ views/new.jsx | 2 ++ 3 files changed, 5 insertions(+) diff --git a/views/id.jsx b/views/id.jsx index 2efd98c46..8e4fb9207 100644 --- a/views/id.jsx +++ b/views/id.jsx @@ -16,6 +16,7 @@ class Id extends React.Component { + Back to Index ); } diff --git a/views/index.jsx b/views/index.jsx index b30cb06ec..3a61ea994 100644 --- a/views/index.jsx +++ b/views/index.jsx @@ -11,10 +11,12 @@ class Index extends React.Component { return ( +

    Welcome to Recipe Keeper!

      {recipeList}
    + Create a new recipe
    diff --git a/views/new.jsx b/views/new.jsx index 27f3ad8b7..673c0ccaf 100644 --- a/views/new.jsx +++ b/views/new.jsx @@ -4,6 +4,7 @@ class New extends React.Component { return ( +

    Create a new recipe

    @@ -23,6 +24,7 @@ class New extends React.Component {
    + Back to Index ); From 572a7c2350ee71fd4bc7040f55b894d5fcd357c4 Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Sat, 11 Apr 2020 17:10:06 +0800 Subject: [PATCH 8/9] completed further 2, added and fix buttons for navigation --- data.json | 2 +- views/edit.jsx | 20 ++++++++++++++------ views/id.jsx | 40 ++++++++++++++++++++++++++++++---------- views/index.jsx | 21 +++++++++++++++------ views/new.jsx | 47 +++++++++++++++++++++++++++++------------------ 5 files changed, 89 insertions(+), 41 deletions(-) diff --git a/data.json b/data.json index 75f6b7045..69c0a4447 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -{"recipes":[{"title":"recipe2","ingredients":"recipe2","instructions":"recipe2"},{"title":"test1","ingredients":"test1","instructions":"test1"},{"title":"hello1","ingredients":"hello","instructions":"hello"}]} +{"recipes":[{"title":"recipe2","ingredients":"recipe2","instructions":"recipe2"},{"title":"hello1","ingredients":"hello","instructions":"hello"}]} diff --git a/views/edit.jsx b/views/edit.jsx index c486ce941..5259c006e 100644 --- a/views/edit.jsx +++ b/views/edit.jsx @@ -5,25 +5,33 @@ class Edit extends React.Component { let putLink = "/recipes/" + currentId + "?_method=put"; return ( + + + +
    +
    +

    Edit Recipe

    +
    -
    - Title: - +
    + Title: +
    -
    +
    Ingredients:
    -
    +
    Instructions:
    -
    +
    +
    diff --git a/views/id.jsx b/views/id.jsx index 8e4fb9207..f81132d7f 100644 --- a/views/id.jsx +++ b/views/id.jsx @@ -2,21 +2,41 @@ var React = require('react'); class Id extends React.Component { render() { let currentId = "'" + this.props.currentId + "'"; - let deleteLink = "/recipes/" + this.props.currentId + "?_method=delete" + let index = String(parseInt(this.props.currentId) + 1); + let deleteLink = "/recipes/" + this.props.currentId + "?_method=delete"; + let editLink = "/recipes/" + index + "/edit"; return ( + + + -
    -

    Title: {this.props.currentRecipe.title}

    -

    Ingredients: {this.props.currentRecipe.ingredients}

    -

    Instructions: {this.props.currentRecipe.instructions}

    +
    +
    +

    Title: {this.props.currentRecipe.title}

    +
    +
    +

    Ingredients: {this.props.currentRecipe.ingredients}

    +
    +
    +

    Instructions: {this.props.currentRecipe.instructions}

    +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +
    + -
    - - -
    - Back to Index ); } diff --git a/views/index.jsx b/views/index.jsx index 3a61ea994..413e0a940 100644 --- a/views/index.jsx +++ b/views/index.jsx @@ -10,13 +10,22 @@ class Index extends React.Component { }); return ( + + + -

    Welcome to Recipe Keeper!

    -
    -
      - {recipeList} -
    - Create a new recipe +
    +
    +

    Welcome to Recipe Keeper!

    +
    +
    +
      + {recipeList} +
    +
    +
    diff --git a/views/new.jsx b/views/new.jsx index 673c0ccaf..c5712f40a 100644 --- a/views/new.jsx +++ b/views/new.jsx @@ -3,28 +3,39 @@ class New extends React.Component { render() { return ( + + + -

    Create a new recipe

    +
    -
    -
    - Title: - +
    +

    Create a new recipe

    +
    +
    + +
    + Title: + +
    +
    + Ingredients: + +
    +
    + Instructions: + +
    +
    + +
    +
    -
    - Ingredients: - -
    -
    - Instructions: - -
    -
    - -
    - + +
    - Back to Index ); From b675701bee3cef5597143338c30138466b2b1a7b Mon Sep 17 00:00:00 2001 From: travisenquiry Date: Mon, 13 Apr 2020 19:40:49 +0800 Subject: [PATCH 9/9] completed further 6, unable to implement bootstrap nav nor CSS file --- background.jpg | Bin 0 -> 52803 bytes data.json | 2 +- index.js | 4 +++- views/id.jsx | 17 +++++++++------- views/index.jsx | 30 +++++++++++++++++++++++++---- views/new.jsx | 50 +++++++++++++++++++++++------------------------- 6 files changed, 64 insertions(+), 39 deletions(-) create mode 100644 background.jpg diff --git a/background.jpg b/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be66e9d8c2c0ccad186e8096d853aaad540d5297 GIT binary patch literal 52803 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

    qH5R?+WpJ`}_s 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%0Dhrxbszp(b}(#>(Wbej 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 loeNCyN { app.post('/recipes', (request, response) => { jsonfile.readFile(file, (err, obj) =>{ + var currentTime = new Date().toISOString().slice(0,10); let recipeSubmit = { "title": request.body.title, "ingredients": request.body.ingredients, - "instructions": request.body.instructions + "instructions": request.body.instructions, + "created": currentTime } obj["recipes"].push(recipeSubmit); jsonfile.writeFile(file, obj, (err) =>{ diff --git a/views/id.jsx b/views/id.jsx index f81132d7f..ae17397a0 100644 --- a/views/id.jsx +++ b/views/id.jsx @@ -11,29 +11,32 @@ class Id extends React.Component { -

    -
    +
    +

    Title: {this.props.currentRecipe.title}

    -
    +

    Ingredients: {this.props.currentRecipe.ingredients}

    -
    +

    Instructions: {this.props.currentRecipe.instructions}

    -
    +
    +

    Date Created: {this.props.currentRecipe.created}

    +
    +
    -
    +
    -
    + diff --git a/views/index.jsx b/views/index.jsx index 413e0a940..2c212dd76 100644 --- a/views/index.jsx +++ b/views/index.jsx @@ -14,16 +14,38 @@ class Index extends React.Component { -
    -
    +
    +

    Welcome to Recipe Keeper!

    -
    + +
      {recipeList}
    - diff --git a/views/new.jsx b/views/new.jsx index c5712f40a..6511050c2 100644 --- a/views/new.jsx +++ b/views/new.jsx @@ -7,33 +7,31 @@ class New extends React.Component { -
    -
    -
    -

    Create a new recipe

    -
    -
    -
    -
    - Title: - -
    -
    - Ingredients: - -
    -
    - Instructions: - -
    -
    - -
    -
    -
    -
    - Back to Index +
    +
    +

    Create a new recipe

    +
    +
    +
    +
    + Title: + +
    +
    + Ingredients: + +
    +
    + Instructions: + +
    +
    + +
    +
    +