├── .editorconfig ├── .gitignore ├── .version ├── BUILDING.md ├── LICENSE ├── Makefile ├── PRIVACY.md ├── README.md ├── src ├── Makefile ├── background.js ├── fonts │ └── OpenSans-Regular.ttf ├── icon.png ├── icon.svg ├── icon16.png ├── inject.js ├── manifest-chromium.json ├── manifest-firefox.json ├── package.json ├── popup │ ├── copy.svg │ ├── popup.html │ ├── popup.js │ └── popup.less └── yarn.lock └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | max_line_length = 100 11 | 12 | [Makefile] 13 | indent_style = tab 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /chromium 2 | /firefox 3 | /dist 4 | /dist-webstore 5 | 6 | /src/node_modules 7 | /src/css 8 | /src/js 9 | /src/*.log 10 | 11 | *.pem 12 | *.crx 13 | -------------------------------------------------------------------------------- /.version: -------------------------------------------------------------------------------- 1 | 0.2.3-dev 2 | -------------------------------------------------------------------------------- /BUILDING.md: -------------------------------------------------------------------------------- 1 | Build Instructions 2 | ================== 3 | 4 | Run `make` to build unpacked, or `make dist` to build release packages. 5 | 6 | ## Dependencies 7 | 8 | In order to build successfully, the following are necessary: 9 | 10 | * A standard POSIX-compatible shell 11 | * Any recent version of GNU make 12 | * Any recent version of yarn 13 | * An internet connection, to download package dependencies from npmjs 14 | * git (dist only) 15 | * zip (dist only) 16 | * gpg (dist only) 17 | * Google Chrome or other Chromium-based browser (crx-* and dist only) 18 | 19 | ## Build Targets 20 | 21 | Depending on the desired output, we have several build targets available. 22 | 23 | ## all (default) 24 | 25 | Builds the extension unpacked, for both Chromium and Firefox browsers. The output from this build will be placed in the `chromium` and `firefox` directories respectively. 26 | 27 | ## chromium 28 | 29 | Builds the extension unpacked, for Chromium browsers. The output is placed in the `chromium` directory. 30 | 31 | ## firefox 32 | 33 | Builds the extension unpacked, for Firefox browsers. The output is placed in the `firefox` directory. 34 | 35 | ## crx-github 36 | 37 | Builds the extension packed, signed for GitHub distribution. Requires the private signing key to be present as `github.pem`. The build output is provided as `browserpass-otp-github.crx`. 38 | 39 | ## crx-webstore 40 | 41 | Builds the extension packed, signed using the same key as the Chrome webstore. Requires the private signing key to be present as `webstore.pem`. The build output is provided as `browserpass-otp-webstore.crx`. 42 | 43 | ## dist 44 | 45 | Builds the extension packed for distribution via Mozilla Addons store, Chrome webstore, and GitHub. GitHub release packages are output to the `dist` directory, along with PGP detached signatures. Webstore release packages are output to the `dist-webstore` directory, along with the required source archive for AMO. Please note that both a working GPG setup and private keys for the CRX targets are required for this build target to complete successfully. 46 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License 2 | 3 | Copyright (c) 2019, Maxim Baz & Steve Gilberd 4 | 5 | Permission to use, copy, modify, and/or distribute this software for any 6 | purpose with or without fee is hereby granted, provided that the above 7 | copyright notice and this permission notice appear in all copies. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | VERSION ?= $(shell cat .version) 2 | 3 | CLEAN_FILES := chromium firefox dist dist-webstore 4 | CHROME := $(shell which chromium 2>/dev/null || which chromium-browser 2>/dev/null || which chrome 2>/dev/null || which google-chrome 2>/dev/null || which google-chrome-stable 2>/dev/null) 5 | 6 | ####################### 7 | # For local development 8 | 9 | .PHONY: all 10 | all: extension chromium firefox 11 | 12 | .PHONY: extension 13 | extension: 14 | $(MAKE) -C src 15 | 16 | EXTENSION_FILES := \ 17 | src/*.css \ 18 | src/*.png \ 19 | src/*.svg \ 20 | src/fonts/* \ 21 | src/popup/*.html \ 22 | src/popup/*.svg 23 | EXTENSION_FILES := \ 24 | $(wildcard $(EXTENSION_FILES)) \ 25 | src/css/popup.dist.css \ 26 | src/js/background.dist.js \ 27 | src/js/popup.dist.js \ 28 | src/js/inject.dist.js 29 | CHROMIUM_FILES := $(patsubst src/%,chromium/%, $(EXTENSION_FILES)) 30 | FIREFOX_FILES := $(patsubst src/%,firefox/%, $(EXTENSION_FILES)) 31 | 32 | .PHONY: chromium 33 | chromium: extension $(CHROMIUM_FILES) chromium/manifest.json 34 | 35 | $(CHROMIUM_FILES) : chromium/% : src/% 36 | [ -d $(dir $@) ] || mkdir -p $(dir $@) 37 | cp $< $@ 38 | 39 | chromium/manifest.json : src/manifest-chromium.json 40 | [ -d $(dir $@) ] || mkdir -p $(dir $@) 41 | cp $< $@ 42 | 43 | .PHONY: firefox 44 | firefox: extension $(FIREFOX_FILES) firefox/manifest.json 45 | 46 | $(FIREFOX_FILES) : firefox/% : src/% 47 | [ -d $(dir $@) ] || mkdir -p $(dir $@) 48 | cp $< $@ 49 | 50 | firefox/manifest.json : src/manifest-firefox.json 51 | [ -d $(dir $@) ] || mkdir -p $(dir $@) 52 | cp $< $@ 53 | 54 | ####################### 55 | # For official releases 56 | 57 | .PHONY: clean 58 | clean: 59 | rm -rf $(CLEAN_FILES) 60 | $(MAKE) -C src clean 61 | 62 | .PHONY: crx-webstore 63 | crx-webstore: 64 | "$(CHROME)" --disable-gpu --pack-extension=./chromium --pack-extension-key=webstore.pem 65 | mv chromium.crx browserpass-otp-webstore.crx 66 | 67 | .PHONY: crx-github 68 | crx-github: 69 | "$(CHROME)" --disable-gpu --pack-extension=./chromium --pack-extension-key=github.pem 70 | mv chromium.crx browserpass-otp-github.crx 71 | 72 | .PHONY: dist 73 | dist: clean extension chromium firefox crx-webstore crx-github 74 | mkdir -p dist 75 | 76 | git archive -o dist/browserpass-otp-$(VERSION).tar.gz --format tar.gz --prefix=browserpass-otp-$(VERSION)/ $(VERSION) 77 | 78 | (cd chromium && zip -r ../dist/browserpass-otp-chromium-$(VERSION).zip *) 79 | (cd firefox && zip -r ../dist/browserpass-otp-firefox-$(VERSION).zip *) 80 | 81 | mv browserpass-otp-webstore.crx dist/browserpass-otp-webstore-$(VERSION).crx 82 | mv browserpass-otp-github.crx dist/browserpass-otp-github-$(VERSION).crx 83 | 84 | for file in dist/*; do \ 85 | gpg --detach-sign --armor "$$file"; \ 86 | done 87 | 88 | mkdir -p dist-webstore 89 | 90 | cp dist/browserpass-otp-firefox-$(VERSION).zip dist-webstore/firefox-$(VERSION).zip 91 | mv dist/browserpass-otp-$(VERSION).tar.gz dist-webstore/firefox-$(VERSION)-src.tar.gz 92 | 93 | cp -a chromium dist-webstore/ 94 | sed -i '/"key"/d' dist-webstore/chromium/manifest.json 95 | (cd dist-webstore/chromium && zip -r ../chrome-$(VERSION).zip *) 96 | rm -rf dist-webstore/chromium 97 | -------------------------------------------------------------------------------- /PRIVACY.md: -------------------------------------------------------------------------------- 1 | Browserpass Privacy Policy 2 | ========================== 3 | 4 | ## Definitions 5 | 6 | - Browserpass means the WebExtension at https://github.com/browserpass/browserpass-extension 7 | - Browserpass OTP means the WebExtension at https://github.com/browserpass/browserpass-otp 8 | - User means the user of the web browser where Browserpass or Browserpass OTP is installed. 9 | - Password Store means one or more locations on disk where the user stores encrypted credential files. 10 | - Credential File(s) means the individual credential files in the User's password store. 11 | - Developer(s) means the individuals who are responsible for the development of Browserpass and Browserpass OTP. 12 | 13 | ## Applicability 14 | 15 | This Privacy Policy applies to Browserpass and Browserpass OTP. 16 | 17 | ## Usage of Credential Files 18 | 19 | During the course of normal operation, Browserpass handles decrypted Credential Files. 20 | Only files selected by the User via the Browserpass interface are decrypted. 21 | 22 | The contents of decrypted Credential Files are used *only* for the following purposes: 23 | 24 | - To copy login credentials to the clipboard; 25 | - To automatically fill login credentials into a website in the current tab; 26 | - To provide the User with an interface to edit the contents of a selected Credential File, 27 | - To provide the OTP seed to Browserpass OTP 28 | - To fill other fields as requested by the User (e.g. credit card data) 29 | 30 | ## Use & Transmission of Data 31 | 32 | Browserpass will fill data selected by the User to the website in the currently 33 | active browser tab. This implies that data will be sent to that site when the 34 | form into which the data has been filled is submitted. 35 | 36 | If the form fields detected by Browserpass belong to a foreign origin, Browserpass 37 | will prompt the User to confirm whether they would like to continue filling those 38 | fields. 39 | 40 | If an OTP seed is detected in a credential file when it is decrypted, it will be 41 | passed to Browserpass OTP. 42 | 43 | Browserpass only holds the decrypted contents of Credential Files while they are 44 | actively being used by the User. Once the action selected by the User has been 45 | completed, the data becomes out of scope, and will be cleaned up by the browser's 46 | garbage collection mechanism. 47 | 48 | Browserpass contains an autosubmit feature, which defaults to disabled. If enabled by 49 | the user, this will cause Browserpass to automatically submit the form into which 50 | credentials were filled immediately after filling. The Developers do not recommend 51 | use of this feature, and it will never be enabled by default. 52 | 53 | Browserpass OTP will, upon receipt of an OTP seed from Browserpass, generate an OTP 54 | code and make it available on demand via the Browserpass OTP popup interface. If 55 | Browserpass is not already using the clipboard, it will also place that code on the 56 | clipboard. 57 | 58 | Browserpass OTP will retain the OTP seed until the tab for which the seed applies is 59 | navigated to a different origin, so that it can generate new codes as needed (typically 60 | every 30 seconds). 61 | 62 | IN NO EVENT WILL BROWSERPASS OR BROWSERPASS OTP EVER SEND DATA OF ANY KIND TO ANY PARTY 63 | OTHER THAN A WEBSITE INTO INTO WHICH THE USER HAS DELIBERATELY REQUESTED BROWSERPASS 64 | TO FILL DATA. 65 | 66 | ## Security of Transmission 67 | 68 | Filled content will be submitted via whatever mechanism is provided by the form that 69 | has been filled. This is determined by the website to which the form belongs. For clarity, 70 | please note that some sites do not properly secure such forms - Browserpass will prompt 71 | the User before filling data into any non-https origin. 72 | 73 | Some websites may use a secure origin, but transmit data via insecure means. It is possible 74 | that Browserpass may not be able to detect all such sites, so filling and submitting 75 | data is done solely at the User's own risk. 76 | 77 | ## Local Storage 78 | 79 | Browserpass may store the following via the browser's local storage API: 80 | 81 | - Historical usage data, in order to sort the list of Credential Files in the Browserpass 82 | popup interface by recency and usage count. 83 | - Usage of any given Credential File on an origin that cannot be automatically matched. 84 | - Responses to confirmation prompts. 85 | 86 | Local storage may be cleared via the Browserpass options screen. 87 | 88 | Decrypted contents of Credential Files are never placed in local storage for any reason. 89 | 90 | ## Further Detail 91 | 92 | For further detail on how Browserpass functions and protects your data, please see the 93 | readme at https://github.com/browserpass/browserpass-extension/blob/master/README.md. 94 | 95 | ## Liability 96 | 97 | THE SOFTWARE IS PROVIDED "AS IS" AND THE DEVELOPERS DISCLAIM ALL WARRANTIES 98 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 99 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR 100 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 101 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 102 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 103 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 104 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | BrowserPass OTP 2 | =============== 3 | 4 | This is a companion extension which adds OTP capabilities to Browserpass. Whenever Browserpass is used to fill or copy login details, that entry is checked for a TOTP seed. If such a seed exists, it will be used to generate an OTP code. 5 | 6 | TOTP seeds may be provided either as an otpauth URL (e.g. `otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example`) or as a plain seed (e.g. `totp: JBSWY3DPEHPK3PXP`). Please note that the plain form is unsuitable for any TOTP implementation that does not use a period of 30 seconds and a length of 6 digits. 7 | 8 | The OTP code may be accessed by clicking on the OTP extension icon, and can be copied to the clipboard by clicking the 'copy' icon. In addition, the generated OTP code will be copied to the clipboard immediately after Browserpass is invoked, unless Browserpass is already using the clipboard for something else. 9 | 10 | Please note that this extension requires Browserpass v3.0.13 or greater in order to function - earlier versions will not trigger OTP at all. It does not currently require any configuration. 11 | -------------------------------------------------------------------------------- /src/Makefile: -------------------------------------------------------------------------------- 1 | BROWSERIFY := node_modules/.bin/browserify 2 | PRETTIER := node_modules/.bin/prettier 3 | LESSC := node_modules/.bin/lessc 4 | 5 | CLEAN_FILES := js 6 | PRETTIER_FILES := $(wildcard *.json *.js popup/*.js *.less popup/*.less *.html popup/*.html) 7 | 8 | .PHONY: all 9 | all: deps prettier css/popup.dist.css js/background.dist.js js/popup.dist.js js/inject.dist.js 10 | 11 | .PHONY: deps 12 | deps: 13 | yarn install 14 | 15 | .PHONY: prettier 16 | prettier: $(PRETTIER) $(PRETTIER_FILES) 17 | $(PRETTIER) --write $(PRETTIER_FILES) 18 | 19 | css/popup.dist.css: $(LESSC) popup/popup.less 20 | [ -d css ] || mkdir -p css 21 | $(LESSC) popup/popup.less css/popup.dist.css 22 | 23 | js/background.dist.js: $(BROWSERIFY) background.js 24 | [ -d js ] || mkdir -p js 25 | $(BROWSERIFY) -o js/background.dist.js background.js 26 | 27 | js/popup.dist.js: $(BROWSERIFY) popup/*.js 28 | [ -d js ] || mkdir -p js 29 | $(BROWSERIFY) -o js/popup.dist.js popup/popup.js 30 | 31 | js/inject.dist.js: $(BROWSERIFY) inject.js 32 | [ -d js ] || mkdir -p js 33 | $(BROWSERIFY) -o js/inject.dist.js inject.js 34 | 35 | # Firefox requires the last command to evaluate to something serializable 36 | # https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript#Return_value 37 | echo ";undefined" >> js/inject.dist.js 38 | 39 | .PHONY: clean 40 | clean: 41 | rm -rf $(CLEAN_FILES) 42 | -------------------------------------------------------------------------------- /src/background.js: -------------------------------------------------------------------------------- 1 | //------------------------------------- Initialisation --------------------------------------// 2 | 3 | "use strict"; 4 | 5 | require("chrome-extension-async"); 6 | const hash = require("hash.js"); 7 | const Authenticator = require("otplib").authenticator.Authenticator; 8 | 9 | const validSenders = [ 10 | "naepdomgkenhinolocfifgehidddafch", 11 | "pjmbgaakjkbhpopmakjoedenlfdmcdgm", 12 | "klfoddkbhleoaabpmiigbmpbjfljimgb", 13 | "browserpass@maximbaz.com" 14 | ]; 15 | 16 | // instance registry 17 | var registry = {}; 18 | 19 | // Main entry point, invoked from browserpass. No response is expected. 20 | chrome.runtime.onMessageExternal.addListener(function(request, sender) { 21 | // reject invalid senders 22 | if (!validSenders.includes(sender.id)) { 23 | return; 24 | } 25 | 26 | // hydrate request 27 | if (!request.hasOwnProperty("version")) { 28 | // REMOVE this block once browserpass-extension-3.1 is fully deployed in prod. 29 | request.version = "3.0.12"; 30 | request.action = "noop"; 31 | } 32 | request.version = (version => { 33 | var [major, minor, patch] = version.split("."); 34 | return parseInt(major) * 1000000 + parseInt(minor) * 1000 + parseInt(patch); 35 | })(request.version); 36 | 37 | // parse OTP object 38 | if (request.otp.key === null) { 39 | // this is an OTP URI, so extract the pieces 40 | try { 41 | let url = new URL(request.otp.data.toLowerCase()); 42 | let parts = url.pathname.split("/").filter(s => s.trim()); 43 | var otp = { 44 | type: parts[0], 45 | secret: url.searchParams.get("secret").toUpperCase(), 46 | algorithm: url.searchParams.get("algorithm") || "sha1", 47 | digits: parseInt(url.searchParams.get("digits") || "6"), 48 | period: parseInt(url.searchParams.get("period") || "30") 49 | }; 50 | } catch (e) { 51 | console.log(`Unable to parse uri: ${request.otp.data}`, e); 52 | return; 53 | } 54 | } else { 55 | var otp = { 56 | type: request.otp.key.toLowerCase(), 57 | secret: request.otp.data.toUpperCase(), 58 | algorithm: "sha1", 59 | digits: 6, 60 | period: 30 61 | }; 62 | } 63 | 64 | // fix default type 65 | if (otp.type === "otp") { 66 | otp.type = "totp"; 67 | } 68 | 69 | // set handler 70 | if (otp.type === "totp") { 71 | otp.generate = makeTOTP.bind(otp); 72 | } else { 73 | console.log(`Unsupported OTP type: ${otp.type}`); 74 | } 75 | 76 | // update registry 77 | registry[request.settings.tab.id] = { 78 | otp: otp, 79 | origin: request.settings.origin, 80 | host: request.settings.host 81 | }; 82 | 83 | // copy to clipboard 84 | // TODO only do this automatically when option is enabled 85 | if (!request.action.match(/^copy[A-Z]*/)) { 86 | copyToClipboard(otp.generate()); 87 | } 88 | }); 89 | 90 | // popup entry point 91 | chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { 92 | switch (request.action) { 93 | case "getToken": 94 | if ( 95 | registry.hasOwnProperty(request.tabID) && 96 | (registry[request.tabID].origin 97 | ? registry[request.tabID].origin === request.origin 98 | : registry[request.tabID].host === request.host) 99 | ) { 100 | let otp = registry[request.tabID].otp; 101 | let response = { token: otp.generate() }; 102 | if (otp.type == "totp") { 103 | // refresh after this many seconds 104 | response.refresh = otp.period - (Math.floor(Date.now() / 1000) % otp.period); 105 | response.period = otp.period; 106 | } 107 | sendResponse(response); 108 | } else { 109 | sendResponse({ token: null }); 110 | } 111 | break; 112 | default: 113 | throw new Error(`Unknown action: ${request.action}`); 114 | } 115 | }); 116 | 117 | // clean up stale registry entries 118 | chrome.tabs.onRemoved.addListener(tabID => { 119 | delete registry[tabID]; 120 | }); 121 | 122 | //----------------------------------- Function definitions ----------------------------------// 123 | 124 | /** 125 | * Generate a TOTP code 126 | * 127 | * @since 3.0.0 128 | * 129 | * @return string Generated code 130 | */ 131 | function makeTOTP() { 132 | switch (this.algorithm) { 133 | case "sha1": 134 | case "sha256": 135 | case "sha512": 136 | break; 137 | default: 138 | throw new Error(`Unsupported TOTP algorithm: ${this.algorithm}`); 139 | } 140 | 141 | var generator = new Authenticator(); 142 | generator.options = { 143 | crypto: { 144 | createHmac: (a, k) => hash.hmac(hash[a], k) 145 | }, 146 | algorithm: this.algorithm, 147 | digits: this.digits, 148 | step: this.period 149 | }; 150 | 151 | return generator.generate(this.secret); 152 | } 153 | 154 | /** 155 | * Copy text to clipboard 156 | * 157 | * @since 3.0.0 158 | * 159 | * @param string text Text to copy 160 | * @return void 161 | */ 162 | function copyToClipboard(text) { 163 | document.addEventListener( 164 | "copy", 165 | function(e) { 166 | e.clipboardData.setData("text/plain", text); 167 | e.preventDefault(); 168 | }, 169 | { once: true } 170 | ); 171 | document.execCommand("copy"); 172 | } 173 | -------------------------------------------------------------------------------- /src/fonts/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browserpass/browserpass-otp/e4b9acae38d762e4da9411f1a5515f08dc957f91/src/fonts/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /src/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browserpass/browserpass-otp/e4b9acae38d762e4da9411f1a5515f08dc957f91/src/icon.png -------------------------------------------------------------------------------- /src/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 50 | 53 | 59 | 60 | 61 | 64 | 70 | 72 | 73 | 86 | 87 | 88 | 89 | 90 | 2 113 | 114 | 115 | 3 126 | 127 | 128 | -------------------------------------------------------------------------------- /src/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browserpass/browserpass-otp/e4b9acae38d762e4da9411f1a5515f08dc957f91/src/icon16.png -------------------------------------------------------------------------------- /src/inject.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browserpass/browserpass-otp/e4b9acae38d762e4da9411f1a5515f08dc957f91/src/inject.js -------------------------------------------------------------------------------- /src/manifest-chromium.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzCCoXUbvVtAC6rN7QNTLIQ/ThQWBcp9TgeS0HOcpkUxOypD0fyJDMv2U3c6yuCwIqmBa+LwDncLbSyhb788N6hc4+01QWKzQa9qjpAWKHTx1erKxs8+OjbdTxJBgfKI9s9hVUuBTeNBv4PoC1pv3F2wk0HyZct63GcMCikZMMri/3/HRXTPAsT+ROxwrohsyZLSg4FptrNYPQb/7XpPS1+eHOqzNqv0Zhh6/gJSJ5gML6tKjudjnhF0pi6weKbvkIlf9g2nT/Wo8iarimJX49ENqpSuqP+BFpspoptwyIqfUmi3NQZXDOXkyg9DYQvXjU4+yrVmJs7XpzU9RdNDe9wIDAQAB", 3 | "manifest_version": 2, 4 | "name": "Browserpass OTP", 5 | "description": "OTP extension for browserpass", 6 | "version": "0.2.5", 7 | "author": "Maxim Baz , Steve Gilberd ", 8 | "homepage_url": "https://github.com/browserpass/browserpass-otp", 9 | "background": { 10 | "persistent": true, 11 | "scripts": ["js/background.dist.js"] 12 | }, 13 | "icons": { 14 | "16": "icon16.png", 15 | "128": "icon.png" 16 | }, 17 | "browser_action": { 18 | "default_popup": "popup/popup.html" 19 | }, 20 | "permissions": ["activeTab", "clipboardWrite"] 21 | } 22 | -------------------------------------------------------------------------------- /src/manifest-firefox.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Browserpass OTP", 4 | "description": "OTP extension for browserpass", 5 | "version": "0.2.5", 6 | "author": "Maxim Baz , Steve Gilberd ", 7 | "homepage_url": "https://github.com/browserpass/browserpass-otp", 8 | "background": { 9 | "persistent": true, 10 | "scripts": ["js/background.dist.js"] 11 | }, 12 | "icons": { 13 | "16": "icon16.png", 14 | "128": "icon.png" 15 | }, 16 | "browser_action": { 17 | "default_popup": "popup/popup.html" 18 | }, 19 | "applications": { 20 | "gecko": { 21 | "id": "browserpass-otp@maximbaz.com", 22 | "strict_min_version": "54.0" 23 | } 24 | }, 25 | "permissions": ["activeTab", "clipboardWrite"] 26 | } 27 | -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "browserpass-otp", 3 | "version": "0.2.2-dev", 4 | "description": "OTP extension for browserpass.", 5 | "homepage": "https://github.com/browserpass/browserpass-otp", 6 | "license": "ISC", 7 | "author": [ 8 | { 9 | "name": "Maxim Baz", 10 | "email": "browserpass@maximbaz.com" 11 | }, 12 | { 13 | "name": "Steve Gilberd", 14 | "email": "steve@erayd.net" 15 | } 16 | ], 17 | "dependencies": { 18 | "chrome-extension-async": "^3.3.2", 19 | "hash.js": "^1.1.7", 20 | "mithril": "^1.1.0", 21 | "moment": "^2.24.0", 22 | "otplib": "^11.0.0" 23 | }, 24 | "devDependencies": { 25 | "browserify": "^16.2.3", 26 | "less": "^3.9.0", 27 | "prettier": "^1.16.4" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/popup/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 10 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/popup/popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Loading... 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/popup/popup.js: -------------------------------------------------------------------------------- 1 | //------------------------------------- Initialisation --------------------------------------// 2 | // 3 | "use strict"; 4 | 5 | //require("chrome-extension-async"); 6 | var m = require("mithril"); 7 | var token = null; 8 | var progress = null; 9 | 10 | // interface definition 11 | var display = { 12 | view: function() { 13 | var nodes = []; 14 | 15 | if (token !== null) { 16 | nodes.push( 17 | m( 18 | "div.outline", 19 | { 20 | onclick: function() { 21 | copyToClipboard(token); 22 | } 23 | }, 24 | [m("div.token", token), m("div.copy")] 25 | ) 26 | ); 27 | if (progress !== null) { 28 | let updateProgress = vnode => { 29 | let refresh = progress.refresh - (Date.now() - progress.begin) / 1000; 30 | vnode.dom.style.transition = "none"; 31 | vnode.dom.style.width = `${(refresh / progress.period) * 100}%`; 32 | setTimeout(function() { 33 | vnode.dom.style.transition = `width linear ${progress.refresh}s`; 34 | vnode.dom.style.width = "0%"; 35 | }, 100); 36 | }; 37 | let progressNode = m("div.progress", { 38 | oncreate: updateProgress, 39 | onupdate: updateProgress 40 | }); 41 | nodes.push(progressNode); 42 | } 43 | } else { 44 | nodes.push(m("div.info", "No token available")); 45 | } 46 | 47 | nodes.push( 48 | m( 49 | "div.notice", 50 | "From Browserpass v3.7.0, OTP functionality will move into the main Browserpass extension. It's disabled by default; enable it via the Browserpass options screen." 51 | ) 52 | ); 53 | 54 | return nodes; 55 | } 56 | }; 57 | 58 | // attach to popup 59 | m.mount(document.body, display); 60 | 61 | // attach key handler 62 | document.addEventListener("keydown", e => { 63 | e.preventDefault(); 64 | if (e.code == "KeyC" && e.ctrlKey && token !== null) { 65 | copyToClipboard(token); 66 | } 67 | }); 68 | 69 | // dispatch initial token request 70 | dispatchRequest(); 71 | 72 | //----------------------------------- Function definitions ----------------------------------// 73 | /** 74 | * Copy text to clipboard 75 | * 76 | * @since 3.0.0 77 | * 78 | * @param string text Text to copy 79 | * @return void 80 | */ 81 | function copyToClipboard(text) { 82 | document.addEventListener( 83 | "copy", 84 | function(e) { 85 | e.clipboardData.setData("text/plain", text); 86 | e.preventDefault(); 87 | }, 88 | { once: true } 89 | ); 90 | document.execCommand("copy"); 91 | 92 | // flash container 93 | document.querySelector(".outline").classList.add("copied"); 94 | setTimeout(function() { 95 | document.querySelector(".outline").classList.remove("copied"); 96 | }, 200); 97 | } 98 | 99 | /** 100 | * Dispatch background token request 101 | * 102 | * @since 3.0.0 103 | * 104 | * @return void 105 | */ 106 | function dispatchRequest() { 107 | // get active tab 108 | chrome.tabs.query({ active: true, currentWindow: true }, tabs => { 109 | var request = { 110 | action: "getToken", 111 | tabID: tabs[0].id, 112 | origin: new URL(tabs[0].url).origin, 113 | host: new URL(tabs[0].url).hostname 114 | }; 115 | // request new token 116 | chrome.runtime.sendMessage(request, response => { 117 | if (response.hasOwnProperty("refresh")) { 118 | setTimeout(dispatchRequest, response.refresh * 1000); 119 | progress = { 120 | refresh: response.refresh, 121 | period: response.period, 122 | begin: Date.now() 123 | }; 124 | } 125 | updateToken(response.token); 126 | }); 127 | 128 | return true; 129 | }); 130 | } 131 | 132 | /** 133 | * Update the displayed token 134 | * 135 | * @param string newToken New token data 136 | * @since 3.0.0 137 | */ 138 | function updateToken(newToken) { 139 | token = newToken; 140 | m.redraw(); 141 | } 142 | -------------------------------------------------------------------------------- /src/popup/popup.less: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Open Sans"; 3 | src: url("../fonts/OpenSans-Regular.ttf"); 4 | } 5 | 6 | body { 7 | display: flex; 8 | flex-direction: column; 9 | font-family: "Open Sans", sans-serif; 10 | font-size: 16px; 11 | line-height: 16px; 12 | margin: 0; 13 | padding: 5px; 14 | } 15 | 16 | .outline { 17 | display: flex; 18 | align-items: center; 19 | outline: 1px solid #7f7f7f; 20 | padding: 3px 4px; 21 | transition: background-color 0.5s ease-out, outline 0.5s ease-out; 22 | 23 | &.copied { 24 | background-color: #d0ebff; 25 | outline: 1px solid #1c7ed6; 26 | transition: none; 27 | } 28 | } 29 | 30 | .notice { 31 | font-size: 0.7em; 32 | margin-top: 2px; 33 | width: 280px; 34 | } 35 | 36 | .info + .notice { 37 | border-top: 0.5px solid #333; 38 | } 39 | 40 | .token { 41 | border: none; 42 | text-align: center; 43 | width: 100%; 44 | } 45 | 46 | .copy { 47 | background: url("../popup/copy.svg") no-repeat; 48 | background-size: cover; 49 | cursor: pointer; 50 | height: 14px; 51 | margin-left: 4px; 52 | width: 14px; 53 | } 54 | 55 | .progress { 56 | background-color: #1c7ed6; 57 | height: 3px; 58 | margin: 0 -1px; 59 | } 60 | 61 | .info { 62 | white-space: nowrap; 63 | } 64 | -------------------------------------------------------------------------------- /src/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | JSONStream@^1.0.3: 6 | version "1.3.5" 7 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" 8 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 9 | dependencies: 10 | jsonparse "^1.2.0" 11 | through ">=2.2.7 <3" 12 | 13 | acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: 14 | version "1.8.2" 15 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 16 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 17 | dependencies: 18 | acorn "^7.0.0" 19 | acorn-walk "^7.0.0" 20 | xtend "^4.0.2" 21 | 22 | acorn-walk@^7.0.0: 23 | version "7.1.1" 24 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" 25 | integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== 26 | 27 | acorn@^7.0.0: 28 | version "7.2.0" 29 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" 30 | integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== 31 | 32 | ajv@^6.5.5: 33 | version "6.12.2" 34 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" 35 | integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== 36 | dependencies: 37 | fast-deep-equal "^3.1.1" 38 | fast-json-stable-stringify "^2.0.0" 39 | json-schema-traverse "^0.4.1" 40 | uri-js "^4.2.2" 41 | 42 | asap@~2.0.3: 43 | version "2.0.6" 44 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 45 | integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= 46 | 47 | asn1.js@^4.0.0: 48 | version "4.10.1" 49 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" 50 | integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== 51 | dependencies: 52 | bn.js "^4.0.0" 53 | inherits "^2.0.1" 54 | minimalistic-assert "^1.0.0" 55 | 56 | asn1@~0.2.3: 57 | version "0.2.4" 58 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 59 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 60 | dependencies: 61 | safer-buffer "~2.1.0" 62 | 63 | assert-plus@1.0.0, assert-plus@^1.0.0: 64 | version "1.0.0" 65 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 66 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 67 | 68 | assert@^1.4.0: 69 | version "1.5.0" 70 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" 71 | integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== 72 | dependencies: 73 | object-assign "^4.1.1" 74 | util "0.10.3" 75 | 76 | asynckit@^0.4.0: 77 | version "0.4.0" 78 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 79 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 80 | 81 | aws-sign2@~0.7.0: 82 | version "0.7.0" 83 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 84 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 85 | 86 | aws4@^1.8.0: 87 | version "1.10.0" 88 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" 89 | integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== 90 | 91 | balanced-match@^1.0.0: 92 | version "1.0.0" 93 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 94 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 95 | 96 | base64-js@^1.0.2: 97 | version "1.3.1" 98 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" 99 | integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== 100 | 101 | bcrypt-pbkdf@^1.0.0: 102 | version "1.0.2" 103 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 104 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 105 | dependencies: 106 | tweetnacl "^0.14.3" 107 | 108 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: 109 | version "4.11.9" 110 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" 111 | integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== 112 | 113 | bn.js@^5.1.1: 114 | version "5.1.2" 115 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" 116 | integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== 117 | 118 | brace-expansion@^1.1.7: 119 | version "1.1.11" 120 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 121 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 122 | dependencies: 123 | balanced-match "^1.0.0" 124 | concat-map "0.0.1" 125 | 126 | brorand@^1.0.1: 127 | version "1.1.0" 128 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 129 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 130 | 131 | browser-pack@^6.0.1: 132 | version "6.1.0" 133 | resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" 134 | integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== 135 | dependencies: 136 | JSONStream "^1.0.3" 137 | combine-source-map "~0.8.0" 138 | defined "^1.0.0" 139 | safe-buffer "^5.1.1" 140 | through2 "^2.0.0" 141 | umd "^3.0.0" 142 | 143 | browser-resolve@^1.11.0, browser-resolve@^1.7.0: 144 | version "1.11.3" 145 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" 146 | integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== 147 | dependencies: 148 | resolve "1.1.7" 149 | 150 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 151 | version "1.2.0" 152 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 153 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 154 | dependencies: 155 | buffer-xor "^1.0.3" 156 | cipher-base "^1.0.0" 157 | create-hash "^1.1.0" 158 | evp_bytestokey "^1.0.3" 159 | inherits "^2.0.1" 160 | safe-buffer "^5.0.1" 161 | 162 | browserify-cipher@^1.0.0: 163 | version "1.0.1" 164 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" 165 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== 166 | dependencies: 167 | browserify-aes "^1.0.4" 168 | browserify-des "^1.0.0" 169 | evp_bytestokey "^1.0.0" 170 | 171 | browserify-des@^1.0.0: 172 | version "1.0.2" 173 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" 174 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== 175 | dependencies: 176 | cipher-base "^1.0.1" 177 | des.js "^1.0.0" 178 | inherits "^2.0.1" 179 | safe-buffer "^5.1.2" 180 | 181 | browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: 182 | version "4.0.1" 183 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" 184 | integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= 185 | dependencies: 186 | bn.js "^4.1.0" 187 | randombytes "^2.0.1" 188 | 189 | browserify-sign@^4.0.0: 190 | version "4.2.0" 191 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" 192 | integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== 193 | dependencies: 194 | bn.js "^5.1.1" 195 | browserify-rsa "^4.0.1" 196 | create-hash "^1.2.0" 197 | create-hmac "^1.1.7" 198 | elliptic "^6.5.2" 199 | inherits "^2.0.4" 200 | parse-asn1 "^5.1.5" 201 | readable-stream "^3.6.0" 202 | safe-buffer "^5.2.0" 203 | 204 | browserify-zlib@~0.2.0: 205 | version "0.2.0" 206 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 207 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 208 | dependencies: 209 | pako "~1.0.5" 210 | 211 | browserify@^16.2.3: 212 | version "16.5.1" 213 | resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.1.tgz#3c13c97436802930d5c3ae28658ddc33bfd37dc2" 214 | integrity sha512-EQX0h59Pp+0GtSRb5rL6OTfrttlzv+uyaUVlK6GX3w11SQ0jKPKyjC/54RhPR2ib2KmfcELM06e8FxcI5XNU2A== 215 | dependencies: 216 | JSONStream "^1.0.3" 217 | assert "^1.4.0" 218 | browser-pack "^6.0.1" 219 | browser-resolve "^1.11.0" 220 | browserify-zlib "~0.2.0" 221 | buffer "~5.2.1" 222 | cached-path-relative "^1.0.0" 223 | concat-stream "^1.6.0" 224 | console-browserify "^1.1.0" 225 | constants-browserify "~1.0.0" 226 | crypto-browserify "^3.0.0" 227 | defined "^1.0.0" 228 | deps-sort "^2.0.0" 229 | domain-browser "^1.2.0" 230 | duplexer2 "~0.1.2" 231 | events "^2.0.0" 232 | glob "^7.1.0" 233 | has "^1.0.0" 234 | htmlescape "^1.1.0" 235 | https-browserify "^1.0.0" 236 | inherits "~2.0.1" 237 | insert-module-globals "^7.0.0" 238 | labeled-stream-splicer "^2.0.0" 239 | mkdirp-classic "^0.5.2" 240 | module-deps "^6.0.0" 241 | os-browserify "~0.3.0" 242 | parents "^1.0.1" 243 | path-browserify "~0.0.0" 244 | process "~0.11.0" 245 | punycode "^1.3.2" 246 | querystring-es3 "~0.2.0" 247 | read-only-stream "^2.0.0" 248 | readable-stream "^2.0.2" 249 | resolve "^1.1.4" 250 | shasum "^1.0.0" 251 | shell-quote "^1.6.1" 252 | stream-browserify "^2.0.0" 253 | stream-http "^3.0.0" 254 | string_decoder "^1.1.1" 255 | subarg "^1.0.0" 256 | syntax-error "^1.1.1" 257 | through2 "^2.0.0" 258 | timers-browserify "^1.0.1" 259 | tty-browserify "0.0.1" 260 | url "~0.11.0" 261 | util "~0.10.1" 262 | vm-browserify "^1.0.0" 263 | xtend "^4.0.0" 264 | 265 | buffer-from@^1.0.0: 266 | version "1.1.1" 267 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 268 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 269 | 270 | buffer-xor@^1.0.3: 271 | version "1.0.3" 272 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 273 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 274 | 275 | buffer@~5.2.1: 276 | version "5.2.1" 277 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" 278 | integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== 279 | dependencies: 280 | base64-js "^1.0.2" 281 | ieee754 "^1.1.4" 282 | 283 | builtin-status-codes@^3.0.0: 284 | version "3.0.0" 285 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 286 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 287 | 288 | cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: 289 | version "1.0.2" 290 | resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" 291 | integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== 292 | 293 | caseless@~0.12.0: 294 | version "0.12.0" 295 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 296 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 297 | 298 | chrome-extension-async@^3.3.2: 299 | version "3.4.1" 300 | resolved "https://registry.yarnpkg.com/chrome-extension-async/-/chrome-extension-async-3.4.1.tgz#bac9b1924e85c0968ed19b4d56ec98cddaf42567" 301 | integrity sha512-YBkFGFL+8MpkHvZ4nB/NU0uPkJU4LWjSlqxgXOwHcBe5sGs/YT0etEkmQXay3Op6p2c+34zf1k4Osi0ma4HtiQ== 302 | 303 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 304 | version "1.0.4" 305 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 306 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 307 | dependencies: 308 | inherits "^2.0.1" 309 | safe-buffer "^5.0.1" 310 | 311 | clone@^2.1.2: 312 | version "2.1.2" 313 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" 314 | integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= 315 | 316 | combine-source-map@^0.8.0, combine-source-map@~0.8.0: 317 | version "0.8.0" 318 | resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" 319 | integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= 320 | dependencies: 321 | convert-source-map "~1.1.0" 322 | inline-source-map "~0.6.0" 323 | lodash.memoize "~3.0.3" 324 | source-map "~0.5.3" 325 | 326 | combined-stream@^1.0.6, combined-stream@~1.0.6: 327 | version "1.0.8" 328 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 329 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 330 | dependencies: 331 | delayed-stream "~1.0.0" 332 | 333 | concat-map@0.0.1: 334 | version "0.0.1" 335 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 336 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 337 | 338 | concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: 339 | version "1.6.2" 340 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 341 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 342 | dependencies: 343 | buffer-from "^1.0.0" 344 | inherits "^2.0.3" 345 | readable-stream "^2.2.2" 346 | typedarray "^0.0.6" 347 | 348 | console-browserify@^1.1.0: 349 | version "1.2.0" 350 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" 351 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== 352 | 353 | constants-browserify@~1.0.0: 354 | version "1.0.0" 355 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 356 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 357 | 358 | convert-source-map@~1.1.0: 359 | version "1.1.3" 360 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" 361 | integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= 362 | 363 | core-util-is@1.0.2, core-util-is@~1.0.0: 364 | version "1.0.2" 365 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 366 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 367 | 368 | create-ecdh@^4.0.0: 369 | version "4.0.3" 370 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" 371 | integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== 372 | dependencies: 373 | bn.js "^4.1.0" 374 | elliptic "^6.0.0" 375 | 376 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 377 | version "1.2.0" 378 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 379 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 380 | dependencies: 381 | cipher-base "^1.0.1" 382 | inherits "^2.0.1" 383 | md5.js "^1.3.4" 384 | ripemd160 "^2.0.1" 385 | sha.js "^2.4.0" 386 | 387 | create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: 388 | version "1.1.7" 389 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 390 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 391 | dependencies: 392 | cipher-base "^1.0.3" 393 | create-hash "^1.1.0" 394 | inherits "^2.0.1" 395 | ripemd160 "^2.0.0" 396 | safe-buffer "^5.0.1" 397 | sha.js "^2.4.8" 398 | 399 | crypto-browserify@^3.0.0: 400 | version "3.12.0" 401 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 402 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 403 | dependencies: 404 | browserify-cipher "^1.0.0" 405 | browserify-sign "^4.0.0" 406 | create-ecdh "^4.0.0" 407 | create-hash "^1.1.0" 408 | create-hmac "^1.1.0" 409 | diffie-hellman "^5.0.0" 410 | inherits "^2.0.1" 411 | pbkdf2 "^3.0.3" 412 | public-encrypt "^4.0.0" 413 | randombytes "^2.0.0" 414 | randomfill "^1.0.3" 415 | 416 | dash-ast@^1.0.0: 417 | version "1.0.0" 418 | resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" 419 | integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== 420 | 421 | dashdash@^1.12.0: 422 | version "1.14.1" 423 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 424 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 425 | dependencies: 426 | assert-plus "^1.0.0" 427 | 428 | defined@^1.0.0: 429 | version "1.0.0" 430 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 431 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 432 | 433 | delayed-stream@~1.0.0: 434 | version "1.0.0" 435 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 436 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 437 | 438 | deps-sort@^2.0.0: 439 | version "2.0.1" 440 | resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" 441 | integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== 442 | dependencies: 443 | JSONStream "^1.0.3" 444 | shasum-object "^1.0.0" 445 | subarg "^1.0.0" 446 | through2 "^2.0.0" 447 | 448 | des.js@^1.0.0: 449 | version "1.0.1" 450 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" 451 | integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== 452 | dependencies: 453 | inherits "^2.0.1" 454 | minimalistic-assert "^1.0.0" 455 | 456 | detective@^5.2.0: 457 | version "5.2.0" 458 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" 459 | integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== 460 | dependencies: 461 | acorn-node "^1.6.1" 462 | defined "^1.0.0" 463 | minimist "^1.1.1" 464 | 465 | diffie-hellman@^5.0.0: 466 | version "5.0.3" 467 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 468 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 469 | dependencies: 470 | bn.js "^4.1.0" 471 | miller-rabin "^4.0.0" 472 | randombytes "^2.0.0" 473 | 474 | domain-browser@^1.2.0: 475 | version "1.2.0" 476 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 477 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 478 | 479 | duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: 480 | version "0.1.4" 481 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 482 | integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 483 | dependencies: 484 | readable-stream "^2.0.2" 485 | 486 | ecc-jsbn@~0.1.1: 487 | version "0.1.2" 488 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 489 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 490 | dependencies: 491 | jsbn "~0.1.0" 492 | safer-buffer "^2.1.0" 493 | 494 | elliptic@^6.0.0, elliptic@^6.5.2: 495 | version "6.5.2" 496 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" 497 | integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== 498 | dependencies: 499 | bn.js "^4.4.0" 500 | brorand "^1.0.1" 501 | hash.js "^1.0.0" 502 | hmac-drbg "^1.0.0" 503 | inherits "^2.0.1" 504 | minimalistic-assert "^1.0.0" 505 | minimalistic-crypto-utils "^1.0.0" 506 | 507 | errno@^0.1.1: 508 | version "0.1.7" 509 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" 510 | integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== 511 | dependencies: 512 | prr "~1.0.1" 513 | 514 | events@^2.0.0: 515 | version "2.1.0" 516 | resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" 517 | integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== 518 | 519 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 520 | version "1.0.3" 521 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 522 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 523 | dependencies: 524 | md5.js "^1.3.4" 525 | safe-buffer "^5.1.1" 526 | 527 | extend@~3.0.2: 528 | version "3.0.2" 529 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 530 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 531 | 532 | extsprintf@1.3.0: 533 | version "1.3.0" 534 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 535 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 536 | 537 | extsprintf@^1.2.0: 538 | version "1.4.0" 539 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 540 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 541 | 542 | fast-deep-equal@^3.1.1: 543 | version "3.1.1" 544 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 545 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 546 | 547 | fast-json-stable-stringify@^2.0.0: 548 | version "2.1.0" 549 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 550 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 551 | 552 | fast-safe-stringify@^2.0.7: 553 | version "2.0.7" 554 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" 555 | integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== 556 | 557 | forever-agent@~0.6.1: 558 | version "0.6.1" 559 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 560 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 561 | 562 | form-data@~2.3.2: 563 | version "2.3.3" 564 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 565 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 566 | dependencies: 567 | asynckit "^0.4.0" 568 | combined-stream "^1.0.6" 569 | mime-types "^2.1.12" 570 | 571 | fs.realpath@^1.0.0: 572 | version "1.0.0" 573 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 574 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 575 | 576 | function-bind@^1.1.1: 577 | version "1.1.1" 578 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 579 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 580 | 581 | get-assigned-identifiers@^1.2.0: 582 | version "1.2.0" 583 | resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" 584 | integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== 585 | 586 | getpass@^0.1.1: 587 | version "0.1.7" 588 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 589 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 590 | dependencies: 591 | assert-plus "^1.0.0" 592 | 593 | glob@^7.1.0: 594 | version "7.1.6" 595 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 596 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 597 | dependencies: 598 | fs.realpath "^1.0.0" 599 | inflight "^1.0.4" 600 | inherits "2" 601 | minimatch "^3.0.4" 602 | once "^1.3.0" 603 | path-is-absolute "^1.0.0" 604 | 605 | graceful-fs@^4.1.2: 606 | version "4.2.4" 607 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 608 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 609 | 610 | har-schema@^2.0.0: 611 | version "2.0.0" 612 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 613 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 614 | 615 | har-validator@~5.1.3: 616 | version "5.1.3" 617 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 618 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 619 | dependencies: 620 | ajv "^6.5.5" 621 | har-schema "^2.0.0" 622 | 623 | has@^1.0.0: 624 | version "1.0.3" 625 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 626 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 627 | dependencies: 628 | function-bind "^1.1.1" 629 | 630 | hash-base@^3.0.0: 631 | version "3.1.0" 632 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 633 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 634 | dependencies: 635 | inherits "^2.0.4" 636 | readable-stream "^3.6.0" 637 | safe-buffer "^5.2.0" 638 | 639 | hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: 640 | version "1.1.7" 641 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 642 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 643 | dependencies: 644 | inherits "^2.0.3" 645 | minimalistic-assert "^1.0.1" 646 | 647 | hmac-drbg@^1.0.0: 648 | version "1.0.1" 649 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 650 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 651 | dependencies: 652 | hash.js "^1.0.3" 653 | minimalistic-assert "^1.0.0" 654 | minimalistic-crypto-utils "^1.0.1" 655 | 656 | htmlescape@^1.1.0: 657 | version "1.1.1" 658 | resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" 659 | integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= 660 | 661 | http-signature@~1.2.0: 662 | version "1.2.0" 663 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 664 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 665 | dependencies: 666 | assert-plus "^1.0.0" 667 | jsprim "^1.2.2" 668 | sshpk "^1.7.0" 669 | 670 | https-browserify@^1.0.0: 671 | version "1.0.0" 672 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 673 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 674 | 675 | ieee754@^1.1.4: 676 | version "1.1.13" 677 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" 678 | integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== 679 | 680 | image-size@~0.5.0: 681 | version "0.5.5" 682 | resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" 683 | integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= 684 | 685 | inflight@^1.0.4: 686 | version "1.0.6" 687 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 688 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 689 | dependencies: 690 | once "^1.3.0" 691 | wrappy "1" 692 | 693 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: 694 | version "2.0.4" 695 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 696 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 697 | 698 | inherits@2.0.1: 699 | version "2.0.1" 700 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 701 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 702 | 703 | inherits@2.0.3: 704 | version "2.0.3" 705 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 706 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 707 | 708 | inline-source-map@~0.6.0: 709 | version "0.6.2" 710 | resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" 711 | integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= 712 | dependencies: 713 | source-map "~0.5.3" 714 | 715 | insert-module-globals@^7.0.0: 716 | version "7.2.0" 717 | resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" 718 | integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== 719 | dependencies: 720 | JSONStream "^1.0.3" 721 | acorn-node "^1.5.2" 722 | combine-source-map "^0.8.0" 723 | concat-stream "^1.6.1" 724 | is-buffer "^1.1.0" 725 | path-is-absolute "^1.0.1" 726 | process "~0.11.0" 727 | through2 "^2.0.0" 728 | undeclared-identifiers "^1.1.2" 729 | xtend "^4.0.0" 730 | 731 | is-buffer@^1.1.0: 732 | version "1.1.6" 733 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 734 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 735 | 736 | is-typedarray@~1.0.0: 737 | version "1.0.0" 738 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 739 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 740 | 741 | isarray@~1.0.0: 742 | version "1.0.0" 743 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 744 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 745 | 746 | isstream@~0.1.2: 747 | version "0.1.2" 748 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 749 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 750 | 751 | jsbn@~0.1.0: 752 | version "0.1.1" 753 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 754 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 755 | 756 | json-schema-traverse@^0.4.1: 757 | version "0.4.1" 758 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 759 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 760 | 761 | json-schema@0.2.3: 762 | version "0.2.3" 763 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 764 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 765 | 766 | json-stable-stringify@~0.0.0: 767 | version "0.0.1" 768 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" 769 | integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= 770 | dependencies: 771 | jsonify "~0.0.0" 772 | 773 | json-stringify-safe@~5.0.1: 774 | version "5.0.1" 775 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 776 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 777 | 778 | jsonify@~0.0.0: 779 | version "0.0.0" 780 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 781 | integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= 782 | 783 | jsonparse@^1.2.0: 784 | version "1.3.1" 785 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 786 | integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= 787 | 788 | jsprim@^1.2.2: 789 | version "1.4.1" 790 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 791 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 792 | dependencies: 793 | assert-plus "1.0.0" 794 | extsprintf "1.3.0" 795 | json-schema "0.2.3" 796 | verror "1.10.0" 797 | 798 | labeled-stream-splicer@^2.0.0: 799 | version "2.0.2" 800 | resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" 801 | integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== 802 | dependencies: 803 | inherits "^2.0.1" 804 | stream-splicer "^2.0.0" 805 | 806 | less@^3.9.0: 807 | version "3.11.2" 808 | resolved "https://registry.yarnpkg.com/less/-/less-3.11.2.tgz#51a484e9017287f5ac3db921cb86970eb7506e81" 809 | integrity sha512-ed8Lir98Tu6a+LeU7+8ShpRLSUdk//lWf1sh+5w7tNju4wGItztqDHp03Z+a2o1nzU6pObVxw1n4Gu7VzQYusQ== 810 | dependencies: 811 | clone "^2.1.2" 812 | tslib "^1.10.0" 813 | optionalDependencies: 814 | errno "^0.1.1" 815 | graceful-fs "^4.1.2" 816 | image-size "~0.5.0" 817 | make-dir "^2.1.0" 818 | mime "^1.4.1" 819 | promise "^7.1.1" 820 | request "^2.83.0" 821 | source-map "~0.6.0" 822 | 823 | lodash.memoize@~3.0.3: 824 | version "3.0.4" 825 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" 826 | integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= 827 | 828 | make-dir@^2.1.0: 829 | version "2.1.0" 830 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" 831 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 832 | dependencies: 833 | pify "^4.0.1" 834 | semver "^5.6.0" 835 | 836 | md5.js@^1.3.4: 837 | version "1.3.5" 838 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 839 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 840 | dependencies: 841 | hash-base "^3.0.0" 842 | inherits "^2.0.1" 843 | safe-buffer "^5.1.2" 844 | 845 | miller-rabin@^4.0.0: 846 | version "4.0.1" 847 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 848 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 849 | dependencies: 850 | bn.js "^4.0.0" 851 | brorand "^1.0.1" 852 | 853 | mime-db@1.44.0: 854 | version "1.44.0" 855 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" 856 | integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 857 | 858 | mime-types@^2.1.12, mime-types@~2.1.19: 859 | version "2.1.27" 860 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" 861 | integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 862 | dependencies: 863 | mime-db "1.44.0" 864 | 865 | mime@^1.4.1: 866 | version "1.6.0" 867 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 868 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 869 | 870 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 871 | version "1.0.1" 872 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 873 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 874 | 875 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 876 | version "1.0.1" 877 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 878 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 879 | 880 | minimatch@^3.0.4: 881 | version "3.0.4" 882 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 883 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 884 | dependencies: 885 | brace-expansion "^1.1.7" 886 | 887 | minimist@^1.1.0, minimist@^1.1.1: 888 | version "1.2.5" 889 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 890 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 891 | 892 | mithril@^1.1.0: 893 | version "1.1.7" 894 | resolved "https://registry.yarnpkg.com/mithril/-/mithril-1.1.7.tgz#505d7d77fe164ff16969de8f9b6eda42e0346cbe" 895 | integrity sha512-1SAkGeVrIVvkUHlPHvR3pXdWzNfTzmS/fBAe+rC2ApEBfZFFc+idi8Qg/M5JoW/sZkIDXSfQYVgvENMIhBIVAg== 896 | 897 | mkdirp-classic@^0.5.2: 898 | version "0.5.3" 899 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 900 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 901 | 902 | module-deps@^6.0.0: 903 | version "6.2.2" 904 | resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.2.tgz#d8a15c2265dfc119153c29bb47386987d0ee423b" 905 | integrity sha512-a9y6yDv5u5I4A+IPHTnqFxcaKr4p50/zxTjcQJaX2ws9tN/W6J6YXnEKhqRyPhl494dkcxx951onSKVezmI+3w== 906 | dependencies: 907 | JSONStream "^1.0.3" 908 | browser-resolve "^1.7.0" 909 | cached-path-relative "^1.0.2" 910 | concat-stream "~1.6.0" 911 | defined "^1.0.0" 912 | detective "^5.2.0" 913 | duplexer2 "^0.1.2" 914 | inherits "^2.0.1" 915 | parents "^1.0.0" 916 | readable-stream "^2.0.2" 917 | resolve "^1.4.0" 918 | stream-combiner2 "^1.1.1" 919 | subarg "^1.0.0" 920 | through2 "^2.0.0" 921 | xtend "^4.0.0" 922 | 923 | moment@^2.24.0: 924 | version "2.26.0" 925 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" 926 | integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== 927 | 928 | oauth-sign@~0.9.0: 929 | version "0.9.0" 930 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 931 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 932 | 933 | object-assign@^4.1.1: 934 | version "4.1.1" 935 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 936 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 937 | 938 | once@^1.3.0: 939 | version "1.4.0" 940 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 941 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 942 | dependencies: 943 | wrappy "1" 944 | 945 | os-browserify@~0.3.0: 946 | version "0.3.0" 947 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 948 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 949 | 950 | otplib@^11.0.0: 951 | version "11.0.1" 952 | resolved "https://registry.yarnpkg.com/otplib/-/otplib-11.0.1.tgz#7d64aa87029f07c99c7f96819fb10cdb67dea886" 953 | integrity sha512-oi57teljNyWTC/JqJztHOtSGeFNDiDh5C1myd+faocUtFAX27Sm1mbx69kpEJ8/JqrblI3kAm4Pqd6tZJoOIBQ== 954 | dependencies: 955 | thirty-two "1.0.2" 956 | 957 | pako@~1.0.5: 958 | version "1.0.11" 959 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 960 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 961 | 962 | parents@^1.0.0, parents@^1.0.1: 963 | version "1.0.1" 964 | resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" 965 | integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= 966 | dependencies: 967 | path-platform "~0.11.15" 968 | 969 | parse-asn1@^5.0.0, parse-asn1@^5.1.5: 970 | version "5.1.5" 971 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" 972 | integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== 973 | dependencies: 974 | asn1.js "^4.0.0" 975 | browserify-aes "^1.0.0" 976 | create-hash "^1.1.0" 977 | evp_bytestokey "^1.0.0" 978 | pbkdf2 "^3.0.3" 979 | safe-buffer "^5.1.1" 980 | 981 | path-browserify@~0.0.0: 982 | version "0.0.1" 983 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" 984 | integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== 985 | 986 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 987 | version "1.0.1" 988 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 989 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 990 | 991 | path-parse@^1.0.6: 992 | version "1.0.6" 993 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 994 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 995 | 996 | path-platform@~0.11.15: 997 | version "0.11.15" 998 | resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" 999 | integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= 1000 | 1001 | pbkdf2@^3.0.3: 1002 | version "3.0.17" 1003 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" 1004 | integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== 1005 | dependencies: 1006 | create-hash "^1.1.2" 1007 | create-hmac "^1.1.4" 1008 | ripemd160 "^2.0.1" 1009 | safe-buffer "^5.0.1" 1010 | sha.js "^2.4.8" 1011 | 1012 | performance-now@^2.1.0: 1013 | version "2.1.0" 1014 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1015 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1016 | 1017 | pify@^4.0.1: 1018 | version "4.0.1" 1019 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1020 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1021 | 1022 | prettier@^1.16.4: 1023 | version "1.19.1" 1024 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" 1025 | integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== 1026 | 1027 | process-nextick-args@~2.0.0: 1028 | version "2.0.1" 1029 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1030 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1031 | 1032 | process@~0.11.0: 1033 | version "0.11.10" 1034 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1035 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 1036 | 1037 | promise@^7.1.1: 1038 | version "7.3.1" 1039 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 1040 | integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== 1041 | dependencies: 1042 | asap "~2.0.3" 1043 | 1044 | prr@~1.0.1: 1045 | version "1.0.1" 1046 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 1047 | integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= 1048 | 1049 | psl@^1.1.28: 1050 | version "1.8.0" 1051 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 1052 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 1053 | 1054 | public-encrypt@^4.0.0: 1055 | version "4.0.3" 1056 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 1057 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 1058 | dependencies: 1059 | bn.js "^4.1.0" 1060 | browserify-rsa "^4.0.0" 1061 | create-hash "^1.1.0" 1062 | parse-asn1 "^5.0.0" 1063 | randombytes "^2.0.1" 1064 | safe-buffer "^5.1.2" 1065 | 1066 | punycode@1.3.2: 1067 | version "1.3.2" 1068 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1069 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1070 | 1071 | punycode@^1.3.2: 1072 | version "1.4.1" 1073 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1074 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1075 | 1076 | punycode@^2.1.0, punycode@^2.1.1: 1077 | version "2.1.1" 1078 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1079 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1080 | 1081 | qs@~6.5.2: 1082 | version "6.5.2" 1083 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 1084 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1085 | 1086 | querystring-es3@~0.2.0: 1087 | version "0.2.1" 1088 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1089 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 1090 | 1091 | querystring@0.2.0: 1092 | version "0.2.0" 1093 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1094 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1095 | 1096 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 1097 | version "2.1.0" 1098 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1099 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1100 | dependencies: 1101 | safe-buffer "^5.1.0" 1102 | 1103 | randomfill@^1.0.3: 1104 | version "1.0.4" 1105 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 1106 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 1107 | dependencies: 1108 | randombytes "^2.0.5" 1109 | safe-buffer "^5.1.0" 1110 | 1111 | read-only-stream@^2.0.0: 1112 | version "2.0.0" 1113 | resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" 1114 | integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= 1115 | dependencies: 1116 | readable-stream "^2.0.2" 1117 | 1118 | readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: 1119 | version "2.3.7" 1120 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1121 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1122 | dependencies: 1123 | core-util-is "~1.0.0" 1124 | inherits "~2.0.3" 1125 | isarray "~1.0.0" 1126 | process-nextick-args "~2.0.0" 1127 | safe-buffer "~5.1.1" 1128 | string_decoder "~1.1.1" 1129 | util-deprecate "~1.0.1" 1130 | 1131 | readable-stream@^3.6.0: 1132 | version "3.6.0" 1133 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1134 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1135 | dependencies: 1136 | inherits "^2.0.3" 1137 | string_decoder "^1.1.1" 1138 | util-deprecate "^1.0.1" 1139 | 1140 | request@^2.83.0: 1141 | version "2.88.2" 1142 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" 1143 | integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 1144 | dependencies: 1145 | aws-sign2 "~0.7.0" 1146 | aws4 "^1.8.0" 1147 | caseless "~0.12.0" 1148 | combined-stream "~1.0.6" 1149 | extend "~3.0.2" 1150 | forever-agent "~0.6.1" 1151 | form-data "~2.3.2" 1152 | har-validator "~5.1.3" 1153 | http-signature "~1.2.0" 1154 | is-typedarray "~1.0.0" 1155 | isstream "~0.1.2" 1156 | json-stringify-safe "~5.0.1" 1157 | mime-types "~2.1.19" 1158 | oauth-sign "~0.9.0" 1159 | performance-now "^2.1.0" 1160 | qs "~6.5.2" 1161 | safe-buffer "^5.1.2" 1162 | tough-cookie "~2.5.0" 1163 | tunnel-agent "^0.6.0" 1164 | uuid "^3.3.2" 1165 | 1166 | resolve@1.1.7: 1167 | version "1.1.7" 1168 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 1169 | integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= 1170 | 1171 | resolve@^1.1.4, resolve@^1.4.0: 1172 | version "1.17.0" 1173 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1174 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 1175 | dependencies: 1176 | path-parse "^1.0.6" 1177 | 1178 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1179 | version "2.0.2" 1180 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1181 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1182 | dependencies: 1183 | hash-base "^3.0.0" 1184 | inherits "^2.0.1" 1185 | 1186 | 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: 1187 | version "5.2.1" 1188 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1189 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1190 | 1191 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1192 | version "5.1.2" 1193 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1194 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1195 | 1196 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 1197 | version "2.1.2" 1198 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1199 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1200 | 1201 | semver@^5.6.0: 1202 | version "5.7.1" 1203 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1204 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1205 | 1206 | sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: 1207 | version "2.4.11" 1208 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1209 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1210 | dependencies: 1211 | inherits "^2.0.1" 1212 | safe-buffer "^5.0.1" 1213 | 1214 | shasum-object@^1.0.0: 1215 | version "1.0.0" 1216 | resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" 1217 | integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== 1218 | dependencies: 1219 | fast-safe-stringify "^2.0.7" 1220 | 1221 | shasum@^1.0.0: 1222 | version "1.0.2" 1223 | resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" 1224 | integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= 1225 | dependencies: 1226 | json-stable-stringify "~0.0.0" 1227 | sha.js "~2.4.4" 1228 | 1229 | shell-quote@^1.6.1: 1230 | version "1.7.2" 1231 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 1232 | integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 1233 | 1234 | simple-concat@^1.0.0: 1235 | version "1.0.0" 1236 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 1237 | integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= 1238 | 1239 | source-map@~0.5.3: 1240 | version "0.5.7" 1241 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1242 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1243 | 1244 | source-map@~0.6.0: 1245 | version "0.6.1" 1246 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1247 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1248 | 1249 | sshpk@^1.7.0: 1250 | version "1.16.1" 1251 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 1252 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 1253 | dependencies: 1254 | asn1 "~0.2.3" 1255 | assert-plus "^1.0.0" 1256 | bcrypt-pbkdf "^1.0.0" 1257 | dashdash "^1.12.0" 1258 | ecc-jsbn "~0.1.1" 1259 | getpass "^0.1.1" 1260 | jsbn "~0.1.0" 1261 | safer-buffer "^2.0.2" 1262 | tweetnacl "~0.14.0" 1263 | 1264 | stream-browserify@^2.0.0: 1265 | version "2.0.2" 1266 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" 1267 | integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== 1268 | dependencies: 1269 | inherits "~2.0.1" 1270 | readable-stream "^2.0.2" 1271 | 1272 | stream-combiner2@^1.1.1: 1273 | version "1.1.1" 1274 | resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" 1275 | integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= 1276 | dependencies: 1277 | duplexer2 "~0.1.0" 1278 | readable-stream "^2.0.2" 1279 | 1280 | stream-http@^3.0.0: 1281 | version "3.1.1" 1282 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" 1283 | integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== 1284 | dependencies: 1285 | builtin-status-codes "^3.0.0" 1286 | inherits "^2.0.4" 1287 | readable-stream "^3.6.0" 1288 | xtend "^4.0.2" 1289 | 1290 | stream-splicer@^2.0.0: 1291 | version "2.0.1" 1292 | resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" 1293 | integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== 1294 | dependencies: 1295 | inherits "^2.0.1" 1296 | readable-stream "^2.0.2" 1297 | 1298 | string_decoder@^1.1.1: 1299 | version "1.3.0" 1300 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1301 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1302 | dependencies: 1303 | safe-buffer "~5.2.0" 1304 | 1305 | string_decoder@~1.1.1: 1306 | version "1.1.1" 1307 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1308 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1309 | dependencies: 1310 | safe-buffer "~5.1.0" 1311 | 1312 | subarg@^1.0.0: 1313 | version "1.0.0" 1314 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" 1315 | integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= 1316 | dependencies: 1317 | minimist "^1.1.0" 1318 | 1319 | syntax-error@^1.1.1: 1320 | version "1.4.0" 1321 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" 1322 | integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== 1323 | dependencies: 1324 | acorn-node "^1.2.0" 1325 | 1326 | thirty-two@1.0.2: 1327 | version "1.0.2" 1328 | resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" 1329 | integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno= 1330 | 1331 | through2@^2.0.0: 1332 | version "2.0.5" 1333 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 1334 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 1335 | dependencies: 1336 | readable-stream "~2.3.6" 1337 | xtend "~4.0.1" 1338 | 1339 | "through@>=2.2.7 <3": 1340 | version "2.3.8" 1341 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1342 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1343 | 1344 | timers-browserify@^1.0.1: 1345 | version "1.4.2" 1346 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" 1347 | integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= 1348 | dependencies: 1349 | process "~0.11.0" 1350 | 1351 | tough-cookie@~2.5.0: 1352 | version "2.5.0" 1353 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" 1354 | integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 1355 | dependencies: 1356 | psl "^1.1.28" 1357 | punycode "^2.1.1" 1358 | 1359 | tslib@^1.10.0: 1360 | version "1.13.0" 1361 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 1362 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 1363 | 1364 | tty-browserify@0.0.1: 1365 | version "0.0.1" 1366 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" 1367 | integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 1368 | 1369 | tunnel-agent@^0.6.0: 1370 | version "0.6.0" 1371 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1372 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1373 | dependencies: 1374 | safe-buffer "^5.0.1" 1375 | 1376 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1377 | version "0.14.5" 1378 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1379 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 1380 | 1381 | typedarray@^0.0.6: 1382 | version "0.0.6" 1383 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1384 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 1385 | 1386 | umd@^3.0.0: 1387 | version "3.0.3" 1388 | resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" 1389 | integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== 1390 | 1391 | undeclared-identifiers@^1.1.2: 1392 | version "1.1.3" 1393 | resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" 1394 | integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== 1395 | dependencies: 1396 | acorn-node "^1.3.0" 1397 | dash-ast "^1.0.0" 1398 | get-assigned-identifiers "^1.2.0" 1399 | simple-concat "^1.0.0" 1400 | xtend "^4.0.1" 1401 | 1402 | uri-js@^4.2.2: 1403 | version "4.2.2" 1404 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1405 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1406 | dependencies: 1407 | punycode "^2.1.0" 1408 | 1409 | url@~0.11.0: 1410 | version "0.11.0" 1411 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1412 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 1413 | dependencies: 1414 | punycode "1.3.2" 1415 | querystring "0.2.0" 1416 | 1417 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1418 | version "1.0.2" 1419 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1420 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1421 | 1422 | util@0.10.3: 1423 | version "0.10.3" 1424 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1425 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 1426 | dependencies: 1427 | inherits "2.0.1" 1428 | 1429 | util@~0.10.1: 1430 | version "0.10.4" 1431 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" 1432 | integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== 1433 | dependencies: 1434 | inherits "2.0.3" 1435 | 1436 | uuid@^3.3.2: 1437 | version "3.4.0" 1438 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 1439 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 1440 | 1441 | verror@1.10.0: 1442 | version "1.10.0" 1443 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 1444 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 1445 | dependencies: 1446 | assert-plus "^1.0.0" 1447 | core-util-is "1.0.2" 1448 | extsprintf "^1.2.0" 1449 | 1450 | vm-browserify@^1.0.0: 1451 | version "1.1.2" 1452 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" 1453 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 1454 | 1455 | wrappy@1: 1456 | version "1.0.2" 1457 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1458 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1459 | 1460 | xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: 1461 | version "4.0.2" 1462 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1463 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1464 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | base32-decode@^1.0.0: 6 | version "1.0.0" 7 | resolved "https://registry.yarnpkg.com/base32-decode/-/base32-decode-1.0.0.tgz#2a821d6a664890c872f20aa9aca95a4b4b80e2a7" 8 | integrity sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g== 9 | --------------------------------------------------------------------------------