├── .env.dev ├── .env.prod ├── .github └── funding.yml ├── .gitignore ├── LICENSE ├── README.md ├── check.js ├── index.js ├── media ├── logo.png └── logo.svg ├── modules ├── address-cache.js ├── address-generators.js ├── calc-file-lines.js ├── dirs.js ├── make-address-generator.js ├── parse-xpub.js └── wallets.js ├── package.json ├── static ├── css │ └── vendor.css ├── js │ └── vendor.js └── robots.txt ├── stats.js ├── views ├── pages │ ├── 404.hbs │ ├── 500.hbs │ ├── page.hbs │ └── widget.hbs └── partials │ ├── footer.hbs │ ├── wallet_dom.hbs │ ├── wallet_script.hbs │ └── wallet_style.hbs ├── wallets.js.sample └── yarn.lock /.env.dev: -------------------------------------------------------------------------------- 1 | NODE_ENV=development 2 | SERVER_HOST=localhost 3 | SERVER_PORT=4000 -------------------------------------------------------------------------------- /.env.prod: -------------------------------------------------------------------------------- 1 | NODE_ENV=production 2 | SERVER_HOST=localhost 3 | SERVER_PORT=4000 -------------------------------------------------------------------------------- /.github/funding.yml: -------------------------------------------------------------------------------- 1 | custom: https://mynode.alexkaul.com/gh-donate 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | # wallets config 64 | /wallets.js 65 | 66 | # directory for used addresses 67 | addresses -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Alex Kaul 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 |

One-Time Address

4 |

5 | A better way to share your Bitcoin address 6 |

