]> zoso.dev Git - libnemo.git/commitdiff
Version 1.3.4
authorMiro Metsänheimo <miro@metsanheimo.fi>
Tue, 8 Jun 2021 15:09:10 +0000 (18:09 +0300)
committerMiro Metsänheimo <miro@metsanheimo.fi>
Tue, 8 Jun 2021 15:09:10 +0000 (18:09 +0300)
* Updated dependencies
* Improved documentation, JSDoc and typings

LICENSE
README.md
index.ts
package-lock.json
package.json
test/test.js

diff --git a/LICENSE b/LICENSE
index 63fb620eab20701cb51b26aa4d151aea9be25d37..ec0bdacf0d5863068b0332ca9b0e1e9a63628c0a 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2019 Miro Metsänheimo
+Copyright (c) 2021 Miro Metsänheimo
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
index cdbfd1cbb0f2286a0fa52f487d47b12db0ac1665..cd006f21f999f527c7ca6efcaeb432b0c536d583 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,37 +4,52 @@
 [![npm version](https://badge.fury.io/js/nanocurrency-web.svg)](https://badge.fury.io/js/nanocurrency-web)
 [![GitHub license](https://img.shields.io/github/license/numsu/nanocurrency-web-js)](https://github.com/numsu/nanocurrency-web-js/blob/master/LICENSE)
 
-Toolkit for Nano cryptocurrency client side offline implementations allowing you to build web- and mobile applications using Nano without compromising the user's keys by sending them out of their own device.
+Toolkit for Nano cryptocurrency client side offline implementations allowing you to build web- and mobile applications using Nano without ever compromising the user's keys by sending them out of their own device.
 
 The toolkit supports creating and importing wallets and signing blocks on-device. Meaning that the user's keys should never be required to leave the device. And much more!
 
 ## Features
 
-* Supports BIP32/44 hierarchial deterministic (HD wallet) private key derivation with Nano's derivation path
-* Generate new HD wallets with a BIP39 mnemonic phrase (Also used in Ledger hardware wallet)
-* Generate new legacy Nano wallets with mnemonic phrases (Also used in Natrium wallet)
-* Import wallets with a mnemonic phrase or a seed
-* Import wallets with the legacy Nano mnemonic phrase or seed
-* Sign send-, receive- and change representative blocks with a private key
-* Runs in all web browsers and mobile frameworks built with Javascript (doesn't require server-side NodeJS functions)
+* Generate new HD wallets (BIP32/44 hierarchial deterministic) with a BIP39 mnemonic phrase (Used in Ledger hardware wallet)
+* Generate new "legacy" Nano wallets with mnemonic phrases (Used in the Natrium wallet)
+* Import HD wallets with a mnemonic phrase or a seed
+* Import "legacy" wallets with the Nano mnemonic phrase or seed
+* Sign send-, receive- and change (representative) blocks with a private key
 * Convert Nano units
-* Sign any strings with the private key, for example you can use the private key as the password by using a private key signature of any string as the password
+* Verify the signature of a block
+* Sign any strings with the private key
+* Verify the signature of any string with the public key
 * Validate addresses and mnemonic words
+* Runs in all web browsers and mobile frameworks built with Javascript (doesn't require server-side NodeJS functions)
 
 ---
 
-## Usage
-
+## Installation
 ### From NPM
 
 ```console
 npm install nanocurrency-web
 ```
+### In web
+
+```html
+<script src="https://unpkg.com/nanocurrency-web@1.3.3" type="text/javascript"></script>
+<script type="text/javascript">
+    NanocurrencyWeb.wallet.generate(...);
+</script>
+```
+
+## Usage
 
 | WARNING: do not use any of the keys or addresses listed below to send real assets! |
 | --- |
 
-#### Wallet handling
+### Wallets and accounts
+The wallet is a hexadecimal string called a seed. From this seed you can deterministically derive millions of unique accounts. The first account in a wallet starts at index 0.
+
+The library is able to generate, import and derive accounts for HD wallets and "legacy" Nano wallets. A HD wallet seed length is 128 hexadecimal characters while a "legacy" Nano wallet seed is 64 characters long.
+
+These are the two most common used wallets in different applications. A best bet would be to support both of them. For example, when an user wants to import a wallet, you could always generate both wallets and check if either wallet's account at index 0 has a frontier using [the accounts_frontiers RPC](https://docs.nano.org/commands/rpc-protocol/#accounts_frontiers) command.
 
 ```javascript
 import { wallet } from 'nanocurrency-web'
@@ -46,7 +61,7 @@ const wallet = wallet.generate(entropy?, password?)
 
 // Generates a legacy wallet with a mnemonic phrase, seed and an account
 // You can provide your own seed to be used instead
-const wallet = wallet.generateLegacey(seed?)
+const wallet = wallet.generateLegacy(seed?)
 
 // Import a wallet with the mnemonic phrase
 const wallet = wallet.fromMnemonic(mnemonic, seedPassword?)
@@ -54,21 +69,21 @@ const wallet = wallet.fromMnemonic(mnemonic, seedPassword?)
 // Import a wallet with the legacy mnemonic phrase
 const wallet = wallet.fromLegacyMnemonic(mnemonic)
 
-// Import a wallet with a seed
+// Import a wallet with a seed, the mnemonic phrase will be undefined since it's not possible to infer it from the seed
 const wallet = wallet.fromSeed(seed)
 
-// Import a wallet with a legacy hex seed
+// Import a wallet with a legacy seed
 const wallet = wallet.fromLegacySeed(seed)
 
-// Derive private keys for a seed, from and to are number indexes
+// Derive private keys for a seed, from and to are number indexes. The first account index is 0.
 const accounts = wallet.accounts(seed, from, to)
 
-// Derive private keys for a legacy seed, from and to are number indexes
+// Derive private keys for a legacy seed, from and to are number indexes. The first account index is 0.
 const accounts = wallet.legacyAccounts(seed, from, to)
 ```
 
 ```javascript
-// The returned wallet JSON format is as follows. The mnemonic phrase will be undefined when importing with a seed.
+// The returned wallet JSON format is as follows. The mnemonic phrase will be undefined when importing with a seed, unless it's imported with a legacy seed
 {
     mnemonic: 'edge defense waste choose enrich upon flee junk siren film clown finish luggage leader kid quick brick print evidence swap drill paddle truly occur',
     seed: '0dc285fde768f7ff29b66ce7252d56ed92fe003b605907f7a4f683c3dc8586d34a914d3c71fc099bb38ee4a59e5b081a3497b7a323e90cc68f67b5837690310c',
@@ -83,38 +98,16 @@ const accounts = wallet.legacyAccounts(seed, from, to)
 }
 ```
 
-#### Signing a receive block
+### Blocks
+There are three different types of blocks; send, receive and change. While all of these are called "state" blocks, they are interpreted differently based on the data they contain.
 
-```javascript
-import { block } from 'nanocurrency-web'
-
-const privateKey = '781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3';
-const data = {
-    // Your current balance in RAW
-    walletBalanceRaw: '18618869000000000000000000000000',
-
-    // Your address
-    toAddress: 'nano_3kyb49tqpt39ekc49kbej51ecsjqnimnzw1swxz4boix4ctm93w517umuiw8',
-
-    // From wallet info
-    representativeAddress: 'nano_1stofnrxuz3cai7ze75o174bpm7scwj9jn3nxsn8ntzg784jf1gzn1jjdkou',
+A send block means that the amount of Nano decreases in the account while a receive block means that the amount increases. If the amount stays the same, it's interpreted as a change (representative) block. You are able to change the representative also at the same time when sending or receiving. All blocks are signed with the account's private key.
 
-    // From wallet info
-    frontier: '92BA74A7D6DC7557F3EDA95ADC6341D51AC777A0A6FF0688A5C492AB2B2CB40D',
+The functions are designed to have user friendly usage, but they will return the block exactly the way as the network accepts them. All that is left is to publish the block to the network with the [process RPC command](https://docs.nano.org/commands/rpc-protocol/#process).
 
-    // From the pending transaction
-    transactionHash: 'CBC911F57B6827649423C92C88C0C56637A4274FF019E77E24D61D12B5338783',
+Always fetch the most up to date information for the account from the network using the [account_info RPC command](https://docs.nano.org/commands/rpc-protocol/#account_info).
 
-    // From the pending transaction in RAW
-    amountRaw: '7000000000000000000000000000000',
-
-    // Generate the work server-side or with a DPOW service
-    work: 'c5cf86de24b24419',
-}
-
-// Returns a correctly formatted and signed block ready to be sent to the blockchain
-const signedBlock = block.receive(data, privateKey)
-```
+If the account hasn't been opened yet (this is the first block), you will need to use the "genesis" as frontier: `0000000000000000000000000000000000000000000000000000000000000000`.
 
 #### Signing a send block
 
@@ -123,7 +116,7 @@ import { block } from 'nanocurrency-web'
 
 const privateKey = '781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3';
 const data = {
-    // Current balance from wallet info
+    // Current balance from account info
     walletBalanceRaw: '5618869000000000000000000000000',
 
     // Your wallet address
@@ -132,16 +125,17 @@ const data = {
     // The address to send to
     toAddress: 'nano_1q3hqecaw15cjt7thbtxu3pbzr1eihtzzpzxguoc37bj1wc5ffoh7w74gi6p',
 
-    // From wallet info
+    // From account info
     representativeAddress: 'nano_1stofnrxuz3cai7ze75o174bpm7scwj9jn3nxsn8ntzg784jf1gzn1jjdkou',
 
-    // Previous block, from wallet info
+    // Previous block, from account info
     frontier: '92BA74A7D6DC7557F3EDA95ADC6341D51AC777A0A6FF0688A5C492AB2B2CB40D',
 
     // The amount to send in RAW
     amountRaw: '2000000000000000000000000000000',
 
     // Generate work on server-side or with a DPOW service
+    // This is optional, you don't have to generate work before signing the transaction
     work: 'fbffed7c73b61367',
 }
 
@@ -149,8 +143,40 @@ const data = {
 const signedBlock = block.send(data, privateKey)
 ```
 
-#### Signing a change representative block
+#### Signing a receive block
+```javascript
+import { block } from 'nanocurrency-web'
+
+const privateKey = '781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3';
+const data = {
+    // Your current balance in RAW from account info
+    walletBalanceRaw: '18618869000000000000000000000000',
+
+    // Your address
+    toAddress: 'nano_3kyb49tqpt39ekc49kbej51ecsjqnimnzw1swxz4boix4ctm93w517umuiw8',
+
+    // From account info
+    representativeAddress: 'nano_1stofnrxuz3cai7ze75o174bpm7scwj9jn3nxsn8ntzg784jf1gzn1jjdkou',
+
+    // From account info
+    frontier: '92BA74A7D6DC7557F3EDA95ADC6341D51AC777A0A6FF0688A5C492AB2B2CB40D',
+
+    // From the pending transaction
+    transactionHash: 'CBC911F57B6827649423C92C88C0C56637A4274FF019E77E24D61D12B5338783',
+
+    // From the pending transaction in RAW
+    amountRaw: '7000000000000000000000000000000',
+
+    // Generate the work server-side or with a DPOW service
+    // This is optional, you don't have to generate work before signing the transaction
+    work: 'c5cf86de24b24419',
+}
+
+// Returns a correctly formatted and signed block ready to be sent to the blockchain
+const signedBlock = block.receive(data, privateKey)
+```
 
+#### Signing a change (representative) block
 ```javascript
 import { block } from 'nanocurrency-web'
 
@@ -169,40 +195,16 @@ const data = {
     frontier: '128106287002E595F479ACD615C818117FCB3860EC112670557A2467386249D4',
 
     // Generate work on the server side or with a DPOW service
+    // This is optional, you don't have to generate work before signing the transaction
     work: '0000000000000000',
 }
 
 // Returns a correctly formatted and signed block ready to be sent to the blockchain
 const signedBlock = block.representative(data, privateKey)
 ```
-#### Verifying signatures
-Cryptocurrencies rely on public key cryptographgy. This means that you can use the public key to validate the signature of the block that is signed with the private key.
-```javascript
-import { tools } from 'nanocurrency-web'
+### Tools
 
-const valid = tools.verifyBlock(publicKey, block)
-```
-##### Using signature verification to prove ownership of the address
-You are able to challenge an user to prove ownership of a Nano address simply by making the user sign any string with the private key and validating the signature.
-```javascript
-import { tools } from 'nanocurrency-web'
-
-const nanoAddress = 'nano_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d'
-const privateKey = '3be4fc2ef3f3b7374e6fc4fb6e7bb153f8a2998b3b3dab50853eabe128024143'
-const data = 'sign this'
-
-// Make the user sign the data
-const signature = tools.sign(privateKey, data)
-
-// Infer the user's public key from the address (if not already known)
-const publicKey = tools.addressToPublicKey(nanoAddress)
-
-// Verify the signature using the public key, the signature and the original data
-const validSignature = tools.verify(publicKey, signature, data)
-
-```
-
-#### Converting units
+#### Converting Nano units
 
 Supported unit values are RAW, NANO, MRAI, KRAI, RAW.
 
@@ -216,51 +218,72 @@ const converted = tools.convert('1', 'NANO', 'RAW')
 const converted = tools.convert('1000000000000000000000000000000', 'RAW', 'NANO')
 ```
 
-#### Signing any data with the private key
+#### Verifying signatures and signing anything with the private key
+Cryptocurrencies rely on asymmetric cryptographgy. This means that you can use the public key to validate the signature of the block that is signed with the private key.
 
-For example implementing client side login with the password being the user's e-mail signed with their private key. Make sure that you double check the signature on the back-end side with the public key.
+For example implementing client side login with the password being the user's e-mail signed with their private key:
 
 ```javascript
 import { tools } from 'nanocurrency-web'
 
 const privateKey = '781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3'
 const signed = tools.sign(privateKey, 'foo@bar.com')
+
+// On the backend, verify that the signed value matches the hashed signature in your database
 ```
 
-#### Validating values
+You can also validate Nano blocks:
+```javascript
+import { tools } from 'nanocurrency-web'
 
+const valid = tools.verifyBlock(publicKey, block)
+```
+
+You are able to challenge an user to prove ownership of a Nano address simply by making the user sign any string with the private key and then validating the signature with the public key. You are even able to derive the public key from the Nano address.
 ```javascript
 import { tools } from 'nanocurrency-web'
 
-// Validate Nano address
-const valid = tools.validateAddress('nano_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d')
+const nanoAddress = 'nano_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d'
+const privateKey = '3be4fc2ef3f3b7374e6fc4fb6e7bb153f8a2998b3b3dab50853eabe128024143'
+const data = 'sign this'
 
-// Validate mnemonic words
-const valid = tools.validateMnemonic('edge defense waste choose enrich upon flee junk siren film clown finish luggage leader kid quick brick print evidence swap drill paddle truly occur')
+// Make the user sign the data
+const signature = tools.sign(privateKey, data)
+
+// Infer the user's public key from the address (if not already known)
+const publicKey = tools.addressToPublicKey(nanoAddress)
+
+// Verify the signature using the public key, the signature and the original data
+const validSignature = tools.verify(publicKey, signature, data)
 ```
 
+#### Validating values
+You are able to validate Nano addresses and mnemonic words.
+
+```javascript
+import { tools } from 'nanocurrency-web'
 
-### In web
+// Validate Nano address
+const valid = tools.validateAddress('nano_1pu7p5n3ghq1i1p4rhmek41f5add1uh34xpb94nkbxe8g4a6x1p69emk8y1d')
 
-```html
-<script src="https://unpkg.com/nanocurrency-web@1.3.3" type="text/javascript"></script>
-<script type="text/javascript">
-    NanocurrencyWeb.wallet.generate(...);
-</script>
+// Validate mnemonic phrases
+const valid = tools.validateMnemonic('edge defense waste choose enrich upon flee junk siren film clown finish luggage leader kid quick brick print evidence swap drill paddle truly occur')
 ```
 
----
-
 ## Contributions
 
 You are welcome to contribute to the module. To develop, use the following commands.
 
-* `npm install` to install all the dependencies
-* `npm run build` to build the Typescript code
-* `npm run test` to run the tests
+* `npm install` to install dependencies
+* `npm run build` to build and pack the code
+* `npm run test` to run tests
+
+Fork the project, make your changes and request them to be merged with a pull request. Issues are also welcome. If you have any questions, you can find me lurking around the Nano discord server.
 
 ## Donations
 
-If this helped you in your endeavours and you feel like supporting the developer, feel free to donate some Nano:
+If this helped you in your endeavours and you feel like supporting the developer, please donate some Nano:
 
 `nano_1iic4ggaxy3eyg89xmswhj1r5j9uj66beka8qjcte11bs6uc3wdwr7i9hepm`
+
+If you prefer the old fashioned way, I also have a [GitHub Sponsors account](https://github.com/sponsors/numsu).
index ea58a274fdacf232855f6dbeeadaa4787efc8c0d..2234ae73b9556885b360c104e8cf42504b2aea6b 100644 (file)
--- a/index.ts
+++ b/index.ts
@@ -1,5 +1,3 @@
-import { TextDecoder } from 'util'
-
 import BigNumber from 'bignumber.js'
 
 import AddressGenerator from './lib/address-generator'
@@ -32,11 +30,12 @@ const wallet = {
         * as a parameter and it will be used instead.
         *
         * An optional seed password can be used to encrypt the mnemonic phrase so the seed
-        * cannot be derived correctly without the password. Recovering the password is not possible.
+        * cannot be derived correctly without the password. Recovering the wallet without the
+        * password is not possible.
         *
-        * @param {string} [entropy] - (Optional) 64 byte hexadecimal string entropy to be used instead of the default
+        * @param {string} [entropy] - (Optional) 64 byte hexadecimal string entropy to be used instead of generating it
         * @param {string} [seedPassword] - (Optional) seed password
-        * @returns the generated mnemonic, seed and account
+        * @returns {Wallet} The wallet
         */
        generate: (entropy?: string, seedPassword?: string): Wallet => {
                return generator.generateWallet(entropy, seedPassword)
@@ -54,8 +53,8 @@ const wallet = {
         * Generation uses CryptoJS to generate random seed by default. You can give your own seed
         * as a parameter and it will be used instead.
         *
-        * @param {string} [seed] - (Optional) 64 byte hexadecimal string seed to be used instead of generating
-        * @returns the generated mnemonic, seed and account
+        * @param {string} [seed] - (Optional) 64 byte hexadecimal string seed to be used instead of generating it
+        * @returns {Wallet} The wallet
         */
        generateLegacy: (seed?: string): Wallet => {
                return generator.generateLegacyWallet(seed)
@@ -74,7 +73,7 @@ const wallet = {
         * @param {string} mnemonic - The mnemonic phrase. Words are separated with a space
         * @param {string} [seedPassword] - (Optional) seed password
         * @throws Throws an error if the mnemonic phrase doesn't pass validations
-        * @returns the wallet derived from the mnemonic (mnemonic, seed, account)
+        * @returns {Wallet} The wallet
         */
        fromMnemonic: (mnemonic: string, seedPassword?: string): Wallet => {
                return importer.fromMnemonic(mnemonic, seedPassword)
@@ -91,7 +90,7 @@ const wallet = {
         *
         * @param {string} mnemonic - The mnemonic phrase. Words are separated with a space
         * @throws Throws an error if the mnemonic phrase doesn't pass validations
-        * @returns the wallet derived from the mnemonic (mnemonic, seed, account)
+        * @returns {Wallet} The wallet
         */
        fromLegacyMnemonic: (mnemonic: string): Wallet => {
                return importer.fromLegacyMnemonic(mnemonic)
@@ -108,7 +107,7 @@ const wallet = {
         * The address is prefixed with 'nano_'.
         *
         * @param {string} seed - The seed
-        * @returns {Wallet} the wallet derived from the seed (seed, account)
+        * @returns {Wallet} The wallet, without the mnemonic phrase because it's not possible to infer backwards
         */
        fromSeed: (seed: string): Wallet => {
                return importer.fromSeed(seed)
@@ -125,8 +124,7 @@ const wallet = {
         * The address is prefixed with 'nano_'.
         *
         * @param {string} seed - The seed
-        * @returns the wallet derived from the seed (seed, account)
-        *
+        * @returns {Wallet} The wallet
         */
        fromLegacySeed: (seed: string): Wallet => {
                return importer.fromLegacySeed(seed)
@@ -142,6 +140,7 @@ const wallet = {
         * @param {string} seed - The seed
         * @param {number} from - The start index
         * @param {number} to - The end index
+        * @returns {Account[]} a list of accounts
         */
        accounts: (seed: string, from: number, to: number): Account[] => {
                return importer.fromSeed(seed, from, to).accounts
@@ -156,6 +155,7 @@ const wallet = {
         * @param {string} seed - The seed
         * @param {number} from - The start index
         * @param {number} to - The end index
+        * @returns {Account[]} a list of accounts
         */
        legacyAccounts: (seed: string, from: number, to: number): Account[] => {
                return importer.fromLegacySeed(seed, from, to).accounts
@@ -173,15 +173,16 @@ const block = {
         * the recipient address to the 'toAddress' property.
         * All the NANO amounts should be input in RAW format. The addresses should be
         * valid Nano addresses. Fetch the current balance, frontier (previous block) and
-        * representative address from the blockchain and generate work for the signature.
+        * representative address from the network.
         *
-        * The return value of this function is ready to be published to the blockchain.
+        * The return value of this function is ready to be published to the network.
         *
-        * NOTICE: Always fetch up-to-date account info from the blockchain
-        *         before signing the block
+        * NOTICE: Always fetch up-to-date account info from the network
+        *         before signing the block.
         *
         * @param {SendBlock} data The data for the block
         * @param {string} privateKey Private key to sign the block
+        * @returns {SignedBlock} the signed block
         */
        send: (data: SendBlock, privateKey: string): SignedBlock => {
                return blockSigner.send(data, privateKey)
@@ -194,16 +195,17 @@ const block = {
         * For a receive block, put your own address to the 'toAddress' property.
         * All the NANO amounts should be input in RAW format. The addresses should be
         * valid Nano addresses. Fetch the current balance, frontier (previous block) and
-        * representative address from the blockchain and generate work for the signature.
+        * representative address from the network.
         * Input the receive amount and transaction hash from the pending block.
         *
-        * The return value of this function is ready to be published to the blockchain.
+        * The return value of this function is ready to be published to the network.
         *
-        * NOTICE: Always fetch up-to-date account info from the blockchain
-        *         before signing the block
+        * NOTICE: Always fetch up-to-date account info from the network
+        *         before signing the block.
         *
         * @param {ReceiveBlock} data The data for the block
         * @param {string} privateKey Private key to sign the block
+        * @returns {SignedBlock} the signed block
         */
        receive: (data: ReceiveBlock, privateKey: string): SignedBlock => {
                return blockSigner.receive(data, privateKey)
@@ -216,15 +218,15 @@ const block = {
         * For a change block, put your own address to the 'address' property.
         * All the NANO amounts should be input in RAW format. The addresses should be
         * valid Nano addresses. Fetch the current balance, previous block from the
-        * blockchain and generate work for the signature. Set the new representative address
+        * network. Set the new representative address
         * as the representative.
         *
-        * NOTICE: Always fetch up-to-date account info from the blockchain
-        *         before signing the block
+        * NOTICE: Always fetch up-to-date account info from the network
+        *         before signing the block.
         *
         * @param {RepresentativeBlock} data The data for the block
         * @param {string} privateKey Private key to sign the block
-        *
+        * @returns {SignedBlock} the signed block
         */
        representative: (data: RepresentativeBlock, privateKey: string): SignedBlock => {
                const block: SendBlock = {
@@ -249,6 +251,7 @@ const tools = {
         * @param {string | BigNumber} input The input value
         * @param {string} inputUnit The unit of the input value
         * @param {string} outputUnit The unit you wish to convert to
+        * @returns {string} The converted value
         */
        convert: (input: string | BigNumber, inputUnit: string, outputUnit: string): string => {
                return NanoConverter.convert(input, inputUnit, outputUnit)
@@ -259,6 +262,7 @@ const tools = {
         *
         * @param {string} privateKey The private key to sign with
         * @param {...string} input Data to sign
+        * @returns {string} The signature
         */
        sign: (privateKey: string, ...input: string[]): string => {
                const data = input.map(Convert.stringToHex)
@@ -271,6 +275,7 @@ const tools = {
         * @param {string} publicKey The public key to verify with
         * @param {string} signature The signature to verify
         * @param {...string} input Data to verify
+        * @returns {boolean} valid or not
         */
        verify: (publicKey: string, signature: string, ...input: string[]): boolean => {
                const data = input.map(Convert.stringToHex)
@@ -282,8 +287,9 @@ const tools = {
         *
         * @param {string} publicKey The public key to verify with
         * @param {BlockData} block The block to verify
+        * @returns {boolean} valid or not
         */
-       verifyBlock: (publicKey: string, block: BlockData) => {
+       verifyBlock: (publicKey: string, block: BlockData): boolean => {
                const preamble = 0x6.toString().padStart(64, '0')
                return signer.verify(publicKey, block.signature,
                                preamble,
@@ -298,6 +304,7 @@ const tools = {
         * Validate a Nano address
         *
         * @param {string} input The address to validate
+        * @returns {boolean} valid or not
         */
        validateAddress: (input: string): boolean => {
                return nanoAddress.validateNanoAddress(input)
@@ -307,6 +314,7 @@ const tools = {
         * Validate mnemonic words
         *
         * @param {string} input The address to validate
+        * @returns {boolean} valid or not
         */
        validateMnemonic: (input: string): boolean => {
                return importer.validateMnemonic(input)
@@ -316,6 +324,7 @@ const tools = {
         * Convert a Nano address to a public key
         *
         * @param {string} input Nano address to convert
+        * @returns {string} the public key
         */
        addressToPublicKey: (input: string): string => {
                const cleaned = input
index 3f8de041d9d88cfdbf01e50e8c9c4937fd9e55c1..b2f2a8391b703161e86cc39cb376e49cac76d068 100644 (file)
 {
        "name": "nanocurrency-web",
-       "version": "1.3.3",
+       "version": "1.3.4",
        "lockfileVersion": 1,
        "requires": true,
        "dependencies": {
+               "@discoveryjs/json-ext": {
+                       "version": "0.5.3",
+                       "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz",
+                       "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==",
+                       "dev": true
+               },
+               "@types/eslint": {
+                       "version": "7.2.13",
+                       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz",
+                       "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==",
+                       "dev": true,
+                       "requires": {
+                               "@types/estree": "*",
+                               "@types/json-schema": "*"
+                       }
+               },
+               "@types/eslint-scope": {
+                       "version": "3.7.0",
+                       "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz",
+                       "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==",
+                       "dev": true,
+                       "requires": {
+                               "@types/eslint": "*",
+                               "@types/estree": "*"
+                       }
+               },
+               "@types/estree": {
+                       "version": "0.0.47",
+                       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz",
+                       "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==",
+                       "dev": true
+               },
+               "@types/json-schema": {
+                       "version": "7.0.7",
+                       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz",
+                       "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==",
+                       "dev": true
+               },
                "@types/node": {
                        "version": "12.7.12",
                        "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
                        "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
                        "dev": true
                },
+               "@ungap/promise-all-settled": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
+                       "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
+                       "dev": true
+               },
                "@webassemblyjs/ast": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
-                       "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz",
+                       "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/helper-module-context": "1.8.5",
-                               "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-                               "@webassemblyjs/wast-parser": "1.8.5"
+                               "@webassemblyjs/helper-numbers": "1.11.0",
+                               "@webassemblyjs/helper-wasm-bytecode": "1.11.0"
                        }
                },
                "@webassemblyjs/floating-point-hex-parser": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
-                       "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz",
+                       "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==",
                        "dev": true
                },
                "@webassemblyjs/helper-api-error": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
-                       "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz",
+                       "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==",
                        "dev": true
                },
                "@webassemblyjs/helper-buffer": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
-                       "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz",
+                       "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==",
                        "dev": true
                },
-               "@webassemblyjs/helper-code-frame": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
-                       "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+               "@webassemblyjs/helper-numbers": {
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz",
+                       "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/wast-printer": "1.8.5"
-                       }
-               },
-               "@webassemblyjs/helper-fsm": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
-                       "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
-                       "dev": true
-               },
-               "@webassemblyjs/helper-module-context": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
-                       "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
-                       "dev": true,
-                       "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "mamacro": "^0.0.3"
+                               "@webassemblyjs/floating-point-hex-parser": "1.11.0",
+                               "@webassemblyjs/helper-api-error": "1.11.0",
+                               "@xtuc/long": "4.2.2"
                        }
                },
                "@webassemblyjs/helper-wasm-bytecode": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
-                       "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz",
+                       "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==",
                        "dev": true
                },
                "@webassemblyjs/helper-wasm-section": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
-                       "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz",
+                       "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-buffer": "1.8.5",
-                               "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-                               "@webassemblyjs/wasm-gen": "1.8.5"
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/helper-buffer": "1.11.0",
+                               "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
+                               "@webassemblyjs/wasm-gen": "1.11.0"
                        }
                },
                "@webassemblyjs/ieee754": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
-                       "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz",
+                       "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==",
                        "dev": true,
                        "requires": {
                                "@xtuc/ieee754": "^1.2.0"
                        }
                },
                "@webassemblyjs/leb128": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
-                       "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz",
+                       "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==",
                        "dev": true,
                        "requires": {
                                "@xtuc/long": "4.2.2"
                        }
                },
                "@webassemblyjs/utf8": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
-                       "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz",
+                       "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==",
                        "dev": true
                },
                "@webassemblyjs/wasm-edit": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
-                       "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz",
+                       "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-buffer": "1.8.5",
-                               "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-                               "@webassemblyjs/helper-wasm-section": "1.8.5",
-                               "@webassemblyjs/wasm-gen": "1.8.5",
-                               "@webassemblyjs/wasm-opt": "1.8.5",
-                               "@webassemblyjs/wasm-parser": "1.8.5",
-                               "@webassemblyjs/wast-printer": "1.8.5"
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/helper-buffer": "1.11.0",
+                               "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
+                               "@webassemblyjs/helper-wasm-section": "1.11.0",
+                               "@webassemblyjs/wasm-gen": "1.11.0",
+                               "@webassemblyjs/wasm-opt": "1.11.0",
+                               "@webassemblyjs/wasm-parser": "1.11.0",
+                               "@webassemblyjs/wast-printer": "1.11.0"
                        }
                },
                "@webassemblyjs/wasm-gen": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
-                       "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz",
+                       "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-                               "@webassemblyjs/ieee754": "1.8.5",
-                               "@webassemblyjs/leb128": "1.8.5",
-                               "@webassemblyjs/utf8": "1.8.5"
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
+                               "@webassemblyjs/ieee754": "1.11.0",
+                               "@webassemblyjs/leb128": "1.11.0",
+                               "@webassemblyjs/utf8": "1.11.0"
                        }
                },
                "@webassemblyjs/wasm-opt": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
-                       "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz",
+                       "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-buffer": "1.8.5",
-                               "@webassemblyjs/wasm-gen": "1.8.5",
-                               "@webassemblyjs/wasm-parser": "1.8.5"
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/helper-buffer": "1.11.0",
+                               "@webassemblyjs/wasm-gen": "1.11.0",
+                               "@webassemblyjs/wasm-parser": "1.11.0"
                        }
                },
                "@webassemblyjs/wasm-parser": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
-                       "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz",
+                       "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-api-error": "1.8.5",
-                               "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-                               "@webassemblyjs/ieee754": "1.8.5",
-                               "@webassemblyjs/leb128": "1.8.5",
-                               "@webassemblyjs/utf8": "1.8.5"
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/helper-api-error": "1.11.0",
+                               "@webassemblyjs/helper-wasm-bytecode": "1.11.0",
+                               "@webassemblyjs/ieee754": "1.11.0",
+                               "@webassemblyjs/leb128": "1.11.0",
+                               "@webassemblyjs/utf8": "1.11.0"
                        }
                },
-               "@webassemblyjs/wast-parser": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
-                       "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+               "@webassemblyjs/wast-printer": {
+                       "version": "1.11.0",
+                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz",
+                       "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/floating-point-hex-parser": "1.8.5",
-                               "@webassemblyjs/helper-api-error": "1.8.5",
-                               "@webassemblyjs/helper-code-frame": "1.8.5",
-                               "@webassemblyjs/helper-fsm": "1.8.5",
+                               "@webassemblyjs/ast": "1.11.0",
                                "@xtuc/long": "4.2.2"
                        }
                },
-               "@webassemblyjs/wast-printer": {
-                       "version": "1.8.5",
-                       "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
-                       "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+               "@webpack-cli/configtest": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz",
+                       "integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==",
+                       "dev": true
+               },
+               "@webpack-cli/info": {
+                       "version": "1.3.0",
+                       "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz",
+                       "integrity": "sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/wast-parser": "1.8.5",
-                               "@xtuc/long": "4.2.2"
+                               "envinfo": "^7.7.3"
                        }
                },
+               "@webpack-cli/serve": {
+                       "version": "1.5.1",
+                       "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz",
+                       "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==",
+                       "dev": true
+               },
                "@xtuc/ieee754": {
                        "version": "1.2.0",
                        "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
                        "dev": true
                },
                "acorn": {
-                       "version": "6.4.2",
-                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
-                       "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+                       "version": "8.3.0",
+                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz",
+                       "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==",
                        "dev": true
                },
                "ajv": {
-                       "version": "6.10.2",
-                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
-                       "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+                       "version": "6.12.6",
+                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+                       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
                        "dev": true,
                        "requires": {
-                               "fast-deep-equal": "^2.0.1",
+                               "fast-deep-equal": "^3.1.1",
                                "fast-json-stable-stringify": "^2.0.0",
                                "json-schema-traverse": "^0.4.1",
                                "uri-js": "^4.2.2"
                        }
                },
-               "ajv-errors": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
-                       "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
-                       "dev": true
-               },
                "ajv-keywords": {
-                       "version": "3.4.1",
-                       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
-                       "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+                       "version": "3.5.2",
+                       "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+                       "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
                        "dev": true
                },
                "ansi-colors": {
-                       "version": "3.2.3",
-                       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
-                       "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
+                       "version": "4.1.1",
+                       "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+                       "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
                        "dev": true
                },
                "ansi-regex": {
                        "dev": true
                },
                "ansi-styles": {
-                       "version": "3.2.1",
-                       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-                       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+                       "version": "4.3.0",
+                       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+                       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
                        "dev": true,
                        "requires": {
-                               "color-convert": "^1.9.0"
+                               "color-convert": "^2.0.1"
                        }
                },
                "anymatch": {
-                       "version": "3.1.1",
-                       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
-                       "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+                       "version": "3.1.2",
+                       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+                       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
                        "dev": true,
-                       "optional": true,
                        "requires": {
                                "normalize-path": "^3.0.0",
                                "picomatch": "^2.0.4"
                        }
                },
-               "aproba": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
-                       "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
-                       "dev": true
-               },
                "argparse": {
-                       "version": "1.0.10",
-                       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-                       "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-                       "dev": true,
-                       "requires": {
-                               "sprintf-js": "~1.0.2"
-                       }
-               },
-               "arr-diff": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-                       "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-                       "dev": true
-               },
-               "arr-flatten": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-                       "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-                       "dev": true
-               },
-               "arr-union": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-                       "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-                       "dev": true
-               },
-               "array-unique": {
-                       "version": "0.3.2",
-                       "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-                       "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+                       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
                        "dev": true
                },
-               "asn1.js": {
-                       "version": "4.10.1",
-                       "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
-                       "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.0.0",
-                               "inherits": "^2.0.1",
-                               "minimalistic-assert": "^1.0.0"
-                       }
-               },
-               "assert": {
-                       "version": "1.5.0",
-                       "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-                       "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
-                       "dev": true,
-                       "requires": {
-                               "object-assign": "^4.1.1",
-                               "util": "0.10.3"
-                       },
-                       "dependencies": {
-                               "inherits": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
-                                       "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
-                                       "dev": true
-                               },
-                               "util": {
-                                       "version": "0.10.3",
-                                       "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
-                                       "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
-                                       "dev": true,
-                                       "requires": {
-                                               "inherits": "2.0.1"
-                                       }
-                               }
-                       }
-               },
                "assertion-error": {
                        "version": "1.1.0",
                        "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
                        "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
                        "dev": true
                },
-               "assign-symbols": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-                       "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-                       "dev": true
-               },
-               "async-each": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-                       "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-                       "dev": true,
-                       "optional": true
-               },
-               "atob": {
-                       "version": "2.1.2",
-                       "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-                       "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-                       "dev": true
-               },
                "balanced-match": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-                       "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-                       "dev": true
-               },
-               "base": {
-                       "version": "0.11.2",
-                       "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-                       "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-                       "dev": true,
-                       "requires": {
-                               "cache-base": "^1.0.1",
-                               "class-utils": "^0.3.5",
-                               "component-emitter": "^1.2.1",
-                               "define-property": "^1.0.0",
-                               "isobject": "^3.0.1",
-                               "mixin-deep": "^1.2.0",
-                               "pascalcase": "^0.1.1"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                                       "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^1.0.0"
-                                       }
-                               },
-                               "is-accessor-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-data-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-descriptor": {
-                                       "version": "1.0.2",
-                                       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                                       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-accessor-descriptor": "^1.0.0",
-                                               "is-data-descriptor": "^1.0.0",
-                                               "kind-of": "^6.0.2"
-                                       }
-                               }
-                       }
-               },
-               "base64-js": {
-                       "version": "1.3.1",
-                       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
-                       "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
-                       "dev": true
-               },
-               "big.js": {
-                       "version": "5.2.2",
-                       "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
-                       "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+                       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
                        "dev": true
                },
                "bignumber.js": {
-                       "version": "9.0.0",
-                       "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
-                       "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
+                       "version": "9.0.1",
+                       "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
+                       "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
                },
                "binary-extensions": {
                        "version": "2.2.0",
                        "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
                        "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
-                       "dev": true,
-                       "optional": true
+                       "dev": true
                },
                "blakejs": {
                        "version": "1.1.0",
                        "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz",
                        "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U="
                },
-               "bluebird": {
-                       "version": "3.7.2",
-                       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
-                       "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-                       "dev": true
-               },
-               "bn.js": {
-                       "version": "4.11.8",
-                       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-                       "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
-                       "dev": true
-               },
                "brace-expansion": {
                        "version": "1.1.11",
                        "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
                                "fill-range": "^7.0.1"
                        }
                },
-               "brorand": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
-                       "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
-                       "dev": true
-               },
                "browser-stdout": {
                        "version": "1.3.1",
                        "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
                        "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
                        "dev": true
                },
-               "browserify-aes": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
-                       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
-                       "dev": true,
-                       "requires": {
-                               "buffer-xor": "^1.0.3",
-                               "cipher-base": "^1.0.0",
-                               "create-hash": "^1.1.0",
-                               "evp_bytestokey": "^1.0.3",
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.0.1"
-                       }
-               },
-               "browserify-cipher": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
-                       "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
-                       "dev": true,
-                       "requires": {
-                               "browserify-aes": "^1.0.4",
-                               "browserify-des": "^1.0.0",
-                               "evp_bytestokey": "^1.0.0"
-                       }
-               },
-               "browserify-des": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
-                       "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
-                       "dev": true,
-                       "requires": {
-                               "cipher-base": "^1.0.1",
-                               "des.js": "^1.0.0",
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.1.2"
-                       }
-               },
-               "browserify-rsa": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
-                       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.1.0",
-                               "randombytes": "^2.0.1"
-                       }
-               },
-               "browserify-sign": {
-                       "version": "4.0.4",
-                       "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
-                       "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.1.1",
-                               "browserify-rsa": "^4.0.0",
-                               "create-hash": "^1.1.0",
-                               "create-hmac": "^1.1.2",
-                               "elliptic": "^6.0.0",
-                               "inherits": "^2.0.1",
-                               "parse-asn1": "^5.0.0"
-                       }
-               },
-               "browserify-zlib": {
-                       "version": "0.2.0",
-                       "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
-                       "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
-                       "dev": true,
-                       "requires": {
-                               "pako": "~1.0.5"
-                       }
-               },
-               "buffer": {
-                       "version": "4.9.1",
-                       "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
-                       "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+               "browserslist": {
+                       "version": "4.16.6",
+                       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
+                       "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
                        "dev": true,
                        "requires": {
-                               "base64-js": "^1.0.2",
-                               "ieee754": "^1.1.4",
-                               "isarray": "^1.0.0"
+                               "caniuse-lite": "^1.0.30001219",
+                               "colorette": "^1.2.2",
+                               "electron-to-chromium": "^1.3.723",
+                               "escalade": "^3.1.1",
+                               "node-releases": "^1.1.71"
                        }
                },
                "buffer-from": {
                        "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
                        "dev": true
                },
-               "buffer-xor": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
-                       "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
-                       "dev": true
-               },
-               "builtin-status-codes": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
-                       "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+               "camelcase": {
+                       "version": "6.2.0",
+                       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
+                       "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
                        "dev": true
                },
-               "cacache": {
-                       "version": "12.0.4",
-                       "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
-                       "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
-                       "dev": true,
-                       "requires": {
-                               "bluebird": "^3.5.5",
-                               "chownr": "^1.1.1",
-                               "figgy-pudding": "^3.5.1",
-                               "glob": "^7.1.4",
-                               "graceful-fs": "^4.1.15",
-                               "infer-owner": "^1.0.3",
-                               "lru-cache": "^5.1.1",
-                               "mississippi": "^3.0.0",
-                               "mkdirp": "^0.5.1",
-                               "move-concurrently": "^1.0.1",
-                               "promise-inflight": "^1.0.1",
-                               "rimraf": "^2.6.3",
-                               "ssri": "^6.0.1",
-                               "unique-filename": "^1.1.1",
-                               "y18n": "^4.0.0"
-                       },
-                       "dependencies": {
-                               "glob": {
-                                       "version": "7.1.6",
-                                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-                                       "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "fs.realpath": "^1.0.0",
-                                               "inflight": "^1.0.4",
-                                               "inherits": "2",
-                                               "minimatch": "^3.0.4",
-                                               "once": "^1.3.0",
-                                               "path-is-absolute": "^1.0.0"
-                                       }
-                               }
-                       }
-               },
-               "cache-base": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-                       "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-                       "dev": true,
-                       "requires": {
-                               "collection-visit": "^1.0.0",
-                               "component-emitter": "^1.2.1",
-                               "get-value": "^2.0.6",
-                               "has-value": "^1.0.0",
-                               "isobject": "^3.0.1",
-                               "set-value": "^2.0.0",
-                               "to-object-path": "^0.3.0",
-                               "union-value": "^1.0.0",
-                               "unset-value": "^1.0.0"
-                       }
-               },
-               "camelcase": {
-                       "version": "5.3.1",
-                       "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-                       "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+               "caniuse-lite": {
+                       "version": "1.0.30001235",
+                       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz",
+                       "integrity": "sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A==",
                        "dev": true
                },
                "chai": {
-                       "version": "4.2.0",
-                       "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz",
-                       "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==",
+                       "version": "4.3.4",
+                       "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
+                       "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
                        "dev": true,
                        "requires": {
                                "assertion-error": "^1.1.0",
                                "check-error": "^1.0.2",
                                "deep-eql": "^3.0.1",
                                "get-func-name": "^2.0.0",
-                               "pathval": "^1.1.0",
+                               "pathval": "^1.1.1",
                                "type-detect": "^4.0.5"
                        }
                },
                "chalk": {
-                       "version": "2.4.2",
-                       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-                       "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+                       "version": "4.1.1",
+                       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+                       "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
                        "dev": true,
                        "requires": {
-                               "ansi-styles": "^3.2.1",
-                               "escape-string-regexp": "^1.0.5",
-                               "supports-color": "^5.3.0"
+                               "ansi-styles": "^4.1.0",
+                               "supports-color": "^7.1.0"
                        },
                        "dependencies": {
                                "supports-color": {
-                                       "version": "5.5.0",
-                                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-                                       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+                                       "version": "7.2.0",
+                                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+                                       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
                                        "dev": true,
                                        "requires": {
-                                               "has-flag": "^3.0.0"
+                                               "has-flag": "^4.0.0"
                                        }
                                }
                        }
                        "dev": true
                },
                "chokidar": {
-                       "version": "3.5.0",
-                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.0.tgz",
-                       "integrity": "sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q==",
+                       "version": "3.5.1",
+                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+                       "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
                        "dev": true,
-                       "optional": true,
                        "requires": {
                                "anymatch": "~3.1.1",
                                "braces": "~3.0.2",
                                "readdirp": "~3.5.0"
                        }
                },
-               "chownr": {
-                       "version": "1.1.4",
-                       "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
-                       "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
-                       "dev": true
-               },
                "chrome-trace-event": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
-                       "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
-                       "dev": true,
-                       "requires": {
-                               "tslib": "^1.9.0"
-                       }
-               },
-               "cipher-base": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
-                       "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.0.1"
-                       }
-               },
-               "class-utils": {
-                       "version": "0.3.6",
-                       "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-                       "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-                       "dev": true,
-                       "requires": {
-                               "arr-union": "^3.1.0",
-                               "define-property": "^0.2.5",
-                               "isobject": "^3.0.0",
-                               "static-extend": "^0.1.1"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "0.2.5",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                                       "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^0.1.0"
-                                       }
-                               }
-                       }
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+                       "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+                       "dev": true
                },
                "cliui": {
-                       "version": "5.0.0",
-                       "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
-                       "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+                       "version": "7.0.4",
+                       "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+                       "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
                        "dev": true,
                        "requires": {
-                               "string-width": "^3.1.0",
-                               "strip-ansi": "^5.2.0",
-                               "wrap-ansi": "^5.1.0"
+                               "string-width": "^4.2.0",
+                               "strip-ansi": "^6.0.0",
+                               "wrap-ansi": "^7.0.0"
                        },
                        "dependencies": {
                                "ansi-regex": {
-                                       "version": "4.1.0",
-                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+                                       "version": "5.0.0",
+                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+                                       "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+                                       "dev": true
+                               },
+                               "is-fullwidth-code-point": {
+                                       "version": "3.0.0",
+                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+                                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                                        "dev": true
                                },
                                "string-width": {
-                                       "version": "3.1.0",
-                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                                       "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                                       "version": "4.2.2",
+                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+                                       "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
                                        "dev": true,
                                        "requires": {
-                                               "emoji-regex": "^7.0.1",
-                                               "is-fullwidth-code-point": "^2.0.0",
-                                               "strip-ansi": "^5.1.0"
+                                               "emoji-regex": "^8.0.0",
+                                               "is-fullwidth-code-point": "^3.0.0",
+                                               "strip-ansi": "^6.0.0"
                                        }
                                },
                                "strip-ansi": {
-                                       "version": "5.2.0",
-                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                                       "version": "6.0.0",
+                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+                                       "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
                                        "dev": true,
                                        "requires": {
-                                               "ansi-regex": "^4.1.0"
+                                               "ansi-regex": "^5.0.0"
                                        }
                                }
                        }
                },
-               "collection-visit": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-                       "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+               "clone-deep": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+                       "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
                        "dev": true,
                        "requires": {
-                               "map-visit": "^1.0.0",
-                               "object-visit": "^1.0.0"
+                               "is-plain-object": "^2.0.4",
+                               "kind-of": "^6.0.2",
+                               "shallow-clone": "^3.0.0"
                        }
                },
                "color-convert": {
-                       "version": "1.9.3",
-                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-                       "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+                       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
                        "dev": true,
                        "requires": {
-                               "color-name": "1.1.3"
+                               "color-name": "~1.1.4"
                        }
                },
                "color-name": {
-                       "version": "1.1.3",
-                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-                       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+                       "version": "1.1.4",
+                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+                       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+                       "dev": true
+               },
+               "colorette": {
+                       "version": "1.2.2",
+                       "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
+                       "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
                        "dev": true
                },
                "commander": {
                        "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
                        "dev": true
                },
-               "commondir": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-                       "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
-                       "dev": true
-               },
-               "component-emitter": {
-                       "version": "1.3.0",
-                       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-                       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-                       "dev": true
-               },
                "concat-map": {
                        "version": "0.0.1",
                        "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
                        "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
                        "dev": true
                },
-               "concat-stream": {
-                       "version": "1.6.2",
-                       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
-                       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+               "cross-spawn": {
+                       "version": "7.0.3",
+                       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+                       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
                        "dev": true,
                        "requires": {
-                               "buffer-from": "^1.0.0",
-                               "inherits": "^2.0.3",
-                               "readable-stream": "^2.2.2",
-                               "typedarray": "^0.0.6"
+                               "path-key": "^3.1.0",
+                               "shebang-command": "^2.0.0",
+                               "which": "^2.0.1"
+                       },
+                       "dependencies": {
+                               "which": {
+                                       "version": "2.0.2",
+                                       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+                                       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+                                       "dev": true,
+                                       "requires": {
+                                               "isexe": "^2.0.0"
+                                       }
+                               }
                        }
                },
-               "console-browserify": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
-                       "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+               "crypto-js": {
+                       "version": "3.1.9-1",
+                       "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz",
+                       "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg="
+               },
+               "debug": {
+                       "version": "4.3.1",
+                       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+                       "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
                        "dev": true,
                        "requires": {
-                               "date-now": "^0.1.4"
+                               "ms": "2.1.2"
+                       },
+                       "dependencies": {
+                               "ms": {
+                                       "version": "2.1.2",
+                                       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+                                       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+                                       "dev": true
+                               }
                        }
                },
-               "constants-browserify": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
-                       "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+               "decamelize": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+                       "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
                        "dev": true
                },
-               "copy-concurrently": {
-                       "version": "1.0.5",
-                       "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
-                       "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+               "deep-eql": {
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+                       "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
                        "dev": true,
                        "requires": {
-                               "aproba": "^1.1.1",
-                               "fs-write-stream-atomic": "^1.0.8",
-                               "iferr": "^0.1.5",
-                               "mkdirp": "^0.5.1",
-                               "rimraf": "^2.5.4",
-                               "run-queue": "^1.0.0"
+                               "type-detect": "^4.0.0"
                        }
                },
-               "copy-descriptor": {
-                       "version": "0.1.1",
-                       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-                       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+               "diff": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+                       "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
                        "dev": true
                },
-               "core-util-is": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-                       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+               "electron-to-chromium": {
+                       "version": "1.3.749",
+                       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz",
+                       "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==",
                        "dev": true
                },
-               "create-ecdh": {
-                       "version": "4.0.3",
-                       "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
-                       "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.1.0",
-                               "elliptic": "^6.0.0"
-                       }
+               "emoji-regex": {
+                       "version": "8.0.0",
+                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+                       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+                       "dev": true
                },
-               "create-hash": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
-                       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+               "enhanced-resolve": {
+                       "version": "5.8.2",
+                       "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz",
+                       "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==",
                        "dev": true,
                        "requires": {
-                               "cipher-base": "^1.0.1",
-                               "inherits": "^2.0.1",
-                               "md5.js": "^1.3.4",
-                               "ripemd160": "^2.0.1",
-                               "sha.js": "^2.4.0"
+                               "graceful-fs": "^4.2.4",
+                               "tapable": "^2.2.0"
                        }
                },
-               "create-hmac": {
-                       "version": "1.1.7",
-                       "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
-                       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
-                       "dev": true,
-                       "requires": {
-                               "cipher-base": "^1.0.3",
-                               "create-hash": "^1.1.0",
-                               "inherits": "^2.0.1",
-                               "ripemd160": "^2.0.0",
-                               "safe-buffer": "^5.0.1",
-                               "sha.js": "^2.4.8"
-                       }
+               "envinfo": {
+                       "version": "7.8.1",
+                       "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz",
+                       "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==",
+                       "dev": true
                },
-               "cross-spawn": {
-                       "version": "6.0.5",
-                       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-                       "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+               "es-module-lexer": {
+                       "version": "0.4.1",
+                       "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz",
+                       "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==",
+                       "dev": true
+               },
+               "escalade": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+                       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+                       "dev": true
+               },
+               "escape-string-regexp": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+                       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+                       "dev": true
+               },
+               "eslint-scope": {
+                       "version": "5.1.1",
+                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+                       "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
                        "dev": true,
                        "requires": {
-                               "nice-try": "^1.0.4",
-                               "path-key": "^2.0.1",
-                               "semver": "^5.5.0",
-                               "shebang-command": "^1.2.0",
-                               "which": "^1.2.9"
+                               "esrecurse": "^4.3.0",
+                               "estraverse": "^4.1.1"
                        }
                },
-               "crypto-browserify": {
-                       "version": "3.12.0",
-                       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
-                       "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+               "esrecurse": {
+                       "version": "4.3.0",
+                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+                       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
                        "dev": true,
                        "requires": {
-                               "browserify-cipher": "^1.0.0",
-                               "browserify-sign": "^4.0.0",
-                               "create-ecdh": "^4.0.0",
-                               "create-hash": "^1.1.0",
-                               "create-hmac": "^1.1.0",
-                               "diffie-hellman": "^5.0.0",
-                               "inherits": "^2.0.1",
-                               "pbkdf2": "^3.0.3",
-                               "public-encrypt": "^4.0.0",
-                               "randombytes": "^2.0.0",
-                               "randomfill": "^1.0.3"
+                               "estraverse": "^5.2.0"
+                       },
+                       "dependencies": {
+                               "estraverse": {
+                                       "version": "5.2.0",
+                                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+                                       "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+                                       "dev": true
+                               }
                        }
                },
-               "crypto-js": {
-                       "version": "3.1.9-1",
-                       "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.9-1.tgz",
-                       "integrity": "sha1-/aGedh/Ad+Af+/3G6f38WeiAbNg="
-               },
-               "cyclist": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
-                       "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+               "estraverse": {
+                       "version": "4.3.0",
+                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+                       "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
                        "dev": true
                },
-               "date-now": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
-                       "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+               "events": {
+                       "version": "3.3.0",
+                       "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+                       "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
                        "dev": true
                },
-               "debug": {
-                       "version": "3.2.6",
-                       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-                       "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+               "execa": {
+                       "version": "5.1.1",
+                       "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+                       "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
                        "dev": true,
                        "requires": {
-                               "ms": "^2.1.1"
+                               "cross-spawn": "^7.0.3",
+                               "get-stream": "^6.0.0",
+                               "human-signals": "^2.1.0",
+                               "is-stream": "^2.0.0",
+                               "merge-stream": "^2.0.0",
+                               "npm-run-path": "^4.0.1",
+                               "onetime": "^5.1.2",
+                               "signal-exit": "^3.0.3",
+                               "strip-final-newline": "^2.0.0"
                        }
                },
-               "decamelize": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-                       "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+               "fast-deep-equal": {
+                       "version": "3.1.3",
+                       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+                       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
                        "dev": true
                },
-               "decode-uri-component": {
-                       "version": "0.2.0",
-                       "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-                       "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+               "fast-json-stable-stringify": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+                       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
                        "dev": true
                },
-               "deep-eql": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
-                       "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
-                       "dev": true,
-                       "requires": {
-                               "type-detect": "^4.0.0"
-                       }
+               "fastest-levenshtein": {
+                       "version": "1.0.12",
+                       "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+                       "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
+                       "dev": true
                },
-               "define-properties": {
-                       "version": "1.1.3",
-                       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
-                       "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+               "fill-range": {
+                       "version": "7.0.1",
+                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+                       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
                        "dev": true,
                        "requires": {
-                               "object-keys": "^1.0.12"
+                               "to-regex-range": "^5.0.1"
                        }
                },
-               "define-property": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-                       "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+               "find-up": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+                       "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
                        "dev": true,
                        "requires": {
-                               "is-descriptor": "^1.0.2",
-                               "isobject": "^3.0.1"
-                       },
-                       "dependencies": {
-                               "is-accessor-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-data-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-descriptor": {
-                                       "version": "1.0.2",
-                                       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                                       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-accessor-descriptor": "^1.0.0",
-                                               "is-data-descriptor": "^1.0.0",
-                                               "kind-of": "^6.0.2"
-                                       }
-                               }
+                               "locate-path": "^6.0.0",
+                               "path-exists": "^4.0.0"
                        }
                },
-               "des.js": {
+               "flat": {
+                       "version": "5.0.2",
+                       "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+                       "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+                       "dev": true
+               },
+               "fs.realpath": {
                        "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
-                       "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+                       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+                       "dev": true
+               },
+               "fsevents": {
+                       "version": "2.3.2",
+                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+                       "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
                        "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.1",
-                               "minimalistic-assert": "^1.0.0"
-                       }
+                       "optional": true
                },
-               "detect-file": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
-                       "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+               "function-bind": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+                       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
                        "dev": true
                },
-               "diff": {
-                       "version": "3.5.0",
-                       "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
-                       "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+               "get-caller-file": {
+                       "version": "2.0.5",
+                       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+                       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
                        "dev": true
                },
-               "diffie-hellman": {
-                       "version": "5.0.3",
-                       "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
-                       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.1.0",
-                               "miller-rabin": "^4.0.0",
-                               "randombytes": "^2.0.0"
-                       }
+               "get-func-name": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+                       "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+                       "dev": true
                },
-               "domain-browser": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
-                       "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+               "get-stream": {
+                       "version": "6.0.1",
+                       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+                       "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
                        "dev": true
                },
-               "duplexify": {
-                       "version": "3.7.1",
-                       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
-                       "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+               "glob": {
+                       "version": "7.1.7",
+                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+                       "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
                        "dev": true,
                        "requires": {
-                               "end-of-stream": "^1.0.0",
-                               "inherits": "^2.0.1",
-                               "readable-stream": "^2.0.0",
-                               "stream-shift": "^1.0.0"
+                               "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"
                        }
                },
-               "elliptic": {
-                       "version": "6.5.4",
-                       "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
-                       "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+               "glob-parent": {
+                       "version": "5.1.2",
+                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+                       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
                        "dev": true,
                        "requires": {
-                               "bn.js": "^4.11.9",
-                               "brorand": "^1.1.0",
-                               "hash.js": "^1.0.0",
-                               "hmac-drbg": "^1.0.1",
-                               "inherits": "^2.0.4",
-                               "minimalistic-assert": "^1.0.1",
-                               "minimalistic-crypto-utils": "^1.0.1"
-                       },
-                       "dependencies": {
-                               "bn.js": {
-                                       "version": "4.12.0",
-                                       "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
-                                       "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
-                                       "dev": true
-                               }
+                               "is-glob": "^4.0.1"
                        }
                },
-               "emoji-regex": {
-                       "version": "7.0.3",
-                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-                       "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+               "glob-to-regexp": {
+                       "version": "0.4.1",
+                       "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+                       "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
                        "dev": true
                },
-               "emojis-list": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-                       "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+               "graceful-fs": {
+                       "version": "4.2.6",
+                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
+                       "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+                       "dev": true
+               },
+               "growl": {
+                       "version": "1.10.5",
+                       "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+                       "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
                        "dev": true
                },
-               "end-of-stream": {
-                       "version": "1.4.4",
-                       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-                       "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+               "has": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+                       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
                        "dev": true,
                        "requires": {
-                               "once": "^1.4.0"
+                               "function-bind": "^1.1.1"
                        }
                },
-               "enhanced-resolve": {
-                       "version": "4.1.1",
-                       "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
-                       "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+               "has-flag": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+                       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+                       "dev": true
+               },
+               "he": {
+                       "version": "1.2.0",
+                       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+                       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+                       "dev": true
+               },
+               "human-signals": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+                       "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+                       "dev": true
+               },
+               "import-local": {
+                       "version": "3.0.2",
+                       "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
+                       "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
                        "dev": true,
                        "requires": {
-                               "graceful-fs": "^4.1.2",
-                               "memory-fs": "^0.5.0",
-                               "tapable": "^1.0.0"
+                               "pkg-dir": "^4.2.0",
+                               "resolve-cwd": "^3.0.0"
                        }
                },
-               "errno": {
-                       "version": "0.1.7",
-                       "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
-                       "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+               "inflight": {
+                       "version": "1.0.6",
+                       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
                        "dev": true,
                        "requires": {
-                               "prr": "~1.0.1"
+                               "once": "^1.3.0",
+                               "wrappy": "1"
                        }
                },
-               "es-abstract": {
-                       "version": "1.15.0",
-                       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
-                       "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
+               "inherits": {
+                       "version": "2.0.4",
+                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+                       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+                       "dev": true
+               },
+               "interpret": {
+                       "version": "2.2.0",
+                       "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+                       "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
+                       "dev": true
+               },
+               "is-binary-path": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+                       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
                        "dev": true,
                        "requires": {
-                               "es-to-primitive": "^1.2.0",
-                               "function-bind": "^1.1.1",
-                               "has": "^1.0.3",
-                               "has-symbols": "^1.0.0",
-                               "is-callable": "^1.1.4",
-                               "is-regex": "^1.0.4",
-                               "object-inspect": "^1.6.0",
-                               "object-keys": "^1.1.1",
-                               "string.prototype.trimleft": "^2.1.0",
-                               "string.prototype.trimright": "^2.1.0"
+                               "binary-extensions": "^2.0.0"
                        }
                },
-               "es-to-primitive": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
-                       "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+               "is-core-module": {
+                       "version": "2.4.0",
+                       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
+                       "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
                        "dev": true,
                        "requires": {
-                               "is-callable": "^1.1.4",
-                               "is-date-object": "^1.0.1",
-                               "is-symbol": "^1.0.2"
+                               "has": "^1.0.3"
                        }
                },
-               "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=",
+               "is-extglob": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+                       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
                        "dev": true
                },
-               "eslint-scope": {
-                       "version": "4.0.3",
-                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
-                       "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+               "is-fullwidth-code-point": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+                       "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+                       "dev": true
+               },
+               "is-glob": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+                       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
                        "dev": true,
                        "requires": {
-                               "esrecurse": "^4.1.0",
-                               "estraverse": "^4.1.1"
+                               "is-extglob": "^2.1.1"
                        }
                },
-               "esprima": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-                       "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+               "is-number": {
+                       "version": "7.0.0",
+                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+                       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
                        "dev": true
                },
-               "esrecurse": {
-                       "version": "4.2.1",
-                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
-                       "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+               "is-plain-obj": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+                       "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+                       "dev": true
+               },
+               "is-plain-object": {
+                       "version": "2.0.4",
+                       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+                       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
                        "dev": true,
                        "requires": {
-                               "estraverse": "^4.1.0"
+                               "isobject": "^3.0.1"
                        }
                },
-               "estraverse": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-                       "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+               "is-stream": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+                       "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
                        "dev": true
                },
-               "events": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
-                       "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+               "is-unicode-supported": {
+                       "version": "0.1.0",
+                       "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+                       "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
                        "dev": true
                },
-               "evp_bytestokey": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
-                       "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
-                       "dev": true,
-                       "requires": {
-                               "md5.js": "^1.3.4",
-                               "safe-buffer": "^5.1.1"
-                       }
+               "isexe": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+                       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+                       "dev": true
                },
-               "execa": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-                       "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-                       "dev": true,
-                       "requires": {
-                               "cross-spawn": "^6.0.0",
-                               "get-stream": "^4.0.0",
-                               "is-stream": "^1.1.0",
-                               "npm-run-path": "^2.0.0",
-                               "p-finally": "^1.0.0",
-                               "signal-exit": "^3.0.0",
-                               "strip-eof": "^1.0.0"
-                       }
+               "isobject": {
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+                       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+                       "dev": true
                },
-               "expand-brackets": {
-                       "version": "2.1.4",
-                       "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-                       "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+               "jest-worker": {
+                       "version": "27.0.2",
+                       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz",
+                       "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==",
                        "dev": true,
                        "requires": {
-                               "debug": "^2.3.3",
-                               "define-property": "^0.2.5",
-                               "extend-shallow": "^2.0.1",
-                               "posix-character-classes": "^0.1.0",
-                               "regex-not": "^1.0.0",
-                               "snapdragon": "^0.8.1",
-                               "to-regex": "^3.0.1"
+                               "@types/node": "*",
+                               "merge-stream": "^2.0.0",
+                               "supports-color": "^8.0.0"
                        },
                        "dependencies": {
-                               "debug": {
-                                       "version": "2.6.9",
-                                       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                                       "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "ms": "2.0.0"
-                                       }
-                               },
-                               "define-property": {
-                                       "version": "0.2.5",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                                       "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^0.1.0"
-                                       }
+                               "has-flag": {
+                                       "version": "4.0.0",
+                                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+                                       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+                                       "dev": true
                                },
-                               "extend-shallow": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+                               "supports-color": {
+                                       "version": "8.1.1",
+                                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+                                       "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
                                        "dev": true,
                                        "requires": {
-                                               "is-extendable": "^0.1.0"
-                                       }
-                               },
-                               "ms": {
-                                       "version": "2.0.0",
-                                       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                                       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                                       "dev": true
-                               }
-                       }
-               },
-               "expand-tilde": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
-                       "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
-                       "dev": true,
-                       "requires": {
-                               "homedir-polyfill": "^1.0.1"
-                       }
-               },
-               "extend-shallow": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-                       "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-                       "dev": true,
-                       "requires": {
-                               "assign-symbols": "^1.0.0",
-                               "is-extendable": "^1.0.1"
-                       },
-                       "dependencies": {
-                               "is-extendable": {
-                                       "version": "1.0.1",
-                                       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                                       "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-plain-object": "^2.0.4"
-                                       }
-                               }
-                       }
-               },
-               "extglob": {
-                       "version": "2.0.4",
-                       "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-                       "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-                       "dev": true,
-                       "requires": {
-                               "array-unique": "^0.3.2",
-                               "define-property": "^1.0.0",
-                               "expand-brackets": "^2.1.4",
-                               "extend-shallow": "^2.0.1",
-                               "fragment-cache": "^0.2.1",
-                               "regex-not": "^1.0.0",
-                               "snapdragon": "^0.8.1",
-                               "to-regex": "^3.0.1"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                                       "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^1.0.0"
-                                       }
-                               },
-                               "extend-shallow": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-extendable": "^0.1.0"
-                                       }
-                               },
-                               "is-accessor-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-data-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-descriptor": {
-                                       "version": "1.0.2",
-                                       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                                       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-accessor-descriptor": "^1.0.0",
-                                               "is-data-descriptor": "^1.0.0",
-                                               "kind-of": "^6.0.2"
-                                       }
-                               }
-                       }
-               },
-               "fast-deep-equal": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-                       "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
-                       "dev": true
-               },
-               "fast-json-stable-stringify": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-                       "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-                       "dev": true
-               },
-               "figgy-pudding": {
-                       "version": "3.5.2",
-                       "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
-                       "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
-                       "dev": true
-               },
-               "fill-range": {
-                       "version": "7.0.1",
-                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-                       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
-                       "dev": true,
-                       "requires": {
-                               "to-regex-range": "^5.0.1"
-                       }
-               },
-               "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==",
-                       "dev": true,
-                       "requires": {
-                               "commondir": "^1.0.1",
-                               "make-dir": "^2.0.0",
-                               "pkg-dir": "^3.0.0"
-                       }
-               },
-               "find-up": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
-                       "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
-                       "dev": true,
-                       "requires": {
-                               "locate-path": "^3.0.0"
-                       }
-               },
-               "findup-sync": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
-                       "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
-                       "dev": true,
-                       "requires": {
-                               "detect-file": "^1.0.0",
-                               "is-glob": "^4.0.0",
-                               "micromatch": "^3.0.4",
-                               "resolve-dir": "^1.0.1"
-                       },
-                       "dependencies": {
-                               "braces": {
-                                       "version": "2.3.2",
-                                       "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                                       "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                                       "dev": true,
-                                       "requires": {
-                                               "arr-flatten": "^1.1.0",
-                                               "array-unique": "^0.3.2",
-                                               "extend-shallow": "^2.0.1",
-                                               "fill-range": "^4.0.0",
-                                               "isobject": "^3.0.1",
-                                               "repeat-element": "^1.1.2",
-                                               "snapdragon": "^0.8.1",
-                                               "snapdragon-node": "^2.0.1",
-                                               "split-string": "^3.0.2",
-                                               "to-regex": "^3.0.1"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "fill-range": {
-                                       "version": "4.0.0",
-                                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                                       "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                                       "dev": true,
-                                       "requires": {
-                                               "extend-shallow": "^2.0.1",
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1",
-                                               "to-regex-range": "^2.1.0"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "is-number": {
-                                       "version": "3.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                                       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^3.0.2"
-                                       },
-                                       "dependencies": {
-                                               "kind-of": {
-                                                       "version": "3.2.2",
-                                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-buffer": "^1.1.5"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "micromatch": {
-                                       "version": "3.1.10",
-                                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                                       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "arr-diff": "^4.0.0",
-                                               "array-unique": "^0.3.2",
-                                               "braces": "^2.3.1",
-                                               "define-property": "^2.0.2",
-                                               "extend-shallow": "^3.0.2",
-                                               "extglob": "^2.0.4",
-                                               "fragment-cache": "^0.2.1",
-                                               "kind-of": "^6.0.2",
-                                               "nanomatch": "^1.2.9",
-                                               "object.pick": "^1.3.0",
-                                               "regex-not": "^1.0.0",
-                                               "snapdragon": "^0.8.1",
-                                               "to-regex": "^3.0.2"
-                                       }
-                               },
-                               "to-regex-range": {
-                                       "version": "2.1.1",
-                                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                                       "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1"
+                                               "has-flag": "^4.0.0"
                                        }
                                }
                        }
                },
-               "flat": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
-                       "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
-                       "dev": true,
-                       "requires": {
-                               "is-buffer": "~2.0.3"
-                       }
-               },
-               "flush-write-stream": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
-                       "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.3",
-                               "readable-stream": "^2.3.6"
-                       }
-               },
-               "for-in": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-                       "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-                       "dev": true
-               },
-               "fragment-cache": {
-                       "version": "0.2.1",
-                       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-                       "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-                       "dev": true,
-                       "requires": {
-                               "map-cache": "^0.2.2"
-                       }
-               },
-               "from2": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
-                       "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.1",
-                               "readable-stream": "^2.0.0"
-                       }
-               },
-               "fs-write-stream-atomic": {
-                       "version": "1.0.10",
-                       "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
-                       "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
-                       "dev": true,
-                       "requires": {
-                               "graceful-fs": "^4.1.2",
-                               "iferr": "^0.1.5",
-                               "imurmurhash": "^0.1.4",
-                               "readable-stream": "1 || 2"
-                       }
-               },
-               "fs.realpath": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-                       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
-                       "dev": true
-               },
-               "fsevents": {
-                       "version": "2.3.1",
-                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz",
-                       "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==",
-                       "dev": true,
-                       "optional": true
-               },
-               "function-bind": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-                       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-                       "dev": true
-               },
-               "get-caller-file": {
-                       "version": "2.0.5",
-                       "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-                       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-                       "dev": true
-               },
-               "get-func-name": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
-                       "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
-                       "dev": true
-               },
-               "get-stream": {
+               "js-yaml": {
                        "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-                       "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-                       "dev": true,
-                       "requires": {
-                               "pump": "^3.0.0"
-                       }
-               },
-               "get-value": {
-                       "version": "2.0.6",
-                       "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-                       "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-                       "dev": true
-               },
-               "glob": {
-                       "version": "7.1.3",
-                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
-                       "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
-                       "dev": true,
-                       "requires": {
-                               "fs.realpath": "^1.0.0",
-                               "inflight": "^1.0.4",
-                               "inherits": "2",
-                               "minimatch": "^3.0.4",
-                               "once": "^1.3.0",
-                               "path-is-absolute": "^1.0.0"
-                       }
-               },
-               "glob-parent": {
-                       "version": "5.1.1",
-                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
-                       "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+                       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+                       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
                        "dev": true,
-                       "optional": true,
                        "requires": {
-                               "is-glob": "^4.0.1"
-                       }
-               },
-               "global-modules": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
-                       "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
-                       "dev": true,
-                       "requires": {
-                               "global-prefix": "^3.0.0"
-                       },
-                       "dependencies": {
-                               "global-prefix": {
-                                       "version": "3.0.0",
-                                       "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
-                                       "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "ini": "^1.3.5",
-                                               "kind-of": "^6.0.2",
-                                               "which": "^1.3.1"
-                                       }
-                               }
+                               "argparse": "^2.0.1"
                        }
                },
-               "global-prefix": {
+               "json-parse-better-errors": {
                        "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
-                       "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
-                       "dev": true,
-                       "requires": {
-                               "expand-tilde": "^2.0.2",
-                               "homedir-polyfill": "^1.0.1",
-                               "ini": "^1.3.4",
-                               "is-windows": "^1.0.1",
-                               "which": "^1.2.14"
-                       }
-               },
-               "graceful-fs": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
-                       "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
-                       "dev": true
-               },
-               "growl": {
-                       "version": "1.10.5",
-                       "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
-                       "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
-                       "dev": true
-               },
-               "has": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-                       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-                       "dev": true,
-                       "requires": {
-                               "function-bind": "^1.1.1"
-                       }
-               },
-               "has-flag": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-                       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-                       "dev": true
-               },
-               "has-symbols": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
-                       "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+                       "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+                       "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
                        "dev": true
                },
-               "has-value": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-                       "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-                       "dev": true,
-                       "requires": {
-                               "get-value": "^2.0.6",
-                               "has-values": "^1.0.0",
-                               "isobject": "^3.0.0"
-                       }
-               },
-               "has-values": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-                       "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-                       "dev": true,
-                       "requires": {
-                               "is-number": "^3.0.0",
-                               "kind-of": "^4.0.0"
-                       },
-                       "dependencies": {
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "is-number": {
-                                       "version": "3.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                                       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^3.0.2"
-                                       },
-                                       "dependencies": {
-                                               "kind-of": {
-                                                       "version": "3.2.2",
-                                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-buffer": "^1.1.5"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "kind-of": {
-                                       "version": "4.0.0",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-                                       "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
-                       }
-               },
-               "hash-base": {
-                       "version": "3.0.4",
-                       "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
-                       "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.0.1"
-                       }
-               },
-               "hash.js": {
-                       "version": "1.1.7",
-                       "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
-                       "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.3",
-                               "minimalistic-assert": "^1.0.1"
-                       }
-               },
-               "he": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
-                       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
-                       "dev": true
-               },
-               "hmac-drbg": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
-                       "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
-                       "dev": true,
-                       "requires": {
-                               "hash.js": "^1.0.3",
-                               "minimalistic-assert": "^1.0.0",
-                               "minimalistic-crypto-utils": "^1.0.1"
-                       }
-               },
-               "homedir-polyfill": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
-                       "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
-                       "dev": true,
-                       "requires": {
-                               "parse-passwd": "^1.0.0"
-                       }
-               },
-               "https-browserify": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
-                       "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
-                       "dev": true
-               },
-               "ieee754": {
-                       "version": "1.1.13",
-                       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
-                       "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
-                       "dev": true
-               },
-               "iferr": {
-                       "version": "0.1.5",
-                       "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
-                       "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
-                       "dev": true
-               },
-               "import-local": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
-                       "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
-                       "dev": true,
-                       "requires": {
-                               "pkg-dir": "^3.0.0",
-                               "resolve-cwd": "^2.0.0"
-                       }
-               },
-               "imurmurhash": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-                       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-                       "dev": true
-               },
-               "infer-owner": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
-                       "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
-                       "dev": true
-               },
-               "inflight": {
-                       "version": "1.0.6",
-                       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-                       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-                       "dev": true,
-                       "requires": {
-                               "once": "^1.3.0",
-                               "wrappy": "1"
-                       }
-               },
-               "inherits": {
-                       "version": "2.0.4",
-                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-                       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-                       "dev": true
-               },
-               "ini": {
-                       "version": "1.3.8",
-                       "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
-                       "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
-                       "dev": true
-               },
-               "interpret": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
-                       "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
-                       "dev": true
-               },
-               "invert-kv": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-                       "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-                       "dev": true
-               },
-               "is-accessor-descriptor": {
-                       "version": "0.1.6",
-                       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-                       "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-                       "dev": true,
-                       "requires": {
-                               "kind-of": "^3.0.2"
-                       },
-                       "dependencies": {
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "kind-of": {
-                                       "version": "3.2.2",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
-                       }
-               },
-               "is-binary-path": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-                       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-                       "dev": true,
-                       "optional": true,
-                       "requires": {
-                               "binary-extensions": "^2.0.0"
-                       }
-               },
-               "is-buffer": {
-                       "version": "2.0.4",
-                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
-                       "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
-                       "dev": true
-               },
-               "is-callable": {
-                       "version": "1.1.4",
-                       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
-                       "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
-                       "dev": true
-               },
-               "is-data-descriptor": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-                       "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-                       "dev": true,
-                       "requires": {
-                               "kind-of": "^3.0.2"
-                       },
-                       "dependencies": {
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "kind-of": {
-                                       "version": "3.2.2",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
-                       }
-               },
-               "is-date-object": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
-                       "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
-                       "dev": true
-               },
-               "is-descriptor": {
-                       "version": "0.1.6",
-                       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-                       "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-                       "dev": true,
-                       "requires": {
-                               "is-accessor-descriptor": "^0.1.6",
-                               "is-data-descriptor": "^0.1.4",
-                               "kind-of": "^5.0.0"
-                       },
-                       "dependencies": {
-                               "kind-of": {
-                                       "version": "5.1.0",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-                                       "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-                                       "dev": true
-                               }
-                       }
-               },
-               "is-extendable": {
-                       "version": "0.1.1",
-                       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-                       "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-                       "dev": true
-               },
-               "is-extglob": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-                       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-                       "dev": true
-               },
-               "is-fullwidth-code-point": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                       "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                       "dev": true
-               },
-               "is-glob": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-                       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-                       "dev": true,
-                       "requires": {
-                               "is-extglob": "^2.1.1"
-                       }
-               },
-               "is-number": {
-                       "version": "7.0.0",
-                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-                       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-                       "dev": true
-               },
-               "is-plain-object": {
-                       "version": "2.0.4",
-                       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-                       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-                       "dev": true,
-                       "requires": {
-                               "isobject": "^3.0.1"
-                       }
-               },
-               "is-regex": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
-                       "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
-                       "dev": true,
-                       "requires": {
-                               "has": "^1.0.1"
-                       }
-               },
-               "is-stream": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-                       "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
-                       "dev": true
-               },
-               "is-symbol": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
-                       "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
-                       "dev": true,
-                       "requires": {
-                               "has-symbols": "^1.0.0"
-                       }
-               },
-               "is-windows": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-                       "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-                       "dev": true
-               },
-               "is-wsl": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
-                       "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
-                       "dev": true
-               },
-               "isarray": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-                       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-                       "dev": true
-               },
-               "isexe": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-                       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-                       "dev": true
-               },
-               "isobject": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-                       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-                       "dev": true
-               },
-               "js-yaml": {
-                       "version": "3.13.1",
-                       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
-                       "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
-                       "dev": true,
-                       "requires": {
-                               "argparse": "^1.0.7",
-                               "esprima": "^4.0.0"
-                       }
-               },
-               "json-parse-better-errors": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
-                       "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
-                       "dev": true
-               },
-               "json-schema-traverse": {
-                       "version": "0.4.1",
-                       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-                       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-                       "dev": true
-               },
-               "json5": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
-                       "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
-                       "dev": true,
-                       "requires": {
-                               "minimist": "^1.2.0"
-                       },
-                       "dependencies": {
-                               "minimist": {
-                                       "version": "1.2.5",
-                                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-                                       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-                                       "dev": true
-                               }
-                       }
-               },
-               "kind-of": {
-                       "version": "6.0.3",
-                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-                       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-                       "dev": true
-               },
-               "lcid": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-                       "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-                       "dev": true,
-                       "requires": {
-                               "invert-kv": "^2.0.0"
-                       }
-               },
-               "loader-runner": {
-                       "version": "2.4.0",
-                       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
-                       "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
-                       "dev": true
-               },
-               "loader-utils": {
-                       "version": "1.2.3",
-                       "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
-                       "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
-                       "dev": true,
-                       "requires": {
-                               "big.js": "^5.2.2",
-                               "emojis-list": "^2.0.0",
-                               "json5": "^1.0.1"
-                       }
-               },
-               "locate-path": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
-                       "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
-                       "dev": true,
-                       "requires": {
-                               "p-locate": "^3.0.0",
-                               "path-exists": "^3.0.0"
-                       }
-               },
-               "lodash": {
-                       "version": "4.17.21",
-                       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-                       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-                       "dev": true
-               },
-               "log-symbols": {
-                       "version": "2.2.0",
-                       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
-                       "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
-                       "dev": true,
-                       "requires": {
-                               "chalk": "^2.0.1"
-                       }
-               },
-               "lru-cache": {
-                       "version": "5.1.1",
-                       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
-                       "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
-                       "dev": true,
-                       "requires": {
-                               "yallist": "^3.0.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==",
-                       "dev": true,
-                       "requires": {
-                               "pify": "^4.0.1",
-                               "semver": "^5.6.0"
-                       }
-               },
-               "mamacro": {
-                       "version": "0.0.3",
-                       "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
-                       "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
-                       "dev": true
-               },
-               "map-age-cleaner": {
-                       "version": "0.1.3",
-                       "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-                       "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-                       "dev": true,
-                       "requires": {
-                               "p-defer": "^1.0.0"
-                       }
-               },
-               "map-cache": {
-                       "version": "0.2.2",
-                       "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-                       "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-                       "dev": true
-               },
-               "map-visit": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-                       "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-                       "dev": true,
-                       "requires": {
-                               "object-visit": "^1.0.0"
-                       }
-               },
-               "md5.js": {
-                       "version": "1.3.5",
-                       "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
-                       "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
-                       "dev": true,
-                       "requires": {
-                               "hash-base": "^3.0.0",
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.1.2"
-                       }
-               },
-               "mem": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-                       "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-                       "dev": true,
-                       "requires": {
-                               "map-age-cleaner": "^0.1.1",
-                               "mimic-fn": "^2.0.0",
-                               "p-is-promise": "^2.0.0"
-                       }
-               },
-               "memory-fs": {
-                       "version": "0.5.0",
-                       "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
-                       "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
-                       "dev": true,
-                       "requires": {
-                               "errno": "^0.1.3",
-                               "readable-stream": "^2.0.1"
-                       }
-               },
-               "micromatch": {
-                       "version": "4.0.2",
-                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
-                       "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
-                       "dev": true,
-                       "requires": {
-                               "braces": "^3.0.1",
-                               "picomatch": "^2.0.5"
-                       }
-               },
-               "miller-rabin": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
-                       "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.0.0",
-                               "brorand": "^1.0.1"
-                       }
-               },
-               "mimic-fn": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-                       "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-                       "dev": true
-               },
-               "minimalistic-assert": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
-                       "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
-                       "dev": true
-               },
-               "minimalistic-crypto-utils": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
-                       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
-                       "dev": true
-               },
-               "minimatch": {
-                       "version": "3.0.4",
-                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-                       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-                       "dev": true,
-                       "requires": {
-                               "brace-expansion": "^1.1.7"
-                       }
-               },
-               "minimist": {
-                       "version": "0.0.8",
-                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-                       "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-                       "dev": true
-               },
-               "mississippi": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
-                       "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
-                       "dev": true,
-                       "requires": {
-                               "concat-stream": "^1.5.0",
-                               "duplexify": "^3.4.2",
-                               "end-of-stream": "^1.1.0",
-                               "flush-write-stream": "^1.0.0",
-                               "from2": "^2.1.0",
-                               "parallel-transform": "^1.1.0",
-                               "pump": "^3.0.0",
-                               "pumpify": "^1.3.3",
-                               "stream-each": "^1.1.0",
-                               "through2": "^2.0.0"
-                       }
-               },
-               "mixin-deep": {
-                       "version": "1.3.2",
-                       "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-                       "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-                       "dev": true,
-                       "requires": {
-                               "for-in": "^1.0.2",
-                               "is-extendable": "^1.0.1"
-                       },
-                       "dependencies": {
-                               "is-extendable": {
-                                       "version": "1.0.1",
-                                       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-                                       "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-plain-object": "^2.0.4"
-                                       }
-                               }
-                       }
-               },
-               "mkdirp": {
-                       "version": "0.5.5",
-                       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-                       "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-                       "dev": true,
-                       "requires": {
-                               "minimist": "^1.2.5"
-                       },
-                       "dependencies": {
-                               "minimist": {
-                                       "version": "1.2.5",
-                                       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-                                       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-                                       "dev": true
-                               }
-                       }
-               },
-               "mocha": {
-                       "version": "6.2.1",
-                       "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.1.tgz",
-                       "integrity": "sha512-VCcWkLHwk79NYQc8cxhkmI8IigTIhsCwZ6RTxQsqK6go4UvEhzJkYuHm8B2YtlSxcYq2fY+ucr4JBwoD6ci80A==",
-                       "dev": true,
-                       "requires": {
-                               "ansi-colors": "3.2.3",
-                               "browser-stdout": "1.3.1",
-                               "debug": "3.2.6",
-                               "diff": "3.5.0",
-                               "escape-string-regexp": "1.0.5",
-                               "find-up": "3.0.0",
-                               "glob": "7.1.3",
-                               "growl": "1.10.5",
-                               "he": "1.2.0",
-                               "js-yaml": "3.13.1",
-                               "log-symbols": "2.2.0",
-                               "minimatch": "3.0.4",
-                               "mkdirp": "0.5.1",
-                               "ms": "2.1.1",
-                               "node-environment-flags": "1.0.5",
-                               "object.assign": "4.1.0",
-                               "strip-json-comments": "2.0.1",
-                               "supports-color": "6.0.0",
-                               "which": "1.3.1",
-                               "wide-align": "1.1.3",
-                               "yargs": "13.3.0",
-                               "yargs-parser": "13.1.1",
-                               "yargs-unparser": "1.6.0"
-                       },
-                       "dependencies": {
-                               "mkdirp": {
-                                       "version": "0.5.1",
-                                       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-                                       "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-                                       "dev": true,
-                                       "requires": {
-                                               "minimist": "0.0.8"
-                                       }
-                               },
-                               "yargs-parser": {
-                                       "version": "13.1.1",
-                                       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
-                                       "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "camelcase": "^5.0.0",
-                                               "decamelize": "^1.2.0"
-                                       }
-                               }
-                       }
-               },
-               "move-concurrently": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
-                       "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
-                       "dev": true,
-                       "requires": {
-                               "aproba": "^1.1.1",
-                               "copy-concurrently": "^1.0.0",
-                               "fs-write-stream-atomic": "^1.0.8",
-                               "mkdirp": "^0.5.1",
-                               "rimraf": "^2.5.4",
-                               "run-queue": "^1.0.3"
-                       }
-               },
-               "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==",
-                       "dev": true
-               },
-               "nanomatch": {
-                       "version": "1.2.13",
-                       "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-                       "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-                       "dev": true,
-                       "requires": {
-                               "arr-diff": "^4.0.0",
-                               "array-unique": "^0.3.2",
-                               "define-property": "^2.0.2",
-                               "extend-shallow": "^3.0.2",
-                               "fragment-cache": "^0.2.1",
-                               "is-windows": "^1.0.2",
-                               "kind-of": "^6.0.2",
-                               "object.pick": "^1.3.0",
-                               "regex-not": "^1.0.0",
-                               "snapdragon": "^0.8.1",
-                               "to-regex": "^3.0.1"
-                       }
-               },
-               "neo-async": {
-                       "version": "2.6.1",
-                       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
-                       "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
-                       "dev": true
-               },
-               "nice-try": {
-                       "version": "1.0.5",
-                       "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-                       "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-                       "dev": true
-               },
-               "node-environment-flags": {
-                       "version": "1.0.5",
-                       "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
-                       "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
-                       "dev": true,
-                       "requires": {
-                               "object.getownpropertydescriptors": "^2.0.3",
-                               "semver": "^5.7.0"
-                       }
-               },
-               "node-libs-browser": {
-                       "version": "2.2.1",
-                       "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
-                       "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
-                       "dev": true,
-                       "requires": {
-                               "assert": "^1.1.1",
-                               "browserify-zlib": "^0.2.0",
-                               "buffer": "^4.3.0",
-                               "console-browserify": "^1.1.0",
-                               "constants-browserify": "^1.0.0",
-                               "crypto-browserify": "^3.11.0",
-                               "domain-browser": "^1.1.1",
-                               "events": "^3.0.0",
-                               "https-browserify": "^1.0.0",
-                               "os-browserify": "^0.3.0",
-                               "path-browserify": "0.0.1",
-                               "process": "^0.11.10",
-                               "punycode": "^1.2.4",
-                               "querystring-es3": "^0.2.0",
-                               "readable-stream": "^2.3.3",
-                               "stream-browserify": "^2.0.1",
-                               "stream-http": "^2.7.2",
-                               "string_decoder": "^1.0.0",
-                               "timers-browserify": "^2.0.4",
-                               "tty-browserify": "0.0.0",
-                               "url": "^0.11.0",
-                               "util": "^0.11.0",
-                               "vm-browserify": "^1.0.1"
-                       },
-                       "dependencies": {
-                               "punycode": {
-                                       "version": "1.4.1",
-                                       "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-                                       "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-                                       "dev": true
-                               }
-                       }
-               },
-               "normalize-path": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-                       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-                       "dev": true,
-                       "optional": true
-               },
-               "npm-run-path": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-                       "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
-                       "dev": true,
-                       "requires": {
-                               "path-key": "^2.0.0"
-                       }
-               },
-               "object-assign": {
-                       "version": "4.1.1",
-                       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-                       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-                       "dev": true
-               },
-               "object-copy": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-                       "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-                       "dev": true,
-                       "requires": {
-                               "copy-descriptor": "^0.1.0",
-                               "define-property": "^0.2.5",
-                               "kind-of": "^3.0.3"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "0.2.5",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                                       "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^0.1.0"
-                                       }
-                               },
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "kind-of": {
-                                       "version": "3.2.2",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
-                       }
-               },
-               "object-inspect": {
-                       "version": "1.6.0",
-                       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
-                       "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
-                       "dev": true
-               },
-               "object-keys": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-                       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-                       "dev": true
-               },
-               "object-visit": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-                       "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-                       "dev": true,
-                       "requires": {
-                               "isobject": "^3.0.0"
-                       }
-               },
-               "object.assign": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
-                       "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
-                       "dev": true,
-                       "requires": {
-                               "define-properties": "^1.1.2",
-                               "function-bind": "^1.1.1",
-                               "has-symbols": "^1.0.0",
-                               "object-keys": "^1.0.11"
-                       }
-               },
-               "object.getownpropertydescriptors": {
-                       "version": "2.0.3",
-                       "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
-                       "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
-                       "dev": true,
-                       "requires": {
-                               "define-properties": "^1.1.2",
-                               "es-abstract": "^1.5.1"
-                       }
-               },
-               "object.pick": {
-                       "version": "1.3.0",
-                       "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-                       "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-                       "dev": true,
-                       "requires": {
-                               "isobject": "^3.0.1"
-                       }
-               },
-               "once": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-                       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-                       "dev": true,
-                       "requires": {
-                               "wrappy": "1"
-                       }
-               },
-               "os-browserify": {
-                       "version": "0.3.0",
-                       "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
-                       "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
-                       "dev": true
-               },
-               "os-locale": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-                       "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-                       "dev": true,
-                       "requires": {
-                               "execa": "^1.0.0",
-                               "lcid": "^2.0.0",
-                               "mem": "^4.0.0"
-                       }
-               },
-               "p-defer": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-                       "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-                       "dev": true
-               },
-               "p-finally": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-                       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
-                       "dev": true
-               },
-               "p-is-promise": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
-                       "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
-                       "dev": true
-               },
-               "p-limit": {
-                       "version": "2.2.1",
-                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
-                       "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
-                       "dev": true,
-                       "requires": {
-                               "p-try": "^2.0.0"
-                       }
-               },
-               "p-locate": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
-                       "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
-                       "dev": true,
-                       "requires": {
-                               "p-limit": "^2.0.0"
-                       }
-               },
-               "p-try": {
-                       "version": "2.2.0",
-                       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-                       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-                       "dev": true
-               },
-               "pako": {
-                       "version": "1.0.10",
-                       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
-                       "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
-                       "dev": true
-               },
-               "parallel-transform": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
-                       "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
-                       "dev": true,
-                       "requires": {
-                               "cyclist": "^1.0.1",
-                               "inherits": "^2.0.3",
-                               "readable-stream": "^2.1.5"
-                       }
-               },
-               "parse-asn1": {
-                       "version": "5.1.5",
-                       "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
-                       "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
-                       "dev": true,
-                       "requires": {
-                               "asn1.js": "^4.0.0",
-                               "browserify-aes": "^1.0.0",
-                               "create-hash": "^1.1.0",
-                               "evp_bytestokey": "^1.0.0",
-                               "pbkdf2": "^3.0.3",
-                               "safe-buffer": "^5.1.1"
-                       }
-               },
-               "parse-passwd": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
-                       "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
-                       "dev": true
-               },
-               "pascalcase": {
-                       "version": "0.1.1",
-                       "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-                       "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-                       "dev": true
-               },
-               "path-browserify": {
-                       "version": "0.0.1",
-                       "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
-                       "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
-                       "dev": true
-               },
-               "path-dirname": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-                       "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
-                       "dev": true,
-                       "optional": true
-               },
-               "path-exists": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
-                       "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
-                       "dev": true
-               },
-               "path-is-absolute": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-                       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-                       "dev": true
-               },
-               "path-key": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-                       "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-                       "dev": true
-               },
-               "pathval": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
-                       "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
-                       "dev": true
-               },
-               "pbkdf2": {
-                       "version": "3.0.17",
-                       "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
-                       "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
-                       "dev": true,
-                       "requires": {
-                               "create-hash": "^1.1.2",
-                               "create-hmac": "^1.1.4",
-                               "ripemd160": "^2.0.1",
-                               "safe-buffer": "^5.0.1",
-                               "sha.js": "^2.4.8"
-                       }
-               },
-               "picomatch": {
-                       "version": "2.0.7",
-                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
-                       "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
-                       "dev": true
-               },
-               "pify": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
-                       "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
-                       "dev": true
-               },
-               "pkg-dir": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
-                       "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
-                       "dev": true,
-                       "requires": {
-                               "find-up": "^3.0.0"
-                       }
-               },
-               "posix-character-classes": {
-                       "version": "0.1.1",
-                       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-                       "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-                       "dev": true
-               },
-               "process": {
-                       "version": "0.11.10",
-                       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-                       "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-                       "dev": true
-               },
-               "process-nextick-args": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-                       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-                       "dev": true
-               },
-               "promise-inflight": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
-                       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
-                       "dev": true
-               },
-               "prr": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
-                       "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-                       "dev": true
-               },
-               "public-encrypt": {
-                       "version": "4.0.3",
-                       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
-                       "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
-                       "dev": true,
-                       "requires": {
-                               "bn.js": "^4.1.0",
-                               "browserify-rsa": "^4.0.0",
-                               "create-hash": "^1.1.0",
-                               "parse-asn1": "^5.0.0",
-                               "randombytes": "^2.0.1",
-                               "safe-buffer": "^5.1.2"
-                       }
-               },
-               "pump": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-                       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-                       "dev": true,
-                       "requires": {
-                               "end-of-stream": "^1.1.0",
-                               "once": "^1.3.1"
-                       }
-               },
-               "pumpify": {
-                       "version": "1.5.1",
-                       "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
-                       "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
-                       "dev": true,
-                       "requires": {
-                               "duplexify": "^3.6.0",
-                               "inherits": "^2.0.3",
-                               "pump": "^2.0.0"
-                       },
-                       "dependencies": {
-                               "pump": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
-                                       "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "end-of-stream": "^1.1.0",
-                                               "once": "^1.3.1"
-                                       }
-                               }
-                       }
-               },
-               "punycode": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-                       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-                       "dev": true
-               },
-               "querystring": {
-                       "version": "0.2.0",
-                       "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
-                       "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
-                       "dev": true
-               },
-               "querystring-es3": {
-                       "version": "0.2.1",
-                       "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
-                       "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
-                       "dev": true
-               },
-               "randombytes": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
-                       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
-                       "dev": true,
-                       "requires": {
-                               "safe-buffer": "^5.1.0"
-                       }
-               },
-               "randomfill": {
-                       "version": "1.0.4",
-                       "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
-                       "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
-                       "dev": true,
-                       "requires": {
-                               "randombytes": "^2.0.5",
-                               "safe-buffer": "^5.1.0"
-                       }
-               },
-               "readable-stream": {
-                       "version": "2.3.6",
-                       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-                       "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-                       "dev": true,
-                       "requires": {
-                               "core-util-is": "~1.0.0",
-                               "inherits": "~2.0.3",
-                               "isarray": "~1.0.0",
-                               "process-nextick-args": "~2.0.0",
-                               "safe-buffer": "~5.1.1",
-                               "string_decoder": "~1.1.1",
-                               "util-deprecate": "~1.0.1"
-                       }
-               },
-               "readdirp": {
-                       "version": "3.5.0",
-                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
-                       "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
-                       "dev": true,
-                       "optional": true,
-                       "requires": {
-                               "picomatch": "^2.2.1"
-                       },
-                       "dependencies": {
-                               "picomatch": {
-                                       "version": "2.2.2",
-                                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
-                                       "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
-                                       "dev": true,
-                                       "optional": true
-                               }
-                       }
-               },
-               "regex-not": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-                       "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-                       "dev": true,
-                       "requires": {
-                               "extend-shallow": "^3.0.2",
-                               "safe-regex": "^1.1.0"
-                       }
-               },
-               "remove-trailing-separator": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-                       "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-                       "dev": true,
-                       "optional": true
-               },
-               "repeat-element": {
-                       "version": "1.1.3",
-                       "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-                       "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-                       "dev": true
-               },
-               "repeat-string": {
-                       "version": "1.6.1",
-                       "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-                       "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-                       "dev": true
-               },
-               "require-directory": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-                       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
-                       "dev": true
-               },
-               "require-main-filename": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-                       "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-                       "dev": true
-               },
-               "resolve-cwd": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
-                       "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
-                       "dev": true,
-                       "requires": {
-                               "resolve-from": "^3.0.0"
-                       }
-               },
-               "resolve-dir": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
-                       "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
-                       "dev": true,
-                       "requires": {
-                               "expand-tilde": "^2.0.0",
-                               "global-modules": "^1.0.0"
-                       },
-                       "dependencies": {
-                               "global-modules": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
-                                       "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "global-prefix": "^1.0.1",
-                                               "is-windows": "^1.0.1",
-                                               "resolve-dir": "^1.0.0"
-                                       }
-                               }
-                       }
-               },
-               "resolve-from": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
-                       "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
-                       "dev": true
-               },
-               "resolve-url": {
-                       "version": "0.2.1",
-                       "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-                       "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-                       "dev": true
-               },
-               "ret": {
-                       "version": "0.1.15",
-                       "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-                       "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-                       "dev": true
-               },
-               "rimraf": {
-                       "version": "2.7.1",
-                       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
-                       "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
-                       "dev": true,
-                       "requires": {
-                               "glob": "^7.1.3"
-                       }
-               },
-               "ripemd160": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
-                       "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
-                       "dev": true,
-                       "requires": {
-                               "hash-base": "^3.0.0",
-                               "inherits": "^2.0.1"
-                       }
-               },
-               "run-queue": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
-                       "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
-                       "dev": true,
-                       "requires": {
-                               "aproba": "^1.1.1"
-                       }
-               },
-               "safe-buffer": {
-                       "version": "5.1.2",
-                       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-                       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-                       "dev": true
-               },
-               "safe-regex": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-                       "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-                       "dev": true,
-                       "requires": {
-                               "ret": "~0.1.10"
-                       }
-               },
-               "schema-utils": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
-                       "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
-                       "dev": true,
-                       "requires": {
-                               "ajv": "^6.1.0",
-                               "ajv-errors": "^1.0.0",
-                               "ajv-keywords": "^3.1.0"
-                       }
-               },
-               "semver": {
-                       "version": "5.7.1",
-                       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                       "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                       "dev": true
-               },
-               "serialize-javascript": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-                       "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
-                       "dev": true,
-                       "requires": {
-                               "randombytes": "^2.1.0"
-                       }
-               },
-               "set-blocking": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
-                       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
-                       "dev": true
-               },
-               "set-value": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-                       "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-                       "dev": true,
-                       "requires": {
-                               "extend-shallow": "^2.0.1",
-                               "is-extendable": "^0.1.1",
-                               "is-plain-object": "^2.0.3",
-                               "split-string": "^3.0.1"
-                       },
-                       "dependencies": {
-                               "extend-shallow": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-extendable": "^0.1.0"
-                                       }
-                               }
-                       }
-               },
-               "setimmediate": {
-                       "version": "1.0.5",
-                       "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
-                       "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-                       "dev": true
-               },
-               "sha.js": {
-                       "version": "2.4.11",
-                       "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
-                       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
-                       "dev": true,
-                       "requires": {
-                               "inherits": "^2.0.1",
-                               "safe-buffer": "^5.0.1"
-                       }
-               },
-               "shebang-command": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-                       "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-                       "dev": true,
-                       "requires": {
-                               "shebang-regex": "^1.0.0"
-                       }
-               },
-               "shebang-regex": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-                       "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-                       "dev": true
-               },
-               "signal-exit": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-                       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
-                       "dev": true
-               },
-               "snapdragon": {
-                       "version": "0.8.2",
-                       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-                       "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-                       "dev": true,
-                       "requires": {
-                               "base": "^0.11.1",
-                               "debug": "^2.2.0",
-                               "define-property": "^0.2.5",
-                               "extend-shallow": "^2.0.1",
-                               "map-cache": "^0.2.2",
-                               "source-map": "^0.5.6",
-                               "source-map-resolve": "^0.5.0",
-                               "use": "^3.1.0"
-                       },
-                       "dependencies": {
-                               "debug": {
-                                       "version": "2.6.9",
-                                       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-                                       "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "ms": "2.0.0"
-                                       }
-                               },
-                               "define-property": {
-                                       "version": "0.2.5",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                                       "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^0.1.0"
-                                       }
-                               },
-                               "extend-shallow": {
-                                       "version": "2.0.1",
-                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-extendable": "^0.1.0"
-                                       }
-                               },
-                               "ms": {
-                                       "version": "2.0.0",
-                                       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-                                       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-                                       "dev": true
-                               }
-                       }
-               },
-               "snapdragon-node": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-                       "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-                       "dev": true,
-                       "requires": {
-                               "define-property": "^1.0.0",
-                               "isobject": "^3.0.0",
-                               "snapdragon-util": "^3.0.1"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-                                       "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^1.0.0"
-                                       }
-                               },
-                               "is-accessor-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-data-descriptor": {
-                                       "version": "1.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-                                       "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^6.0.0"
-                                       }
-                               },
-                               "is-descriptor": {
-                                       "version": "1.0.2",
-                                       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-                                       "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-accessor-descriptor": "^1.0.0",
-                                               "is-data-descriptor": "^1.0.0",
-                                               "kind-of": "^6.0.2"
-                                       }
-                               }
-                       }
-               },
-               "snapdragon-util": {
-                       "version": "3.0.1",
-                       "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-                       "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-                       "dev": true,
-                       "requires": {
-                               "kind-of": "^3.2.0"
-                       },
-                       "dependencies": {
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "kind-of": {
-                                       "version": "3.2.2",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
-                       }
+               "json-schema-traverse": {
+                       "version": "0.4.1",
+                       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+                       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+                       "dev": true
                },
-               "source-list-map": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
-                       "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+               "kind-of": {
+                       "version": "6.0.3",
+                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+                       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
                        "dev": true
                },
-               "source-map": {
-                       "version": "0.5.7",
-                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-                       "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+               "loader-runner": {
+                       "version": "4.2.0",
+                       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz",
+                       "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==",
                        "dev": true
                },
-               "source-map-resolve": {
-                       "version": "0.5.2",
-                       "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
-                       "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+               "locate-path": {
+                       "version": "6.0.0",
+                       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+                       "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
                        "dev": true,
                        "requires": {
-                               "atob": "^2.1.1",
-                               "decode-uri-component": "^0.2.0",
-                               "resolve-url": "^0.2.1",
-                               "source-map-url": "^0.4.0",
-                               "urix": "^0.1.0"
+                               "p-locate": "^5.0.0"
                        }
                },
-               "source-map-support": {
-                       "version": "0.5.19",
-                       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
-                       "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+               "log-symbols": {
+                       "version": "4.1.0",
+                       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+                       "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
                        "dev": true,
                        "requires": {
-                               "buffer-from": "^1.0.0",
-                               "source-map": "^0.6.0"
-                       },
-                       "dependencies": {
-                               "source-map": {
-                                       "version": "0.6.1",
-                                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                                       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                                       "dev": true
-                               }
+                               "chalk": "^4.1.0",
+                               "is-unicode-supported": "^0.1.0"
                        }
                },
-               "source-map-url": {
-                       "version": "0.4.0",
-                       "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-                       "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-                       "dev": true
-               },
-               "split-string": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-                       "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+               "lru-cache": {
+                       "version": "6.0.0",
+                       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+                       "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                        "dev": true,
                        "requires": {
-                               "extend-shallow": "^3.0.0"
+                               "yallist": "^4.0.0"
                        }
                },
-               "sprintf-js": {
-                       "version": "1.0.3",
-                       "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-                       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+               "merge-stream": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+                       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
                        "dev": true
                },
-               "ssri": {
-                       "version": "6.0.2",
-                       "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
-                       "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+               "micromatch": {
+                       "version": "4.0.4",
+                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+                       "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
                        "dev": true,
                        "requires": {
-                               "figgy-pudding": "^3.5.1"
+                               "braces": "^3.0.1",
+                               "picomatch": "^2.2.3"
                        }
                },
-               "static-extend": {
-                       "version": "0.1.2",
-                       "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-                       "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-                       "dev": true,
-                       "requires": {
-                               "define-property": "^0.2.5",
-                               "object-copy": "^0.1.0"
-                       },
-                       "dependencies": {
-                               "define-property": {
-                                       "version": "0.2.5",
-                                       "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-                                       "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-descriptor": "^0.1.0"
-                                       }
-                               }
-                       }
+               "mime-db": {
+                       "version": "1.48.0",
+                       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
+                       "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==",
+                       "dev": true
                },
-               "stream-browserify": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
-                       "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+               "mime-types": {
+                       "version": "2.1.31",
+                       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
+                       "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
                        "dev": true,
                        "requires": {
-                               "inherits": "~2.0.1",
-                               "readable-stream": "^2.0.2"
+                               "mime-db": "1.48.0"
                        }
                },
-               "stream-each": {
-                       "version": "1.2.3",
-                       "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
-                       "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+               "mimic-fn": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+                       "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+                       "dev": true
+               },
+               "minimatch": {
+                       "version": "3.0.4",
+                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+                       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
                        "dev": true,
                        "requires": {
-                               "end-of-stream": "^1.1.0",
-                               "stream-shift": "^1.0.0"
+                               "brace-expansion": "^1.1.7"
                        }
                },
-               "stream-http": {
-                       "version": "2.8.3",
-                       "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
-                       "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+               "mocha": {
+                       "version": "9.0.0",
+                       "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.0.tgz",
+                       "integrity": "sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g==",
                        "dev": true,
                        "requires": {
-                               "builtin-status-codes": "^3.0.0",
-                               "inherits": "^2.0.1",
-                               "readable-stream": "^2.3.6",
-                               "to-arraybuffer": "^1.0.0",
-                               "xtend": "^4.0.0"
+                               "@ungap/promise-all-settled": "1.1.2",
+                               "ansi-colors": "4.1.1",
+                               "browser-stdout": "1.3.1",
+                               "chokidar": "3.5.1",
+                               "debug": "4.3.1",
+                               "diff": "5.0.0",
+                               "escape-string-regexp": "4.0.0",
+                               "find-up": "5.0.0",
+                               "glob": "7.1.7",
+                               "growl": "1.10.5",
+                               "he": "1.2.0",
+                               "js-yaml": "4.1.0",
+                               "log-symbols": "4.1.0",
+                               "minimatch": "3.0.4",
+                               "ms": "2.1.3",
+                               "nanoid": "3.1.23",
+                               "serialize-javascript": "5.0.1",
+                               "strip-json-comments": "3.1.1",
+                               "supports-color": "8.1.1",
+                               "which": "2.0.2",
+                               "wide-align": "1.1.3",
+                               "workerpool": "6.1.4",
+                               "yargs": "16.2.0",
+                               "yargs-parser": "20.2.4",
+                               "yargs-unparser": "2.0.0"
                        }
                },
-               "stream-shift": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
-                       "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+               "ms": {
+                       "version": "2.1.3",
+                       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+                       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
                        "dev": true
                },
-               "string-width": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-                       "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+               "nanoid": {
+                       "version": "3.1.23",
+                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
+                       "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==",
+                       "dev": true
+               },
+               "neo-async": {
+                       "version": "2.6.2",
+                       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+                       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+                       "dev": true
+               },
+               "node-releases": {
+                       "version": "1.1.73",
+                       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
+                       "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
+                       "dev": true
+               },
+               "normalize-path": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+                       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+                       "dev": true
+               },
+               "npm-run-path": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+                       "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
                        "dev": true,
                        "requires": {
-                               "is-fullwidth-code-point": "^2.0.0",
-                               "strip-ansi": "^4.0.0"
+                               "path-key": "^3.0.0"
                        }
                },
-               "string.prototype.trimleft": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
-                       "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+               "once": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+                       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
                        "dev": true,
                        "requires": {
-                               "define-properties": "^1.1.3",
-                               "function-bind": "^1.1.1"
+                               "wrappy": "1"
                        }
                },
-               "string.prototype.trimright": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
-                       "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+               "onetime": {
+                       "version": "5.1.2",
+                       "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+                       "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
                        "dev": true,
                        "requires": {
-                               "define-properties": "^1.1.3",
-                               "function-bind": "^1.1.1"
+                               "mimic-fn": "^2.1.0"
                        }
                },
-               "string_decoder": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-                       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+               "p-limit": {
+                       "version": "2.2.1",
+                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+                       "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
                        "dev": true,
                        "requires": {
-                               "safe-buffer": "~5.1.0"
+                               "p-try": "^2.0.0"
                        }
                },
-               "strip-ansi": {
-                       "version": "4.0.0",
-                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-                       "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+               "p-locate": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+                       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
                        "dev": true,
                        "requires": {
-                               "ansi-regex": "^3.0.0"
+                               "p-limit": "^3.0.2"
+                       },
+                       "dependencies": {
+                               "p-limit": {
+                                       "version": "3.1.0",
+                                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+                                       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+                                       "dev": true,
+                                       "requires": {
+                                               "yocto-queue": "^0.1.0"
+                                       }
+                               }
                        }
                },
-               "strip-eof": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-                       "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+               "p-try": {
+                       "version": "2.2.0",
+                       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+                       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
                        "dev": true
                },
-               "strip-json-comments": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
-                       "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+               "path-exists": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+                       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
                        "dev": true
                },
-               "supports-color": {
-                       "version": "6.0.0",
-                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
-                       "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
-                       "dev": true,
-                       "requires": {
-                               "has-flag": "^3.0.0"
-                       }
+               "path-is-absolute": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+                       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+                       "dev": true
                },
-               "tapable": {
-                       "version": "1.1.3",
-                       "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
-                       "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+               "path-key": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+                       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
                        "dev": true
                },
-               "terser": {
-                       "version": "4.8.0",
-                       "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
-                       "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+               "path-parse": {
+                       "version": "1.0.7",
+                       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+                       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+                       "dev": true
+               },
+               "pathval": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+                       "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+                       "dev": true
+               },
+               "picomatch": {
+                       "version": "2.3.0",
+                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+                       "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+                       "dev": true
+               },
+               "pkg-dir": {
+                       "version": "4.2.0",
+                       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+                       "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
                        "dev": true,
                        "requires": {
-                               "commander": "^2.20.0",
-                               "source-map": "~0.6.1",
-                               "source-map-support": "~0.5.12"
+                               "find-up": "^4.0.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==",
+                               "find-up": {
+                                       "version": "4.1.0",
+                                       "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+                                       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+                                       "dev": true,
+                                       "requires": {
+                                               "locate-path": "^5.0.0",
+                                               "path-exists": "^4.0.0"
+                                       }
+                               },
+                               "locate-path": {
+                                       "version": "5.0.0",
+                                       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+                                       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+                                       "dev": true,
+                                       "requires": {
+                                               "p-locate": "^4.1.0"
+                                       }
+                               },
+                               "p-locate": {
+                                       "version": "4.1.0",
+                                       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+                                       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+                                       "dev": true,
+                                       "requires": {
+                                               "p-limit": "^2.2.0"
+                                       }
+                               },
+                               "path-exists": {
+                                       "version": "4.0.0",
+                                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+                                       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
                                        "dev": true
                                }
                        }
                },
-               "terser-webpack-plugin": {
-                       "version": "1.4.5",
-                       "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
-                       "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+               "punycode": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+                       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+                       "dev": true
+               },
+               "randombytes": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+                       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
                        "dev": true,
                        "requires": {
-                               "cacache": "^12.0.2",
-                               "find-cache-dir": "^2.1.0",
-                               "is-wsl": "^1.1.0",
-                               "schema-utils": "^1.0.0",
-                               "serialize-javascript": "^4.0.0",
-                               "source-map": "^0.6.1",
-                               "terser": "^4.1.2",
-                               "webpack-sources": "^1.4.0",
-                               "worker-farm": "^1.7.0"
-                       },
-                       "dependencies": {
-                               "source-map": {
-                                       "version": "0.6.1",
-                                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                                       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                                       "dev": true
-                               }
+                               "safe-buffer": "^5.1.0"
                        }
                },
-               "through2": {
-                       "version": "2.0.5",
-                       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-                       "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+               "readdirp": {
+                       "version": "3.5.0",
+                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
+                       "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
                        "dev": true,
                        "requires": {
-                               "readable-stream": "~2.3.6",
-                               "xtend": "~4.0.1"
+                               "picomatch": "^2.2.1"
                        }
                },
-               "timers-browserify": {
-                       "version": "2.0.11",
-                       "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
-                       "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
+               "rechoir": {
+                       "version": "0.7.0",
+                       "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
+                       "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
                        "dev": true,
                        "requires": {
-                               "setimmediate": "^1.0.4"
+                               "resolve": "^1.9.0"
                        }
                },
-               "to-arraybuffer": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
-                       "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+               "require-directory": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+                       "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
                        "dev": true
                },
-               "to-object-path": {
-                       "version": "0.3.0",
-                       "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-                       "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+               "resolve": {
+                       "version": "1.20.0",
+                       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+                       "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
                        "dev": true,
                        "requires": {
-                               "kind-of": "^3.0.2"
-                       },
-                       "dependencies": {
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true
-                               },
-                               "kind-of": {
-                                       "version": "3.2.2",
-                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-buffer": "^1.1.5"
-                                       }
-                               }
+                               "is-core-module": "^2.2.0",
+                               "path-parse": "^1.0.6"
                        }
                },
-               "to-regex": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-                       "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+               "resolve-cwd": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+                       "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
                        "dev": true,
                        "requires": {
-                               "define-property": "^2.0.2",
-                               "extend-shallow": "^3.0.2",
-                               "regex-not": "^1.0.2",
-                               "safe-regex": "^1.1.0"
+                               "resolve-from": "^5.0.0"
                        }
                },
-               "to-regex-range": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
-                       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+               "resolve-from": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+                       "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+                       "dev": true
+               },
+               "safe-buffer": {
+                       "version": "5.2.1",
+                       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+                       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+                       "dev": true
+               },
+               "schema-utils": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+                       "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
                        "dev": true,
                        "requires": {
-                               "is-number": "^7.0.0"
+                               "@types/json-schema": "^7.0.6",
+                               "ajv": "^6.12.5",
+                               "ajv-keywords": "^3.5.2"
                        }
                },
-               "ts-loader": {
-                       "version": "6.2.0",
-                       "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.0.tgz",
-                       "integrity": "sha512-Da8h3fD+HiZ9GvZJydqzk3mTC9nuOKYlJcpuk+Zv6Y1DPaMvBL+56GRzZFypx2cWrZFMsQr869+Ua2slGoLxvQ==",
+               "serialize-javascript": {
+                       "version": "5.0.1",
+                       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
+                       "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
                        "dev": true,
                        "requires": {
-                               "chalk": "^2.3.0",
-                               "enhanced-resolve": "^4.0.0",
-                               "loader-utils": "^1.0.2",
-                               "micromatch": "^4.0.0",
-                               "semver": "^6.0.0"
-                       },
-                       "dependencies": {
-                               "semver": {
-                                       "version": "6.3.0",
-                                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                                       "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                                       "dev": true
-                               }
+                               "randombytes": "^2.1.0"
                        }
                },
-               "tslib": {
-                       "version": "1.10.0",
-                       "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-                       "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
-                       "dev": true
+               "shallow-clone": {
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+                       "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+                       "dev": true,
+                       "requires": {
+                               "kind-of": "^6.0.2"
+                       }
                },
-               "tty-browserify": {
-                       "version": "0.0.0",
-                       "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
-                       "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
-                       "dev": true
+               "shebang-command": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+                       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+                       "dev": true,
+                       "requires": {
+                               "shebang-regex": "^3.0.0"
+                       }
                },
-               "type-detect": {
-                       "version": "4.0.8",
-                       "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
-                       "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+               "shebang-regex": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+                       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
                        "dev": true
                },
-               "typedarray": {
-                       "version": "0.0.6",
-                       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
-                       "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+               "signal-exit": {
+                       "version": "3.0.3",
+                       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+                       "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
                        "dev": true
                },
-               "typescript": {
-                       "version": "3.6.3",
-                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
-                       "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
+               "source-list-map": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+                       "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
                        "dev": true
                },
-               "union-value": {
-                       "version": "1.0.1",
-                       "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-                       "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-                       "dev": true,
-                       "requires": {
-                               "arr-union": "^3.1.0",
-                               "get-value": "^2.0.6",
-                               "is-extendable": "^0.1.1",
-                               "set-value": "^2.0.1"
-                       }
+               "source-map": {
+                       "version": "0.6.1",
+                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+                       "dev": true
                },
-               "unique-filename": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
-                       "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+               "source-map-support": {
+                       "version": "0.5.19",
+                       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+                       "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
                        "dev": true,
                        "requires": {
-                               "unique-slug": "^2.0.0"
+                               "buffer-from": "^1.0.0",
+                               "source-map": "^0.6.0"
                        }
                },
-               "unique-slug": {
-                       "version": "2.0.2",
-                       "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
-                       "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+               "string-width": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+                       "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
                        "dev": true,
                        "requires": {
-                               "imurmurhash": "^0.1.4"
+                               "is-fullwidth-code-point": "^2.0.0",
+                               "strip-ansi": "^4.0.0"
                        }
                },
-               "unset-value": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-                       "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+               "strip-ansi": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+                       "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
                        "dev": true,
                        "requires": {
-                               "has-value": "^0.3.1",
-                               "isobject": "^3.0.0"
-                       },
-                       "dependencies": {
-                               "has-value": {
-                                       "version": "0.3.1",
-                                       "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-                                       "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-                                       "dev": true,
-                                       "requires": {
-                                               "get-value": "^2.0.3",
-                                               "has-values": "^0.1.4",
-                                               "isobject": "^2.0.0"
-                                       },
-                                       "dependencies": {
-                                               "isobject": {
-                                                       "version": "2.1.0",
-                                                       "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-                                                       "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "isarray": "1.0.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "has-values": {
-                                       "version": "0.1.4",
-                                       "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-                                       "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-                                       "dev": true
-                               }
+                               "ansi-regex": "^3.0.0"
                        }
                },
-               "upath": {
-                       "version": "1.2.0",
-                       "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-                       "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-                       "dev": true,
-                       "optional": true
+               "strip-final-newline": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+                       "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+                       "dev": true
                },
-               "uri-js": {
-                       "version": "4.2.2",
-                       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-                       "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+               "strip-json-comments": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+                       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+                       "dev": true
+               },
+               "supports-color": {
+                       "version": "8.1.1",
+                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+                       "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
                        "dev": true,
                        "requires": {
-                               "punycode": "^2.1.0"
+                               "has-flag": "^4.0.0"
                        }
                },
-               "urix": {
-                       "version": "0.1.0",
-                       "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-                       "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+               "tapable": {
+                       "version": "2.2.0",
+                       "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
+                       "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==",
                        "dev": true
                },
-               "url": {
-                       "version": "0.11.0",
-                       "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
-                       "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+               "terser": {
+                       "version": "5.7.0",
+                       "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz",
+                       "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==",
                        "dev": true,
                        "requires": {
-                               "punycode": "1.3.2",
-                               "querystring": "0.2.0"
+                               "commander": "^2.20.0",
+                               "source-map": "~0.7.2",
+                               "source-map-support": "~0.5.19"
                        },
                        "dependencies": {
-                               "punycode": {
-                                       "version": "1.3.2",
-                                       "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
-                                       "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+                               "source-map": {
+                                       "version": "0.7.3",
+                                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+                                       "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
                                        "dev": true
                                }
                        }
                },
-               "use": {
-                       "version": "3.1.1",
-                       "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-                       "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-                       "dev": true
-               },
-               "util": {
-                       "version": "0.11.1",
-                       "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-                       "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+               "terser-webpack-plugin": {
+                       "version": "5.1.3",
+                       "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz",
+                       "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==",
                        "dev": true,
                        "requires": {
-                               "inherits": "2.0.3"
+                               "jest-worker": "^27.0.2",
+                               "p-limit": "^3.1.0",
+                               "schema-utils": "^3.0.0",
+                               "serialize-javascript": "^5.0.1",
+                               "source-map": "^0.6.1",
+                               "terser": "^5.7.0"
                        },
                        "dependencies": {
-                               "inherits": {
-                                       "version": "2.0.3",
-                                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-                                       "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-                                       "dev": true
+                               "p-limit": {
+                                       "version": "3.1.0",
+                                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+                                       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+                                       "dev": true,
+                                       "requires": {
+                                               "yocto-queue": "^0.1.0"
+                                       }
                                }
                        }
                },
-               "util-deprecate": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-                       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-                       "dev": true
-               },
-               "v8-compile-cache": {
-                       "version": "2.0.3",
-                       "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
-                       "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
-                       "dev": true
-               },
-               "vm-browserify": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz",
-                       "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==",
-                       "dev": true
-               },
-               "watchpack": {
-                       "version": "1.7.5",
-                       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
-                       "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+               "to-regex-range": {
+                       "version": "5.0.1",
+                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+                       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
                        "dev": true,
                        "requires": {
-                               "chokidar": "^3.4.1",
-                               "graceful-fs": "^4.1.2",
-                               "neo-async": "^2.5.0",
-                               "watchpack-chokidar2": "^2.0.1"
+                               "is-number": "^7.0.0"
                        }
                },
-               "watchpack-chokidar2": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
-                       "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+               "ts-loader": {
+                       "version": "9.2.3",
+                       "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.3.tgz",
+                       "integrity": "sha512-sEyWiU3JMHBL55CIeC4iqJQadI0U70A5af0kvgbNLHVNz2ACztQg0j/9x10bjjIht8WfFYLKfn4L6tkZ+pu+8Q==",
                        "dev": true,
-                       "optional": true,
                        "requires": {
-                               "chokidar": "^2.1.8"
+                               "chalk": "^4.1.0",
+                               "enhanced-resolve": "^5.0.0",
+                               "micromatch": "^4.0.0",
+                               "semver": "^7.3.4"
                        },
                        "dependencies": {
-                               "anymatch": {
-                                       "version": "2.0.0",
-                                       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-                                       "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-                                       "dev": true,
-                                       "optional": true,
-                                       "requires": {
-                                               "micromatch": "^3.1.4",
-                                               "normalize-path": "^2.1.1"
-                                       },
-                                       "dependencies": {
-                                               "normalize-path": {
-                                                       "version": "2.1.1",
-                                                       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-                                                       "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-                                                       "dev": true,
-                                                       "optional": true,
-                                                       "requires": {
-                                                               "remove-trailing-separator": "^1.0.1"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "binary-extensions": {
-                                       "version": "1.13.1",
-                                       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-                                       "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-                                       "dev": true,
-                                       "optional": true
-                               },
-                               "braces": {
-                                       "version": "2.3.2",
-                                       "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                                       "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                                       "dev": true,
-                                       "optional": true,
-                                       "requires": {
-                                               "arr-flatten": "^1.1.0",
-                                               "array-unique": "^0.3.2",
-                                               "extend-shallow": "^2.0.1",
-                                               "fill-range": "^4.0.0",
-                                               "isobject": "^3.0.1",
-                                               "repeat-element": "^1.1.2",
-                                               "snapdragon": "^0.8.1",
-                                               "snapdragon-node": "^2.0.1",
-                                               "split-string": "^3.0.2",
-                                               "to-regex": "^3.0.1"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "optional": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "chokidar": {
-                                       "version": "2.1.8",
-                                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-                                       "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-                                       "dev": true,
-                                       "optional": true,
-                                       "requires": {
-                                               "anymatch": "^2.0.0",
-                                               "async-each": "^1.0.1",
-                                               "braces": "^2.3.2",
-                                               "fsevents": "^1.2.7",
-                                               "glob-parent": "^3.1.0",
-                                               "inherits": "^2.0.3",
-                                               "is-binary-path": "^1.0.0",
-                                               "is-glob": "^4.0.0",
-                                               "normalize-path": "^3.0.0",
-                                               "path-is-absolute": "^1.0.0",
-                                               "readdirp": "^2.2.1",
-                                               "upath": "^1.1.1"
-                                       }
-                               },
-                               "fill-range": {
-                                       "version": "4.0.0",
-                                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                                       "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+                               "ansi-styles": {
+                                       "version": "4.3.0",
+                                       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+                                       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
                                        "dev": true,
-                                       "optional": true,
                                        "requires": {
-                                               "extend-shallow": "^2.0.1",
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1",
-                                               "to-regex-range": "^2.1.0"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "optional": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
+                                               "color-convert": "^2.0.1"
                                        }
                                },
-                               "fsevents": {
-                                       "version": "1.2.13",
-                                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
-                                       "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
-                                       "dev": true,
-                                       "optional": true
-                               },
-                               "glob-parent": {
-                                       "version": "3.1.0",
-                                       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-                                       "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+                               "chalk": {
+                                       "version": "4.1.1",
+                                       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+                                       "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
                                        "dev": true,
-                                       "optional": true,
                                        "requires": {
-                                               "is-glob": "^3.1.0",
-                                               "path-dirname": "^1.0.0"
-                                       },
-                                       "dependencies": {
-                                               "is-glob": {
-                                                       "version": "3.1.0",
-                                                       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-                                                       "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-                                                       "dev": true,
-                                                       "optional": true,
-                                                       "requires": {
-                                                               "is-extglob": "^2.1.0"
-                                                       }
-                                               }
+                                               "ansi-styles": "^4.1.0",
+                                               "supports-color": "^7.1.0"
                                        }
                                },
-                               "is-binary-path": {
-                                       "version": "1.0.1",
-                                       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-                                       "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+                               "color-convert": {
+                                       "version": "2.0.1",
+                                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+                                       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
                                        "dev": true,
-                                       "optional": true,
                                        "requires": {
-                                               "binary-extensions": "^1.0.0"
+                                               "color-name": "~1.1.4"
                                        }
                                },
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-                                       "dev": true,
-                                       "optional": true
-                               },
-                               "is-number": {
-                                       "version": "3.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                                       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                                       "dev": true,
-                                       "optional": true,
-                                       "requires": {
-                                               "kind-of": "^3.0.2"
-                                       },
-                                       "dependencies": {
-                                               "kind-of": {
-                                                       "version": "3.2.2",
-                                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                                       "dev": true,
-                                                       "optional": true,
-                                                       "requires": {
-                                                               "is-buffer": "^1.1.5"
-                                                       }
-                                               }
-                                       }
+                               "color-name": {
+                                       "version": "1.1.4",
+                                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+                                       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+                                       "dev": true
                                },
-                               "micromatch": {
-                                       "version": "3.1.10",
-                                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                                       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                                       "dev": true,
-                                       "optional": true,
-                                       "requires": {
-                                               "arr-diff": "^4.0.0",
-                                               "array-unique": "^0.3.2",
-                                               "braces": "^2.3.1",
-                                               "define-property": "^2.0.2",
-                                               "extend-shallow": "^3.0.2",
-                                               "extglob": "^2.0.4",
-                                               "fragment-cache": "^0.2.1",
-                                               "kind-of": "^6.0.2",
-                                               "nanomatch": "^1.2.9",
-                                               "object.pick": "^1.3.0",
-                                               "regex-not": "^1.0.0",
-                                               "snapdragon": "^0.8.1",
-                                               "to-regex": "^3.0.2"
-                                       }
+                               "has-flag": {
+                                       "version": "4.0.0",
+                                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+                                       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+                                       "dev": true
                                },
-                               "readdirp": {
-                                       "version": "2.2.1",
-                                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-                                       "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+                               "semver": {
+                                       "version": "7.3.5",
+                                       "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+                                       "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
                                        "dev": true,
-                                       "optional": true,
                                        "requires": {
-                                               "graceful-fs": "^4.1.11",
-                                               "micromatch": "^3.1.10",
-                                               "readable-stream": "^2.0.2"
+                                               "lru-cache": "^6.0.0"
                                        }
                                },
-                               "to-regex-range": {
-                                       "version": "2.1.1",
-                                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                                       "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+                               "supports-color": {
+                                       "version": "7.2.0",
+                                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+                                       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
                                        "dev": true,
-                                       "optional": true,
                                        "requires": {
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1"
+                                               "has-flag": "^4.0.0"
                                        }
                                }
                        }
                },
-               "webpack": {
-                       "version": "4.41.1",
-                       "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.1.tgz",
-                       "integrity": "sha512-ak7u4tUu/U63sCVxA571IuPZO/Q0pZ9cEXKg+R/woxkDzVovq57uB6L2Hlg/pC8LCU+TWpvtcYwsstivQwMJmw==",
+               "type-detect": {
+                       "version": "4.0.8",
+                       "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+                       "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+                       "dev": true
+               },
+               "typescript": {
+                       "version": "4.3.2",
+                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz",
+                       "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==",
+                       "dev": true
+               },
+               "uri-js": {
+                       "version": "4.4.1",
+                       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+                       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+                       "dev": true,
+                       "requires": {
+                               "punycode": "^2.1.0"
+                       }
+               },
+               "v8-compile-cache": {
+                       "version": "2.3.0",
+                       "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+                       "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+                       "dev": true
+               },
+               "watchpack": {
+                       "version": "2.2.0",
+                       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz",
+                       "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==",
                        "dev": true,
                        "requires": {
-                               "@webassemblyjs/ast": "1.8.5",
-                               "@webassemblyjs/helper-module-context": "1.8.5",
-                               "@webassemblyjs/wasm-edit": "1.8.5",
-                               "@webassemblyjs/wasm-parser": "1.8.5",
-                               "acorn": "^6.2.1",
-                               "ajv": "^6.10.2",
-                               "ajv-keywords": "^3.4.1",
+                               "glob-to-regexp": "^0.4.1",
+                               "graceful-fs": "^4.1.2"
+                       }
+               },
+               "webpack": {
+                       "version": "5.38.1",
+                       "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.38.1.tgz",
+                       "integrity": "sha512-OqRmYD1OJbHZph6RUMD93GcCZy4Z4wC0ele4FXyYF0J6AxO1vOSuIlU1hkS/lDlR9CDYBz64MZRmdbdnFFoT2g==",
+                       "dev": true,
+                       "requires": {
+                               "@types/eslint-scope": "^3.7.0",
+                               "@types/estree": "^0.0.47",
+                               "@webassemblyjs/ast": "1.11.0",
+                               "@webassemblyjs/wasm-edit": "1.11.0",
+                               "@webassemblyjs/wasm-parser": "1.11.0",
+                               "acorn": "^8.2.1",
+                               "browserslist": "^4.14.5",
                                "chrome-trace-event": "^1.0.2",
-                               "enhanced-resolve": "^4.1.0",
-                               "eslint-scope": "^4.0.3",
+                               "enhanced-resolve": "^5.8.0",
+                               "es-module-lexer": "^0.4.0",
+                               "eslint-scope": "5.1.1",
+                               "events": "^3.2.0",
+                               "glob-to-regexp": "^0.4.1",
+                               "graceful-fs": "^4.2.4",
                                "json-parse-better-errors": "^1.0.2",
-                               "loader-runner": "^2.4.0",
-                               "loader-utils": "^1.2.3",
-                               "memory-fs": "^0.4.1",
-                               "micromatch": "^3.1.10",
-                               "mkdirp": "^0.5.1",
-                               "neo-async": "^2.6.1",
-                               "node-libs-browser": "^2.2.1",
-                               "schema-utils": "^1.0.0",
-                               "tapable": "^1.1.3",
-                               "terser-webpack-plugin": "^1.4.1",
-                               "watchpack": "^1.6.0",
-                               "webpack-sources": "^1.4.1"
+                               "loader-runner": "^4.2.0",
+                               "mime-types": "^2.1.27",
+                               "neo-async": "^2.6.2",
+                               "schema-utils": "^3.0.0",
+                               "tapable": "^2.1.1",
+                               "terser-webpack-plugin": "^5.1.1",
+                               "watchpack": "^2.2.0",
+                               "webpack-sources": "^2.3.0"
+                       }
+               },
+               "webpack-cli": {
+                       "version": "4.7.2",
+                       "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz",
+                       "integrity": "sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==",
+                       "dev": true,
+                       "requires": {
+                               "@discoveryjs/json-ext": "^0.5.0",
+                               "@webpack-cli/configtest": "^1.0.4",
+                               "@webpack-cli/info": "^1.3.0",
+                               "@webpack-cli/serve": "^1.5.1",
+                               "colorette": "^1.2.1",
+                               "commander": "^7.0.0",
+                               "execa": "^5.0.0",
+                               "fastest-levenshtein": "^1.0.12",
+                               "import-local": "^3.0.2",
+                               "interpret": "^2.2.0",
+                               "rechoir": "^0.7.0",
+                               "v8-compile-cache": "^2.2.0",
+                               "webpack-merge": "^5.7.3"
                        },
                        "dependencies": {
-                               "braces": {
-                                       "version": "2.3.2",
-                                       "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-                                       "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-                                       "dev": true,
-                                       "requires": {
-                                               "arr-flatten": "^1.1.0",
-                                               "array-unique": "^0.3.2",
-                                               "extend-shallow": "^2.0.1",
-                                               "fill-range": "^4.0.0",
-                                               "isobject": "^3.0.1",
-                                               "repeat-element": "^1.1.2",
-                                               "snapdragon": "^0.8.1",
-                                               "snapdragon-node": "^2.0.1",
-                                               "split-string": "^3.0.2",
-                                               "to-regex": "^3.0.1"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "fill-range": {
-                                       "version": "4.0.0",
-                                       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-                                       "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-                                       "dev": true,
-                                       "requires": {
-                                               "extend-shallow": "^2.0.1",
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1",
-                                               "to-regex-range": "^2.1.0"
-                                       },
-                                       "dependencies": {
-                                               "extend-shallow": {
-                                                       "version": "2.0.1",
-                                                       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-                                                       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-extendable": "^0.1.0"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "is-buffer": {
-                                       "version": "1.1.6",
-                                       "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-                                       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+                               "commander": {
+                                       "version": "7.2.0",
+                                       "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+                                       "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
                                        "dev": true
-                               },
-                               "is-number": {
-                                       "version": "3.0.0",
-                                       "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-                                       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-                                       "dev": true,
-                                       "requires": {
-                                               "kind-of": "^3.0.2"
-                                       },
-                                       "dependencies": {
-                                               "kind-of": {
-                                                       "version": "3.2.2",
-                                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-                                                       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-                                                       "dev": true,
-                                                       "requires": {
-                                                               "is-buffer": "^1.1.5"
-                                                       }
-                                               }
-                                       }
-                               },
-                               "memory-fs": {
-                                       "version": "0.4.1",
-                                       "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-                                       "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
-                                       "dev": true,
-                                       "requires": {
-                                               "errno": "^0.1.3",
-                                               "readable-stream": "^2.0.1"
-                                       }
-                               },
-                               "micromatch": {
-                                       "version": "3.1.10",
-                                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-                                       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "arr-diff": "^4.0.0",
-                                               "array-unique": "^0.3.2",
-                                               "braces": "^2.3.1",
-                                               "define-property": "^2.0.2",
-                                               "extend-shallow": "^3.0.2",
-                                               "extglob": "^2.0.4",
-                                               "fragment-cache": "^0.2.1",
-                                               "kind-of": "^6.0.2",
-                                               "nanomatch": "^1.2.9",
-                                               "object.pick": "^1.3.0",
-                                               "regex-not": "^1.0.0",
-                                               "snapdragon": "^0.8.1",
-                                               "to-regex": "^3.0.2"
-                                       },
-                                       "dependencies": {
-                                               "kind-of": {
-                                                       "version": "6.0.3",
-                                                       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-                                                       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-                                                       "dev": true
-                                               }
-                                       }
-                               },
-                               "to-regex-range": {
-                                       "version": "2.1.1",
-                                       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-                                       "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-                                       "dev": true,
-                                       "requires": {
-                                               "is-number": "^3.0.0",
-                                               "repeat-string": "^1.6.1"
-                                       }
                                }
                        }
                },
-               "webpack-cli": {
-                       "version": "3.3.9",
-                       "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.9.tgz",
-                       "integrity": "sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A==",
+               "webpack-merge": {
+                       "version": "5.8.0",
+                       "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
+                       "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==",
                        "dev": true,
                        "requires": {
-                               "chalk": "2.4.2",
-                               "cross-spawn": "6.0.5",
-                               "enhanced-resolve": "4.1.0",
-                               "findup-sync": "3.0.0",
-                               "global-modules": "2.0.0",
-                               "import-local": "2.0.0",
-                               "interpret": "1.2.0",
-                               "loader-utils": "1.2.3",
-                               "supports-color": "6.1.0",
-                               "v8-compile-cache": "2.0.3",
-                               "yargs": "13.2.4"
-                       },
-                       "dependencies": {
-                               "ansi-regex": {
-                                       "version": "4.1.0",
-                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                                       "dev": true
-                               },
-                               "enhanced-resolve": {
-                                       "version": "4.1.0",
-                                       "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
-                                       "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
-                                       "dev": true,
-                                       "requires": {
-                                               "graceful-fs": "^4.1.2",
-                                               "memory-fs": "^0.4.0",
-                                               "tapable": "^1.0.0"
-                                       }
-                               },
-                               "memory-fs": {
-                                       "version": "0.4.1",
-                                       "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
-                                       "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
-                                       "dev": true,
-                                       "requires": {
-                                               "errno": "^0.1.3",
-                                               "readable-stream": "^2.0.1"
-                                       }
-                               },
-                               "string-width": {
-                                       "version": "3.1.0",
-                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                                       "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                                       "dev": true,
-                                       "requires": {
-                                               "emoji-regex": "^7.0.1",
-                                               "is-fullwidth-code-point": "^2.0.0",
-                                               "strip-ansi": "^5.1.0"
-                                       }
-                               },
-                               "strip-ansi": {
-                                       "version": "5.2.0",
-                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                                       "dev": true,
-                                       "requires": {
-                                               "ansi-regex": "^4.1.0"
-                                       }
-                               },
-                               "supports-color": {
-                                       "version": "6.1.0",
-                                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-                                       "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-                                       "dev": true,
-                                       "requires": {
-                                               "has-flag": "^3.0.0"
-                                       }
-                               },
-                               "yargs": {
-                                       "version": "13.2.4",
-                                       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
-                                       "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
-                                       "dev": true,
-                                       "requires": {
-                                               "cliui": "^5.0.0",
-                                               "find-up": "^3.0.0",
-                                               "get-caller-file": "^2.0.1",
-                                               "os-locale": "^3.1.0",
-                                               "require-directory": "^2.1.1",
-                                               "require-main-filename": "^2.0.0",
-                                               "set-blocking": "^2.0.0",
-                                               "string-width": "^3.0.0",
-                                               "which-module": "^2.0.0",
-                                               "y18n": "^4.0.0",
-                                               "yargs-parser": "^13.1.0"
-                                       }
-                               }
+                               "clone-deep": "^4.0.1",
+                               "wildcard": "^2.0.0"
                        }
                },
                "webpack-sources": {
-                       "version": "1.4.3",
-                       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
-                       "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+                       "version": "2.3.0",
+                       "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz",
+                       "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==",
                        "dev": true,
                        "requires": {
-                               "source-list-map": "^2.0.0",
-                               "source-map": "~0.6.1"
-                       },
-                       "dependencies": {
-                               "source-map": {
-                                       "version": "0.6.1",
-                                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-                                       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-                                       "dev": true
-                               }
+                               "source-list-map": "^2.0.1",
+                               "source-map": "^0.6.1"
                        }
                },
                "which": {
-                       "version": "1.3.1",
-                       "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-                       "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+                       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
                        "dev": true,
                        "requires": {
                                "isexe": "^2.0.0"
                        }
                },
-               "which-module": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
-                       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
-                       "dev": true
-               },
                "wide-align": {
                        "version": "1.1.3",
                        "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
                                "string-width": "^1.0.2 || 2"
                        }
                },
-               "worker-farm": {
-                       "version": "1.7.0",
-                       "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
-                       "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
-                       "dev": true,
-                       "requires": {
-                               "errno": "~0.1.7"
-                       }
+               "wildcard": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
+                       "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
+                       "dev": true
+               },
+               "workerpool": {
+                       "version": "6.1.4",
+                       "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.4.tgz",
+                       "integrity": "sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g==",
+                       "dev": true
                },
                "wrap-ansi": {
-                       "version": "5.1.0",
-                       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
-                       "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+                       "version": "7.0.0",
+                       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+                       "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
                        "dev": true,
                        "requires": {
-                               "ansi-styles": "^3.2.0",
-                               "string-width": "^3.0.0",
-                               "strip-ansi": "^5.0.0"
+                               "ansi-styles": "^4.0.0",
+                               "string-width": "^4.1.0",
+                               "strip-ansi": "^6.0.0"
                        },
                        "dependencies": {
                                "ansi-regex": {
-                                       "version": "4.1.0",
-                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+                                       "version": "5.0.0",
+                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+                                       "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+                                       "dev": true
+                               },
+                               "is-fullwidth-code-point": {
+                                       "version": "3.0.0",
+                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+                                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                                        "dev": true
                                },
                                "string-width": {
-                                       "version": "3.1.0",
-                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                                       "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                                       "version": "4.2.2",
+                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+                                       "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
                                        "dev": true,
                                        "requires": {
-                                               "emoji-regex": "^7.0.1",
-                                               "is-fullwidth-code-point": "^2.0.0",
-                                               "strip-ansi": "^5.1.0"
+                                               "emoji-regex": "^8.0.0",
+                                               "is-fullwidth-code-point": "^3.0.0",
+                                               "strip-ansi": "^6.0.0"
                                        }
                                },
                                "strip-ansi": {
-                                       "version": "5.2.0",
-                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                                       "version": "6.0.0",
+                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+                                       "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
                                        "dev": true,
                                        "requires": {
-                                               "ansi-regex": "^4.1.0"
+                                               "ansi-regex": "^5.0.0"
                                        }
                                }
                        }
                        "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
                        "dev": true
                },
-               "xtend": {
-                       "version": "4.0.2",
-                       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-                       "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-                       "dev": true
-               },
                "y18n": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
-                       "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+                       "version": "5.0.8",
+                       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+                       "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
                        "dev": true
                },
                "yallist": {
-                       "version": "3.1.1",
-                       "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
-                       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+                       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
                        "dev": true
                },
                "yargs": {
-                       "version": "13.3.0",
-                       "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
-                       "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
+                       "version": "16.2.0",
+                       "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+                       "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
                        "dev": true,
                        "requires": {
-                               "cliui": "^5.0.0",
-                               "find-up": "^3.0.0",
-                               "get-caller-file": "^2.0.1",
+                               "cliui": "^7.0.2",
+                               "escalade": "^3.1.1",
+                               "get-caller-file": "^2.0.5",
                                "require-directory": "^2.1.1",
-                               "require-main-filename": "^2.0.0",
-                               "set-blocking": "^2.0.0",
-                               "string-width": "^3.0.0",
-                               "which-module": "^2.0.0",
-                               "y18n": "^4.0.0",
-                               "yargs-parser": "^13.1.1"
+                               "string-width": "^4.2.0",
+                               "y18n": "^5.0.5",
+                               "yargs-parser": "^20.2.2"
                        },
                        "dependencies": {
                                "ansi-regex": {
-                                       "version": "4.1.0",
-                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                                       "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+                                       "version": "5.0.0",
+                                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+                                       "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+                                       "dev": true
+                               },
+                               "is-fullwidth-code-point": {
+                                       "version": "3.0.0",
+                                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+                                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                                        "dev": true
                                },
                                "string-width": {
-                                       "version": "3.1.0",
-                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                                       "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                                       "version": "4.2.2",
+                                       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+                                       "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
                                        "dev": true,
                                        "requires": {
-                                               "emoji-regex": "^7.0.1",
-                                               "is-fullwidth-code-point": "^2.0.0",
-                                               "strip-ansi": "^5.1.0"
+                                               "emoji-regex": "^8.0.0",
+                                               "is-fullwidth-code-point": "^3.0.0",
+                                               "strip-ansi": "^6.0.0"
                                        }
                                },
                                "strip-ansi": {
-                                       "version": "5.2.0",
-                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                                       "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                                       "version": "6.0.0",
+                                       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+                                       "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
                                        "dev": true,
                                        "requires": {
-                                               "ansi-regex": "^4.1.0"
+                                               "ansi-regex": "^5.0.0"
                                        }
                                }
                        }
                },
                "yargs-parser": {
-                       "version": "13.1.2",
-                       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
-                       "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
-                       "dev": true,
-                       "requires": {
-                               "camelcase": "^5.0.0",
-                               "decamelize": "^1.2.0"
-                       }
+                       "version": "20.2.4",
+                       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+                       "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+                       "dev": true
                },
                "yargs-unparser": {
-                       "version": "1.6.0",
-                       "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
-                       "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+                       "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
                        "dev": true,
                        "requires": {
-                               "flat": "^4.1.0",
-                               "lodash": "^4.17.15",
-                               "yargs": "^13.3.0"
+                               "camelcase": "^6.0.0",
+                               "decamelize": "^4.0.0",
+                               "flat": "^5.0.2",
+                               "is-plain-obj": "^2.1.0"
                        }
+               },
+               "yocto-queue": {
+                       "version": "0.1.0",
+                       "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+                       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+                       "dev": true
                }
        }
 }
index e19ca6e7d5cf45b402ef2208750123f120fc0b30..b4d2d918d0e3aea20d312ea3981b04c18b1e73ef 100644 (file)
@@ -1,6 +1,6 @@
 {
        "name": "nanocurrency-web",
-       "version": "1.3.3",
+       "version": "1.3.4",
        "description": "Toolkit for Nano cryptocurrency client side offline integrations",
        "author": "Miro Metsänheimo <miro@metsanheimo.fi>",
        "license": "MIT",
                "test": "mocha --reporter spec"
        },
        "dependencies": {
-               "bignumber.js": "9.0.0",
+               "bignumber.js": "9.0.1",
                "blakejs": "1.1.0",
                "crypto-js": "3.1.9-1"
        },
        "devDependencies": {
-               "@types/node": "12.7.12",
-               "chai": "4.2.0",
-               "mocha": "6.2.1",
-               "ts-loader": "6.2.0",
-               "typescript": "3.6.3",
-               "webpack": "4.41.1",
-               "webpack-cli": "3.3.9"
+               "chai": "4.3.4",
+               "mocha": "9.0.0",
+               "ts-loader": "9.2.3",
+               "typescript": "4.3.2",
+               "webpack": "5.38.1",
+               "webpack-cli": "4.7.2"
        }
 }
index 71c8a993a606493ac9e7d59e02796516b9506f4a..45abdf7269f23946a3e9147c6ec3c78096d14954 100644 (file)
@@ -151,6 +151,11 @@ describe('derive more accounts from the same seed test', () => {
                expect(result[14].privateKey).to.equal('5f12e37c64daf2501c6a6a20614fd8d977fed65b5b5f0b045ec997f2ed2f53ca')
                expect(result[14].publicKey).to.equal('f93a61018e07825a095e8cf7bdce9242e9c12c5c41a55de597a2be93fa41306b')
                expect(result[14].address).to.equal('nano_3ybte61rw3w4da6ox59qqq9b6iqbr6p7rif7dqkshaoykhx64e5dbp4o1ua1')
+
+               const result2 = wallet.accounts(
+                       '0dc285fde768f7ff29b66ce7252d56ed92fe003b605907f7a4f683c3dc8586d34a914d3c71fc099bb38ee4a59e5b081a3497b7a323e90cc68f67b5837690310c',
+                       1000000, 1000099)
+               expect(result2.length).to.equal(100)
        })
 
 })