7 |
8 |
9 | 10 | One-Time Address is a self-hosted, open-source service which turns your Bitcoin wallets into webpages and embeddable widgets that instantly provide an address with a QR code whenever someone wants to send you Bitcoin. 11 | 12 | One-Time Address never shows the same address twice and thus helps to prevent address reuse. You should not reuse addresses because it abuses the privacy and security of the participants of the transactions as well as future holders of their value. 13 | 14 | Note #1: If the same visitor requests an address multiple times within a short period, he might see an address generated for him last time instead of a new one. This prevents wallets from bloating with repetitive requests. 15 | 16 | Note #2: It is not intended for use in e-commerce or when it's needed to trigger execution of other processes after the payment is done. One-Time Address provides the instant access to a one-time Bitcoin address and nothing else. If you need more features, then consider using [BTCPay Server](https://github.com/btcpayserver/btcpayserver). 17 | 18 | ## Live Demo 19 | 20 | Demo webpage: https://donate.alexkaul.com/one-time-address 21 | 22 | ## Installing 23 | 24 | ``` 25 | # clone repo 26 | git clone https://github.com/alexk111/One-Time-Address 27 | 28 | # navigate to it 29 | cd One-Time-Address 30 | 31 | # install dependencies 32 | yarn install 33 | 34 | # add env variables 35 | cp .env.prod .env 36 | 37 | # add wallets config 38 | cp wallets.js.sample wallets.js 39 | ``` 40 | 41 | Edit ```.env```: 42 | 43 | - Update SERVER_HOST and SERVER_PORT if needed 44 | 45 | Edit ```wallets.js```: 46 | 47 | - Enter info for your wallets 48 | 49 | ## Checking wallets 50 | 51 | ``` 52 | # check if your BTC wallet is generating the same addresses 53 | yarn run check my-wallet 54 | ``` 55 | 56 | ## Running 57 | 58 | ``` 59 | # running http server 60 | yarn start 61 | ``` 62 | 63 | ## Getting stats 64 | 65 | ``` 66 | # get stats on how many addresses have been already used 67 | yarn run stats my-wallet 68 | ``` 69 | 70 | ## Address Cache 71 | 72 | One-Time Address keeps generated addresses and visitor IPs in the cache for up to N minutes (5 by default). If the same visitor refreshes the same wallet page within the interval, an address will be returned from the cache instead of generating a new one. This prevents wallets from being bloated with repetitive or automated requests. The interval can be edited with ```addrIPCacheMins``` in ```wallets.js``` file. Set ```0``` to disable the cache. 73 | 74 | ## Gap Limit Issue 75 | 76 | Since One-Time Address provides every visitor with a new Bitcoin address, you might find yourself in a situation where more than 20 addresses in a row will have zero transactions. This will cause an [Account Discovery](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account-discovery) issue when received funds don't appear in your Bitcoin wallet. Available workarounds: 77 | 78 | ### Using HD Wallet Scanner 79 | 80 | [HD Wallet Scanner](https://github.com/alexk111/HD-Wallet-Scanner) finds all used addresses in your Bitcoin HD wallets bypassing gap limits. Then you might use Bitcoin Core + HWI (if you use a hardware wallet) to import child keys derived with their indexes. 81 | 82 | ### Using Electrum wallet 83 | 84 | [Electrum wallet](https://www.electrum.org/) allows increasing Gap Limit. Open the ```Console tab``` and use the following commands at prompt: ```wallet.change_gap_limit(200)``` and press enter at your keyboard, ```wallet.storage.write()``` and press enter again. Then restart the client. To view/verify the current gap limit, type the following in the console: ```wallet.gap_limit```. 85 | 86 | ### Using Wasabi wallet 87 | 88 | If you are showing bech32 addresses, then you might use [Wasabi wallet](https://wasabiwallet.io/). It also allows increasing Gap Limit. The wallet file can be modified from File/Open/Wallet Folder. To change the gap limit, update ```MinGapLimit``` json property in the wallet file. 89 | 90 | ## Backers 💝 91 | 92 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/0/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/0/profile) 93 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/1/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/1/profile) 94 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/2/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/2/profile) 95 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/3/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/3/profile) 96 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/4/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/4/profile) 97 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/5/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/5/profile) 98 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/6/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/6/profile) 99 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/7/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/7/profile) 100 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/8/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/8/profile) 101 | [![Backer](https://mynode.alexkaul.com/gh-backer/top/9/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/9/profile) 102 | 103 | Thank you for your support! 🙌 [[Donate](https://mynode.alexkaul.com/gh-donate)] 104 | 105 | ## License 106 | 107 | MIT © Alex Kaul 108 | -------------------------------------------------------------------------------- /check.js: -------------------------------------------------------------------------------- 1 | const initWallets = require('./modules/wallets') 2 | const addressGenerators = require('./modules/address-generators') 3 | 4 | // Helper for checking if your BTC wallet is generating the same addresses 5 | async function main () { 6 | const wallets = await initWallets() 7 | const walletId = process.argv[process.argv.length - 1] 8 | const wallet = wallets[walletId] 9 | 10 | for (let i = 0; i < 10; i++) { 11 | console.log( 12 | `0/${i}`, 13 | addressGenerators[wallet.addrEnc](wallet.hdKey, i) 14 | ) 15 | } 16 | } 17 | 18 | main() 19 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const express = require("express"); 3 | const hbs = require("hbs"); 4 | const requestIp = require("request-ip"); 5 | 6 | const initWallets = require("./modules/wallets"); 7 | 8 | async function main() { 9 | const wallets = await initWallets(true); 10 | 11 | hbs.registerPartials(path.join(__dirname, "/views/partials")); 12 | 13 | const app = express(); 14 | app.set("view engine", "hbs"); 15 | 16 | app.use("", express.static("static")); 17 | 18 | app.get("/:walletId/widget", (req, res) => { 19 | try { 20 | const walletId = req.params.walletId || "default"; 21 | const wallet = wallets[walletId] || wallets["default"]; 22 | if (wallet) { 23 | res.render("pages/widget.hbs", { 24 | walletId, 25 | revealDelayMsec: wallet.revealDelayMsec, 26 | revealDelay2Msec: wallet.revealDelay2Msec, 27 | isTransparentBg: !!req.query.isTransparentBg 28 | }); 29 | } else { 30 | res.status(404).render("pages/404.hbs"); 31 | } 32 | } catch (e) { 33 | res.status(500).render("pages/500.hbs"); 34 | } 35 | }); 36 | 37 | app.get("/:walletId.json", [requestIp.mw()], (req, res) => { 38 | try { 39 | const walletId = req.params.walletId || "default"; 40 | const wallet = wallets[walletId] || wallets["default"]; 41 | const address = wallet.generateAddress(req.clientIp); 42 | if (wallet) { 43 | res.json({ address, walletId }); 44 | } else { 45 | res.status(404).json({ error: true }); 46 | } 47 | } catch (e) { 48 | res.status(500).json({ error: true }); 49 | } 50 | }); 51 | 52 | app.get("/:walletId?", (req, res) => { 53 | try { 54 | const walletId = req.params.walletId || "default"; 55 | const wallet = wallets[walletId] || wallets["default"]; 56 | if (wallet) { 57 | res.render("pages/page.hbs", { 58 | walletId, 59 | revealDelayMsec: wallet.revealDelayMsec, 60 | revealDelay2Msec: wallet.revealDelay2Msec, 61 | pageData: wallet.page 62 | }); 63 | } else { 64 | res.status(404).render("pages/404.hbs"); 65 | } 66 | } catch (e) { 67 | res.status(500).render("pages/500.hbs"); 68 | } 69 | }); 70 | 71 | const SERVER_PORT = process.env.SERVER_PORT || 4000; 72 | const SERVER_HOST = process.env.SERVER_HOST || "localhost"; 73 | 74 | app.listen(SERVER_PORT, SERVER_HOST, () => { 75 | console.log(`*** I'm listening on ${SERVER_HOST}:${SERVER_PORT} ***`); 76 | }); 77 | } 78 | 79 | main(); 80 | -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexk111/One-Time-Address/92de4671e425bdd785af1441172c9c558a591e25/media/logo.png -------------------------------------------------------------------------------- /media/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /modules/address-cache.js: -------------------------------------------------------------------------------- 1 | class AddressCache { 2 | constructor (expireMins) { 3 | this.ips = new Map() 4 | this.intervalClear = setInterval(() => { 5 | this.ips.clear() 6 | }, expireMins * 60000) 7 | } 8 | 9 | getAddress (ip) { 10 | return this.ips.get(ip) 11 | } 12 | 13 | setAddress (ip, address) { 14 | this.ips.set(ip, address) 15 | } 16 | } 17 | 18 | module.exports = AddressCache 19 | -------------------------------------------------------------------------------- /modules/address-generators.js: -------------------------------------------------------------------------------- 1 | const bitcoin = require('bitcoinjs-lib') 2 | 3 | function p2pkh (hdKey, idx) { 4 | return bitcoin.payments.p2pkh({ 5 | pubkey: hdKey.derive(0).derive(idx).publicKey 6 | }).address 7 | } 8 | 9 | function p2wpkhInP2sh (hdKey, idx) { 10 | return bitcoin.payments.p2sh({ 11 | redeem: bitcoin.payments.p2wpkh({ 12 | pubkey: hdKey.derive(0).derive(idx).publicKey 13 | }) 14 | }).address 15 | } 16 | 17 | function p2wpkh (hdKey, idx) { 18 | return bitcoin.payments.p2wpkh({ 19 | pubkey: hdKey.derive(0).derive(idx).publicKey 20 | }).address 21 | } 22 | 23 | function multisigP2wshInP2sh (hdKey, idx) { 24 | // will add later 25 | } 26 | 27 | function multisigP2wsh (hdKey, idx) { 28 | // will add later 29 | } 30 | 31 | module.exports = { 32 | 'p2pkh': p2pkh, 33 | 'p2wpkh-in-p2sh': p2wpkhInP2sh, 34 | 'p2wpkh': p2wpkh 35 | // 'multisig-p2wsh-in-p2sh': multisigP2wshInP2sh, 36 | // 'multisig-p2wsh': multisigP2wsh 37 | } 38 | -------------------------------------------------------------------------------- /modules/calc-file-lines.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | async function calcFileLines (filePath) { 4 | let count = 0 5 | const stream = fs.createReadStream(filePath) 6 | .on('data', (chunk) => { 7 | for (let i = 0; i < chunk.length; i++) { 8 | if (chunk[i] === 10) { 9 | count++ 10 | } 11 | } 12 | }) 13 | 14 | return new Promise((resolve, reject) => { 15 | stream.on('end', () => resolve(count)) 16 | stream.on('error', reject) 17 | }) 18 | } 19 | 20 | module.exports = calcFileLines 21 | -------------------------------------------------------------------------------- /modules/dirs.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | 3 | const dirAddresses = 'addresses' 4 | 5 | if (!fs.existsSync(dirAddresses)) { 6 | fs.mkdirSync(dirAddresses) 7 | } 8 | 9 | module.exports = { 10 | dirAddresses 11 | } 12 | -------------------------------------------------------------------------------- /modules/make-address-generator.js: -------------------------------------------------------------------------------- 1 | const addressGenerators = require('./address-generators') 2 | const AddressCache = require('./address-cache') 3 | 4 | function makeAddressGenerator (wallet) { 5 | // Setup Cache if needed 6 | let cache 7 | if (wallet.addrIPCacheMins && !isNaN(wallet.addrIPCacheMins)) { 8 | cache = new AddressCache(wallet.addrIPCacheMins) 9 | } 10 | 11 | return function generateAddress (clientIP) { 12 | let addr = cache ? cache.getAddress(clientIP) : '' 13 | 14 | if (!addr) { 15 | addr = addressGenerators[wallet.addrEnc](wallet.hdKey, wallet.nextAddrIdx) 16 | ++wallet.nextAddrIdx 17 | const isoDate = new Date().toISOString() 18 | const addrLog = `${addr};${isoDate};${clientIP}` 19 | wallet.streamAddrs.write(addrLog + '\n') 20 | } 21 | 22 | if (cache) { 23 | cache.setAddress(clientIP, addr) 24 | } 25 | 26 | return addr 27 | } 28 | } 29 | 30 | module.exports = makeAddressGenerator 31 | -------------------------------------------------------------------------------- /modules/parse-xpub.js: -------------------------------------------------------------------------------- 1 | var b58 = require('bs58check') 2 | 3 | const addressEncodingByPrefix = new Map([ 4 | ['xpub', 'p2pkh'], 5 | ['ypub', 'p2wpkh-in-p2sh'], 6 | ['zpub', 'p2wpkh'], 7 | ['Ypub', 'multisig-p2wsh-in-p2sh'], 8 | ['Zpub', 'multisig-p2wsh'] 9 | ]) 10 | 11 | function parseXPub (xpub) { 12 | xpub = xpub.trim() 13 | 14 | const prefix = xpub.substring(0, 4) 15 | const addrEnc = addressEncodingByPrefix.get(prefix) 16 | 17 | if (!addrEnc) { 18 | throw new Error('Invalid xpub') 19 | } 20 | 21 | // convert version bytes to xpub 22 | var data = b58.decode(xpub) 23 | data = data.slice(4) 24 | data = Buffer.concat([Buffer.from('0488b21e', 'hex'), data]) 25 | return { 26 | xpub: b58.encode(data), 27 | addrEnc 28 | } 29 | } 30 | 31 | module.exports = parseXPub 32 | -------------------------------------------------------------------------------- /modules/wallets.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const fs = require('fs') 3 | const bitcoin = require('bitcoinjs-lib') 4 | 5 | const parseXPub = require('./parse-xpub') 6 | const dirAddresses = require('./dirs').dirAddresses 7 | const addressGenerators = require('./address-generators') 8 | const makeAddressGenerator = require('./make-address-generator') 9 | const calcFileLines = require('./calc-file-lines') 10 | 11 | const wallets = require('../wallets') 12 | 13 | async function initWallets (isMain) { 14 | for (let id in wallets) { 15 | if (wallets.hasOwnProperty(id)) { 16 | const wallet = wallets[id] 17 | 18 | // parse the provided xpub: get version bytes converted to xpub and address encoiding 19 | let parsedXPub 20 | try { 21 | parsedXPub = parseXPub(wallet.xpub) 22 | wallet.hdKey = bitcoin.bip32.fromBase58(parsedXPub.xpub) 23 | } catch (e) { 24 | throw new Error('Invalid xpub value in ' + id) 25 | } 26 | 27 | wallet.addrEnc = wallet.addrEnc || parsedXPub.addrEnc 28 | if (!addressGenerators[wallet.addrEnc]) { 29 | throw new Error(`${wallet.addrEnc} is not supported yet`) 30 | } 31 | 32 | // restore the nextAddrIdx counter from the number of already generated addresses 33 | const walletAddrsPath = path.join(dirAddresses, wallet.xpub) 34 | if (fs.existsSync(walletAddrsPath)) { 35 | wallet.nextAddrIdx = await calcFileLines(walletAddrsPath) 36 | } else { 37 | wallet.nextAddrIdx = 0 38 | } 39 | 40 | // options 41 | wallet.revealDelayMsec = wallet.revealDelayMsec || 2000 42 | wallet.revealDelay2Msec = wallet.revealDelayMsec + 500 43 | 44 | // if not a helper process 45 | if (isMain) { 46 | // create a write stream for storing the generated addresses: line number = address index 47 | try { 48 | wallet.streamAddrs = fs.createWriteStream(walletAddrsPath, {flags: 'a'}) 49 | } catch (e) { 50 | throw new Error(`Could not create Write Stream for ${walletAddrsPath}: ${e}`) 51 | } 52 | 53 | // make a function to generate addresses 54 | wallet.generateAddress = makeAddressGenerator(wallet) 55 | } 56 | } 57 | } 58 | 59 | return wallets 60 | } 61 | 62 | module.exports = initWallets 63 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "one-time-address", 3 | "version": "0.1.1", 4 | "main": "index.js", 5 | "scripts": { 6 | "dev": "nodemon --ext js,hbs --exec \"node -r dotenv/config index.js\"", 7 | "start": "node -r dotenv/config index.js", 8 | "check": "node check.js", 9 | "stats": "node stats.js", 10 | "test": "echo \"Error: no test specified\" && exit 1" 11 | }, 12 | "private": true, 13 | "repository": "https://github.com/alexk111/One-Time-Address.git", 14 | "author": "alexk111 ", 15 | "license": "MIT", 16 | "dependencies": { 17 | "bitcoinjs-lib": "^5.2.0", 18 | "bs58check": "^2.1.2", 19 | "dotenv": "^8.1.0", 20 | "express": "^4.17.1", 21 | "hbs": "^4.1.1", 22 | "request-ip": "^2.1.3" 23 | }, 24 | "devDependencies": { 25 | "nodemon": "^2.0.4" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /stats.js: -------------------------------------------------------------------------------- 1 | const initWallets = require('./modules/wallets') 2 | 3 | // Helper for getting stats on how many addresses have been already used (next address index) 4 | async function main () { 5 | const wallets = await initWallets() 6 | const walletId = process.argv[process.argv.length - 1] 7 | const wallet = wallets[walletId] 8 | console.log(wallet.nextAddrIdx) 9 | } 10 | 11 | main() 12 | -------------------------------------------------------------------------------- /views/pages/404.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Wallet does not exit 8 | 9 | 10 |
11 |

No such wallet

12 |

Could not provide a Bitcoin address. Please let the wallet owner know about this issue.

13 |
14 | 15 | -------------------------------------------------------------------------------- /views/pages/500.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Error 8 | 9 | 10 |
11 |

Error occured

12 |

Could not provide a Bitcoin address. Please let the wallet owner know about this issue.

13 |
14 | 15 | -------------------------------------------------------------------------------- /views/pages/page.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | {{ pageData.title }} 14 | 15 | 16 | 17 | {{> wallet_style}} 18 | 60 | 61 | 64 | {{> wallet_script}} 65 | 66 | 67 | 68 |
69 |
70 |
71 |

{{ pageData.title }}

72 |

{{ pageData.description }}

73 |
74 |
75 |
76 |
77 | {{> footer}} 78 |
79 |
80 |
81 |
82 | {{> wallet_dom}} 83 |
84 | 85 | 86 | -------------------------------------------------------------------------------- /views/pages/widget.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | {{> wallet_style}} 14 | 40 | 41 | 44 | {{> wallet_script}} 45 | 46 | 47 | 48 |
49 |
50 |
51 | {{> wallet_dom noClose=true}} 52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /views/partials/footer.hbs: -------------------------------------------------------------------------------- 1 |

Powered by One-Time Address.

2 | -------------------------------------------------------------------------------- /views/partials/wallet_dom.hbs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 | {{#unless noClose}} 9 | 12 | {{/unless}} 13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 24 |
25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /views/partials/wallet_script.hbs: -------------------------------------------------------------------------------- 1 | 102 | -------------------------------------------------------------------------------- /views/partials/wallet_style.hbs: -------------------------------------------------------------------------------- 1 | 173 | -------------------------------------------------------------------------------- /wallets.js.sample: -------------------------------------------------------------------------------- 1 | const wallets = { 2 | 'my-wallet': { // Id/slug for webpage url, widget url, json url. Set 'default' for empty slug in url 3 | 'xpub': 'XPUBKEY', // Extended public key of your HD wallet 4 | 'addrEnc': '', // Optional. Address encoding: 'p2pkh'|'p2wpkh-in-p2sh'|'p2wpkh' 5 | 'addrIPCacheMins': 5, // Optional. Max number of minutes an address generated for IP remains in the cache. 0 = disable cache 6 | 'revealDelayMsec': 2000, // Optional. Generate an address after a specified number of msecs. Default: 2000 7 | 'page': { // Webpage template data 8 | 'title': 'My Bitcoin Wallet', 9 | 'description': 'If you want to support my work you can make a donation to this address.' 10 | } 11 | } 12 | } 13 | 14 | module.exports = wallets 15 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^0.14.0": 6 | version "0.14.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 8 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 9 | 10 | "@szmarczak/http-timer@^1.1.2": 11 | version "1.1.2" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 13 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 14 | dependencies: 15 | defer-to-connect "^1.0.1" 16 | 17 | "@types/color-name@^1.1.1": 18 | version "1.1.1" 19 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 20 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 21 | 22 | "@types/node@10.12.18": 23 | version "10.12.18" 24 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" 25 | integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== 26 | 27 | abbrev@1: 28 | version "1.1.1" 29 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 30 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 31 | 32 | accepts@~1.3.7: 33 | version "1.3.7" 34 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 35 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 36 | dependencies: 37 | mime-types "~2.1.24" 38 | negotiator "0.6.2" 39 | 40 | ansi-align@^3.0.0: 41 | version "3.0.0" 42 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 43 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 44 | dependencies: 45 | string-width "^3.0.0" 46 | 47 | ansi-regex@^4.1.0: 48 | version "4.1.0" 49 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 50 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 51 | 52 | ansi-regex@^5.0.0: 53 | version "5.0.0" 54 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 55 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 56 | 57 | ansi-styles@^4.1.0: 58 | version "4.2.1" 59 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 60 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 61 | dependencies: 62 | "@types/color-name" "^1.1.1" 63 | color-convert "^2.0.1" 64 | 65 | anymatch@~3.1.1: 66 | version "3.1.1" 67 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 68 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 69 | dependencies: 70 | normalize-path "^3.0.0" 71 | picomatch "^2.0.4" 72 | 73 | array-flatten@1.1.1: 74 | version "1.1.1" 75 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 76 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 77 | 78 | balanced-match@^1.0.0: 79 | version "1.0.0" 80 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 81 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 82 | 83 | base-x@^3.0.2: 84 | version "3.0.8" 85 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" 86 | integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== 87 | dependencies: 88 | safe-buffer "^5.0.1" 89 | 90 | bech32@^1.1.2: 91 | version "1.1.4" 92 | resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 93 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 94 | 95 | binary-extensions@^2.0.0: 96 | version "2.1.0" 97 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" 98 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== 99 | 100 | bindings@^1.3.0: 101 | version "1.5.0" 102 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 103 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 104 | dependencies: 105 | file-uri-to-path "1.0.0" 106 | 107 | bip174@^2.0.1: 108 | version "2.0.1" 109 | resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.0.1.tgz#39cf8ca99e50ce538fb762589832f4481d07c254" 110 | integrity sha512-i3X26uKJOkDTAalYAp0Er+qGMDhrbbh2o93/xiPyAN2s25KrClSpe3VXo/7mNJoqA5qfko8rLS2l3RWZgYmjKQ== 111 | 112 | bip32@^2.0.4: 113 | version "2.0.5" 114 | resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.5.tgz#e3808a9e97a880dbafd0f5f09ca4a1e14ee275d2" 115 | integrity sha512-zVY4VvJV+b2fS0/dcap/5XLlpqtgwyN8oRkuGgAS1uLOeEp0Yo6Tw2yUTozTtlrMJO3G8n4g/KX/XGFHW6Pq3g== 116 | dependencies: 117 | "@types/node" "10.12.18" 118 | bs58check "^2.1.1" 119 | create-hash "^1.2.0" 120 | create-hmac "^1.1.7" 121 | tiny-secp256k1 "^1.1.3" 122 | typeforce "^1.11.5" 123 | wif "^2.0.6" 124 | 125 | bip66@^1.1.0: 126 | version "1.1.5" 127 | resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" 128 | integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= 129 | dependencies: 130 | safe-buffer "^5.0.1" 131 | 132 | bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.0: 133 | version "1.4.1" 134 | resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" 135 | integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== 136 | 137 | bitcoinjs-lib@^5.2.0: 138 | version "5.2.0" 139 | resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-5.2.0.tgz#caf8b5efb04274ded1b67e0706960b93afb9d332" 140 | integrity sha512-5DcLxGUDejgNBYcieMIUfjORtUeNWl828VWLHJGVKZCb4zIS1oOySTUr0LGmcqJBQgTBz3bGbRQla4FgrdQEIQ== 141 | dependencies: 142 | bech32 "^1.1.2" 143 | bip174 "^2.0.1" 144 | bip32 "^2.0.4" 145 | bip66 "^1.1.0" 146 | bitcoin-ops "^1.4.0" 147 | bs58check "^2.0.0" 148 | create-hash "^1.1.0" 149 | create-hmac "^1.1.3" 150 | merkle-lib "^2.0.10" 151 | pushdata-bitcoin "^1.0.1" 152 | randombytes "^2.0.1" 153 | tiny-secp256k1 "^1.1.1" 154 | typeforce "^1.11.3" 155 | varuint-bitcoin "^1.0.4" 156 | wif "^2.0.1" 157 | 158 | bn.js@^4.11.8, bn.js@^4.4.0: 159 | version "4.11.9" 160 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" 161 | integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== 162 | 163 | body-parser@1.19.0: 164 | version "1.19.0" 165 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 166 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 167 | dependencies: 168 | bytes "3.1.0" 169 | content-type "~1.0.4" 170 | debug "2.6.9" 171 | depd "~1.1.2" 172 | http-errors "1.7.2" 173 | iconv-lite "0.4.24" 174 | on-finished "~2.3.0" 175 | qs "6.7.0" 176 | raw-body "2.4.0" 177 | type-is "~1.6.17" 178 | 179 | boxen@^4.2.0: 180 | version "4.2.0" 181 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 182 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 183 | dependencies: 184 | ansi-align "^3.0.0" 185 | camelcase "^5.3.1" 186 | chalk "^3.0.0" 187 | cli-boxes "^2.2.0" 188 | string-width "^4.1.0" 189 | term-size "^2.1.0" 190 | type-fest "^0.8.1" 191 | widest-line "^3.1.0" 192 | 193 | brace-expansion@^1.1.7: 194 | version "1.1.11" 195 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 196 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 197 | dependencies: 198 | balanced-match "^1.0.0" 199 | concat-map "0.0.1" 200 | 201 | braces@~3.0.2: 202 | version "3.0.2" 203 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 204 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 205 | dependencies: 206 | fill-range "^7.0.1" 207 | 208 | brorand@^1.0.1: 209 | version "1.1.0" 210 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 211 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 212 | 213 | bs58@^4.0.0: 214 | version "4.0.1" 215 | resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" 216 | integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= 217 | dependencies: 218 | base-x "^3.0.2" 219 | 220 | bs58check@<3.0.0, bs58check@^2.0.0, bs58check@^2.1.1, bs58check@^2.1.2: 221 | version "2.1.2" 222 | resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" 223 | integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== 224 | dependencies: 225 | bs58 "^4.0.0" 226 | create-hash "^1.1.0" 227 | safe-buffer "^5.1.2" 228 | 229 | bytes@3.1.0: 230 | version "3.1.0" 231 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 232 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 233 | 234 | cacheable-request@^6.0.0: 235 | version "6.1.0" 236 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 237 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 238 | dependencies: 239 | clone-response "^1.0.2" 240 | get-stream "^5.1.0" 241 | http-cache-semantics "^4.0.0" 242 | keyv "^3.0.0" 243 | lowercase-keys "^2.0.0" 244 | normalize-url "^4.1.0" 245 | responselike "^1.0.2" 246 | 247 | camelcase@^5.3.1: 248 | version "5.3.1" 249 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 250 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 251 | 252 | chalk@^3.0.0: 253 | version "3.0.0" 254 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 255 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 256 | dependencies: 257 | ansi-styles "^4.1.0" 258 | supports-color "^7.1.0" 259 | 260 | chokidar@^3.2.2: 261 | version "3.4.2" 262 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" 263 | integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== 264 | dependencies: 265 | anymatch "~3.1.1" 266 | braces "~3.0.2" 267 | glob-parent "~5.1.0" 268 | is-binary-path "~2.1.0" 269 | is-glob "~4.0.1" 270 | normalize-path "~3.0.0" 271 | readdirp "~3.4.0" 272 | optionalDependencies: 273 | fsevents "~2.1.2" 274 | 275 | ci-info@^2.0.0: 276 | version "2.0.0" 277 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 278 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 279 | 280 | cipher-base@^1.0.1, cipher-base@^1.0.3: 281 | version "1.0.4" 282 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 283 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 284 | dependencies: 285 | inherits "^2.0.1" 286 | safe-buffer "^5.0.1" 287 | 288 | cli-boxes@^2.2.0: 289 | version "2.2.1" 290 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 291 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 292 | 293 | clone-response@^1.0.2: 294 | version "1.0.2" 295 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 296 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 297 | dependencies: 298 | mimic-response "^1.0.0" 299 | 300 | color-convert@^2.0.1: 301 | version "2.0.1" 302 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 303 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 304 | dependencies: 305 | color-name "~1.1.4" 306 | 307 | color-name@~1.1.4: 308 | version "1.1.4" 309 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 310 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 311 | 312 | concat-map@0.0.1: 313 | version "0.0.1" 314 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 315 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 316 | 317 | configstore@^5.0.1: 318 | version "5.0.1" 319 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 320 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 321 | dependencies: 322 | dot-prop "^5.2.0" 323 | graceful-fs "^4.1.2" 324 | make-dir "^3.0.0" 325 | unique-string "^2.0.0" 326 | write-file-atomic "^3.0.0" 327 | xdg-basedir "^4.0.0" 328 | 329 | content-disposition@0.5.3: 330 | version "0.5.3" 331 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 332 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 333 | dependencies: 334 | safe-buffer "5.1.2" 335 | 336 | content-type@~1.0.4: 337 | version "1.0.4" 338 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 339 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 340 | 341 | cookie-signature@1.0.6: 342 | version "1.0.6" 343 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 344 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 345 | 346 | cookie@0.4.0: 347 | version "0.4.0" 348 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 349 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 350 | 351 | create-hash@^1.1.0, create-hash@^1.2.0: 352 | version "1.2.0" 353 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 354 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 355 | dependencies: 356 | cipher-base "^1.0.1" 357 | inherits "^2.0.1" 358 | md5.js "^1.3.4" 359 | ripemd160 "^2.0.1" 360 | sha.js "^2.4.0" 361 | 362 | create-hmac@^1.1.3, create-hmac@^1.1.7: 363 | version "1.1.7" 364 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 365 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 366 | dependencies: 367 | cipher-base "^1.0.3" 368 | create-hash "^1.1.0" 369 | inherits "^2.0.1" 370 | ripemd160 "^2.0.0" 371 | safe-buffer "^5.0.1" 372 | sha.js "^2.4.8" 373 | 374 | crypto-random-string@^2.0.0: 375 | version "2.0.0" 376 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 377 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 378 | 379 | debug@2.6.9, debug@^2.2.0: 380 | version "2.6.9" 381 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 382 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 383 | dependencies: 384 | ms "2.0.0" 385 | 386 | debug@^3.2.6: 387 | version "3.2.6" 388 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 389 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 390 | dependencies: 391 | ms "^2.1.1" 392 | 393 | decompress-response@^3.3.0: 394 | version "3.3.0" 395 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 396 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 397 | dependencies: 398 | mimic-response "^1.0.0" 399 | 400 | deep-extend@^0.6.0: 401 | version "0.6.0" 402 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 403 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 404 | 405 | defer-to-connect@^1.0.1: 406 | version "1.1.3" 407 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 408 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 409 | 410 | depd@~1.1.2: 411 | version "1.1.2" 412 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 413 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 414 | 415 | destroy@~1.0.4: 416 | version "1.0.4" 417 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 418 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 419 | 420 | dot-prop@^5.2.0: 421 | version "5.3.0" 422 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 423 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 424 | dependencies: 425 | is-obj "^2.0.0" 426 | 427 | dotenv@^8.1.0: 428 | version "8.2.0" 429 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 430 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 431 | 432 | duplexer3@^0.1.4: 433 | version "0.1.4" 434 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 435 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 436 | 437 | ee-first@1.1.1: 438 | version "1.1.1" 439 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 440 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 441 | 442 | elliptic@^6.4.0: 443 | version "6.5.3" 444 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" 445 | integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== 446 | dependencies: 447 | bn.js "^4.4.0" 448 | brorand "^1.0.1" 449 | hash.js "^1.0.0" 450 | hmac-drbg "^1.0.0" 451 | inherits "^2.0.1" 452 | minimalistic-assert "^1.0.0" 453 | minimalistic-crypto-utils "^1.0.0" 454 | 455 | emoji-regex@^7.0.1: 456 | version "7.0.3" 457 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 458 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 459 | 460 | emoji-regex@^8.0.0: 461 | version "8.0.0" 462 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 463 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 464 | 465 | encodeurl@~1.0.2: 466 | version "1.0.2" 467 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 468 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 469 | 470 | end-of-stream@^1.1.0: 471 | version "1.4.4" 472 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 473 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 474 | dependencies: 475 | once "^1.4.0" 476 | 477 | escape-goat@^2.0.0: 478 | version "2.1.1" 479 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 480 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 481 | 482 | escape-html@~1.0.3: 483 | version "1.0.3" 484 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 485 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 486 | 487 | etag@~1.8.1: 488 | version "1.8.1" 489 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 490 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 491 | 492 | express@^4.17.1: 493 | version "4.17.1" 494 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 495 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 496 | dependencies: 497 | accepts "~1.3.7" 498 | array-flatten "1.1.1" 499 | body-parser "1.19.0" 500 | content-disposition "0.5.3" 501 | content-type "~1.0.4" 502 | cookie "0.4.0" 503 | cookie-signature "1.0.6" 504 | debug "2.6.9" 505 | depd "~1.1.2" 506 | encodeurl "~1.0.2" 507 | escape-html "~1.0.3" 508 | etag "~1.8.1" 509 | finalhandler "~1.1.2" 510 | fresh "0.5.2" 511 | merge-descriptors "1.0.1" 512 | methods "~1.1.2" 513 | on-finished "~2.3.0" 514 | parseurl "~1.3.3" 515 | path-to-regexp "0.1.7" 516 | proxy-addr "~2.0.5" 517 | qs "6.7.0" 518 | range-parser "~1.2.1" 519 | safe-buffer "5.1.2" 520 | send "0.17.1" 521 | serve-static "1.14.1" 522 | setprototypeof "1.1.1" 523 | statuses "~1.5.0" 524 | type-is "~1.6.18" 525 | utils-merge "1.0.1" 526 | vary "~1.1.2" 527 | 528 | file-uri-to-path@1.0.0: 529 | version "1.0.0" 530 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 531 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 532 | 533 | fill-range@^7.0.1: 534 | version "7.0.1" 535 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 536 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 537 | dependencies: 538 | to-regex-range "^5.0.1" 539 | 540 | finalhandler@~1.1.2: 541 | version "1.1.2" 542 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 543 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 544 | dependencies: 545 | debug "2.6.9" 546 | encodeurl "~1.0.2" 547 | escape-html "~1.0.3" 548 | on-finished "~2.3.0" 549 | parseurl "~1.3.3" 550 | statuses "~1.5.0" 551 | unpipe "~1.0.0" 552 | 553 | foreachasync@^3.0.0: 554 | version "3.0.0" 555 | resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" 556 | integrity sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY= 557 | 558 | forwarded@~0.1.2: 559 | version "0.1.2" 560 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 561 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 562 | 563 | fresh@0.5.2: 564 | version "0.5.2" 565 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 566 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 567 | 568 | fsevents@~2.1.2: 569 | version "2.1.3" 570 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 571 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 572 | 573 | get-stream@^4.1.0: 574 | version "4.1.0" 575 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 576 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 577 | dependencies: 578 | pump "^3.0.0" 579 | 580 | get-stream@^5.1.0: 581 | version "5.2.0" 582 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 583 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 584 | dependencies: 585 | pump "^3.0.0" 586 | 587 | glob-parent@~5.1.0: 588 | version "5.1.1" 589 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 590 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 591 | dependencies: 592 | is-glob "^4.0.1" 593 | 594 | global-dirs@^2.0.1: 595 | version "2.0.1" 596 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" 597 | integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== 598 | dependencies: 599 | ini "^1.3.5" 600 | 601 | got@^9.6.0: 602 | version "9.6.0" 603 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 604 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 605 | dependencies: 606 | "@sindresorhus/is" "^0.14.0" 607 | "@szmarczak/http-timer" "^1.1.2" 608 | cacheable-request "^6.0.0" 609 | decompress-response "^3.3.0" 610 | duplexer3 "^0.1.4" 611 | get-stream "^4.1.0" 612 | lowercase-keys "^1.0.1" 613 | mimic-response "^1.0.1" 614 | p-cancelable "^1.0.0" 615 | to-readable-stream "^1.0.0" 616 | url-parse-lax "^3.0.0" 617 | 618 | graceful-fs@^4.1.2: 619 | version "4.2.4" 620 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 621 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 622 | 623 | handlebars@4.7.6: 624 | version "4.7.6" 625 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" 626 | integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== 627 | dependencies: 628 | minimist "^1.2.5" 629 | neo-async "^2.6.0" 630 | source-map "^0.6.1" 631 | wordwrap "^1.0.0" 632 | optionalDependencies: 633 | uglify-js "^3.1.4" 634 | 635 | has-flag@^3.0.0: 636 | version "3.0.0" 637 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 638 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 639 | 640 | has-flag@^4.0.0: 641 | version "4.0.0" 642 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 643 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 644 | 645 | has-yarn@^2.1.0: 646 | version "2.1.0" 647 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 648 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 649 | 650 | hash-base@^3.0.0: 651 | version "3.1.0" 652 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 653 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 654 | dependencies: 655 | inherits "^2.0.4" 656 | readable-stream "^3.6.0" 657 | safe-buffer "^5.2.0" 658 | 659 | hash.js@^1.0.0, hash.js@^1.0.3: 660 | version "1.1.7" 661 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 662 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 663 | dependencies: 664 | inherits "^2.0.3" 665 | minimalistic-assert "^1.0.1" 666 | 667 | hbs@^4.1.1: 668 | version "4.1.1" 669 | resolved "https://registry.yarnpkg.com/hbs/-/hbs-4.1.1.tgz#8aab17ca6ae70f9aaa225278bed7af31011254b7" 670 | integrity sha512-6QsbB4RwbpL4cb4DNyjEEPF+suwp+3yZqFVlhILEn92ScC0U4cDCR+FDX53jkfKJPhutcqhAvs+rOLZw5sQrDA== 671 | dependencies: 672 | handlebars "4.7.6" 673 | walk "2.3.14" 674 | 675 | hmac-drbg@^1.0.0: 676 | version "1.0.1" 677 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 678 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 679 | dependencies: 680 | hash.js "^1.0.3" 681 | minimalistic-assert "^1.0.0" 682 | minimalistic-crypto-utils "^1.0.1" 683 | 684 | http-cache-semantics@^4.0.0: 685 | version "4.1.0" 686 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 687 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 688 | 689 | http-errors@1.7.2: 690 | version "1.7.2" 691 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 692 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 693 | dependencies: 694 | depd "~1.1.2" 695 | inherits "2.0.3" 696 | setprototypeof "1.1.1" 697 | statuses ">= 1.5.0 < 2" 698 | toidentifier "1.0.0" 699 | 700 | http-errors@~1.7.2: 701 | version "1.7.3" 702 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 703 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 704 | dependencies: 705 | depd "~1.1.2" 706 | inherits "2.0.4" 707 | setprototypeof "1.1.1" 708 | statuses ">= 1.5.0 < 2" 709 | toidentifier "1.0.0" 710 | 711 | iconv-lite@0.4.24: 712 | version "0.4.24" 713 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 714 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 715 | dependencies: 716 | safer-buffer ">= 2.1.2 < 3" 717 | 718 | ignore-by-default@^1.0.1: 719 | version "1.0.1" 720 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 721 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 722 | 723 | import-lazy@^2.1.0: 724 | version "2.1.0" 725 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 726 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 727 | 728 | imurmurhash@^0.1.4: 729 | version "0.1.4" 730 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 731 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 732 | 733 | inherits@2.0.3: 734 | version "2.0.3" 735 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 736 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 737 | 738 | inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: 739 | version "2.0.4" 740 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 741 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 742 | 743 | ini@^1.3.5, ini@~1.3.0: 744 | version "1.3.7" 745 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" 746 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== 747 | 748 | ipaddr.js@1.9.1: 749 | version "1.9.1" 750 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 751 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 752 | 753 | is-binary-path@~2.1.0: 754 | version "2.1.0" 755 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 756 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 757 | dependencies: 758 | binary-extensions "^2.0.0" 759 | 760 | is-ci@^2.0.0: 761 | version "2.0.0" 762 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 763 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 764 | dependencies: 765 | ci-info "^2.0.0" 766 | 767 | is-extglob@^2.1.1: 768 | version "2.1.1" 769 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 770 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 771 | 772 | is-fullwidth-code-point@^2.0.0: 773 | version "2.0.0" 774 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 775 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 776 | 777 | is-fullwidth-code-point@^3.0.0: 778 | version "3.0.0" 779 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 780 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 781 | 782 | is-glob@^4.0.1, is-glob@~4.0.1: 783 | version "4.0.1" 784 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 785 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 786 | dependencies: 787 | is-extglob "^2.1.1" 788 | 789 | is-installed-globally@^0.3.1: 790 | version "0.3.2" 791 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 792 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 793 | dependencies: 794 | global-dirs "^2.0.1" 795 | is-path-inside "^3.0.1" 796 | 797 | is-npm@^4.0.0: 798 | version "4.0.0" 799 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 800 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 801 | 802 | is-number@^7.0.0: 803 | version "7.0.0" 804 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 805 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 806 | 807 | is-obj@^2.0.0: 808 | version "2.0.0" 809 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 810 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 811 | 812 | is-path-inside@^3.0.1: 813 | version "3.0.2" 814 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" 815 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== 816 | 817 | is-typedarray@^1.0.0: 818 | version "1.0.0" 819 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 820 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 821 | 822 | is-yarn-global@^0.3.0: 823 | version "0.3.0" 824 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 825 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 826 | 827 | is_js@^0.9.0: 828 | version "0.9.0" 829 | resolved "https://registry.yarnpkg.com/is_js/-/is_js-0.9.0.tgz#0ab94540502ba7afa24c856aa985561669e9c52d" 830 | integrity sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0= 831 | 832 | json-buffer@3.0.0: 833 | version "3.0.0" 834 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 835 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 836 | 837 | keyv@^3.0.0: 838 | version "3.1.0" 839 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 840 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 841 | dependencies: 842 | json-buffer "3.0.0" 843 | 844 | latest-version@^5.0.0: 845 | version "5.1.0" 846 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 847 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 848 | dependencies: 849 | package-json "^6.3.0" 850 | 851 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 852 | version "1.0.1" 853 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 854 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 855 | 856 | lowercase-keys@^2.0.0: 857 | version "2.0.0" 858 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 859 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 860 | 861 | make-dir@^3.0.0: 862 | version "3.1.0" 863 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 864 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 865 | dependencies: 866 | semver "^6.0.0" 867 | 868 | md5.js@^1.3.4: 869 | version "1.3.5" 870 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 871 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 872 | dependencies: 873 | hash-base "^3.0.0" 874 | inherits "^2.0.1" 875 | safe-buffer "^5.1.2" 876 | 877 | media-typer@0.3.0: 878 | version "0.3.0" 879 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 880 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 881 | 882 | merge-descriptors@1.0.1: 883 | version "1.0.1" 884 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 885 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 886 | 887 | merkle-lib@^2.0.10: 888 | version "2.0.10" 889 | resolved "https://registry.yarnpkg.com/merkle-lib/-/merkle-lib-2.0.10.tgz#82b8dbae75e27a7785388b73f9d7725d0f6f3326" 890 | integrity sha1-grjbrnXieneFOItz+ddyXQ9vMyY= 891 | 892 | methods@~1.1.2: 893 | version "1.1.2" 894 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 895 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 896 | 897 | mime-db@1.44.0: 898 | version "1.44.0" 899 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 900 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 901 | 902 | mime-types@~2.1.24: 903 | version "2.1.27" 904 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 905 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 906 | dependencies: 907 | mime-db "1.44.0" 908 | 909 | mime@1.6.0: 910 | version "1.6.0" 911 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 912 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 913 | 914 | mimic-response@^1.0.0, mimic-response@^1.0.1: 915 | version "1.0.1" 916 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 917 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 918 | 919 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 920 | version "1.0.1" 921 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 922 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 923 | 924 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 925 | version "1.0.1" 926 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 927 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 928 | 929 | minimatch@^3.0.4: 930 | version "3.0.4" 931 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 932 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 933 | dependencies: 934 | brace-expansion "^1.1.7" 935 | 936 | minimist@^1.2.0, minimist@^1.2.5: 937 | version "1.2.5" 938 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 939 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 940 | 941 | ms@2.0.0: 942 | version "2.0.0" 943 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 944 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 945 | 946 | ms@2.1.1: 947 | version "2.1.1" 948 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 949 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 950 | 951 | ms@^2.1.1: 952 | version "2.1.2" 953 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 954 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 955 | 956 | nan@^2.13.2: 957 | version "2.14.1" 958 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" 959 | integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== 960 | 961 | negotiator@0.6.2: 962 | version "0.6.2" 963 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 964 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 965 | 966 | neo-async@^2.6.0: 967 | version "2.6.2" 968 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 969 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 970 | 971 | nodemon@^2.0.4: 972 | version "2.0.4" 973 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" 974 | integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== 975 | dependencies: 976 | chokidar "^3.2.2" 977 | debug "^3.2.6" 978 | ignore-by-default "^1.0.1" 979 | minimatch "^3.0.4" 980 | pstree.remy "^1.1.7" 981 | semver "^5.7.1" 982 | supports-color "^5.5.0" 983 | touch "^3.1.0" 984 | undefsafe "^2.0.2" 985 | update-notifier "^4.0.0" 986 | 987 | nopt@~1.0.10: 988 | version "1.0.10" 989 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 990 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 991 | dependencies: 992 | abbrev "1" 993 | 994 | normalize-path@^3.0.0, normalize-path@~3.0.0: 995 | version "3.0.0" 996 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 997 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 998 | 999 | normalize-url@^4.1.0: 1000 | version "4.5.0" 1001 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 1002 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 1003 | 1004 | on-finished@~2.3.0: 1005 | version "2.3.0" 1006 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1007 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1008 | dependencies: 1009 | ee-first "1.1.1" 1010 | 1011 | once@^1.3.1, once@^1.4.0: 1012 | version "1.4.0" 1013 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1014 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1015 | dependencies: 1016 | wrappy "1" 1017 | 1018 | p-cancelable@^1.0.0: 1019 | version "1.1.0" 1020 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 1021 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 1022 | 1023 | package-json@^6.3.0: 1024 | version "6.5.0" 1025 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 1026 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 1027 | dependencies: 1028 | got "^9.6.0" 1029 | registry-auth-token "^4.0.0" 1030 | registry-url "^5.0.0" 1031 | semver "^6.2.0" 1032 | 1033 | parseurl@~1.3.3: 1034 | version "1.3.3" 1035 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1036 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1037 | 1038 | path-to-regexp@0.1.7: 1039 | version "0.1.7" 1040 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1041 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1042 | 1043 | picomatch@^2.0.4, picomatch@^2.2.1: 1044 | version "2.2.2" 1045 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1046 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1047 | 1048 | prepend-http@^2.0.0: 1049 | version "2.0.0" 1050 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 1051 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 1052 | 1053 | proxy-addr@~2.0.5: 1054 | version "2.0.6" 1055 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 1056 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 1057 | dependencies: 1058 | forwarded "~0.1.2" 1059 | ipaddr.js "1.9.1" 1060 | 1061 | pstree.remy@^1.1.7: 1062 | version "1.1.8" 1063 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 1064 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 1065 | 1066 | pump@^3.0.0: 1067 | version "3.0.0" 1068 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1069 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1070 | dependencies: 1071 | end-of-stream "^1.1.0" 1072 | once "^1.3.1" 1073 | 1074 | pupa@^2.0.1: 1075 | version "2.0.1" 1076 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" 1077 | integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== 1078 | dependencies: 1079 | escape-goat "^2.0.0" 1080 | 1081 | pushdata-bitcoin@^1.0.1: 1082 | version "1.0.1" 1083 | resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" 1084 | integrity sha1-FZMdPNlnreUiBvUjqnMxrvfUOvc= 1085 | dependencies: 1086 | bitcoin-ops "^1.3.0" 1087 | 1088 | qs@6.7.0: 1089 | version "6.7.0" 1090 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 1091 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1092 | 1093 | randombytes@^2.0.1: 1094 | version "2.1.0" 1095 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1096 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1097 | dependencies: 1098 | safe-buffer "^5.1.0" 1099 | 1100 | range-parser@~1.2.1: 1101 | version "1.2.1" 1102 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1103 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1104 | 1105 | raw-body@2.4.0: 1106 | version "2.4.0" 1107 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 1108 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1109 | dependencies: 1110 | bytes "3.1.0" 1111 | http-errors "1.7.2" 1112 | iconv-lite "0.4.24" 1113 | unpipe "1.0.0" 1114 | 1115 | rc@^1.2.8: 1116 | version "1.2.8" 1117 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1118 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1119 | dependencies: 1120 | deep-extend "^0.6.0" 1121 | ini "~1.3.0" 1122 | minimist "^1.2.0" 1123 | strip-json-comments "~2.0.1" 1124 | 1125 | readable-stream@^3.6.0: 1126 | version "3.6.0" 1127 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1128 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1129 | dependencies: 1130 | inherits "^2.0.3" 1131 | string_decoder "^1.1.1" 1132 | util-deprecate "^1.0.1" 1133 | 1134 | readdirp@~3.4.0: 1135 | version "3.4.0" 1136 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" 1137 | integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== 1138 | dependencies: 1139 | picomatch "^2.2.1" 1140 | 1141 | registry-auth-token@^4.0.0: 1142 | version "4.2.0" 1143 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" 1144 | integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== 1145 | dependencies: 1146 | rc "^1.2.8" 1147 | 1148 | registry-url@^5.0.0: 1149 | version "5.1.0" 1150 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 1151 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 1152 | dependencies: 1153 | rc "^1.2.8" 1154 | 1155 | request-ip@^2.1.3: 1156 | version "2.1.3" 1157 | resolved "https://registry.yarnpkg.com/request-ip/-/request-ip-2.1.3.tgz#99ab2bafdeaf2002626e28083cb10597511d9e14" 1158 | integrity sha512-J3qdE/IhVM3BXkwMIVO4yFrvhJlU3H7JH16+6yHucadT4fePnR8dyh+vEs6FIx0S2x5TCt2ptiPfHcn0sqhbYQ== 1159 | dependencies: 1160 | is_js "^0.9.0" 1161 | 1162 | responselike@^1.0.2: 1163 | version "1.0.2" 1164 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1165 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1166 | dependencies: 1167 | lowercase-keys "^1.0.0" 1168 | 1169 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1170 | version "2.0.2" 1171 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1172 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1173 | dependencies: 1174 | hash-base "^3.0.0" 1175 | inherits "^2.0.1" 1176 | 1177 | safe-buffer@5.1.2: 1178 | version "5.1.2" 1179 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1180 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1181 | 1182 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 1183 | version "5.2.1" 1184 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1185 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1186 | 1187 | "safer-buffer@>= 2.1.2 < 3": 1188 | version "2.1.2" 1189 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1190 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1191 | 1192 | semver-diff@^3.1.1: 1193 | version "3.1.1" 1194 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 1195 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 1196 | dependencies: 1197 | semver "^6.3.0" 1198 | 1199 | semver@^5.7.1: 1200 | version "5.7.1" 1201 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1202 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1203 | 1204 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 1205 | version "6.3.0" 1206 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1207 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1208 | 1209 | send@0.17.1: 1210 | version "0.17.1" 1211 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 1212 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1213 | dependencies: 1214 | debug "2.6.9" 1215 | depd "~1.1.2" 1216 | destroy "~1.0.4" 1217 | encodeurl "~1.0.2" 1218 | escape-html "~1.0.3" 1219 | etag "~1.8.1" 1220 | fresh "0.5.2" 1221 | http-errors "~1.7.2" 1222 | mime "1.6.0" 1223 | ms "2.1.1" 1224 | on-finished "~2.3.0" 1225 | range-parser "~1.2.1" 1226 | statuses "~1.5.0" 1227 | 1228 | serve-static@1.14.1: 1229 | version "1.14.1" 1230 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 1231 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1232 | dependencies: 1233 | encodeurl "~1.0.2" 1234 | escape-html "~1.0.3" 1235 | parseurl "~1.3.3" 1236 | send "0.17.1" 1237 | 1238 | setprototypeof@1.1.1: 1239 | version "1.1.1" 1240 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 1241 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1242 | 1243 | sha.js@^2.4.0, sha.js@^2.4.8: 1244 | version "2.4.11" 1245 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1246 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1247 | dependencies: 1248 | inherits "^2.0.1" 1249 | safe-buffer "^5.0.1" 1250 | 1251 | signal-exit@^3.0.2: 1252 | version "3.0.3" 1253 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1254 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1255 | 1256 | source-map@^0.6.1: 1257 | version "0.6.1" 1258 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1259 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1260 | 1261 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 1262 | version "1.5.0" 1263 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1264 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 1265 | 1266 | string-width@^3.0.0: 1267 | version "3.1.0" 1268 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1269 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1270 | dependencies: 1271 | emoji-regex "^7.0.1" 1272 | is-fullwidth-code-point "^2.0.0" 1273 | strip-ansi "^5.1.0" 1274 | 1275 | string-width@^4.0.0, string-width@^4.1.0: 1276 | version "4.2.0" 1277 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1278 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1279 | dependencies: 1280 | emoji-regex "^8.0.0" 1281 | is-fullwidth-code-point "^3.0.0" 1282 | strip-ansi "^6.0.0" 1283 | 1284 | string_decoder@^1.1.1: 1285 | version "1.3.0" 1286 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1287 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1288 | dependencies: 1289 | safe-buffer "~5.2.0" 1290 | 1291 | strip-ansi@^5.1.0: 1292 | version "5.2.0" 1293 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1294 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1295 | dependencies: 1296 | ansi-regex "^4.1.0" 1297 | 1298 | strip-ansi@^6.0.0: 1299 | version "6.0.0" 1300 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1301 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1302 | dependencies: 1303 | ansi-regex "^5.0.0" 1304 | 1305 | strip-json-comments@~2.0.1: 1306 | version "2.0.1" 1307 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1308 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1309 | 1310 | supports-color@^5.5.0: 1311 | version "5.5.0" 1312 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1313 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1314 | dependencies: 1315 | has-flag "^3.0.0" 1316 | 1317 | supports-color@^7.1.0: 1318 | version "7.2.0" 1319 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1320 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1321 | dependencies: 1322 | has-flag "^4.0.0" 1323 | 1324 | term-size@^2.1.0: 1325 | version "2.2.0" 1326 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" 1327 | integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== 1328 | 1329 | tiny-secp256k1@^1.1.1, tiny-secp256k1@^1.1.3: 1330 | version "1.1.5" 1331 | resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.5.tgz#3dc37b9bf0fa5b4390b9fa29e953228810cebc18" 1332 | integrity sha512-duE2hSLSQIpHGzmK48OgRrGTi+4OTkXLC6aa86uOYQ6LLCYZSarVKIAvEtY7MoXjoL6bOXMSerEGMzrvW4SkDw== 1333 | dependencies: 1334 | bindings "^1.3.0" 1335 | bn.js "^4.11.8" 1336 | create-hmac "^1.1.7" 1337 | elliptic "^6.4.0" 1338 | nan "^2.13.2" 1339 | 1340 | to-readable-stream@^1.0.0: 1341 | version "1.0.0" 1342 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 1343 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 1344 | 1345 | to-regex-range@^5.0.1: 1346 | version "5.0.1" 1347 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1348 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1349 | dependencies: 1350 | is-number "^7.0.0" 1351 | 1352 | toidentifier@1.0.0: 1353 | version "1.0.0" 1354 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 1355 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 1356 | 1357 | touch@^3.1.0: 1358 | version "3.1.0" 1359 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 1360 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 1361 | dependencies: 1362 | nopt "~1.0.10" 1363 | 1364 | type-fest@^0.8.1: 1365 | version "0.8.1" 1366 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1367 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1368 | 1369 | type-is@~1.6.17, type-is@~1.6.18: 1370 | version "1.6.18" 1371 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1372 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1373 | dependencies: 1374 | media-typer "0.3.0" 1375 | mime-types "~2.1.24" 1376 | 1377 | typedarray-to-buffer@^3.1.5: 1378 | version "3.1.5" 1379 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 1380 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 1381 | dependencies: 1382 | is-typedarray "^1.0.0" 1383 | 1384 | typeforce@^1.11.3, typeforce@^1.11.5: 1385 | version "1.18.0" 1386 | resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" 1387 | integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== 1388 | 1389 | uglify-js@^3.1.4: 1390 | version "3.10.4" 1391 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.4.tgz#dd680f5687bc0d7a93b14a3482d16db6eba2bfbb" 1392 | integrity sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw== 1393 | 1394 | undefsafe@^2.0.2: 1395 | version "2.0.3" 1396 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 1397 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 1398 | dependencies: 1399 | debug "^2.2.0" 1400 | 1401 | unique-string@^2.0.0: 1402 | version "2.0.0" 1403 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 1404 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 1405 | dependencies: 1406 | crypto-random-string "^2.0.0" 1407 | 1408 | unpipe@1.0.0, unpipe@~1.0.0: 1409 | version "1.0.0" 1410 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1411 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1412 | 1413 | update-notifier@^4.0.0: 1414 | version "4.1.1" 1415 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.1.tgz#895fc8562bbe666179500f9f2cebac4f26323746" 1416 | integrity sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg== 1417 | dependencies: 1418 | boxen "^4.2.0" 1419 | chalk "^3.0.0" 1420 | configstore "^5.0.1" 1421 | has-yarn "^2.1.0" 1422 | import-lazy "^2.1.0" 1423 | is-ci "^2.0.0" 1424 | is-installed-globally "^0.3.1" 1425 | is-npm "^4.0.0" 1426 | is-yarn-global "^0.3.0" 1427 | latest-version "^5.0.0" 1428 | pupa "^2.0.1" 1429 | semver-diff "^3.1.1" 1430 | xdg-basedir "^4.0.0" 1431 | 1432 | url-parse-lax@^3.0.0: 1433 | version "3.0.0" 1434 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 1435 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 1436 | dependencies: 1437 | prepend-http "^2.0.0" 1438 | 1439 | util-deprecate@^1.0.1: 1440 | version "1.0.2" 1441 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1442 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1443 | 1444 | utils-merge@1.0.1: 1445 | version "1.0.1" 1446 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1447 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1448 | 1449 | varuint-bitcoin@^1.0.4: 1450 | version "1.1.2" 1451 | resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" 1452 | integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw== 1453 | dependencies: 1454 | safe-buffer "^5.1.1" 1455 | 1456 | vary@~1.1.2: 1457 | version "1.1.2" 1458 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1459 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1460 | 1461 | walk@2.3.14: 1462 | version "2.3.14" 1463 | resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.14.tgz#60ec8631cfd23276ae1e7363ce11d626452e1ef3" 1464 | integrity sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg== 1465 | dependencies: 1466 | foreachasync "^3.0.0" 1467 | 1468 | widest-line@^3.1.0: 1469 | version "3.1.0" 1470 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 1471 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 1472 | dependencies: 1473 | string-width "^4.0.0" 1474 | 1475 | wif@^2.0.1, wif@^2.0.6: 1476 | version "2.0.6" 1477 | resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" 1478 | integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= 1479 | dependencies: 1480 | bs58check "<3.0.0" 1481 | 1482 | wordwrap@^1.0.0: 1483 | version "1.0.0" 1484 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1485 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 1486 | 1487 | wrappy@1: 1488 | version "1.0.2" 1489 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1490 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1491 | 1492 | write-file-atomic@^3.0.0: 1493 | version "3.0.3" 1494 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 1495 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 1496 | dependencies: 1497 | imurmurhash "^0.1.4" 1498 | is-typedarray "^1.0.0" 1499 | signal-exit "^3.0.2" 1500 | typedarray-to-buffer "^3.1.5" 1501 | 1502 | xdg-basedir@^4.0.0: 1503 | version "4.0.0" 1504 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 1505 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1506 | --------------------------------------------------------------------------------