From f1def34983b293fcb55734a10d7caa0a648d7b7d Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 16 Oct 2019 13:35:43 +0100 Subject: [PATCH 01/47] New NCurses search functionality --- .crystal-version | 1 - .travis.yml | 5 + CHANGELOG.md | 19 - CONTRIBUTING.md | 26 - LICENSE | 2 +- Makefile | 42 - README.md | 157 +- assets/css/app.css | 7 - assets/css/components/snipline-list-item.css | 103 - assets/js/app.js | 0 mix-manifest.json | 4 - package.json | 24 - public/css/app.css | 27300 ---------------- public/js/app.js | 124 - shard.lock | 32 +- shard.yml | 22 +- snap/snapcraft.yaml | 21 - spec/models/snippet_attribute_spec.cr | 4 +- spec/models/snippet_param_spec.cr | 4 +- spec/models/snippet_password_param_spec.cr | 4 +- spec/models/snippet_spec.cr | 14 +- spec/models/token_spec.cr | 4 +- spec/services/command_builder_spec.cr | 42 +- spec/services/documentation_formatter_spec.cr | 23 + spec/spec_helper.cr | 16 +- src/cli.cr | 6 + src/snipline_cli.cr | 14 +- src/snipline_cli/commands/login.cr | 1 + src/snipline_cli/commands/new.cr | 5 +- src/snipline_cli/commands/search.cr | 67 +- src/snipline_cli/commands/sync.cr | 2 +- src/snipline_cli/commands/web.cr | 128 - src/snipline_cli/{config => }/config.cr | 0 src/snipline_cli/models/snippet.cr | 37 +- src/snipline_cli/models/snippet_attribute.cr | 2 +- .../models/snippet_data_wrapper.cr | 4 +- src/snipline_cli/models/snippet_param.cr | 4 +- .../models/snippet_password_param.cr | 4 +- src/snipline_cli/models/token.cr | 2 +- src/snipline_cli/ncurses_windows/footer.cr | 18 + src/snipline_cli/ncurses_windows/header.cr | 18 + src/snipline_cli/ncurses_windows/left_pane.cr | 90 + .../ncurses_windows/mock_window.cr | 6 + .../ncurses_windows/multi_param.cr | 95 + src/snipline_cli/ncurses_windows/param.cr | 83 + .../ncurses_windows/right_pane.cr | 62 + src/snipline_cli/ncurses_windows/search.cr | 41 + .../append_snippet_to_local_storage.cr | 4 +- src/snipline_cli/services/command_builder.cr | 37 +- src/snipline_cli/services/display_results.cr | 105 + .../services/documentation_formatter.cr | 69 + src/snipline_cli/services/file_storage.cr | 12 - src/snipline_cli/services/load_snippets.cr | 2 + src/snipline_cli/services/search_snippets.cr | 40 + src/snipline_cli/services/setup_ncurses.cr | 24 + src/snipline_cli/services/snipline_api.cr | 2 + .../services/sync_snippet_to_snipline.cr | 2 + .../services/temp_snippet_editor_file.cr | 1 + src/snipline_cli/templates/index.ecr | 24 - src/snipline_cli/templates/layout.ecr | 13 - src/snipline_cli/templates/snippets/new.ecr | 56 - tailwind.config.js | 63 - webpack.mix.js | 53 - yarn-error.log | 6456 ---- yarn.lock | 6408 ---- 65 files changed, 800 insertions(+), 41260 deletions(-) delete mode 100644 .crystal-version delete mode 100644 CHANGELOG.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 assets/css/app.css delete mode 100644 assets/css/components/snipline-list-item.css delete mode 100644 assets/js/app.js delete mode 100644 mix-manifest.json delete mode 100644 package.json delete mode 100644 public/css/app.css delete mode 100644 public/js/app.js delete mode 100644 snap/snapcraft.yaml create mode 100644 spec/services/documentation_formatter_spec.cr create mode 100644 src/cli.cr delete mode 100644 src/snipline_cli/commands/web.cr rename src/snipline_cli/{config => }/config.cr (100%) create mode 100644 src/snipline_cli/ncurses_windows/footer.cr create mode 100644 src/snipline_cli/ncurses_windows/header.cr create mode 100644 src/snipline_cli/ncurses_windows/left_pane.cr create mode 100644 src/snipline_cli/ncurses_windows/mock_window.cr create mode 100644 src/snipline_cli/ncurses_windows/multi_param.cr create mode 100644 src/snipline_cli/ncurses_windows/param.cr create mode 100644 src/snipline_cli/ncurses_windows/right_pane.cr create mode 100644 src/snipline_cli/ncurses_windows/search.cr create mode 100644 src/snipline_cli/services/display_results.cr create mode 100644 src/snipline_cli/services/documentation_formatter.cr delete mode 100644 src/snipline_cli/services/file_storage.cr create mode 100644 src/snipline_cli/services/search_snippets.cr create mode 100644 src/snipline_cli/services/setup_ncurses.cr delete mode 100644 src/snipline_cli/templates/index.ecr delete mode 100644 src/snipline_cli/templates/layout.ecr delete mode 100644 src/snipline_cli/templates/snippets/new.ecr delete mode 100644 tailwind.config.js delete mode 100644 webpack.mix.js delete mode 100644 yarn-error.log delete mode 100644 yarn.lock diff --git a/.crystal-version b/.crystal-version deleted file mode 100644 index 6a93205..0000000 --- a/.crystal-version +++ /dev/null @@ -1 +0,0 @@ -0.30.1 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index ffc7b6a..765f0e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1 +1,6 @@ language: crystal + +# Uncomment the following if you'd like Travis to run specs and check code formatting +# script: +# - crystal spec +# - crystal tool format --check diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index db6ea21..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,19 +0,0 @@ -# Changelog - -## 0.2.0 - -### Features - -* Added `new` command to create new snippets from command line. -* new `--run` flag for `search` command to run the selected snippet -* Added ability to create snippets from the `web` interface. - -### Changes - -* `search` command now copies the selected snippet instead of running. -* Updated Crystal to `0.30.1` -* Updated `lodash` dependency for `web` interface. - -### Bugfixes - -None! diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 834ce49..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,26 +0,0 @@ -# Contributing to Snipline CLI - -Contributions are welcome. For new features please open an issue first to discuss it. - -It is best to work from the `develop` branch as this is where the latest code is. - -1. Fork it () -2. Checkout the develop branch (`git checkout develop`) -3. Create your feature branch (`git checkout -b feature/my-new-feature`) -4. Make your changes -5. Compile the binary `crystal build src/snipline_cli.cr -o snipcli --release -5. Confirm changes are correct `./snipcli` -3. Run the tests `crystal spec` -4. Commit your changes (`git commit -am 'Add some feature'`) -5. Push to the branch (`git push origin feature/my-new-feature`). -6. Create a new Pull Request - -## Developing for the web GUI. - -If your feature is related to the `snipcli web` command, you may need to make updates to the CSS and JS assets. To do this you will need Node and Yarn installed. - -1. Install yarn dependencies (`yarn`) -2. Make changes in `assets/css/*` and `assets/js/*` -3. Run watch or dev (`yarn run watch` or `yarn run dev`) -4. Compile the binary `crystal build src/snipline_cli.cr -o snipcli --release -5. Confirm changes are correct `./snipcli web`. \ No newline at end of file diff --git a/LICENSE b/LICENSE index 659a39b..e4c193f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2018 Mitchell Stanley +Copyright (c) 2019 Mitchell Stanley Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile deleted file mode 100644 index 45a7ca0..0000000 --- a/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -PREFIX=/usr/local -INSTALL_DIR=$(PREFIX)/bin -SNIPCLI_SYSTEM=$(INSTALL_DIR)/snipcli - -OUT_DIR=./bin -SNIPCLI=$(OUT_DIR)/snipcli -SNIPCLI_SOURCES=$(shell find src/ -type f -name '*.cr') - -all: build - -build: lib $(SNIPCLI) - -lib: - @shards install --production - -$(SNIPCLI): $(SNIPCLI_SOURCES) | $(OUT_DIR) - @echo "Building snipcli in $@" - @crystal build -o $@ src/snipline_cli.cr -p --no-debug --release - -$(OUT_DIR) $(INSTALL_DIR): - @mkdir -p $@ - -run: - $(SNIPCLI) - -install: build | $(INSTALL_DIR) - @rm -f $(SNIPCLI_SYSTEM) - @cp $(SNIPCLI) $(SNIPCLI_SYSTEM) - -link: build | $(INSTALL_DIR) - @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)" - @ln -s $(SNIPCLI) $(SNIPCLI_SYSTEM) - -force_link: build | $(INSTALL_DIR) - @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)" - @ln -sf $(SNIPCLI) $(SNIPCLI_SYSTEM) - -clean: - rm -rf $(SNIPCLI) - -distclean: - rm -rf $(SNIPCLI) .crystal .shards libs lib \ No newline at end of file diff --git a/README.md b/README.md index c2e929d..84c04f3 100644 --- a/README.md +++ b/README.md @@ -1,162 +1,27 @@ -# Snipline CLI +# cli2 -Snipline CLI is the command-line tool for [Snipline](https://snipline.io). - -![SnipCLI Preview](https://f002.backblazeb2.com/file/ms-uploads/snipline/2019-07-10%2010.41.26.gif) - -Snipline CLI allows you to search and run commands from your Snipline account directly through the command-line. It is also possible to use this for free without a Snipline account (See the documentation on using without a Snipline Account). +TODO: Write a description here ## Installation -### Homebrew (MacOS and Linux) - -Snipline CLI is available through Homebrew for MacOS and Linux. - -```bash -brew install snipline/snipline/snipcli -``` - -### Snapcraft (Linux) - -Linux users can download via Snapcraft - -``` -sudo snap install snipcli --beta -``` - -### From source - -Snipline CLI requires Crystal 0.29.0 to be installed to install from source - -```bash -# Install dependencies -shards -# Build app -crystal build src/snipline_cli.cr -o snipcli --release -``` +TODO: Write installation instructions here ## Usage -### Syncing to Snipline - -Log-in to your Snipline account and sync your snippets. - -Follow login instructions (Enter email and token) - -```bash -snipcli login -``` - -Download snippets from your account - -```bash -snipcli sync -``` - -This will create two files on your system: `~/.config/snipline/config.toml` and `~/.config/snipline/snippets.json`. - -### Searching snippets - -A basic search can be done with the `search` command. - -```bash -snipcli search -``` - -By default search will ask if you wish to copy the result to clipboard, to run the result in the current terminal, use the `run` flag. - -```bash -snipline search --run -``` - -Search options include `field`, `limit`, `run`. See `snipcli search --help` for more information - -Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Select `no` when prompted to copy to clipboard to continue and use the `--run` flag to run the command instead. - -### Creating a new snippet - -You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to Snipline Cloud. - -```bash -snipline new -``` - -### Web interface - -Snipline CLI comes with a lightweight web interface. To use it run - -``` -snipcli web -``` - -You can then view and edit snippets through a web browser. By default this works locally on port 9876, however, you can specify it to be accessible remotely with the following arguments. - -```bash -snipcli web -p 3000 -b 0.0.0.0 -``` - -### Using Snipline CLI without a Snipline Account - -Snipline CLI can be used without an active Snipline account. But requires either manually entering data in the `~/.config/snipline/snippets.json` file or using the `web` interface. - -To generate the initial configuration files use the `init` command. - -```bash -snipcli init -``` - -At this moment the web interface does not support CRUD commands and manual entry is required. - -Here is an example ~/.config/snipline/snipets.json` file to get started. - -Note that `id` of `null` means that it has not been synced to a Snipline account. It will be lost if `snipcli sync` is ever run to fetch snippets from Snipline. - -```json -[ - { - "id":null, - "type":"snippets", - "attributes": - { - "is-pinned":false, - "name":"Symlink directory", - "real-command":"ln -s #{[Source]} #{[Destination]}", - "tags":["file", "linux"] - } - } -] -``` +TODO: Write usage instructions here ## Development -See the Installation section on building from source. - -Set log levels for additional development output. - -```bash -crystal build src/snipline_cli.cr -o snipcli -env LOG_LEVEL=DEBUG ./snipcli search git -``` - -To change the config file location (For testing) use the `CONFIG_FILE` environment variable. - -```bash -env CONFIG_FILE=./spec/fixtures/config.toml ./snipcli search git -``` +TODO: Write development instructions here ## Contributing -See the [Contributing guide](CONTRIBUTING.md) for details. - -## TODO - -* More tests. -* Create snippets through web interface. -* Edit snippets through web interface. -* Delete snippets through web interface. -* More documentation (Including usage without a Snipline account). -* Table formatting for search results. +1. Fork it () +2. Create your feature branch (`git checkout -b my-new-feature`) +3. Commit your changes (`git commit -am 'Add some feature'`) +4. Push to the branch (`git push origin my-new-feature`) +5. Create a new Pull Request ## Contributors -- [Mitchell Stanley](https://github.com/acoustep) - creator and maintainer +- [Mitchell Stanley](https://github.com/your-github-user) - creator and maintainer diff --git a/assets/css/app.css b/assets/css/app.css deleted file mode 100644 index 0fcef5d..0000000 --- a/assets/css/app.css +++ /dev/null @@ -1,7 +0,0 @@ -@tailwind base; - -@tailwind components; - -@import "components/snipline-list-item.css"; - -@tailwind utilities; diff --git a/assets/css/components/snipline-list-item.css b/assets/css/components/snipline-list-item.css deleted file mode 100644 index 410bb3f..0000000 --- a/assets/css/components/snipline-list-item.css +++ /dev/null @@ -1,103 +0,0 @@ -.snippet-list-item:first-child { - margin-top: 10px; -} -.snippet-list-item { - /* @apply .border-2 .border-white .mb-2; */ - @apply border-white border mb-3 bg-white flex flex-col relative; - box-sizing: border-box; - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1); - border-radius: 5px; - padding: 10px 13px; - overflow:hidden; - animation-duration: 0.5s; -} -.snippet-list-item:hover, .snippet-list-item:focus { - /* @apply .border-teal-light .bg-teal-lightest; */ - border: 1px solid rgba(51, 53, 16, 0.5); - outline: 0; -} -.snippet-list-item.active { - border: 1px solid rgba(51, 53, 16, 0.5); -} -.snippet-list-item--row-number { - @apply .border-2 .rounded-full .border-snipline-green-dark .mr-2 .px-0 .flex .text-center .justify-center .items-center .flex-grow-0 .flex-shrink-0 .cursor-pointer .font-bold; - width: 2.2rem; - padding-top:2px; -} -.snippet-list-item:focus > .snippet-list-item--row-number, .snippet-list-item:hover > .snippet-list-item--row-number, .snippet-list-item.active > .snippet-list-item--row-number { - @apply .border-snipline-lime .bg-snipline-lime; -} - -.snippet-list-item .snippet-menu { - display:none; - width: 0px; -} -.snippet-list-item.pinned .snippet-menu { - /* display:none; */ - display:block; - width: 40px; -} -.snippet-list-item:hover .snippet-menu { - @apply .bg-white; - width: 120px; - display:block; -} -.snippet-list-item button:focus, .snippet-list-item button:active { - @apply .outline-none; -} -.snippet-menu svg path, .snippet-menu button svg path { - transition: 150ms; - transition-timing-function: ease-in-out; - -webkit-transition: 150ms; - -webkit-transition-timing-function: ease-in-out; -} -.snippet-menu clr-icon:hover, .snippet-menu button:hover clr-icon { - fill: config('colors.snipline-lime'); -} -.snippet-list-item--code-wrapper { - width: 100%; - overflow-y: hidden; - overflow-x: hidden; - margin-bottom: -17px; - height:37px; -} -.snippet-list-item--code-preview { - /* @apply .overflow-x-scroll .font-mono; - overflow-y:hidden; */ - @apply .font-mono .font-semibold; - width: 100%; - overflow-x: auto; - padding-bottom: 17px; /* Increase/decrease this value for cross-browser compatibility */ - white-space: nowrap; - cursor:pointer; - height:40px; - line-height:normal; - letter-spacing: 0.01em; - font-size: .875rem; - color: rgba(51, 53, 16, .8); -} -.snippet-list-item--alias { - @apply .font-bold .text-snipline-green-dark .text-sm; - letter-spacing: 0.3px; -} -.snippet-list-item--heading { - @apply .font-normal .text-sm; - letter-spacing: 0.3px; - color: rgba(51, 53, 16, 0.7); -} -.snippet-list-item clr-icon { - fill: #333510; - opacity: 0.7; -} -.snippet-list-item.pinned .pin clr-icon { - fill: config('colors.snipline-lime'); - opacity: 0.7; -} -.snippet-list-item.pinned .pin i { - fill: config('colors.snipline-lime'); - color: config('colors.snipline-lime'); - -} -.snippet-list-item--loading { - height: 58px; -} \ No newline at end of file diff --git a/assets/js/app.js b/assets/js/app.js deleted file mode 100644 index e69de29..0000000 diff --git a/mix-manifest.json b/mix-manifest.json deleted file mode 100644 index 6be3df9..0000000 --- a/mix-manifest.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "/public/js/app.js": "/public/js/app.js", - "/public/css/app.css": "/public/css/app.css" -} diff --git a/package.json b/package.json deleted file mode 100644 index 41b2384..0000000 --- a/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "snipcli", - "version": "0.2.0", - "main": "index.js", - "author": "Mitchell Stanley ", - "license": "MIT", - "dependencies": { - "cross-env": "^5.2.0", - "laravel-mix": "^4.0.15", - "tailwindcss": "^1.0.1", - "lodash": "^4.17.13" - }, - "scripts": { - "dev": "yarn run development", - "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch": "yarn run development -- --watch", - "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", - "prod": "yarn run production", - "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" - }, - "devDependencies": { - "vue-template-compiler": "^2.6.10" - } -} diff --git a/public/css/app.css b/public/css/app.css deleted file mode 100644 index 631671e..0000000 --- a/public/css/app.css +++ /dev/null @@ -1,27300 +0,0 @@ -.snippet-list-item:first-child { - margin-top: 10px; -} - -.snippet-list-item { - /* @apply .border-2 .border-white .mb-2; */ - border-color: #fff; - border-width: 1px; - margin-bottom: 0.75rem; - background-color: #fff; - display: flex; - flex-direction: column; - position: relative; - box-sizing: border-box; - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1); - border-radius: 5px; - padding: 10px 13px; - overflow:hidden; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; -} - -.snippet-list-item:hover, .snippet-list-item:focus { - /* @apply .border-teal-light .bg-teal-lightest; */ - border: 1px solid rgba(51, 53, 16, 0.5); - outline: 0; -} - -.snippet-list-item.active { - border: 1px solid rgba(51, 53, 16, 0.5); -} - -.snippet-list-item--row-number { - border-width: 2px; - border-radius: 9999px; - border-color: #94AB0D; - margin-right: 0.5rem; - padding-left: 0; - padding-right: 0; - display: flex; - text-align: center; - justify-content: center; - align-items: center; - flex-grow: 0; - flex-shrink: 0; - cursor: pointer; - font-weight: 700; - width: 2.2rem; - padding-top:2px; -} - -.snippet-list-item:focus > .snippet-list-item--row-number, .snippet-list-item:hover > .snippet-list-item--row-number, .snippet-list-item.active > .snippet-list-item--row-number { - border-color: #CDED15; - background-color: #CDED15; -} - -.snippet-list-item .snippet-menu { - display:none; - width: 0px; -} - -.snippet-list-item.pinned .snippet-menu { - /* display:none; */ - display:block; - width: 40px; -} - -.snippet-list-item:hover .snippet-menu { - background-color: #fff; - width: 120px; - display:block; -} - -.snippet-list-item button:focus, .snippet-list-item button:active { - outline: 0; -} - -.snippet-menu svg path, .snippet-menu button svg path { - transition: 150ms; - transition-timing-function: ease-in-out; - -webkit-transition: 150ms; - -webkit-transition-timing-function: ease-in-out; -} - -.snippet-menu clr-icon:hover, .snippet-menu button:hover clr-icon { - fill: config('colors.snipline-lime'); -} - -.snippet-list-item--code-wrapper { - width: 100%; - overflow-y: hidden; - overflow-x: hidden; - margin-bottom: -17px; - height:37px; -} - -.snippet-list-item--code-preview { - /* @apply .overflow-x-scroll .font-mono; - overflow-y:hidden; */ - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - font-weight: 600; - width: 100%; - overflow-x: auto; - padding-bottom: 17px; /* Increase/decrease this value for cross-browser compatibility */ - white-space: nowrap; - cursor:pointer; - height:40px; - line-height:normal; - letter-spacing: 0.01em; - font-size: .875rem; - color: rgba(51, 53, 16, .8); -} - -.snippet-list-item--alias { - font-weight: 700; - color: #94AB0D; - font-size: 0.875rem; - letter-spacing: 0.3px; -} - -.snippet-list-item--heading { - font-weight: 400; - font-size: 0.875rem; - letter-spacing: 0.3px; - color: rgba(51, 53, 16, 0.7); -} - -.snippet-list-item clr-icon { - fill: #333510; - opacity: 0.7; -} - -.snippet-list-item.pinned .pin clr-icon { - fill: config('colors.snipline-lime'); - opacity: 0.7; -} - -.snippet-list-item.pinned .pin i { - fill: config('colors.snipline-lime'); - color: config('colors.snipline-lime'); -} - -.snippet-list-item--loading { - height: 58px; -}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ - -/* Document - ========================================================================== */ - -/** - * 1. Correct the line height in all browsers. - * 2. Prevent adjustments of font size after orientation changes in iOS. - */ - -html { - line-height: 1.15; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/* Sections - ========================================================================== */ - -/** - * Remove the margin in all browsers. - */ - -body { - margin: 0; -} - -/** - * Render the `main` element consistently in IE. - */ - -main { - display: block; -} - -/** - * Correct the font size and margin on `h1` elements within `section` and - * `article` contexts in Chrome, Firefox, and Safari. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* Grouping content - ========================================================================== */ - -/** - * 1. Add the correct box sizing in Firefox. - * 2. Show the overflow in Edge and IE. - */ - -hr { - box-sizing: content-box; /* 1 */ - height: 0; /* 1 */ - overflow: visible; /* 2 */ -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -pre { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Remove the gray background on active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * 1. Remove the bottom border in Chrome 57- - * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. - */ - -abbr[title] { - border-bottom: none; /* 1 */ - text-decoration: underline; /* 2 */ - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; /* 2 */ -} - -/** - * Add the correct font weight in Chrome, Edge, and Safari. - */ - -b, -strong { - font-weight: bolder; -} - -/** - * 1. Correct the inheritance and scaling of font size in all browsers. - * 2. Correct the odd `em` font sizing in all browsers. - */ - -code, -kbd, -samp { - font-family: monospace, monospace; /* 1 */ - font-size: 1em; /* 2 */ -} - -/** - * Add the correct font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` elements from affecting the line height in - * all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove the border on images inside links in IE 10. - */ - -img { - border-style: none; -} - -/* Forms - ========================================================================== */ - -/** - * 1. Change the font styles in all browsers. - * 2. Remove the margin in Firefox and Safari. - */ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} - -/** - * Show the overflow in IE. - * 1. Show the overflow in Edge. - */ - -button, -input { /* 1 */ - overflow: visible; -} - -/** - * Remove the inheritance of text transform in Edge, Firefox, and IE. - * 1. Remove the inheritance of text transform in Firefox. - */ - -button, -select { /* 1 */ - text-transform: none; -} - -/** - * Correct the inability to style clickable types in iOS and Safari. - */ - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} - -/** - * Remove the inner border and padding in Firefox. - */ - -button::-moz-focus-inner, -[type="button"]::-moz-focus-inner, -[type="reset"]::-moz-focus-inner, -[type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; -} - -/** - * Restore the focus styles unset by the previous rule. - */ - -button:-moz-focusring, -[type="button"]:-moz-focusring, -[type="reset"]:-moz-focusring, -[type="submit"]:-moz-focusring { - outline: 1px dotted ButtonText; -} - -/** - * Correct the padding in Firefox. - */ - -fieldset { - padding: 0.35em 0.75em 0.625em; -} - -/** - * 1. Correct the text wrapping in Edge and IE. - * 2. Correct the color inheritance from `fieldset` elements in IE. - * 3. Remove the padding so developers are not caught out when they zero out - * `fieldset` elements in all browsers. - */ - -legend { - box-sizing: border-box; /* 1 */ - color: inherit; /* 2 */ - display: table; /* 1 */ - max-width: 100%; /* 1 */ - padding: 0; /* 3 */ - white-space: normal; /* 1 */ -} - -/** - * Add the correct vertical alignment in Chrome, Firefox, and Opera. - */ - -progress { - vertical-align: baseline; -} - -/** - * Remove the default vertical scrollbar in IE 10+. - */ - -textarea { - overflow: auto; -} - -/** - * 1. Add the correct box sizing in IE 10. - * 2. Remove the padding in IE 10. - */ - -[type="checkbox"], -[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Correct the cursor style of increment and decrement buttons in Chrome. - */ - -[type="number"]::-webkit-inner-spin-button, -[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Correct the odd appearance in Chrome and Safari. - * 2. Correct the outline style in Safari. - */ - -[type="search"] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} - -/** - * Remove the inner padding in Chrome and Safari on macOS. - */ - -[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * 1. Correct the inability to style clickable types in iOS and Safari. - * 2. Change font properties to `inherit` in Safari. - */ - -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} - -/* Interactive - ========================================================================== */ - -/* - * Add the correct display in Edge, IE 10+, and Firefox. - */ - -details { - display: block; -} - -/* - * Add the correct display in all browsers. - */ - -summary { - display: list-item; -} - -/* Misc - ========================================================================== */ - -/** - * Add the correct display in IE 10+. - */ - -template { - display: none; -} - -/** - * Add the correct display in IE 10. - */ - -[hidden] { - display: none; -} - -/** - * Manually forked from SUIT CSS Base: https://github.com/suitcss/base - * A thin layer on top of normalize.css that provides a starting point more - * suitable for web applications. - */ - -/** - * 1. Prevent padding and border from affecting element width - * https://goo.gl/pYtbK7 - * 2. Change the default font family in all browsers (opinionated) - */ - -html { - box-sizing: border-box; /* 1 */ - font-family: sans-serif; /* 2 */ -} - -*, -*::before, -*::after { - box-sizing: inherit; -} - -/** - * Removes the default spacing and border for appropriate elements. - */ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -figure, -p, -pre { - margin: 0; -} - -button { - background: transparent; - padding: 0; -} - -/** - * Work around a Firefox/IE bug where the transparent `button` background - * results in a loss of the default `button` focus styles. - */ - -button:focus { - outline: 1px dotted; - outline: 5px auto -webkit-focus-ring-color; -} - -fieldset { - margin: 0; - padding: 0; -} - -ol, -ul { - list-style: none; - margin: 0; - padding: 0; -} - -/** - * Tailwind custom reset styles - */ - -/** - * 1. Use the system font stack as a sane default. - * 2. Use Tailwind's default "normal" line-height so the user isn't forced - * to override it to ensure consistency even when using the default theme. - */ - -html { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */ - line-height: 1.5; /* 2 */ -} - -/** - * Allow adding a border to an element by just adding a border-width. - * - * By default, the way the browser specifies that an element should have no - * border is by setting it's border-style to `none` in the user-agent - * stylesheet. - * - * In order to easily add borders to elements by just setting the `border-width` - * property, we change the default border-style for all elements to `solid`, and - * use border-width to hide them instead. This way our `border` utilities only - * need to set the `border-width` property instead of the entire `border` - * shorthand, making our border utilities much more straightforward to compose. - * - * https://github.com/tailwindcss/tailwindcss/pull/116 - */ - -*, -*::before, -*::after { - border-width: 0; - border-style: solid; - border-color: currentColor; -} - -/** - * Undo the `border-style: none` reset that Normalize applies to images so that - * our `border-{width}` utilities have the expected effect. - * - * The Normalize reset is unnecessary for us since we default the border-width - * to 0 on all elements. - * - * https://github.com/tailwindcss/tailwindcss/issues/362 - */ - -img { - border-style: solid; -} - -textarea { - resize: vertical; -} - -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - color: inherit; - opacity: 0.5; -} - -input::-moz-placeholder, -textarea::-moz-placeholder { - color: inherit; - opacity: 0.5; -} - -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - color: inherit; - opacity: 0.5; -} - -input::-ms-input-placeholder, -textarea::-ms-input-placeholder { - color: inherit; - opacity: 0.5; -} - -input::placeholder, -textarea::placeholder { - color: inherit; - opacity: 0.5; -} - -button, -[role="button"] { - cursor: pointer; -} - -table { - border-collapse: collapse; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/** - * Reset links to optimize for opt-in styling instead of - * opt-out. - */ - -a { - color: inherit; - text-decoration: inherit; -} - -/** - * Reset form element properties that are easy to forget to - * style explicitly so you don't inadvertently introduce - * styles that deviate from your design system. These styles - * supplement a partial reset that is already applied by - * normalize.css. - */ - -button, -input, -optgroup, -select, -textarea { - padding: 0; - line-height: inherit; - color: inherit; -} - -/** - * Use the configured 'mono' font family for elements that - * are expected to be rendered with a monospace font, falling - * back to the system monospace stack if there is no configured - * 'mono' font family. - */ - -pre, -code, -kbd, -samp { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -/** - * Make replaced elements `display: block` by default as that's - * the behavior you want almost all of the time. Inspired by - * CSS Remedy, with `svg` added as well. - * - * https://github.com/mozdevs/cssremedy/issues/14 - */ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - vertical-align: middle; -} - -/** - * Constrain images and videos to the parent width and preserve - * their instrinsic aspect ratio. - * - * https://github.com/mozdevs/cssremedy/issues/14 - */ - -img, -video { - max-width: 100%; - height: auto; -} - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -.appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.bg-fixed { - background-attachment: fixed; -} - -.bg-local { - background-attachment: local; -} - -.bg-scroll { - background-attachment: scroll; -} - -.bg-transparent { - background-color: transparent; -} - -.bg-black { - background-color: #000; -} - -.bg-grey-darkest { - background-color: #3d4852; -} - -.bg-grey-darker { - background-color: #606f7b; -} - -.bg-grey-dark { - background-color: #8795a1; -} - -.bg-grey { - background-color: #b8c2cc; -} - -.bg-grey-light { - background-color: #dae1e7; -} - -.bg-grey-lighter { - background-color: #f1f5f8; -} - -.bg-grey-lightest { - background-color: #f8fafc; -} - -.bg-white { - background-color: #fff; -} - -.bg-snipline-green-darker { - background-color: #333510; -} - -.bg-snipline-green-dark { - background-color: #94AB0D; -} - -.bg-snipline-lime-light { - background-color: #e1f471; -} - -.bg-snipline-lime { - background-color: #CDED15; -} - -.bg-snipline-lime-dark { - background-color: #94AB0D; -} - -.bg-snipline-green { - background-color: #15ED78; -} - -.bg-snipline-yellow { - background-color: #EDE415; -} - -.bg-snipline-grey-dark { - background-color: rgba(51, 53, 16, 0.8); -} - -.bg-snipline-grey { - background-color: #EBF1EF; -} - -.bg-snipline-grey-light { - background-color: #DAE1E7; -} - -.bg-snipline-grey-lighter { - background-color: #E0E8EE; -} - -.bg-success-100 { - background-color: #ECFBD7; -} - -.bg-success-200 { - background-color: #D5F8B0; -} - -.bg-success-300 { - background-color: #B3EC84; -} - -.bg-success-400 { - background-color: #90D962; -} - -.bg-success-500 { - background-color: #61C134; -} - -.bg-success-600 { - background-color: #46A526; -} - -.bg-success-700 { - background-color: #2F8A1A; -} - -.bg-success-800 { - background-color: #1C6F10; -} - -.bg-success-900 { - background-color: #0E5C09; -} - -.bg-info-100 { - background-color: #DFF6FE; -} - -.bg-info-200 { - background-color: #BFE9FE; -} - -.bg-info-300 { - background-color: #9FD9FE; -} - -.bg-info-400 { - background-color: #86CAFD; -} - -.bg-info-500 { - background-color: #5FB0FC; -} - -.bg-info-600 { - background-color: #4589D8; -} - -.bg-info-700 { - background-color: #2F67B5; -} - -.bg-info-800 { - background-color: #1E4892; -} - -.bg-info-900 { - background-color: #123278; -} - -.bg-danger-100 { - background-color: #FFEAD7; -} - -.bg-danger-200 { - background-color: #FFD0B0; -} - -.bg-danger-300 { - background-color: #FFB088; -} - -.bg-danger-400 { - background-color: #FF916B; -} - -.bg-danger-500 { - background-color: #FF5E3A; -} - -.bg-danger-600 { - background-color: #DB3D2A; -} - -.bg-danger-700 { - background-color: #B7221D; -} - -.bg-danger-800 { - background-color: #931218; -} - -.bg-danger-900 { - background-color: #7A0B18; -} - -.hover\:bg-transparent:hover { - background-color: transparent; -} - -.hover\:bg-black:hover { - background-color: #000; -} - -.hover\:bg-grey-darkest:hover { - background-color: #3d4852; -} - -.hover\:bg-grey-darker:hover { - background-color: #606f7b; -} - -.hover\:bg-grey-dark:hover { - background-color: #8795a1; -} - -.hover\:bg-grey:hover { - background-color: #b8c2cc; -} - -.hover\:bg-grey-light:hover { - background-color: #dae1e7; -} - -.hover\:bg-grey-lighter:hover { - background-color: #f1f5f8; -} - -.hover\:bg-grey-lightest:hover { - background-color: #f8fafc; -} - -.hover\:bg-white:hover { - background-color: #fff; -} - -.hover\:bg-snipline-green-darker:hover { - background-color: #333510; -} - -.hover\:bg-snipline-green-dark:hover { - background-color: #94AB0D; -} - -.hover\:bg-snipline-lime-light:hover { - background-color: #e1f471; -} - -.hover\:bg-snipline-lime:hover { - background-color: #CDED15; -} - -.hover\:bg-snipline-lime-dark:hover { - background-color: #94AB0D; -} - -.hover\:bg-snipline-green:hover { - background-color: #15ED78; -} - -.hover\:bg-snipline-yellow:hover { - background-color: #EDE415; -} - -.hover\:bg-snipline-grey-dark:hover { - background-color: rgba(51, 53, 16, 0.8); -} - -.hover\:bg-snipline-grey:hover { - background-color: #EBF1EF; -} - -.hover\:bg-snipline-grey-light:hover { - background-color: #DAE1E7; -} - -.hover\:bg-snipline-grey-lighter:hover { - background-color: #E0E8EE; -} - -.hover\:bg-success-100:hover { - background-color: #ECFBD7; -} - -.hover\:bg-success-200:hover { - background-color: #D5F8B0; -} - -.hover\:bg-success-300:hover { - background-color: #B3EC84; -} - -.hover\:bg-success-400:hover { - background-color: #90D962; -} - -.hover\:bg-success-500:hover { - background-color: #61C134; -} - -.hover\:bg-success-600:hover { - background-color: #46A526; -} - -.hover\:bg-success-700:hover { - background-color: #2F8A1A; -} - -.hover\:bg-success-800:hover { - background-color: #1C6F10; -} - -.hover\:bg-success-900:hover { - background-color: #0E5C09; -} - -.hover\:bg-info-100:hover { - background-color: #DFF6FE; -} - -.hover\:bg-info-200:hover { - background-color: #BFE9FE; -} - -.hover\:bg-info-300:hover { - background-color: #9FD9FE; -} - -.hover\:bg-info-400:hover { - background-color: #86CAFD; -} - -.hover\:bg-info-500:hover { - background-color: #5FB0FC; -} - -.hover\:bg-info-600:hover { - background-color: #4589D8; -} - -.hover\:bg-info-700:hover { - background-color: #2F67B5; -} - -.hover\:bg-info-800:hover { - background-color: #1E4892; -} - -.hover\:bg-info-900:hover { - background-color: #123278; -} - -.hover\:bg-danger-100:hover { - background-color: #FFEAD7; -} - -.hover\:bg-danger-200:hover { - background-color: #FFD0B0; -} - -.hover\:bg-danger-300:hover { - background-color: #FFB088; -} - -.hover\:bg-danger-400:hover { - background-color: #FF916B; -} - -.hover\:bg-danger-500:hover { - background-color: #FF5E3A; -} - -.hover\:bg-danger-600:hover { - background-color: #DB3D2A; -} - -.hover\:bg-danger-700:hover { - background-color: #B7221D; -} - -.hover\:bg-danger-800:hover { - background-color: #931218; -} - -.hover\:bg-danger-900:hover { - background-color: #7A0B18; -} - -.focus\:bg-transparent:focus { - background-color: transparent; -} - -.focus\:bg-black:focus { - background-color: #000; -} - -.focus\:bg-grey-darkest:focus { - background-color: #3d4852; -} - -.focus\:bg-grey-darker:focus { - background-color: #606f7b; -} - -.focus\:bg-grey-dark:focus { - background-color: #8795a1; -} - -.focus\:bg-grey:focus { - background-color: #b8c2cc; -} - -.focus\:bg-grey-light:focus { - background-color: #dae1e7; -} - -.focus\:bg-grey-lighter:focus { - background-color: #f1f5f8; -} - -.focus\:bg-grey-lightest:focus { - background-color: #f8fafc; -} - -.focus\:bg-white:focus { - background-color: #fff; -} - -.focus\:bg-snipline-green-darker:focus { - background-color: #333510; -} - -.focus\:bg-snipline-green-dark:focus { - background-color: #94AB0D; -} - -.focus\:bg-snipline-lime-light:focus { - background-color: #e1f471; -} - -.focus\:bg-snipline-lime:focus { - background-color: #CDED15; -} - -.focus\:bg-snipline-lime-dark:focus { - background-color: #94AB0D; -} - -.focus\:bg-snipline-green:focus { - background-color: #15ED78; -} - -.focus\:bg-snipline-yellow:focus { - background-color: #EDE415; -} - -.focus\:bg-snipline-grey-dark:focus { - background-color: rgba(51, 53, 16, 0.8); -} - -.focus\:bg-snipline-grey:focus { - background-color: #EBF1EF; -} - -.focus\:bg-snipline-grey-light:focus { - background-color: #DAE1E7; -} - -.focus\:bg-snipline-grey-lighter:focus { - background-color: #E0E8EE; -} - -.focus\:bg-success-100:focus { - background-color: #ECFBD7; -} - -.focus\:bg-success-200:focus { - background-color: #D5F8B0; -} - -.focus\:bg-success-300:focus { - background-color: #B3EC84; -} - -.focus\:bg-success-400:focus { - background-color: #90D962; -} - -.focus\:bg-success-500:focus { - background-color: #61C134; -} - -.focus\:bg-success-600:focus { - background-color: #46A526; -} - -.focus\:bg-success-700:focus { - background-color: #2F8A1A; -} - -.focus\:bg-success-800:focus { - background-color: #1C6F10; -} - -.focus\:bg-success-900:focus { - background-color: #0E5C09; -} - -.focus\:bg-info-100:focus { - background-color: #DFF6FE; -} - -.focus\:bg-info-200:focus { - background-color: #BFE9FE; -} - -.focus\:bg-info-300:focus { - background-color: #9FD9FE; -} - -.focus\:bg-info-400:focus { - background-color: #86CAFD; -} - -.focus\:bg-info-500:focus { - background-color: #5FB0FC; -} - -.focus\:bg-info-600:focus { - background-color: #4589D8; -} - -.focus\:bg-info-700:focus { - background-color: #2F67B5; -} - -.focus\:bg-info-800:focus { - background-color: #1E4892; -} - -.focus\:bg-info-900:focus { - background-color: #123278; -} - -.focus\:bg-danger-100:focus { - background-color: #FFEAD7; -} - -.focus\:bg-danger-200:focus { - background-color: #FFD0B0; -} - -.focus\:bg-danger-300:focus { - background-color: #FFB088; -} - -.focus\:bg-danger-400:focus { - background-color: #FF916B; -} - -.focus\:bg-danger-500:focus { - background-color: #FF5E3A; -} - -.focus\:bg-danger-600:focus { - background-color: #DB3D2A; -} - -.focus\:bg-danger-700:focus { - background-color: #B7221D; -} - -.focus\:bg-danger-800:focus { - background-color: #931218; -} - -.focus\:bg-danger-900:focus { - background-color: #7A0B18; -} - -.bg-bottom { - background-position: bottom; -} - -.bg-center { - background-position: center; -} - -.bg-left { - background-position: left; -} - -.bg-left-bottom { - background-position: left bottom; -} - -.bg-left-top { - background-position: left top; -} - -.bg-right { - background-position: right; -} - -.bg-right-bottom { - background-position: right bottom; -} - -.bg-right-top { - background-position: right top; -} - -.bg-top { - background-position: top; -} - -.bg-repeat { - background-repeat: repeat; -} - -.bg-no-repeat { - background-repeat: no-repeat; -} - -.bg-repeat-x { - background-repeat: repeat-x; -} - -.bg-repeat-y { - background-repeat: repeat-y; -} - -.bg-repeat-round { - background-repeat: round; -} - -.bg-repeat-space { - background-repeat: space; -} - -.bg-auto { - background-size: auto; -} - -.bg-cover { - background-size: cover; -} - -.bg-contain { - background-size: contain; -} - -.border-collapse { - border-collapse: collapse; -} - -.border-separate { - border-collapse: separate; -} - -.border-transparent { - border-color: transparent; -} - -.border-black { - border-color: #000; -} - -.border-grey-darkest { - border-color: #3d4852; -} - -.border-grey-darker { - border-color: #606f7b; -} - -.border-grey-dark { - border-color: #8795a1; -} - -.border-grey { - border-color: #b8c2cc; -} - -.border-grey-light { - border-color: #dae1e7; -} - -.border-grey-lighter { - border-color: #f1f5f8; -} - -.border-grey-lightest { - border-color: #f8fafc; -} - -.border-white { - border-color: #fff; -} - -.border-snipline-green-darker { - border-color: #333510; -} - -.border-snipline-green-dark { - border-color: #94AB0D; -} - -.border-snipline-lime-light { - border-color: #e1f471; -} - -.border-snipline-lime { - border-color: #CDED15; -} - -.border-snipline-lime-dark { - border-color: #94AB0D; -} - -.border-snipline-green { - border-color: #15ED78; -} - -.border-snipline-yellow { - border-color: #EDE415; -} - -.border-snipline-grey-dark { - border-color: rgba(51, 53, 16, 0.8); -} - -.border-snipline-grey { - border-color: #EBF1EF; -} - -.border-snipline-grey-light { - border-color: #DAE1E7; -} - -.border-snipline-grey-lighter { - border-color: #E0E8EE; -} - -.border-success-100 { - border-color: #ECFBD7; -} - -.border-success-200 { - border-color: #D5F8B0; -} - -.border-success-300 { - border-color: #B3EC84; -} - -.border-success-400 { - border-color: #90D962; -} - -.border-success-500 { - border-color: #61C134; -} - -.border-success-600 { - border-color: #46A526; -} - -.border-success-700 { - border-color: #2F8A1A; -} - -.border-success-800 { - border-color: #1C6F10; -} - -.border-success-900 { - border-color: #0E5C09; -} - -.border-info-100 { - border-color: #DFF6FE; -} - -.border-info-200 { - border-color: #BFE9FE; -} - -.border-info-300 { - border-color: #9FD9FE; -} - -.border-info-400 { - border-color: #86CAFD; -} - -.border-info-500 { - border-color: #5FB0FC; -} - -.border-info-600 { - border-color: #4589D8; -} - -.border-info-700 { - border-color: #2F67B5; -} - -.border-info-800 { - border-color: #1E4892; -} - -.border-info-900 { - border-color: #123278; -} - -.border-danger-100 { - border-color: #FFEAD7; -} - -.border-danger-200 { - border-color: #FFD0B0; -} - -.border-danger-300 { - border-color: #FFB088; -} - -.border-danger-400 { - border-color: #FF916B; -} - -.border-danger-500 { - border-color: #FF5E3A; -} - -.border-danger-600 { - border-color: #DB3D2A; -} - -.border-danger-700 { - border-color: #B7221D; -} - -.border-danger-800 { - border-color: #931218; -} - -.border-danger-900 { - border-color: #7A0B18; -} - -.hover\:border-transparent:hover { - border-color: transparent; -} - -.hover\:border-black:hover { - border-color: #000; -} - -.hover\:border-grey-darkest:hover { - border-color: #3d4852; -} - -.hover\:border-grey-darker:hover { - border-color: #606f7b; -} - -.hover\:border-grey-dark:hover { - border-color: #8795a1; -} - -.hover\:border-grey:hover { - border-color: #b8c2cc; -} - -.hover\:border-grey-light:hover { - border-color: #dae1e7; -} - -.hover\:border-grey-lighter:hover { - border-color: #f1f5f8; -} - -.hover\:border-grey-lightest:hover { - border-color: #f8fafc; -} - -.hover\:border-white:hover { - border-color: #fff; -} - -.hover\:border-snipline-green-darker:hover { - border-color: #333510; -} - -.hover\:border-snipline-green-dark:hover { - border-color: #94AB0D; -} - -.hover\:border-snipline-lime-light:hover { - border-color: #e1f471; -} - -.hover\:border-snipline-lime:hover { - border-color: #CDED15; -} - -.hover\:border-snipline-lime-dark:hover { - border-color: #94AB0D; -} - -.hover\:border-snipline-green:hover { - border-color: #15ED78; -} - -.hover\:border-snipline-yellow:hover { - border-color: #EDE415; -} - -.hover\:border-snipline-grey-dark:hover { - border-color: rgba(51, 53, 16, 0.8); -} - -.hover\:border-snipline-grey:hover { - border-color: #EBF1EF; -} - -.hover\:border-snipline-grey-light:hover { - border-color: #DAE1E7; -} - -.hover\:border-snipline-grey-lighter:hover { - border-color: #E0E8EE; -} - -.hover\:border-success-100:hover { - border-color: #ECFBD7; -} - -.hover\:border-success-200:hover { - border-color: #D5F8B0; -} - -.hover\:border-success-300:hover { - border-color: #B3EC84; -} - -.hover\:border-success-400:hover { - border-color: #90D962; -} - -.hover\:border-success-500:hover { - border-color: #61C134; -} - -.hover\:border-success-600:hover { - border-color: #46A526; -} - -.hover\:border-success-700:hover { - border-color: #2F8A1A; -} - -.hover\:border-success-800:hover { - border-color: #1C6F10; -} - -.hover\:border-success-900:hover { - border-color: #0E5C09; -} - -.hover\:border-info-100:hover { - border-color: #DFF6FE; -} - -.hover\:border-info-200:hover { - border-color: #BFE9FE; -} - -.hover\:border-info-300:hover { - border-color: #9FD9FE; -} - -.hover\:border-info-400:hover { - border-color: #86CAFD; -} - -.hover\:border-info-500:hover { - border-color: #5FB0FC; -} - -.hover\:border-info-600:hover { - border-color: #4589D8; -} - -.hover\:border-info-700:hover { - border-color: #2F67B5; -} - -.hover\:border-info-800:hover { - border-color: #1E4892; -} - -.hover\:border-info-900:hover { - border-color: #123278; -} - -.hover\:border-danger-100:hover { - border-color: #FFEAD7; -} - -.hover\:border-danger-200:hover { - border-color: #FFD0B0; -} - -.hover\:border-danger-300:hover { - border-color: #FFB088; -} - -.hover\:border-danger-400:hover { - border-color: #FF916B; -} - -.hover\:border-danger-500:hover { - border-color: #FF5E3A; -} - -.hover\:border-danger-600:hover { - border-color: #DB3D2A; -} - -.hover\:border-danger-700:hover { - border-color: #B7221D; -} - -.hover\:border-danger-800:hover { - border-color: #931218; -} - -.hover\:border-danger-900:hover { - border-color: #7A0B18; -} - -.focus\:border-transparent:focus { - border-color: transparent; -} - -.focus\:border-black:focus { - border-color: #000; -} - -.focus\:border-grey-darkest:focus { - border-color: #3d4852; -} - -.focus\:border-grey-darker:focus { - border-color: #606f7b; -} - -.focus\:border-grey-dark:focus { - border-color: #8795a1; -} - -.focus\:border-grey:focus { - border-color: #b8c2cc; -} - -.focus\:border-grey-light:focus { - border-color: #dae1e7; -} - -.focus\:border-grey-lighter:focus { - border-color: #f1f5f8; -} - -.focus\:border-grey-lightest:focus { - border-color: #f8fafc; -} - -.focus\:border-white:focus { - border-color: #fff; -} - -.focus\:border-snipline-green-darker:focus { - border-color: #333510; -} - -.focus\:border-snipline-green-dark:focus { - border-color: #94AB0D; -} - -.focus\:border-snipline-lime-light:focus { - border-color: #e1f471; -} - -.focus\:border-snipline-lime:focus { - border-color: #CDED15; -} - -.focus\:border-snipline-lime-dark:focus { - border-color: #94AB0D; -} - -.focus\:border-snipline-green:focus { - border-color: #15ED78; -} - -.focus\:border-snipline-yellow:focus { - border-color: #EDE415; -} - -.focus\:border-snipline-grey-dark:focus { - border-color: rgba(51, 53, 16, 0.8); -} - -.focus\:border-snipline-grey:focus { - border-color: #EBF1EF; -} - -.focus\:border-snipline-grey-light:focus { - border-color: #DAE1E7; -} - -.focus\:border-snipline-grey-lighter:focus { - border-color: #E0E8EE; -} - -.focus\:border-success-100:focus { - border-color: #ECFBD7; -} - -.focus\:border-success-200:focus { - border-color: #D5F8B0; -} - -.focus\:border-success-300:focus { - border-color: #B3EC84; -} - -.focus\:border-success-400:focus { - border-color: #90D962; -} - -.focus\:border-success-500:focus { - border-color: #61C134; -} - -.focus\:border-success-600:focus { - border-color: #46A526; -} - -.focus\:border-success-700:focus { - border-color: #2F8A1A; -} - -.focus\:border-success-800:focus { - border-color: #1C6F10; -} - -.focus\:border-success-900:focus { - border-color: #0E5C09; -} - -.focus\:border-info-100:focus { - border-color: #DFF6FE; -} - -.focus\:border-info-200:focus { - border-color: #BFE9FE; -} - -.focus\:border-info-300:focus { - border-color: #9FD9FE; -} - -.focus\:border-info-400:focus { - border-color: #86CAFD; -} - -.focus\:border-info-500:focus { - border-color: #5FB0FC; -} - -.focus\:border-info-600:focus { - border-color: #4589D8; -} - -.focus\:border-info-700:focus { - border-color: #2F67B5; -} - -.focus\:border-info-800:focus { - border-color: #1E4892; -} - -.focus\:border-info-900:focus { - border-color: #123278; -} - -.focus\:border-danger-100:focus { - border-color: #FFEAD7; -} - -.focus\:border-danger-200:focus { - border-color: #FFD0B0; -} - -.focus\:border-danger-300:focus { - border-color: #FFB088; -} - -.focus\:border-danger-400:focus { - border-color: #FF916B; -} - -.focus\:border-danger-500:focus { - border-color: #FF5E3A; -} - -.focus\:border-danger-600:focus { - border-color: #DB3D2A; -} - -.focus\:border-danger-700:focus { - border-color: #B7221D; -} - -.focus\:border-danger-800:focus { - border-color: #931218; -} - -.focus\:border-danger-900:focus { - border-color: #7A0B18; -} - -.rounded-none { - border-radius: 0; -} - -.rounded-sm { - border-radius: 0.125rem; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-lg { - border-radius: 0.5rem; -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-t-none { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.rounded-r-none { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.rounded-b-none { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.rounded-l-none { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.rounded-t-sm { - border-top-left-radius: 0.125rem; - border-top-right-radius: 0.125rem; -} - -.rounded-r-sm { - border-top-right-radius: 0.125rem; - border-bottom-right-radius: 0.125rem; -} - -.rounded-b-sm { - border-bottom-right-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; -} - -.rounded-l-sm { - border-top-left-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; -} - -.rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} - -.rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} - -.rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.rounded-t-lg { - border-top-left-radius: 0.5rem; - border-top-right-radius: 0.5rem; -} - -.rounded-r-lg { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; -} - -.rounded-b-lg { - border-bottom-right-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; -} - -.rounded-l-lg { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; -} - -.rounded-t-full { - border-top-left-radius: 9999px; - border-top-right-radius: 9999px; -} - -.rounded-r-full { - border-top-right-radius: 9999px; - border-bottom-right-radius: 9999px; -} - -.rounded-b-full { - border-bottom-right-radius: 9999px; - border-bottom-left-radius: 9999px; -} - -.rounded-l-full { - border-top-left-radius: 9999px; - border-bottom-left-radius: 9999px; -} - -.rounded-tl-none { - border-top-left-radius: 0; -} - -.rounded-tr-none { - border-top-right-radius: 0; -} - -.rounded-br-none { - border-bottom-right-radius: 0; -} - -.rounded-bl-none { - border-bottom-left-radius: 0; -} - -.rounded-tl-sm { - border-top-left-radius: 0.125rem; -} - -.rounded-tr-sm { - border-top-right-radius: 0.125rem; -} - -.rounded-br-sm { - border-bottom-right-radius: 0.125rem; -} - -.rounded-bl-sm { - border-bottom-left-radius: 0.125rem; -} - -.rounded-tl { - border-top-left-radius: 0.25rem; -} - -.rounded-tr { - border-top-right-radius: 0.25rem; -} - -.rounded-br { - border-bottom-right-radius: 0.25rem; -} - -.rounded-bl { - border-bottom-left-radius: 0.25rem; -} - -.rounded-tl-lg { - border-top-left-radius: 0.5rem; -} - -.rounded-tr-lg { - border-top-right-radius: 0.5rem; -} - -.rounded-br-lg { - border-bottom-right-radius: 0.5rem; -} - -.rounded-bl-lg { - border-bottom-left-radius: 0.5rem; -} - -.rounded-tl-full { - border-top-left-radius: 9999px; -} - -.rounded-tr-full { - border-top-right-radius: 9999px; -} - -.rounded-br-full { - border-bottom-right-radius: 9999px; -} - -.rounded-bl-full { - border-bottom-left-radius: 9999px; -} - -.border-solid { - border-style: solid; -} - -.border-dashed { - border-style: dashed; -} - -.border-dotted { - border-style: dotted; -} - -.border-none { - border-style: none; -} - -.border-0 { - border-width: 0; -} - -.border-2 { - border-width: 2px; -} - -.border-4 { - border-width: 4px; -} - -.border-8 { - border-width: 8px; -} - -.border { - border-width: 1px; -} - -.border-t-0 { - border-top-width: 0; -} - -.border-r-0 { - border-right-width: 0; -} - -.border-b-0 { - border-bottom-width: 0; -} - -.border-l-0 { - border-left-width: 0; -} - -.border-t-2 { - border-top-width: 2px; -} - -.border-r-2 { - border-right-width: 2px; -} - -.border-b-2 { - border-bottom-width: 2px; -} - -.border-l-2 { - border-left-width: 2px; -} - -.border-t-4 { - border-top-width: 4px; -} - -.border-r-4 { - border-right-width: 4px; -} - -.border-b-4 { - border-bottom-width: 4px; -} - -.border-l-4 { - border-left-width: 4px; -} - -.border-t-8 { - border-top-width: 8px; -} - -.border-r-8 { - border-right-width: 8px; -} - -.border-b-8 { - border-bottom-width: 8px; -} - -.border-l-8 { - border-left-width: 8px; -} - -.border-t { - border-top-width: 1px; -} - -.border-r { - border-right-width: 1px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-l { - border-left-width: 1px; -} - -.cursor-auto { - cursor: auto; -} - -.cursor-default { - cursor: default; -} - -.cursor-pointer { - cursor: pointer; -} - -.cursor-wait { - cursor: wait; -} - -.cursor-text { - cursor: text; -} - -.cursor-move { - cursor: move; -} - -.cursor-not-allowed { - cursor: not-allowed; -} - -.block { - display: block; -} - -.inline-block { - display: inline-block; -} - -.inline { - display: inline; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.table-row { - display: table-row; -} - -.table-cell { - display: table-cell; -} - -.hidden { - display: none; -} - -.flex-row { - flex-direction: row; -} - -.flex-row-reverse { - flex-direction: row-reverse; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse; -} - -.flex-no-wrap { - flex-wrap: nowrap; -} - -.items-start { - align-items: flex-start; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.items-baseline { - align-items: baseline; -} - -.items-stretch { - align-items: stretch; -} - -.self-auto { - align-self: auto; -} - -.self-start { - align-self: flex-start; -} - -.self-end { - align-self: flex-end; -} - -.self-center { - align-self: center; -} - -.self-stretch { - align-self: stretch; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.justify-around { - justify-content: space-around; -} - -.content-center { - align-content: center; -} - -.content-start { - align-content: flex-start; -} - -.content-end { - align-content: flex-end; -} - -.content-between { - align-content: space-between; -} - -.content-around { - align-content: space-around; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-auto { - flex: 1 1 auto; -} - -.flex-initial { - flex: 0 1 auto; -} - -.flex-none { - flex: none; -} - -.flex-grow-0 { - flex-grow: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.flex-shrink { - flex-shrink: 1; -} - -.order-1 { - order: 1; -} - -.order-2 { - order: 2; -} - -.order-3 { - order: 3; -} - -.order-4 { - order: 4; -} - -.order-5 { - order: 5; -} - -.order-6 { - order: 6; -} - -.order-7 { - order: 7; -} - -.order-8 { - order: 8; -} - -.order-9 { - order: 9; -} - -.order-10 { - order: 10; -} - -.order-11 { - order: 11; -} - -.order-12 { - order: 12; -} - -.order-first { - order: -9999; -} - -.order-last { - order: 9999; -} - -.order-none { - order: 0; -} - -.float-right { - float: right; -} - -.float-left { - float: left; -} - -.float-none { - float: none; -} - -.clearfix:after { - content: ""; - display: table; - clear: both; -} - -.font-sans { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; -} - -.font-serif { - font-family: Georgia, Cambria, "Times New Roman", Times, serif; -} - -.font-mono { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -.font-hairline { - font-weight: 100; -} - -.font-thin { - font-weight: 200; -} - -.font-light { - font-weight: 300; -} - -.font-normal { - font-weight: 400; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.font-bold { - font-weight: 700; -} - -.font-extrabold { - font-weight: 800; -} - -.font-black { - font-weight: 900; -} - -.hover\:font-hairline:hover { - font-weight: 100; -} - -.hover\:font-thin:hover { - font-weight: 200; -} - -.hover\:font-light:hover { - font-weight: 300; -} - -.hover\:font-normal:hover { - font-weight: 400; -} - -.hover\:font-medium:hover { - font-weight: 500; -} - -.hover\:font-semibold:hover { - font-weight: 600; -} - -.hover\:font-bold:hover { - font-weight: 700; -} - -.hover\:font-extrabold:hover { - font-weight: 800; -} - -.hover\:font-black:hover { - font-weight: 900; -} - -.focus\:font-hairline:focus { - font-weight: 100; -} - -.focus\:font-thin:focus { - font-weight: 200; -} - -.focus\:font-light:focus { - font-weight: 300; -} - -.focus\:font-normal:focus { - font-weight: 400; -} - -.focus\:font-medium:focus { - font-weight: 500; -} - -.focus\:font-semibold:focus { - font-weight: 600; -} - -.focus\:font-bold:focus { - font-weight: 700; -} - -.focus\:font-extrabold:focus { - font-weight: 800; -} - -.focus\:font-black:focus { - font-weight: 900; -} - -.h-0 { - height: 0; -} - -.h-1 { - height: 0.25rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-4 { - height: 1rem; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-8 { - height: 2rem; -} - -.h-10 { - height: 2.5rem; -} - -.h-12 { - height: 3rem; -} - -.h-16 { - height: 4rem; -} - -.h-20 { - height: 5rem; -} - -.h-24 { - height: 6rem; -} - -.h-32 { - height: 8rem; -} - -.h-40 { - height: 10rem; -} - -.h-48 { - height: 12rem; -} - -.h-56 { - height: 14rem; -} - -.h-64 { - height: 16rem; -} - -.h-auto { - height: auto; -} - -.h-px { - height: 1px; -} - -.h-full { - height: 100%; -} - -.h-screen { - height: 100vh; -} - -.leading-none { - line-height: 1; -} - -.leading-tight { - line-height: 1.25; -} - -.leading-snug { - line-height: 1.375; -} - -.leading-normal { - line-height: 1.5; -} - -.leading-relaxed { - line-height: 1.625; -} - -.leading-loose { - line-height: 2; -} - -.list-inside { - list-style-position: inside; -} - -.list-outside { - list-style-position: outside; -} - -.list-none { - list-style-type: none; -} - -.list-disc { - list-style-type: disc; -} - -.list-decimal { - list-style-type: decimal; -} - -.m-0 { - margin: 0; -} - -.m-1 { - margin: 0.25rem; -} - -.m-2 { - margin: 0.5rem; -} - -.m-3 { - margin: 0.75rem; -} - -.m-4 { - margin: 1rem; -} - -.m-5 { - margin: 1.25rem; -} - -.m-6 { - margin: 1.5rem; -} - -.m-8 { - margin: 2rem; -} - -.m-10 { - margin: 2.5rem; -} - -.m-12 { - margin: 3rem; -} - -.m-16 { - margin: 4rem; -} - -.m-20 { - margin: 5rem; -} - -.m-24 { - margin: 6rem; -} - -.m-32 { - margin: 8rem; -} - -.m-40 { - margin: 10rem; -} - -.m-48 { - margin: 12rem; -} - -.m-56 { - margin: 14rem; -} - -.m-64 { - margin: 16rem; -} - -.m-auto { - margin: auto; -} - -.m-px { - margin: 1px; -} - -.-m-1 { - margin: -0.25rem; -} - -.-m-2 { - margin: -0.5rem; -} - -.-m-3 { - margin: -0.75rem; -} - -.-m-4 { - margin: -1rem; -} - -.-m-5 { - margin: -1.25rem; -} - -.-m-6 { - margin: -1.5rem; -} - -.-m-8 { - margin: -2rem; -} - -.-m-10 { - margin: -2.5rem; -} - -.-m-12 { - margin: -3rem; -} - -.-m-16 { - margin: -4rem; -} - -.-m-20 { - margin: -5rem; -} - -.-m-24 { - margin: -6rem; -} - -.-m-32 { - margin: -8rem; -} - -.-m-40 { - margin: -10rem; -} - -.-m-48 { - margin: -12rem; -} - -.-m-56 { - margin: -14rem; -} - -.-m-64 { - margin: -16rem; -} - -.-m-px { - margin: -1px; -} - -.my-0 { - margin-top: 0; - margin-bottom: 0; -} - -.mx-0 { - margin-left: 0; - margin-right: 0; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; -} - -.mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - -.my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; -} - -.mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; -} - -.my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; -} - -.my-8 { - margin-top: 2rem; - margin-bottom: 2rem; -} - -.mx-8 { - margin-left: 2rem; - margin-right: 2rem; -} - -.my-10 { - margin-top: 2.5rem; - margin-bottom: 2.5rem; -} - -.mx-10 { - margin-left: 2.5rem; - margin-right: 2.5rem; -} - -.my-12 { - margin-top: 3rem; - margin-bottom: 3rem; -} - -.mx-12 { - margin-left: 3rem; - margin-right: 3rem; -} - -.my-16 { - margin-top: 4rem; - margin-bottom: 4rem; -} - -.mx-16 { - margin-left: 4rem; - margin-right: 4rem; -} - -.my-20 { - margin-top: 5rem; - margin-bottom: 5rem; -} - -.mx-20 { - margin-left: 5rem; - margin-right: 5rem; -} - -.my-24 { - margin-top: 6rem; - margin-bottom: 6rem; -} - -.mx-24 { - margin-left: 6rem; - margin-right: 6rem; -} - -.my-32 { - margin-top: 8rem; - margin-bottom: 8rem; -} - -.mx-32 { - margin-left: 8rem; - margin-right: 8rem; -} - -.my-40 { - margin-top: 10rem; - margin-bottom: 10rem; -} - -.mx-40 { - margin-left: 10rem; - margin-right: 10rem; -} - -.my-48 { - margin-top: 12rem; - margin-bottom: 12rem; -} - -.mx-48 { - margin-left: 12rem; - margin-right: 12rem; -} - -.my-56 { - margin-top: 14rem; - margin-bottom: 14rem; -} - -.mx-56 { - margin-left: 14rem; - margin-right: 14rem; -} - -.my-64 { - margin-top: 16rem; - margin-bottom: 16rem; -} - -.mx-64 { - margin-left: 16rem; - margin-right: 16rem; -} - -.my-auto { - margin-top: auto; - margin-bottom: auto; -} - -.mx-auto { - margin-left: auto; - margin-right: auto; -} - -.my-px { - margin-top: 1px; - margin-bottom: 1px; -} - -.mx-px { - margin-left: 1px; - margin-right: 1px; -} - -.-my-1 { - margin-top: -0.25rem; - margin-bottom: -0.25rem; -} - -.-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; -} - -.-my-2 { - margin-top: -0.5rem; - margin-bottom: -0.5rem; -} - -.-mx-2 { - margin-left: -0.5rem; - margin-right: -0.5rem; -} - -.-my-3 { - margin-top: -0.75rem; - margin-bottom: -0.75rem; -} - -.-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; -} - -.-my-4 { - margin-top: -1rem; - margin-bottom: -1rem; -} - -.-mx-4 { - margin-left: -1rem; - margin-right: -1rem; -} - -.-my-5 { - margin-top: -1.25rem; - margin-bottom: -1.25rem; -} - -.-mx-5 { - margin-left: -1.25rem; - margin-right: -1.25rem; -} - -.-my-6 { - margin-top: -1.5rem; - margin-bottom: -1.5rem; -} - -.-mx-6 { - margin-left: -1.5rem; - margin-right: -1.5rem; -} - -.-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; -} - -.-mx-8 { - margin-left: -2rem; - margin-right: -2rem; -} - -.-my-10 { - margin-top: -2.5rem; - margin-bottom: -2.5rem; -} - -.-mx-10 { - margin-left: -2.5rem; - margin-right: -2.5rem; -} - -.-my-12 { - margin-top: -3rem; - margin-bottom: -3rem; -} - -.-mx-12 { - margin-left: -3rem; - margin-right: -3rem; -} - -.-my-16 { - margin-top: -4rem; - margin-bottom: -4rem; -} - -.-mx-16 { - margin-left: -4rem; - margin-right: -4rem; -} - -.-my-20 { - margin-top: -5rem; - margin-bottom: -5rem; -} - -.-mx-20 { - margin-left: -5rem; - margin-right: -5rem; -} - -.-my-24 { - margin-top: -6rem; - margin-bottom: -6rem; -} - -.-mx-24 { - margin-left: -6rem; - margin-right: -6rem; -} - -.-my-32 { - margin-top: -8rem; - margin-bottom: -8rem; -} - -.-mx-32 { - margin-left: -8rem; - margin-right: -8rem; -} - -.-my-40 { - margin-top: -10rem; - margin-bottom: -10rem; -} - -.-mx-40 { - margin-left: -10rem; - margin-right: -10rem; -} - -.-my-48 { - margin-top: -12rem; - margin-bottom: -12rem; -} - -.-mx-48 { - margin-left: -12rem; - margin-right: -12rem; -} - -.-my-56 { - margin-top: -14rem; - margin-bottom: -14rem; -} - -.-mx-56 { - margin-left: -14rem; - margin-right: -14rem; -} - -.-my-64 { - margin-top: -16rem; - margin-bottom: -16rem; -} - -.-mx-64 { - margin-left: -16rem; - margin-right: -16rem; -} - -.-my-px { - margin-top: -1px; - margin-bottom: -1px; -} - -.-mx-px { - margin-left: -1px; - margin-right: -1px; -} - -.mt-0 { - margin-top: 0; -} - -.mr-0 { - margin-right: 0; -} - -.mb-0 { - margin-bottom: 0; -} - -.ml-0 { - margin-left: 0; -} - -.mt-1 { - margin-top: 0.25rem; -} - -.mr-1 { - margin-right: 0.25rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.ml-1 { - margin-left: 0.25rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mr-2 { - margin-right: 0.5rem; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.mt-3 { - margin-top: 0.75rem; -} - -.mr-3 { - margin-right: 0.75rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.ml-3 { - margin-left: 0.75rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mr-4 { - margin-right: 1rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.mt-5 { - margin-top: 1.25rem; -} - -.mr-5 { - margin-right: 1.25rem; -} - -.mb-5 { - margin-bottom: 1.25rem; -} - -.ml-5 { - margin-left: 1.25rem; -} - -.mt-6 { - margin-top: 1.5rem; -} - -.mr-6 { - margin-right: 1.5rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.ml-6 { - margin-left: 1.5rem; -} - -.mt-8 { - margin-top: 2rem; -} - -.mr-8 { - margin-right: 2rem; -} - -.mb-8 { - margin-bottom: 2rem; -} - -.ml-8 { - margin-left: 2rem; -} - -.mt-10 { - margin-top: 2.5rem; -} - -.mr-10 { - margin-right: 2.5rem; -} - -.mb-10 { - margin-bottom: 2.5rem; -} - -.ml-10 { - margin-left: 2.5rem; -} - -.mt-12 { - margin-top: 3rem; -} - -.mr-12 { - margin-right: 3rem; -} - -.mb-12 { - margin-bottom: 3rem; -} - -.ml-12 { - margin-left: 3rem; -} - -.mt-16 { - margin-top: 4rem; -} - -.mr-16 { - margin-right: 4rem; -} - -.mb-16 { - margin-bottom: 4rem; -} - -.ml-16 { - margin-left: 4rem; -} - -.mt-20 { - margin-top: 5rem; -} - -.mr-20 { - margin-right: 5rem; -} - -.mb-20 { - margin-bottom: 5rem; -} - -.ml-20 { - margin-left: 5rem; -} - -.mt-24 { - margin-top: 6rem; -} - -.mr-24 { - margin-right: 6rem; -} - -.mb-24 { - margin-bottom: 6rem; -} - -.ml-24 { - margin-left: 6rem; -} - -.mt-32 { - margin-top: 8rem; -} - -.mr-32 { - margin-right: 8rem; -} - -.mb-32 { - margin-bottom: 8rem; -} - -.ml-32 { - margin-left: 8rem; -} - -.mt-40 { - margin-top: 10rem; -} - -.mr-40 { - margin-right: 10rem; -} - -.mb-40 { - margin-bottom: 10rem; -} - -.ml-40 { - margin-left: 10rem; -} - -.mt-48 { - margin-top: 12rem; -} - -.mr-48 { - margin-right: 12rem; -} - -.mb-48 { - margin-bottom: 12rem; -} - -.ml-48 { - margin-left: 12rem; -} - -.mt-56 { - margin-top: 14rem; -} - -.mr-56 { - margin-right: 14rem; -} - -.mb-56 { - margin-bottom: 14rem; -} - -.ml-56 { - margin-left: 14rem; -} - -.mt-64 { - margin-top: 16rem; -} - -.mr-64 { - margin-right: 16rem; -} - -.mb-64 { - margin-bottom: 16rem; -} - -.ml-64 { - margin-left: 16rem; -} - -.mt-auto { - margin-top: auto; -} - -.mr-auto { - margin-right: auto; -} - -.mb-auto { - margin-bottom: auto; -} - -.ml-auto { - margin-left: auto; -} - -.mt-px { - margin-top: 1px; -} - -.mr-px { - margin-right: 1px; -} - -.mb-px { - margin-bottom: 1px; -} - -.ml-px { - margin-left: 1px; -} - -.-mt-1 { - margin-top: -0.25rem; -} - -.-mr-1 { - margin-right: -0.25rem; -} - -.-mb-1 { - margin-bottom: -0.25rem; -} - -.-ml-1 { - margin-left: -0.25rem; -} - -.-mt-2 { - margin-top: -0.5rem; -} - -.-mr-2 { - margin-right: -0.5rem; -} - -.-mb-2 { - margin-bottom: -0.5rem; -} - -.-ml-2 { - margin-left: -0.5rem; -} - -.-mt-3 { - margin-top: -0.75rem; -} - -.-mr-3 { - margin-right: -0.75rem; -} - -.-mb-3 { - margin-bottom: -0.75rem; -} - -.-ml-3 { - margin-left: -0.75rem; -} - -.-mt-4 { - margin-top: -1rem; -} - -.-mr-4 { - margin-right: -1rem; -} - -.-mb-4 { - margin-bottom: -1rem; -} - -.-ml-4 { - margin-left: -1rem; -} - -.-mt-5 { - margin-top: -1.25rem; -} - -.-mr-5 { - margin-right: -1.25rem; -} - -.-mb-5 { - margin-bottom: -1.25rem; -} - -.-ml-5 { - margin-left: -1.25rem; -} - -.-mt-6 { - margin-top: -1.5rem; -} - -.-mr-6 { - margin-right: -1.5rem; -} - -.-mb-6 { - margin-bottom: -1.5rem; -} - -.-ml-6 { - margin-left: -1.5rem; -} - -.-mt-8 { - margin-top: -2rem; -} - -.-mr-8 { - margin-right: -2rem; -} - -.-mb-8 { - margin-bottom: -2rem; -} - -.-ml-8 { - margin-left: -2rem; -} - -.-mt-10 { - margin-top: -2.5rem; -} - -.-mr-10 { - margin-right: -2.5rem; -} - -.-mb-10 { - margin-bottom: -2.5rem; -} - -.-ml-10 { - margin-left: -2.5rem; -} - -.-mt-12 { - margin-top: -3rem; -} - -.-mr-12 { - margin-right: -3rem; -} - -.-mb-12 { - margin-bottom: -3rem; -} - -.-ml-12 { - margin-left: -3rem; -} - -.-mt-16 { - margin-top: -4rem; -} - -.-mr-16 { - margin-right: -4rem; -} - -.-mb-16 { - margin-bottom: -4rem; -} - -.-ml-16 { - margin-left: -4rem; -} - -.-mt-20 { - margin-top: -5rem; -} - -.-mr-20 { - margin-right: -5rem; -} - -.-mb-20 { - margin-bottom: -5rem; -} - -.-ml-20 { - margin-left: -5rem; -} - -.-mt-24 { - margin-top: -6rem; -} - -.-mr-24 { - margin-right: -6rem; -} - -.-mb-24 { - margin-bottom: -6rem; -} - -.-ml-24 { - margin-left: -6rem; -} - -.-mt-32 { - margin-top: -8rem; -} - -.-mr-32 { - margin-right: -8rem; -} - -.-mb-32 { - margin-bottom: -8rem; -} - -.-ml-32 { - margin-left: -8rem; -} - -.-mt-40 { - margin-top: -10rem; -} - -.-mr-40 { - margin-right: -10rem; -} - -.-mb-40 { - margin-bottom: -10rem; -} - -.-ml-40 { - margin-left: -10rem; -} - -.-mt-48 { - margin-top: -12rem; -} - -.-mr-48 { - margin-right: -12rem; -} - -.-mb-48 { - margin-bottom: -12rem; -} - -.-ml-48 { - margin-left: -12rem; -} - -.-mt-56 { - margin-top: -14rem; -} - -.-mr-56 { - margin-right: -14rem; -} - -.-mb-56 { - margin-bottom: -14rem; -} - -.-ml-56 { - margin-left: -14rem; -} - -.-mt-64 { - margin-top: -16rem; -} - -.-mr-64 { - margin-right: -16rem; -} - -.-mb-64 { - margin-bottom: -16rem; -} - -.-ml-64 { - margin-left: -16rem; -} - -.-mt-px { - margin-top: -1px; -} - -.-mr-px { - margin-right: -1px; -} - -.-mb-px { - margin-bottom: -1px; -} - -.-ml-px { - margin-left: -1px; -} - -.max-h-full { - max-height: 100%; -} - -.max-h-screen { - max-height: 100vh; -} - -.max-w-xs { - max-width: 20rem; -} - -.max-w-sm { - max-width: 24rem; -} - -.max-w-md { - max-width: 28rem; -} - -.max-w-lg { - max-width: 32rem; -} - -.max-w-xl { - max-width: 36rem; -} - -.max-w-2xl { - max-width: 42rem; -} - -.max-w-3xl { - max-width: 48rem; -} - -.max-w-4xl { - max-width: 56rem; -} - -.max-w-5xl { - max-width: 64rem; -} - -.max-w-6xl { - max-width: 72rem; -} - -.max-w-full { - max-width: 100%; -} - -.min-h-0 { - min-height: 0; -} - -.min-h-full { - min-height: 100%; -} - -.min-h-screen { - min-height: 100vh; -} - -.min-w-0 { - min-width: 0; -} - -.min-w-full { - min-width: 100%; -} - -.object-contain { - -o-object-fit: contain; - object-fit: contain; -} - -.object-cover { - -o-object-fit: cover; - object-fit: cover; -} - -.object-fill { - -o-object-fit: fill; - object-fit: fill; -} - -.object-none { - -o-object-fit: none; - object-fit: none; -} - -.object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; -} - -.object-bottom { - -o-object-position: bottom; - object-position: bottom; -} - -.object-center { - -o-object-position: center; - object-position: center; -} - -.object-left { - -o-object-position: left; - object-position: left; -} - -.object-left-bottom { - -o-object-position: left bottom; - object-position: left bottom; -} - -.object-left-top { - -o-object-position: left top; - object-position: left top; -} - -.object-right { - -o-object-position: right; - object-position: right; -} - -.object-right-bottom { - -o-object-position: right bottom; - object-position: right bottom; -} - -.object-right-top { - -o-object-position: right top; - object-position: right top; -} - -.object-top { - -o-object-position: top; - object-position: top; -} - -.opacity-0 { - opacity: 0; -} - -.opacity-25 { - opacity: 0.25; -} - -.opacity-50 { - opacity: 0.5; -} - -.opacity-75 { - opacity: 0.75; -} - -.opacity-100 { - opacity: 1; -} - -.outline-none { - outline: 0; -} - -.focus\:outline-none:focus { - outline: 0; -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-visible { - overflow: visible; -} - -.overflow-scroll { - overflow: scroll; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.overflow-y-hidden { - overflow-y: hidden; -} - -.overflow-x-visible { - overflow-x: visible; -} - -.overflow-y-visible { - overflow-y: visible; -} - -.overflow-x-scroll { - overflow-x: scroll; -} - -.overflow-y-scroll { - overflow-y: scroll; -} - -.scrolling-touch { - -webkit-overflow-scrolling: touch; -} - -.scrolling-auto { - -webkit-overflow-scrolling: auto; -} - -.p-0 { - padding: 0; -} - -.p-1 { - padding: 0.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-4 { - padding: 1rem; -} - -.p-5 { - padding: 1.25rem; -} - -.p-6 { - padding: 1.5rem; -} - -.p-8 { - padding: 2rem; -} - -.p-10 { - padding: 2.5rem; -} - -.p-12 { - padding: 3rem; -} - -.p-16 { - padding: 4rem; -} - -.p-20 { - padding: 5rem; -} - -.p-24 { - padding: 6rem; -} - -.p-32 { - padding: 8rem; -} - -.p-40 { - padding: 10rem; -} - -.p-48 { - padding: 12rem; -} - -.p-56 { - padding: 14rem; -} - -.p-64 { - padding: 16rem; -} - -.p-px { - padding: 1px; -} - -.py-0 { - padding-top: 0; - padding-bottom: 0; -} - -.px-0 { - padding-left: 0; - padding-right: 0; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; -} - -.px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; -} - -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.py-8 { - padding-top: 2rem; - padding-bottom: 2rem; -} - -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - -.py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; -} - -.px-10 { - padding-left: 2.5rem; - padding-right: 2.5rem; -} - -.py-12 { - padding-top: 3rem; - padding-bottom: 3rem; -} - -.px-12 { - padding-left: 3rem; - padding-right: 3rem; -} - -.py-16 { - padding-top: 4rem; - padding-bottom: 4rem; -} - -.px-16 { - padding-left: 4rem; - padding-right: 4rem; -} - -.py-20 { - padding-top: 5rem; - padding-bottom: 5rem; -} - -.px-20 { - padding-left: 5rem; - padding-right: 5rem; -} - -.py-24 { - padding-top: 6rem; - padding-bottom: 6rem; -} - -.px-24 { - padding-left: 6rem; - padding-right: 6rem; -} - -.py-32 { - padding-top: 8rem; - padding-bottom: 8rem; -} - -.px-32 { - padding-left: 8rem; - padding-right: 8rem; -} - -.py-40 { - padding-top: 10rem; - padding-bottom: 10rem; -} - -.px-40 { - padding-left: 10rem; - padding-right: 10rem; -} - -.py-48 { - padding-top: 12rem; - padding-bottom: 12rem; -} - -.px-48 { - padding-left: 12rem; - padding-right: 12rem; -} - -.py-56 { - padding-top: 14rem; - padding-bottom: 14rem; -} - -.px-56 { - padding-left: 14rem; - padding-right: 14rem; -} - -.py-64 { - padding-top: 16rem; - padding-bottom: 16rem; -} - -.px-64 { - padding-left: 16rem; - padding-right: 16rem; -} - -.py-px { - padding-top: 1px; - padding-bottom: 1px; -} - -.px-px { - padding-left: 1px; - padding-right: 1px; -} - -.pt-0 { - padding-top: 0; -} - -.pr-0 { - padding-right: 0; -} - -.pb-0 { - padding-bottom: 0; -} - -.pl-0 { - padding-left: 0; -} - -.pt-1 { - padding-top: 0.25rem; -} - -.pr-1 { - padding-right: 0.25rem; -} - -.pb-1 { - padding-bottom: 0.25rem; -} - -.pl-1 { - padding-left: 0.25rem; -} - -.pt-2 { - padding-top: 0.5rem; -} - -.pr-2 { - padding-right: 0.5rem; -} - -.pb-2 { - padding-bottom: 0.5rem; -} - -.pl-2 { - padding-left: 0.5rem; -} - -.pt-3 { - padding-top: 0.75rem; -} - -.pr-3 { - padding-right: 0.75rem; -} - -.pb-3 { - padding-bottom: 0.75rem; -} - -.pl-3 { - padding-left: 0.75rem; -} - -.pt-4 { - padding-top: 1rem; -} - -.pr-4 { - padding-right: 1rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pl-4 { - padding-left: 1rem; -} - -.pt-5 { - padding-top: 1.25rem; -} - -.pr-5 { - padding-right: 1.25rem; -} - -.pb-5 { - padding-bottom: 1.25rem; -} - -.pl-5 { - padding-left: 1.25rem; -} - -.pt-6 { - padding-top: 1.5rem; -} - -.pr-6 { - padding-right: 1.5rem; -} - -.pb-6 { - padding-bottom: 1.5rem; -} - -.pl-6 { - padding-left: 1.5rem; -} - -.pt-8 { - padding-top: 2rem; -} - -.pr-8 { - padding-right: 2rem; -} - -.pb-8 { - padding-bottom: 2rem; -} - -.pl-8 { - padding-left: 2rem; -} - -.pt-10 { - padding-top: 2.5rem; -} - -.pr-10 { - padding-right: 2.5rem; -} - -.pb-10 { - padding-bottom: 2.5rem; -} - -.pl-10 { - padding-left: 2.5rem; -} - -.pt-12 { - padding-top: 3rem; -} - -.pr-12 { - padding-right: 3rem; -} - -.pb-12 { - padding-bottom: 3rem; -} - -.pl-12 { - padding-left: 3rem; -} - -.pt-16 { - padding-top: 4rem; -} - -.pr-16 { - padding-right: 4rem; -} - -.pb-16 { - padding-bottom: 4rem; -} - -.pl-16 { - padding-left: 4rem; -} - -.pt-20 { - padding-top: 5rem; -} - -.pr-20 { - padding-right: 5rem; -} - -.pb-20 { - padding-bottom: 5rem; -} - -.pl-20 { - padding-left: 5rem; -} - -.pt-24 { - padding-top: 6rem; -} - -.pr-24 { - padding-right: 6rem; -} - -.pb-24 { - padding-bottom: 6rem; -} - -.pl-24 { - padding-left: 6rem; -} - -.pt-32 { - padding-top: 8rem; -} - -.pr-32 { - padding-right: 8rem; -} - -.pb-32 { - padding-bottom: 8rem; -} - -.pl-32 { - padding-left: 8rem; -} - -.pt-40 { - padding-top: 10rem; -} - -.pr-40 { - padding-right: 10rem; -} - -.pb-40 { - padding-bottom: 10rem; -} - -.pl-40 { - padding-left: 10rem; -} - -.pt-48 { - padding-top: 12rem; -} - -.pr-48 { - padding-right: 12rem; -} - -.pb-48 { - padding-bottom: 12rem; -} - -.pl-48 { - padding-left: 12rem; -} - -.pt-56 { - padding-top: 14rem; -} - -.pr-56 { - padding-right: 14rem; -} - -.pb-56 { - padding-bottom: 14rem; -} - -.pl-56 { - padding-left: 14rem; -} - -.pt-64 { - padding-top: 16rem; -} - -.pr-64 { - padding-right: 16rem; -} - -.pb-64 { - padding-bottom: 16rem; -} - -.pl-64 { - padding-left: 16rem; -} - -.pt-px { - padding-top: 1px; -} - -.pr-px { - padding-right: 1px; -} - -.pb-px { - padding-bottom: 1px; -} - -.pl-px { - padding-left: 1px; -} - -.pointer-events-none { - pointer-events: none; -} - -.pointer-events-auto { - pointer-events: auto; -} - -.static { - position: static; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.sticky { - position: -webkit-sticky; - position: sticky; -} - -.inset-0 { - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.inset-auto { - top: auto; - right: auto; - bottom: auto; - left: auto; -} - -.inset-y-0 { - top: 0; - bottom: 0; -} - -.inset-x-0 { - right: 0; - left: 0; -} - -.inset-y-auto { - top: auto; - bottom: auto; -} - -.inset-x-auto { - right: auto; - left: auto; -} - -.top-0 { - top: 0; -} - -.right-0 { - right: 0; -} - -.bottom-0 { - bottom: 0; -} - -.left-0 { - left: 0; -} - -.top-auto { - top: auto; -} - -.right-auto { - right: auto; -} - -.bottom-auto { - bottom: auto; -} - -.left-auto { - left: auto; -} - -.resize-none { - resize: none; -} - -.resize-y { - resize: vertical; -} - -.resize-x { - resize: horizontal; -} - -.resize { - resize: both; -} - -.shadow { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); -} - -.shadow-md { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); -} - -.shadow-lg { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); -} - -.shadow-xl { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); -} - -.shadow-2xl { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); -} - -.shadow-inner { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); -} - -.shadow-outline { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); -} - -.shadow-none { - box-shadow: none; -} - -.hover\:shadow:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); -} - -.hover\:shadow-md:hover { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); -} - -.hover\:shadow-lg:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); -} - -.hover\:shadow-xl:hover { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); -} - -.hover\:shadow-2xl:hover { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); -} - -.hover\:shadow-inner:hover { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); -} - -.hover\:shadow-outline:hover { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); -} - -.hover\:shadow-none:hover { - box-shadow: none; -} - -.focus\:shadow:focus { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); -} - -.focus\:shadow-md:focus { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); -} - -.focus\:shadow-lg:focus { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); -} - -.focus\:shadow-xl:focus { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); -} - -.focus\:shadow-2xl:focus { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); -} - -.focus\:shadow-inner:focus { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); -} - -.focus\:shadow-outline:focus { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); -} - -.focus\:shadow-none:focus { - box-shadow: none; -} - -.fill-current { - fill: currentColor; -} - -.stroke-current { - stroke: currentColor; -} - -.table-auto { - table-layout: auto; -} - -.table-fixed { - table-layout: fixed; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.text-justify { - text-align: justify; -} - -.text-transparent { - color: transparent; -} - -.text-black { - color: #000; -} - -.text-grey-darkest { - color: #3d4852; -} - -.text-grey-darker { - color: #606f7b; -} - -.text-grey-dark { - color: #8795a1; -} - -.text-grey { - color: #b8c2cc; -} - -.text-grey-light { - color: #dae1e7; -} - -.text-grey-lighter { - color: #f1f5f8; -} - -.text-grey-lightest { - color: #f8fafc; -} - -.text-white { - color: #fff; -} - -.text-snipline-green-darker { - color: #333510; -} - -.text-snipline-green-dark { - color: #94AB0D; -} - -.text-snipline-lime-light { - color: #e1f471; -} - -.text-snipline-lime { - color: #CDED15; -} - -.text-snipline-lime-dark { - color: #94AB0D; -} - -.text-snipline-green { - color: #15ED78; -} - -.text-snipline-yellow { - color: #EDE415; -} - -.text-snipline-grey-dark { - color: rgba(51, 53, 16, 0.8); -} - -.text-snipline-grey { - color: #EBF1EF; -} - -.text-snipline-grey-light { - color: #DAE1E7; -} - -.text-snipline-grey-lighter { - color: #E0E8EE; -} - -.text-success-100 { - color: #ECFBD7; -} - -.text-success-200 { - color: #D5F8B0; -} - -.text-success-300 { - color: #B3EC84; -} - -.text-success-400 { - color: #90D962; -} - -.text-success-500 { - color: #61C134; -} - -.text-success-600 { - color: #46A526; -} - -.text-success-700 { - color: #2F8A1A; -} - -.text-success-800 { - color: #1C6F10; -} - -.text-success-900 { - color: #0E5C09; -} - -.text-info-100 { - color: #DFF6FE; -} - -.text-info-200 { - color: #BFE9FE; -} - -.text-info-300 { - color: #9FD9FE; -} - -.text-info-400 { - color: #86CAFD; -} - -.text-info-500 { - color: #5FB0FC; -} - -.text-info-600 { - color: #4589D8; -} - -.text-info-700 { - color: #2F67B5; -} - -.text-info-800 { - color: #1E4892; -} - -.text-info-900 { - color: #123278; -} - -.text-danger-100 { - color: #FFEAD7; -} - -.text-danger-200 { - color: #FFD0B0; -} - -.text-danger-300 { - color: #FFB088; -} - -.text-danger-400 { - color: #FF916B; -} - -.text-danger-500 { - color: #FF5E3A; -} - -.text-danger-600 { - color: #DB3D2A; -} - -.text-danger-700 { - color: #B7221D; -} - -.text-danger-800 { - color: #931218; -} - -.text-danger-900 { - color: #7A0B18; -} - -.hover\:text-transparent:hover { - color: transparent; -} - -.hover\:text-black:hover { - color: #000; -} - -.hover\:text-grey-darkest:hover { - color: #3d4852; -} - -.hover\:text-grey-darker:hover { - color: #606f7b; -} - -.hover\:text-grey-dark:hover { - color: #8795a1; -} - -.hover\:text-grey:hover { - color: #b8c2cc; -} - -.hover\:text-grey-light:hover { - color: #dae1e7; -} - -.hover\:text-grey-lighter:hover { - color: #f1f5f8; -} - -.hover\:text-grey-lightest:hover { - color: #f8fafc; -} - -.hover\:text-white:hover { - color: #fff; -} - -.hover\:text-snipline-green-darker:hover { - color: #333510; -} - -.hover\:text-snipline-green-dark:hover { - color: #94AB0D; -} - -.hover\:text-snipline-lime-light:hover { - color: #e1f471; -} - -.hover\:text-snipline-lime:hover { - color: #CDED15; -} - -.hover\:text-snipline-lime-dark:hover { - color: #94AB0D; -} - -.hover\:text-snipline-green:hover { - color: #15ED78; -} - -.hover\:text-snipline-yellow:hover { - color: #EDE415; -} - -.hover\:text-snipline-grey-dark:hover { - color: rgba(51, 53, 16, 0.8); -} - -.hover\:text-snipline-grey:hover { - color: #EBF1EF; -} - -.hover\:text-snipline-grey-light:hover { - color: #DAE1E7; -} - -.hover\:text-snipline-grey-lighter:hover { - color: #E0E8EE; -} - -.hover\:text-success-100:hover { - color: #ECFBD7; -} - -.hover\:text-success-200:hover { - color: #D5F8B0; -} - -.hover\:text-success-300:hover { - color: #B3EC84; -} - -.hover\:text-success-400:hover { - color: #90D962; -} - -.hover\:text-success-500:hover { - color: #61C134; -} - -.hover\:text-success-600:hover { - color: #46A526; -} - -.hover\:text-success-700:hover { - color: #2F8A1A; -} - -.hover\:text-success-800:hover { - color: #1C6F10; -} - -.hover\:text-success-900:hover { - color: #0E5C09; -} - -.hover\:text-info-100:hover { - color: #DFF6FE; -} - -.hover\:text-info-200:hover { - color: #BFE9FE; -} - -.hover\:text-info-300:hover { - color: #9FD9FE; -} - -.hover\:text-info-400:hover { - color: #86CAFD; -} - -.hover\:text-info-500:hover { - color: #5FB0FC; -} - -.hover\:text-info-600:hover { - color: #4589D8; -} - -.hover\:text-info-700:hover { - color: #2F67B5; -} - -.hover\:text-info-800:hover { - color: #1E4892; -} - -.hover\:text-info-900:hover { - color: #123278; -} - -.hover\:text-danger-100:hover { - color: #FFEAD7; -} - -.hover\:text-danger-200:hover { - color: #FFD0B0; -} - -.hover\:text-danger-300:hover { - color: #FFB088; -} - -.hover\:text-danger-400:hover { - color: #FF916B; -} - -.hover\:text-danger-500:hover { - color: #FF5E3A; -} - -.hover\:text-danger-600:hover { - color: #DB3D2A; -} - -.hover\:text-danger-700:hover { - color: #B7221D; -} - -.hover\:text-danger-800:hover { - color: #931218; -} - -.hover\:text-danger-900:hover { - color: #7A0B18; -} - -.focus\:text-transparent:focus { - color: transparent; -} - -.focus\:text-black:focus { - color: #000; -} - -.focus\:text-grey-darkest:focus { - color: #3d4852; -} - -.focus\:text-grey-darker:focus { - color: #606f7b; -} - -.focus\:text-grey-dark:focus { - color: #8795a1; -} - -.focus\:text-grey:focus { - color: #b8c2cc; -} - -.focus\:text-grey-light:focus { - color: #dae1e7; -} - -.focus\:text-grey-lighter:focus { - color: #f1f5f8; -} - -.focus\:text-grey-lightest:focus { - color: #f8fafc; -} - -.focus\:text-white:focus { - color: #fff; -} - -.focus\:text-snipline-green-darker:focus { - color: #333510; -} - -.focus\:text-snipline-green-dark:focus { - color: #94AB0D; -} - -.focus\:text-snipline-lime-light:focus { - color: #e1f471; -} - -.focus\:text-snipline-lime:focus { - color: #CDED15; -} - -.focus\:text-snipline-lime-dark:focus { - color: #94AB0D; -} - -.focus\:text-snipline-green:focus { - color: #15ED78; -} - -.focus\:text-snipline-yellow:focus { - color: #EDE415; -} - -.focus\:text-snipline-grey-dark:focus { - color: rgba(51, 53, 16, 0.8); -} - -.focus\:text-snipline-grey:focus { - color: #EBF1EF; -} - -.focus\:text-snipline-grey-light:focus { - color: #DAE1E7; -} - -.focus\:text-snipline-grey-lighter:focus { - color: #E0E8EE; -} - -.focus\:text-success-100:focus { - color: #ECFBD7; -} - -.focus\:text-success-200:focus { - color: #D5F8B0; -} - -.focus\:text-success-300:focus { - color: #B3EC84; -} - -.focus\:text-success-400:focus { - color: #90D962; -} - -.focus\:text-success-500:focus { - color: #61C134; -} - -.focus\:text-success-600:focus { - color: #46A526; -} - -.focus\:text-success-700:focus { - color: #2F8A1A; -} - -.focus\:text-success-800:focus { - color: #1C6F10; -} - -.focus\:text-success-900:focus { - color: #0E5C09; -} - -.focus\:text-info-100:focus { - color: #DFF6FE; -} - -.focus\:text-info-200:focus { - color: #BFE9FE; -} - -.focus\:text-info-300:focus { - color: #9FD9FE; -} - -.focus\:text-info-400:focus { - color: #86CAFD; -} - -.focus\:text-info-500:focus { - color: #5FB0FC; -} - -.focus\:text-info-600:focus { - color: #4589D8; -} - -.focus\:text-info-700:focus { - color: #2F67B5; -} - -.focus\:text-info-800:focus { - color: #1E4892; -} - -.focus\:text-info-900:focus { - color: #123278; -} - -.focus\:text-danger-100:focus { - color: #FFEAD7; -} - -.focus\:text-danger-200:focus { - color: #FFD0B0; -} - -.focus\:text-danger-300:focus { - color: #FFB088; -} - -.focus\:text-danger-400:focus { - color: #FF916B; -} - -.focus\:text-danger-500:focus { - color: #FF5E3A; -} - -.focus\:text-danger-600:focus { - color: #DB3D2A; -} - -.focus\:text-danger-700:focus { - color: #B7221D; -} - -.focus\:text-danger-800:focus { - color: #931218; -} - -.focus\:text-danger-900:focus { - color: #7A0B18; -} - -.text-xs { - font-size: 0.75rem; -} - -.text-sm { - font-size: 0.875rem; -} - -.text-base { - font-size: 1rem; -} - -.text-lg { - font-size: 1.125rem; -} - -.text-xl { - font-size: 1.25rem; -} - -.text-2xl { - font-size: 1.5rem; -} - -.text-3xl { - font-size: 1.875rem; -} - -.text-4xl { - font-size: 2.25rem; -} - -.text-5xl { - font-size: 3rem; -} - -.text-6xl { - font-size: 4rem; -} - -.italic { - font-style: italic; -} - -.not-italic { - font-style: normal; -} - -.uppercase { - text-transform: uppercase; -} - -.lowercase { - text-transform: lowercase; -} - -.capitalize { - text-transform: capitalize; -} - -.normal-case { - text-transform: none; -} - -.underline { - text-decoration: underline; -} - -.line-through { - text-decoration: line-through; -} - -.no-underline { - text-decoration: none; -} - -.hover\:underline:hover { - text-decoration: underline; -} - -.hover\:line-through:hover { - text-decoration: line-through; -} - -.hover\:no-underline:hover { - text-decoration: none; -} - -.focus\:underline:focus { - text-decoration: underline; -} - -.focus\:line-through:focus { - text-decoration: line-through; -} - -.focus\:no-underline:focus { - text-decoration: none; -} - -.antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; -} - -.tracking-tighter { - letter-spacing: -0.05em; -} - -.tracking-tight { - letter-spacing: -0.025em; -} - -.tracking-normal { - letter-spacing: 0; -} - -.tracking-wide { - letter-spacing: 0.025em; -} - -.tracking-wider { - letter-spacing: 0.05em; -} - -.tracking-widest { - letter-spacing: 0.1em; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.select-text { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.select-all { - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; -} - -.select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; -} - -.align-baseline { - vertical-align: baseline; -} - -.align-top { - vertical-align: top; -} - -.align-middle { - vertical-align: middle; -} - -.align-bottom { - vertical-align: bottom; -} - -.align-text-top { - vertical-align: text-top; -} - -.align-text-bottom { - vertical-align: text-bottom; -} - -.visible { - visibility: visible; -} - -.invisible { - visibility: hidden; -} - -.whitespace-normal { - white-space: normal; -} - -.whitespace-no-wrap { - white-space: nowrap; -} - -.whitespace-pre { - white-space: pre; -} - -.whitespace-pre-line { - white-space: pre-line; -} - -.whitespace-pre-wrap { - white-space: pre-wrap; -} - -.break-normal { - overflow-wrap: normal; - word-break: normal; -} - -.break-words { - overflow-wrap: break-word; -} - -.break-all { - word-break: break-all; -} - -.truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.w-0 { - width: 0; -} - -.w-1 { - width: 0.25rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-3 { - width: 0.75rem; -} - -.w-4 { - width: 1rem; -} - -.w-5 { - width: 1.25rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-8 { - width: 2rem; -} - -.w-10 { - width: 2.5rem; -} - -.w-12 { - width: 3rem; -} - -.w-16 { - width: 4rem; -} - -.w-20 { - width: 5rem; -} - -.w-24 { - width: 6rem; -} - -.w-32 { - width: 8rem; -} - -.w-40 { - width: 10rem; -} - -.w-48 { - width: 12rem; -} - -.w-56 { - width: 14rem; -} - -.w-64 { - width: 16rem; -} - -.w-auto { - width: auto; -} - -.w-px { - width: 1px; -} - -.w-1\/2 { - width: 50%; -} - -.w-1\/3 { - width: 33.33333%; -} - -.w-2\/3 { - width: 66.66667%; -} - -.w-1\/4 { - width: 25%; -} - -.w-2\/4 { - width: 50%; -} - -.w-3\/4 { - width: 75%; -} - -.w-1\/5 { - width: 20%; -} - -.w-2\/5 { - width: 40%; -} - -.w-3\/5 { - width: 60%; -} - -.w-4\/5 { - width: 80%; -} - -.w-1\/6 { - width: 16.66667%; -} - -.w-2\/6 { - width: 33.33333%; -} - -.w-3\/6 { - width: 50%; -} - -.w-4\/6 { - width: 66.66667%; -} - -.w-5\/6 { - width: 83.33333%; -} - -.w-1\/12 { - width: 8.33333%; -} - -.w-2\/12 { - width: 16.66667%; -} - -.w-3\/12 { - width: 25%; -} - -.w-4\/12 { - width: 33.33333%; -} - -.w-5\/12 { - width: 41.66667%; -} - -.w-6\/12 { - width: 50%; -} - -.w-7\/12 { - width: 58.33333%; -} - -.w-8\/12 { - width: 66.66667%; -} - -.w-9\/12 { - width: 75%; -} - -.w-10\/12 { - width: 83.33333%; -} - -.w-11\/12 { - width: 91.66667%; -} - -.w-full { - width: 100%; -} - -.w-screen { - width: 100vw; -} - -.z-0 { - z-index: 0; -} - -.z-10 { - z-index: 10; -} - -.z-20 { - z-index: 20; -} - -.z-30 { - z-index: 30; -} - -.z-40 { - z-index: 40; -} - -.z-50 { - z-index: 50; -} - -.z-auto { - z-index: auto; -} - -@media (min-width: 640px) { - .sm\:appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } - - .sm\:bg-fixed { - background-attachment: fixed; - } - - .sm\:bg-local { - background-attachment: local; - } - - .sm\:bg-scroll { - background-attachment: scroll; - } - - .sm\:bg-transparent { - background-color: transparent; - } - - .sm\:bg-black { - background-color: #000; - } - - .sm\:bg-grey-darkest { - background-color: #3d4852; - } - - .sm\:bg-grey-darker { - background-color: #606f7b; - } - - .sm\:bg-grey-dark { - background-color: #8795a1; - } - - .sm\:bg-grey { - background-color: #b8c2cc; - } - - .sm\:bg-grey-light { - background-color: #dae1e7; - } - - .sm\:bg-grey-lighter { - background-color: #f1f5f8; - } - - .sm\:bg-grey-lightest { - background-color: #f8fafc; - } - - .sm\:bg-white { - background-color: #fff; - } - - .sm\:bg-snipline-green-darker { - background-color: #333510; - } - - .sm\:bg-snipline-green-dark { - background-color: #94AB0D; - } - - .sm\:bg-snipline-lime-light { - background-color: #e1f471; - } - - .sm\:bg-snipline-lime { - background-color: #CDED15; - } - - .sm\:bg-snipline-lime-dark { - background-color: #94AB0D; - } - - .sm\:bg-snipline-green { - background-color: #15ED78; - } - - .sm\:bg-snipline-yellow { - background-color: #EDE415; - } - - .sm\:bg-snipline-grey-dark { - background-color: rgba(51, 53, 16, 0.8); - } - - .sm\:bg-snipline-grey { - background-color: #EBF1EF; - } - - .sm\:bg-snipline-grey-light { - background-color: #DAE1E7; - } - - .sm\:bg-snipline-grey-lighter { - background-color: #E0E8EE; - } - - .sm\:bg-success-100 { - background-color: #ECFBD7; - } - - .sm\:bg-success-200 { - background-color: #D5F8B0; - } - - .sm\:bg-success-300 { - background-color: #B3EC84; - } - - .sm\:bg-success-400 { - background-color: #90D962; - } - - .sm\:bg-success-500 { - background-color: #61C134; - } - - .sm\:bg-success-600 { - background-color: #46A526; - } - - .sm\:bg-success-700 { - background-color: #2F8A1A; - } - - .sm\:bg-success-800 { - background-color: #1C6F10; - } - - .sm\:bg-success-900 { - background-color: #0E5C09; - } - - .sm\:bg-info-100 { - background-color: #DFF6FE; - } - - .sm\:bg-info-200 { - background-color: #BFE9FE; - } - - .sm\:bg-info-300 { - background-color: #9FD9FE; - } - - .sm\:bg-info-400 { - background-color: #86CAFD; - } - - .sm\:bg-info-500 { - background-color: #5FB0FC; - } - - .sm\:bg-info-600 { - background-color: #4589D8; - } - - .sm\:bg-info-700 { - background-color: #2F67B5; - } - - .sm\:bg-info-800 { - background-color: #1E4892; - } - - .sm\:bg-info-900 { - background-color: #123278; - } - - .sm\:bg-danger-100 { - background-color: #FFEAD7; - } - - .sm\:bg-danger-200 { - background-color: #FFD0B0; - } - - .sm\:bg-danger-300 { - background-color: #FFB088; - } - - .sm\:bg-danger-400 { - background-color: #FF916B; - } - - .sm\:bg-danger-500 { - background-color: #FF5E3A; - } - - .sm\:bg-danger-600 { - background-color: #DB3D2A; - } - - .sm\:bg-danger-700 { - background-color: #B7221D; - } - - .sm\:bg-danger-800 { - background-color: #931218; - } - - .sm\:bg-danger-900 { - background-color: #7A0B18; - } - - .sm\:hover\:bg-transparent:hover { - background-color: transparent; - } - - .sm\:hover\:bg-black:hover { - background-color: #000; - } - - .sm\:hover\:bg-grey-darkest:hover { - background-color: #3d4852; - } - - .sm\:hover\:bg-grey-darker:hover { - background-color: #606f7b; - } - - .sm\:hover\:bg-grey-dark:hover { - background-color: #8795a1; - } - - .sm\:hover\:bg-grey:hover { - background-color: #b8c2cc; - } - - .sm\:hover\:bg-grey-light:hover { - background-color: #dae1e7; - } - - .sm\:hover\:bg-grey-lighter:hover { - background-color: #f1f5f8; - } - - .sm\:hover\:bg-grey-lightest:hover { - background-color: #f8fafc; - } - - .sm\:hover\:bg-white:hover { - background-color: #fff; - } - - .sm\:hover\:bg-snipline-green-darker:hover { - background-color: #333510; - } - - .sm\:hover\:bg-snipline-green-dark:hover { - background-color: #94AB0D; - } - - .sm\:hover\:bg-snipline-lime-light:hover { - background-color: #e1f471; - } - - .sm\:hover\:bg-snipline-lime:hover { - background-color: #CDED15; - } - - .sm\:hover\:bg-snipline-lime-dark:hover { - background-color: #94AB0D; - } - - .sm\:hover\:bg-snipline-green:hover { - background-color: #15ED78; - } - - .sm\:hover\:bg-snipline-yellow:hover { - background-color: #EDE415; - } - - .sm\:hover\:bg-snipline-grey-dark:hover { - background-color: rgba(51, 53, 16, 0.8); - } - - .sm\:hover\:bg-snipline-grey:hover { - background-color: #EBF1EF; - } - - .sm\:hover\:bg-snipline-grey-light:hover { - background-color: #DAE1E7; - } - - .sm\:hover\:bg-snipline-grey-lighter:hover { - background-color: #E0E8EE; - } - - .sm\:hover\:bg-success-100:hover { - background-color: #ECFBD7; - } - - .sm\:hover\:bg-success-200:hover { - background-color: #D5F8B0; - } - - .sm\:hover\:bg-success-300:hover { - background-color: #B3EC84; - } - - .sm\:hover\:bg-success-400:hover { - background-color: #90D962; - } - - .sm\:hover\:bg-success-500:hover { - background-color: #61C134; - } - - .sm\:hover\:bg-success-600:hover { - background-color: #46A526; - } - - .sm\:hover\:bg-success-700:hover { - background-color: #2F8A1A; - } - - .sm\:hover\:bg-success-800:hover { - background-color: #1C6F10; - } - - .sm\:hover\:bg-success-900:hover { - background-color: #0E5C09; - } - - .sm\:hover\:bg-info-100:hover { - background-color: #DFF6FE; - } - - .sm\:hover\:bg-info-200:hover { - background-color: #BFE9FE; - } - - .sm\:hover\:bg-info-300:hover { - background-color: #9FD9FE; - } - - .sm\:hover\:bg-info-400:hover { - background-color: #86CAFD; - } - - .sm\:hover\:bg-info-500:hover { - background-color: #5FB0FC; - } - - .sm\:hover\:bg-info-600:hover { - background-color: #4589D8; - } - - .sm\:hover\:bg-info-700:hover { - background-color: #2F67B5; - } - - .sm\:hover\:bg-info-800:hover { - background-color: #1E4892; - } - - .sm\:hover\:bg-info-900:hover { - background-color: #123278; - } - - .sm\:hover\:bg-danger-100:hover { - background-color: #FFEAD7; - } - - .sm\:hover\:bg-danger-200:hover { - background-color: #FFD0B0; - } - - .sm\:hover\:bg-danger-300:hover { - background-color: #FFB088; - } - - .sm\:hover\:bg-danger-400:hover { - background-color: #FF916B; - } - - .sm\:hover\:bg-danger-500:hover { - background-color: #FF5E3A; - } - - .sm\:hover\:bg-danger-600:hover { - background-color: #DB3D2A; - } - - .sm\:hover\:bg-danger-700:hover { - background-color: #B7221D; - } - - .sm\:hover\:bg-danger-800:hover { - background-color: #931218; - } - - .sm\:hover\:bg-danger-900:hover { - background-color: #7A0B18; - } - - .sm\:focus\:bg-transparent:focus { - background-color: transparent; - } - - .sm\:focus\:bg-black:focus { - background-color: #000; - } - - .sm\:focus\:bg-grey-darkest:focus { - background-color: #3d4852; - } - - .sm\:focus\:bg-grey-darker:focus { - background-color: #606f7b; - } - - .sm\:focus\:bg-grey-dark:focus { - background-color: #8795a1; - } - - .sm\:focus\:bg-grey:focus { - background-color: #b8c2cc; - } - - .sm\:focus\:bg-grey-light:focus { - background-color: #dae1e7; - } - - .sm\:focus\:bg-grey-lighter:focus { - background-color: #f1f5f8; - } - - .sm\:focus\:bg-grey-lightest:focus { - background-color: #f8fafc; - } - - .sm\:focus\:bg-white:focus { - background-color: #fff; - } - - .sm\:focus\:bg-snipline-green-darker:focus { - background-color: #333510; - } - - .sm\:focus\:bg-snipline-green-dark:focus { - background-color: #94AB0D; - } - - .sm\:focus\:bg-snipline-lime-light:focus { - background-color: #e1f471; - } - - .sm\:focus\:bg-snipline-lime:focus { - background-color: #CDED15; - } - - .sm\:focus\:bg-snipline-lime-dark:focus { - background-color: #94AB0D; - } - - .sm\:focus\:bg-snipline-green:focus { - background-color: #15ED78; - } - - .sm\:focus\:bg-snipline-yellow:focus { - background-color: #EDE415; - } - - .sm\:focus\:bg-snipline-grey-dark:focus { - background-color: rgba(51, 53, 16, 0.8); - } - - .sm\:focus\:bg-snipline-grey:focus { - background-color: #EBF1EF; - } - - .sm\:focus\:bg-snipline-grey-light:focus { - background-color: #DAE1E7; - } - - .sm\:focus\:bg-snipline-grey-lighter:focus { - background-color: #E0E8EE; - } - - .sm\:focus\:bg-success-100:focus { - background-color: #ECFBD7; - } - - .sm\:focus\:bg-success-200:focus { - background-color: #D5F8B0; - } - - .sm\:focus\:bg-success-300:focus { - background-color: #B3EC84; - } - - .sm\:focus\:bg-success-400:focus { - background-color: #90D962; - } - - .sm\:focus\:bg-success-500:focus { - background-color: #61C134; - } - - .sm\:focus\:bg-success-600:focus { - background-color: #46A526; - } - - .sm\:focus\:bg-success-700:focus { - background-color: #2F8A1A; - } - - .sm\:focus\:bg-success-800:focus { - background-color: #1C6F10; - } - - .sm\:focus\:bg-success-900:focus { - background-color: #0E5C09; - } - - .sm\:focus\:bg-info-100:focus { - background-color: #DFF6FE; - } - - .sm\:focus\:bg-info-200:focus { - background-color: #BFE9FE; - } - - .sm\:focus\:bg-info-300:focus { - background-color: #9FD9FE; - } - - .sm\:focus\:bg-info-400:focus { - background-color: #86CAFD; - } - - .sm\:focus\:bg-info-500:focus { - background-color: #5FB0FC; - } - - .sm\:focus\:bg-info-600:focus { - background-color: #4589D8; - } - - .sm\:focus\:bg-info-700:focus { - background-color: #2F67B5; - } - - .sm\:focus\:bg-info-800:focus { - background-color: #1E4892; - } - - .sm\:focus\:bg-info-900:focus { - background-color: #123278; - } - - .sm\:focus\:bg-danger-100:focus { - background-color: #FFEAD7; - } - - .sm\:focus\:bg-danger-200:focus { - background-color: #FFD0B0; - } - - .sm\:focus\:bg-danger-300:focus { - background-color: #FFB088; - } - - .sm\:focus\:bg-danger-400:focus { - background-color: #FF916B; - } - - .sm\:focus\:bg-danger-500:focus { - background-color: #FF5E3A; - } - - .sm\:focus\:bg-danger-600:focus { - background-color: #DB3D2A; - } - - .sm\:focus\:bg-danger-700:focus { - background-color: #B7221D; - } - - .sm\:focus\:bg-danger-800:focus { - background-color: #931218; - } - - .sm\:focus\:bg-danger-900:focus { - background-color: #7A0B18; - } - - .sm\:bg-bottom { - background-position: bottom; - } - - .sm\:bg-center { - background-position: center; - } - - .sm\:bg-left { - background-position: left; - } - - .sm\:bg-left-bottom { - background-position: left bottom; - } - - .sm\:bg-left-top { - background-position: left top; - } - - .sm\:bg-right { - background-position: right; - } - - .sm\:bg-right-bottom { - background-position: right bottom; - } - - .sm\:bg-right-top { - background-position: right top; - } - - .sm\:bg-top { - background-position: top; - } - - .sm\:bg-repeat { - background-repeat: repeat; - } - - .sm\:bg-no-repeat { - background-repeat: no-repeat; - } - - .sm\:bg-repeat-x { - background-repeat: repeat-x; - } - - .sm\:bg-repeat-y { - background-repeat: repeat-y; - } - - .sm\:bg-repeat-round { - background-repeat: round; - } - - .sm\:bg-repeat-space { - background-repeat: space; - } - - .sm\:bg-auto { - background-size: auto; - } - - .sm\:bg-cover { - background-size: cover; - } - - .sm\:bg-contain { - background-size: contain; - } - - .sm\:border-collapse { - border-collapse: collapse; - } - - .sm\:border-separate { - border-collapse: separate; - } - - .sm\:border-transparent { - border-color: transparent; - } - - .sm\:border-black { - border-color: #000; - } - - .sm\:border-grey-darkest { - border-color: #3d4852; - } - - .sm\:border-grey-darker { - border-color: #606f7b; - } - - .sm\:border-grey-dark { - border-color: #8795a1; - } - - .sm\:border-grey { - border-color: #b8c2cc; - } - - .sm\:border-grey-light { - border-color: #dae1e7; - } - - .sm\:border-grey-lighter { - border-color: #f1f5f8; - } - - .sm\:border-grey-lightest { - border-color: #f8fafc; - } - - .sm\:border-white { - border-color: #fff; - } - - .sm\:border-snipline-green-darker { - border-color: #333510; - } - - .sm\:border-snipline-green-dark { - border-color: #94AB0D; - } - - .sm\:border-snipline-lime-light { - border-color: #e1f471; - } - - .sm\:border-snipline-lime { - border-color: #CDED15; - } - - .sm\:border-snipline-lime-dark { - border-color: #94AB0D; - } - - .sm\:border-snipline-green { - border-color: #15ED78; - } - - .sm\:border-snipline-yellow { - border-color: #EDE415; - } - - .sm\:border-snipline-grey-dark { - border-color: rgba(51, 53, 16, 0.8); - } - - .sm\:border-snipline-grey { - border-color: #EBF1EF; - } - - .sm\:border-snipline-grey-light { - border-color: #DAE1E7; - } - - .sm\:border-snipline-grey-lighter { - border-color: #E0E8EE; - } - - .sm\:border-success-100 { - border-color: #ECFBD7; - } - - .sm\:border-success-200 { - border-color: #D5F8B0; - } - - .sm\:border-success-300 { - border-color: #B3EC84; - } - - .sm\:border-success-400 { - border-color: #90D962; - } - - .sm\:border-success-500 { - border-color: #61C134; - } - - .sm\:border-success-600 { - border-color: #46A526; - } - - .sm\:border-success-700 { - border-color: #2F8A1A; - } - - .sm\:border-success-800 { - border-color: #1C6F10; - } - - .sm\:border-success-900 { - border-color: #0E5C09; - } - - .sm\:border-info-100 { - border-color: #DFF6FE; - } - - .sm\:border-info-200 { - border-color: #BFE9FE; - } - - .sm\:border-info-300 { - border-color: #9FD9FE; - } - - .sm\:border-info-400 { - border-color: #86CAFD; - } - - .sm\:border-info-500 { - border-color: #5FB0FC; - } - - .sm\:border-info-600 { - border-color: #4589D8; - } - - .sm\:border-info-700 { - border-color: #2F67B5; - } - - .sm\:border-info-800 { - border-color: #1E4892; - } - - .sm\:border-info-900 { - border-color: #123278; - } - - .sm\:border-danger-100 { - border-color: #FFEAD7; - } - - .sm\:border-danger-200 { - border-color: #FFD0B0; - } - - .sm\:border-danger-300 { - border-color: #FFB088; - } - - .sm\:border-danger-400 { - border-color: #FF916B; - } - - .sm\:border-danger-500 { - border-color: #FF5E3A; - } - - .sm\:border-danger-600 { - border-color: #DB3D2A; - } - - .sm\:border-danger-700 { - border-color: #B7221D; - } - - .sm\:border-danger-800 { - border-color: #931218; - } - - .sm\:border-danger-900 { - border-color: #7A0B18; - } - - .sm\:hover\:border-transparent:hover { - border-color: transparent; - } - - .sm\:hover\:border-black:hover { - border-color: #000; - } - - .sm\:hover\:border-grey-darkest:hover { - border-color: #3d4852; - } - - .sm\:hover\:border-grey-darker:hover { - border-color: #606f7b; - } - - .sm\:hover\:border-grey-dark:hover { - border-color: #8795a1; - } - - .sm\:hover\:border-grey:hover { - border-color: #b8c2cc; - } - - .sm\:hover\:border-grey-light:hover { - border-color: #dae1e7; - } - - .sm\:hover\:border-grey-lighter:hover { - border-color: #f1f5f8; - } - - .sm\:hover\:border-grey-lightest:hover { - border-color: #f8fafc; - } - - .sm\:hover\:border-white:hover { - border-color: #fff; - } - - .sm\:hover\:border-snipline-green-darker:hover { - border-color: #333510; - } - - .sm\:hover\:border-snipline-green-dark:hover { - border-color: #94AB0D; - } - - .sm\:hover\:border-snipline-lime-light:hover { - border-color: #e1f471; - } - - .sm\:hover\:border-snipline-lime:hover { - border-color: #CDED15; - } - - .sm\:hover\:border-snipline-lime-dark:hover { - border-color: #94AB0D; - } - - .sm\:hover\:border-snipline-green:hover { - border-color: #15ED78; - } - - .sm\:hover\:border-snipline-yellow:hover { - border-color: #EDE415; - } - - .sm\:hover\:border-snipline-grey-dark:hover { - border-color: rgba(51, 53, 16, 0.8); - } - - .sm\:hover\:border-snipline-grey:hover { - border-color: #EBF1EF; - } - - .sm\:hover\:border-snipline-grey-light:hover { - border-color: #DAE1E7; - } - - .sm\:hover\:border-snipline-grey-lighter:hover { - border-color: #E0E8EE; - } - - .sm\:hover\:border-success-100:hover { - border-color: #ECFBD7; - } - - .sm\:hover\:border-success-200:hover { - border-color: #D5F8B0; - } - - .sm\:hover\:border-success-300:hover { - border-color: #B3EC84; - } - - .sm\:hover\:border-success-400:hover { - border-color: #90D962; - } - - .sm\:hover\:border-success-500:hover { - border-color: #61C134; - } - - .sm\:hover\:border-success-600:hover { - border-color: #46A526; - } - - .sm\:hover\:border-success-700:hover { - border-color: #2F8A1A; - } - - .sm\:hover\:border-success-800:hover { - border-color: #1C6F10; - } - - .sm\:hover\:border-success-900:hover { - border-color: #0E5C09; - } - - .sm\:hover\:border-info-100:hover { - border-color: #DFF6FE; - } - - .sm\:hover\:border-info-200:hover { - border-color: #BFE9FE; - } - - .sm\:hover\:border-info-300:hover { - border-color: #9FD9FE; - } - - .sm\:hover\:border-info-400:hover { - border-color: #86CAFD; - } - - .sm\:hover\:border-info-500:hover { - border-color: #5FB0FC; - } - - .sm\:hover\:border-info-600:hover { - border-color: #4589D8; - } - - .sm\:hover\:border-info-700:hover { - border-color: #2F67B5; - } - - .sm\:hover\:border-info-800:hover { - border-color: #1E4892; - } - - .sm\:hover\:border-info-900:hover { - border-color: #123278; - } - - .sm\:hover\:border-danger-100:hover { - border-color: #FFEAD7; - } - - .sm\:hover\:border-danger-200:hover { - border-color: #FFD0B0; - } - - .sm\:hover\:border-danger-300:hover { - border-color: #FFB088; - } - - .sm\:hover\:border-danger-400:hover { - border-color: #FF916B; - } - - .sm\:hover\:border-danger-500:hover { - border-color: #FF5E3A; - } - - .sm\:hover\:border-danger-600:hover { - border-color: #DB3D2A; - } - - .sm\:hover\:border-danger-700:hover { - border-color: #B7221D; - } - - .sm\:hover\:border-danger-800:hover { - border-color: #931218; - } - - .sm\:hover\:border-danger-900:hover { - border-color: #7A0B18; - } - - .sm\:focus\:border-transparent:focus { - border-color: transparent; - } - - .sm\:focus\:border-black:focus { - border-color: #000; - } - - .sm\:focus\:border-grey-darkest:focus { - border-color: #3d4852; - } - - .sm\:focus\:border-grey-darker:focus { - border-color: #606f7b; - } - - .sm\:focus\:border-grey-dark:focus { - border-color: #8795a1; - } - - .sm\:focus\:border-grey:focus { - border-color: #b8c2cc; - } - - .sm\:focus\:border-grey-light:focus { - border-color: #dae1e7; - } - - .sm\:focus\:border-grey-lighter:focus { - border-color: #f1f5f8; - } - - .sm\:focus\:border-grey-lightest:focus { - border-color: #f8fafc; - } - - .sm\:focus\:border-white:focus { - border-color: #fff; - } - - .sm\:focus\:border-snipline-green-darker:focus { - border-color: #333510; - } - - .sm\:focus\:border-snipline-green-dark:focus { - border-color: #94AB0D; - } - - .sm\:focus\:border-snipline-lime-light:focus { - border-color: #e1f471; - } - - .sm\:focus\:border-snipline-lime:focus { - border-color: #CDED15; - } - - .sm\:focus\:border-snipline-lime-dark:focus { - border-color: #94AB0D; - } - - .sm\:focus\:border-snipline-green:focus { - border-color: #15ED78; - } - - .sm\:focus\:border-snipline-yellow:focus { - border-color: #EDE415; - } - - .sm\:focus\:border-snipline-grey-dark:focus { - border-color: rgba(51, 53, 16, 0.8); - } - - .sm\:focus\:border-snipline-grey:focus { - border-color: #EBF1EF; - } - - .sm\:focus\:border-snipline-grey-light:focus { - border-color: #DAE1E7; - } - - .sm\:focus\:border-snipline-grey-lighter:focus { - border-color: #E0E8EE; - } - - .sm\:focus\:border-success-100:focus { - border-color: #ECFBD7; - } - - .sm\:focus\:border-success-200:focus { - border-color: #D5F8B0; - } - - .sm\:focus\:border-success-300:focus { - border-color: #B3EC84; - } - - .sm\:focus\:border-success-400:focus { - border-color: #90D962; - } - - .sm\:focus\:border-success-500:focus { - border-color: #61C134; - } - - .sm\:focus\:border-success-600:focus { - border-color: #46A526; - } - - .sm\:focus\:border-success-700:focus { - border-color: #2F8A1A; - } - - .sm\:focus\:border-success-800:focus { - border-color: #1C6F10; - } - - .sm\:focus\:border-success-900:focus { - border-color: #0E5C09; - } - - .sm\:focus\:border-info-100:focus { - border-color: #DFF6FE; - } - - .sm\:focus\:border-info-200:focus { - border-color: #BFE9FE; - } - - .sm\:focus\:border-info-300:focus { - border-color: #9FD9FE; - } - - .sm\:focus\:border-info-400:focus { - border-color: #86CAFD; - } - - .sm\:focus\:border-info-500:focus { - border-color: #5FB0FC; - } - - .sm\:focus\:border-info-600:focus { - border-color: #4589D8; - } - - .sm\:focus\:border-info-700:focus { - border-color: #2F67B5; - } - - .sm\:focus\:border-info-800:focus { - border-color: #1E4892; - } - - .sm\:focus\:border-info-900:focus { - border-color: #123278; - } - - .sm\:focus\:border-danger-100:focus { - border-color: #FFEAD7; - } - - .sm\:focus\:border-danger-200:focus { - border-color: #FFD0B0; - } - - .sm\:focus\:border-danger-300:focus { - border-color: #FFB088; - } - - .sm\:focus\:border-danger-400:focus { - border-color: #FF916B; - } - - .sm\:focus\:border-danger-500:focus { - border-color: #FF5E3A; - } - - .sm\:focus\:border-danger-600:focus { - border-color: #DB3D2A; - } - - .sm\:focus\:border-danger-700:focus { - border-color: #B7221D; - } - - .sm\:focus\:border-danger-800:focus { - border-color: #931218; - } - - .sm\:focus\:border-danger-900:focus { - border-color: #7A0B18; - } - - .sm\:rounded-none { - border-radius: 0; - } - - .sm\:rounded-sm { - border-radius: 0.125rem; - } - - .sm\:rounded { - border-radius: 0.25rem; - } - - .sm\:rounded-lg { - border-radius: 0.5rem; - } - - .sm\:rounded-full { - border-radius: 9999px; - } - - .sm\:rounded-t-none { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - .sm\:rounded-r-none { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - .sm\:rounded-b-none { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .sm\:rounded-l-none { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - .sm\:rounded-t-sm { - border-top-left-radius: 0.125rem; - border-top-right-radius: 0.125rem; - } - - .sm\:rounded-r-sm { - border-top-right-radius: 0.125rem; - border-bottom-right-radius: 0.125rem; - } - - .sm\:rounded-b-sm { - border-bottom-right-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .sm\:rounded-l-sm { - border-top-left-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .sm\:rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - - .sm\:rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - } - - .sm\:rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .sm\:rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .sm\:rounded-t-lg { - border-top-left-radius: 0.5rem; - border-top-right-radius: 0.5rem; - } - - .sm\:rounded-r-lg { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; - } - - .sm\:rounded-b-lg { - border-bottom-right-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .sm\:rounded-l-lg { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .sm\:rounded-t-full { - border-top-left-radius: 9999px; - border-top-right-radius: 9999px; - } - - .sm\:rounded-r-full { - border-top-right-radius: 9999px; - border-bottom-right-radius: 9999px; - } - - .sm\:rounded-b-full { - border-bottom-right-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .sm\:rounded-l-full { - border-top-left-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .sm\:rounded-tl-none { - border-top-left-radius: 0; - } - - .sm\:rounded-tr-none { - border-top-right-radius: 0; - } - - .sm\:rounded-br-none { - border-bottom-right-radius: 0; - } - - .sm\:rounded-bl-none { - border-bottom-left-radius: 0; - } - - .sm\:rounded-tl-sm { - border-top-left-radius: 0.125rem; - } - - .sm\:rounded-tr-sm { - border-top-right-radius: 0.125rem; - } - - .sm\:rounded-br-sm { - border-bottom-right-radius: 0.125rem; - } - - .sm\:rounded-bl-sm { - border-bottom-left-radius: 0.125rem; - } - - .sm\:rounded-tl { - border-top-left-radius: 0.25rem; - } - - .sm\:rounded-tr { - border-top-right-radius: 0.25rem; - } - - .sm\:rounded-br { - border-bottom-right-radius: 0.25rem; - } - - .sm\:rounded-bl { - border-bottom-left-radius: 0.25rem; - } - - .sm\:rounded-tl-lg { - border-top-left-radius: 0.5rem; - } - - .sm\:rounded-tr-lg { - border-top-right-radius: 0.5rem; - } - - .sm\:rounded-br-lg { - border-bottom-right-radius: 0.5rem; - } - - .sm\:rounded-bl-lg { - border-bottom-left-radius: 0.5rem; - } - - .sm\:rounded-tl-full { - border-top-left-radius: 9999px; - } - - .sm\:rounded-tr-full { - border-top-right-radius: 9999px; - } - - .sm\:rounded-br-full { - border-bottom-right-radius: 9999px; - } - - .sm\:rounded-bl-full { - border-bottom-left-radius: 9999px; - } - - .sm\:border-solid { - border-style: solid; - } - - .sm\:border-dashed { - border-style: dashed; - } - - .sm\:border-dotted { - border-style: dotted; - } - - .sm\:border-none { - border-style: none; - } - - .sm\:border-0 { - border-width: 0; - } - - .sm\:border-2 { - border-width: 2px; - } - - .sm\:border-4 { - border-width: 4px; - } - - .sm\:border-8 { - border-width: 8px; - } - - .sm\:border { - border-width: 1px; - } - - .sm\:border-t-0 { - border-top-width: 0; - } - - .sm\:border-r-0 { - border-right-width: 0; - } - - .sm\:border-b-0 { - border-bottom-width: 0; - } - - .sm\:border-l-0 { - border-left-width: 0; - } - - .sm\:border-t-2 { - border-top-width: 2px; - } - - .sm\:border-r-2 { - border-right-width: 2px; - } - - .sm\:border-b-2 { - border-bottom-width: 2px; - } - - .sm\:border-l-2 { - border-left-width: 2px; - } - - .sm\:border-t-4 { - border-top-width: 4px; - } - - .sm\:border-r-4 { - border-right-width: 4px; - } - - .sm\:border-b-4 { - border-bottom-width: 4px; - } - - .sm\:border-l-4 { - border-left-width: 4px; - } - - .sm\:border-t-8 { - border-top-width: 8px; - } - - .sm\:border-r-8 { - border-right-width: 8px; - } - - .sm\:border-b-8 { - border-bottom-width: 8px; - } - - .sm\:border-l-8 { - border-left-width: 8px; - } - - .sm\:border-t { - border-top-width: 1px; - } - - .sm\:border-r { - border-right-width: 1px; - } - - .sm\:border-b { - border-bottom-width: 1px; - } - - .sm\:border-l { - border-left-width: 1px; - } - - .sm\:cursor-auto { - cursor: auto; - } - - .sm\:cursor-default { - cursor: default; - } - - .sm\:cursor-pointer { - cursor: pointer; - } - - .sm\:cursor-wait { - cursor: wait; - } - - .sm\:cursor-text { - cursor: text; - } - - .sm\:cursor-move { - cursor: move; - } - - .sm\:cursor-not-allowed { - cursor: not-allowed; - } - - .sm\:block { - display: block; - } - - .sm\:inline-block { - display: inline-block; - } - - .sm\:inline { - display: inline; - } - - .sm\:flex { - display: flex; - } - - .sm\:inline-flex { - display: inline-flex; - } - - .sm\:table { - display: table; - } - - .sm\:table-row { - display: table-row; - } - - .sm\:table-cell { - display: table-cell; - } - - .sm\:hidden { - display: none; - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:flex-row-reverse { - flex-direction: row-reverse; - } - - .sm\:flex-col { - flex-direction: column; - } - - .sm\:flex-col-reverse { - flex-direction: column-reverse; - } - - .sm\:flex-wrap { - flex-wrap: wrap; - } - - .sm\:flex-wrap-reverse { - flex-wrap: wrap-reverse; - } - - .sm\:flex-no-wrap { - flex-wrap: nowrap; - } - - .sm\:items-start { - align-items: flex-start; - } - - .sm\:items-end { - align-items: flex-end; - } - - .sm\:items-center { - align-items: center; - } - - .sm\:items-baseline { - align-items: baseline; - } - - .sm\:items-stretch { - align-items: stretch; - } - - .sm\:self-auto { - align-self: auto; - } - - .sm\:self-start { - align-self: flex-start; - } - - .sm\:self-end { - align-self: flex-end; - } - - .sm\:self-center { - align-self: center; - } - - .sm\:self-stretch { - align-self: stretch; - } - - .sm\:justify-start { - justify-content: flex-start; - } - - .sm\:justify-end { - justify-content: flex-end; - } - - .sm\:justify-center { - justify-content: center; - } - - .sm\:justify-between { - justify-content: space-between; - } - - .sm\:justify-around { - justify-content: space-around; - } - - .sm\:content-center { - align-content: center; - } - - .sm\:content-start { - align-content: flex-start; - } - - .sm\:content-end { - align-content: flex-end; - } - - .sm\:content-between { - align-content: space-between; - } - - .sm\:content-around { - align-content: space-around; - } - - .sm\:flex-1 { - flex: 1 1 0%; - } - - .sm\:flex-auto { - flex: 1 1 auto; - } - - .sm\:flex-initial { - flex: 0 1 auto; - } - - .sm\:flex-none { - flex: none; - } - - .sm\:flex-grow-0 { - flex-grow: 0; - } - - .sm\:flex-grow { - flex-grow: 1; - } - - .sm\:flex-shrink-0 { - flex-shrink: 0; - } - - .sm\:flex-shrink { - flex-shrink: 1; - } - - .sm\:order-1 { - order: 1; - } - - .sm\:order-2 { - order: 2; - } - - .sm\:order-3 { - order: 3; - } - - .sm\:order-4 { - order: 4; - } - - .sm\:order-5 { - order: 5; - } - - .sm\:order-6 { - order: 6; - } - - .sm\:order-7 { - order: 7; - } - - .sm\:order-8 { - order: 8; - } - - .sm\:order-9 { - order: 9; - } - - .sm\:order-10 { - order: 10; - } - - .sm\:order-11 { - order: 11; - } - - .sm\:order-12 { - order: 12; - } - - .sm\:order-first { - order: -9999; - } - - .sm\:order-last { - order: 9999; - } - - .sm\:order-none { - order: 0; - } - - .sm\:float-right { - float: right; - } - - .sm\:float-left { - float: left; - } - - .sm\:float-none { - float: none; - } - - .sm\:clearfix:after { - content: ""; - display: table; - clear: both; - } - - .sm\:font-sans { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } - - .sm\:font-serif { - font-family: Georgia, Cambria, "Times New Roman", Times, serif; - } - - .sm\:font-mono { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - } - - .sm\:font-hairline { - font-weight: 100; - } - - .sm\:font-thin { - font-weight: 200; - } - - .sm\:font-light { - font-weight: 300; - } - - .sm\:font-normal { - font-weight: 400; - } - - .sm\:font-medium { - font-weight: 500; - } - - .sm\:font-semibold { - font-weight: 600; - } - - .sm\:font-bold { - font-weight: 700; - } - - .sm\:font-extrabold { - font-weight: 800; - } - - .sm\:font-black { - font-weight: 900; - } - - .sm\:hover\:font-hairline:hover { - font-weight: 100; - } - - .sm\:hover\:font-thin:hover { - font-weight: 200; - } - - .sm\:hover\:font-light:hover { - font-weight: 300; - } - - .sm\:hover\:font-normal:hover { - font-weight: 400; - } - - .sm\:hover\:font-medium:hover { - font-weight: 500; - } - - .sm\:hover\:font-semibold:hover { - font-weight: 600; - } - - .sm\:hover\:font-bold:hover { - font-weight: 700; - } - - .sm\:hover\:font-extrabold:hover { - font-weight: 800; - } - - .sm\:hover\:font-black:hover { - font-weight: 900; - } - - .sm\:focus\:font-hairline:focus { - font-weight: 100; - } - - .sm\:focus\:font-thin:focus { - font-weight: 200; - } - - .sm\:focus\:font-light:focus { - font-weight: 300; - } - - .sm\:focus\:font-normal:focus { - font-weight: 400; - } - - .sm\:focus\:font-medium:focus { - font-weight: 500; - } - - .sm\:focus\:font-semibold:focus { - font-weight: 600; - } - - .sm\:focus\:font-bold:focus { - font-weight: 700; - } - - .sm\:focus\:font-extrabold:focus { - font-weight: 800; - } - - .sm\:focus\:font-black:focus { - font-weight: 900; - } - - .sm\:h-0 { - height: 0; - } - - .sm\:h-1 { - height: 0.25rem; - } - - .sm\:h-2 { - height: 0.5rem; - } - - .sm\:h-3 { - height: 0.75rem; - } - - .sm\:h-4 { - height: 1rem; - } - - .sm\:h-5 { - height: 1.25rem; - } - - .sm\:h-6 { - height: 1.5rem; - } - - .sm\:h-8 { - height: 2rem; - } - - .sm\:h-10 { - height: 2.5rem; - } - - .sm\:h-12 { - height: 3rem; - } - - .sm\:h-16 { - height: 4rem; - } - - .sm\:h-20 { - height: 5rem; - } - - .sm\:h-24 { - height: 6rem; - } - - .sm\:h-32 { - height: 8rem; - } - - .sm\:h-40 { - height: 10rem; - } - - .sm\:h-48 { - height: 12rem; - } - - .sm\:h-56 { - height: 14rem; - } - - .sm\:h-64 { - height: 16rem; - } - - .sm\:h-auto { - height: auto; - } - - .sm\:h-px { - height: 1px; - } - - .sm\:h-full { - height: 100%; - } - - .sm\:h-screen { - height: 100vh; - } - - .sm\:leading-none { - line-height: 1; - } - - .sm\:leading-tight { - line-height: 1.25; - } - - .sm\:leading-snug { - line-height: 1.375; - } - - .sm\:leading-normal { - line-height: 1.5; - } - - .sm\:leading-relaxed { - line-height: 1.625; - } - - .sm\:leading-loose { - line-height: 2; - } - - .sm\:list-inside { - list-style-position: inside; - } - - .sm\:list-outside { - list-style-position: outside; - } - - .sm\:list-none { - list-style-type: none; - } - - .sm\:list-disc { - list-style-type: disc; - } - - .sm\:list-decimal { - list-style-type: decimal; - } - - .sm\:m-0 { - margin: 0; - } - - .sm\:m-1 { - margin: 0.25rem; - } - - .sm\:m-2 { - margin: 0.5rem; - } - - .sm\:m-3 { - margin: 0.75rem; - } - - .sm\:m-4 { - margin: 1rem; - } - - .sm\:m-5 { - margin: 1.25rem; - } - - .sm\:m-6 { - margin: 1.5rem; - } - - .sm\:m-8 { - margin: 2rem; - } - - .sm\:m-10 { - margin: 2.5rem; - } - - .sm\:m-12 { - margin: 3rem; - } - - .sm\:m-16 { - margin: 4rem; - } - - .sm\:m-20 { - margin: 5rem; - } - - .sm\:m-24 { - margin: 6rem; - } - - .sm\:m-32 { - margin: 8rem; - } - - .sm\:m-40 { - margin: 10rem; - } - - .sm\:m-48 { - margin: 12rem; - } - - .sm\:m-56 { - margin: 14rem; - } - - .sm\:m-64 { - margin: 16rem; - } - - .sm\:m-auto { - margin: auto; - } - - .sm\:m-px { - margin: 1px; - } - - .sm\:-m-1 { - margin: -0.25rem; - } - - .sm\:-m-2 { - margin: -0.5rem; - } - - .sm\:-m-3 { - margin: -0.75rem; - } - - .sm\:-m-4 { - margin: -1rem; - } - - .sm\:-m-5 { - margin: -1.25rem; - } - - .sm\:-m-6 { - margin: -1.5rem; - } - - .sm\:-m-8 { - margin: -2rem; - } - - .sm\:-m-10 { - margin: -2.5rem; - } - - .sm\:-m-12 { - margin: -3rem; - } - - .sm\:-m-16 { - margin: -4rem; - } - - .sm\:-m-20 { - margin: -5rem; - } - - .sm\:-m-24 { - margin: -6rem; - } - - .sm\:-m-32 { - margin: -8rem; - } - - .sm\:-m-40 { - margin: -10rem; - } - - .sm\:-m-48 { - margin: -12rem; - } - - .sm\:-m-56 { - margin: -14rem; - } - - .sm\:-m-64 { - margin: -16rem; - } - - .sm\:-m-px { - margin: -1px; - } - - .sm\:my-0 { - margin-top: 0; - margin-bottom: 0; - } - - .sm\:mx-0 { - margin-left: 0; - margin-right: 0; - } - - .sm\:my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; - } - - .sm\:mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; - } - - .sm\:my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; - } - - .sm\:mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - - .sm\:my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; - } - - .sm\:mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; - } - - .sm\:my-4 { - margin-top: 1rem; - margin-bottom: 1rem; - } - - .sm\:mx-4 { - margin-left: 1rem; - margin-right: 1rem; - } - - .sm\:my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; - } - - .sm\:mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; - } - - .sm\:my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; - } - - .sm\:mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - - .sm\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .sm\:mx-8 { - margin-left: 2rem; - margin-right: 2rem; - } - - .sm\:my-10 { - margin-top: 2.5rem; - margin-bottom: 2.5rem; - } - - .sm\:mx-10 { - margin-left: 2.5rem; - margin-right: 2.5rem; - } - - .sm\:my-12 { - margin-top: 3rem; - margin-bottom: 3rem; - } - - .sm\:mx-12 { - margin-left: 3rem; - margin-right: 3rem; - } - - .sm\:my-16 { - margin-top: 4rem; - margin-bottom: 4rem; - } - - .sm\:mx-16 { - margin-left: 4rem; - margin-right: 4rem; - } - - .sm\:my-20 { - margin-top: 5rem; - margin-bottom: 5rem; - } - - .sm\:mx-20 { - margin-left: 5rem; - margin-right: 5rem; - } - - .sm\:my-24 { - margin-top: 6rem; - margin-bottom: 6rem; - } - - .sm\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - - .sm\:my-32 { - margin-top: 8rem; - margin-bottom: 8rem; - } - - .sm\:mx-32 { - margin-left: 8rem; - margin-right: 8rem; - } - - .sm\:my-40 { - margin-top: 10rem; - margin-bottom: 10rem; - } - - .sm\:mx-40 { - margin-left: 10rem; - margin-right: 10rem; - } - - .sm\:my-48 { - margin-top: 12rem; - margin-bottom: 12rem; - } - - .sm\:mx-48 { - margin-left: 12rem; - margin-right: 12rem; - } - - .sm\:my-56 { - margin-top: 14rem; - margin-bottom: 14rem; - } - - .sm\:mx-56 { - margin-left: 14rem; - margin-right: 14rem; - } - - .sm\:my-64 { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .sm\:mx-64 { - margin-left: 16rem; - margin-right: 16rem; - } - - .sm\:my-auto { - margin-top: auto; - margin-bottom: auto; - } - - .sm\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .sm\:my-px { - margin-top: 1px; - margin-bottom: 1px; - } - - .sm\:mx-px { - margin-left: 1px; - margin-right: 1px; - } - - .sm\:-my-1 { - margin-top: -0.25rem; - margin-bottom: -0.25rem; - } - - .sm\:-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; - } - - .sm\:-my-2 { - margin-top: -0.5rem; - margin-bottom: -0.5rem; - } - - .sm\:-mx-2 { - margin-left: -0.5rem; - margin-right: -0.5rem; - } - - .sm\:-my-3 { - margin-top: -0.75rem; - margin-bottom: -0.75rem; - } - - .sm\:-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; - } - - .sm\:-my-4 { - margin-top: -1rem; - margin-bottom: -1rem; - } - - .sm\:-mx-4 { - margin-left: -1rem; - margin-right: -1rem; - } - - .sm\:-my-5 { - margin-top: -1.25rem; - margin-bottom: -1.25rem; - } - - .sm\:-mx-5 { - margin-left: -1.25rem; - margin-right: -1.25rem; - } - - .sm\:-my-6 { - margin-top: -1.5rem; - margin-bottom: -1.5rem; - } - - .sm\:-mx-6 { - margin-left: -1.5rem; - margin-right: -1.5rem; - } - - .sm\:-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; - } - - .sm\:-mx-8 { - margin-left: -2rem; - margin-right: -2rem; - } - - .sm\:-my-10 { - margin-top: -2.5rem; - margin-bottom: -2.5rem; - } - - .sm\:-mx-10 { - margin-left: -2.5rem; - margin-right: -2.5rem; - } - - .sm\:-my-12 { - margin-top: -3rem; - margin-bottom: -3rem; - } - - .sm\:-mx-12 { - margin-left: -3rem; - margin-right: -3rem; - } - - .sm\:-my-16 { - margin-top: -4rem; - margin-bottom: -4rem; - } - - .sm\:-mx-16 { - margin-left: -4rem; - margin-right: -4rem; - } - - .sm\:-my-20 { - margin-top: -5rem; - margin-bottom: -5rem; - } - - .sm\:-mx-20 { - margin-left: -5rem; - margin-right: -5rem; - } - - .sm\:-my-24 { - margin-top: -6rem; - margin-bottom: -6rem; - } - - .sm\:-mx-24 { - margin-left: -6rem; - margin-right: -6rem; - } - - .sm\:-my-32 { - margin-top: -8rem; - margin-bottom: -8rem; - } - - .sm\:-mx-32 { - margin-left: -8rem; - margin-right: -8rem; - } - - .sm\:-my-40 { - margin-top: -10rem; - margin-bottom: -10rem; - } - - .sm\:-mx-40 { - margin-left: -10rem; - margin-right: -10rem; - } - - .sm\:-my-48 { - margin-top: -12rem; - margin-bottom: -12rem; - } - - .sm\:-mx-48 { - margin-left: -12rem; - margin-right: -12rem; - } - - .sm\:-my-56 { - margin-top: -14rem; - margin-bottom: -14rem; - } - - .sm\:-mx-56 { - margin-left: -14rem; - margin-right: -14rem; - } - - .sm\:-my-64 { - margin-top: -16rem; - margin-bottom: -16rem; - } - - .sm\:-mx-64 { - margin-left: -16rem; - margin-right: -16rem; - } - - .sm\:-my-px { - margin-top: -1px; - margin-bottom: -1px; - } - - .sm\:-mx-px { - margin-left: -1px; - margin-right: -1px; - } - - .sm\:mt-0 { - margin-top: 0; - } - - .sm\:mr-0 { - margin-right: 0; - } - - .sm\:mb-0 { - margin-bottom: 0; - } - - .sm\:ml-0 { - margin-left: 0; - } - - .sm\:mt-1 { - margin-top: 0.25rem; - } - - .sm\:mr-1 { - margin-right: 0.25rem; - } - - .sm\:mb-1 { - margin-bottom: 0.25rem; - } - - .sm\:ml-1 { - margin-left: 0.25rem; - } - - .sm\:mt-2 { - margin-top: 0.5rem; - } - - .sm\:mr-2 { - margin-right: 0.5rem; - } - - .sm\:mb-2 { - margin-bottom: 0.5rem; - } - - .sm\:ml-2 { - margin-left: 0.5rem; - } - - .sm\:mt-3 { - margin-top: 0.75rem; - } - - .sm\:mr-3 { - margin-right: 0.75rem; - } - - .sm\:mb-3 { - margin-bottom: 0.75rem; - } - - .sm\:ml-3 { - margin-left: 0.75rem; - } - - .sm\:mt-4 { - margin-top: 1rem; - } - - .sm\:mr-4 { - margin-right: 1rem; - } - - .sm\:mb-4 { - margin-bottom: 1rem; - } - - .sm\:ml-4 { - margin-left: 1rem; - } - - .sm\:mt-5 { - margin-top: 1.25rem; - } - - .sm\:mr-5 { - margin-right: 1.25rem; - } - - .sm\:mb-5 { - margin-bottom: 1.25rem; - } - - .sm\:ml-5 { - margin-left: 1.25rem; - } - - .sm\:mt-6 { - margin-top: 1.5rem; - } - - .sm\:mr-6 { - margin-right: 1.5rem; - } - - .sm\:mb-6 { - margin-bottom: 1.5rem; - } - - .sm\:ml-6 { - margin-left: 1.5rem; - } - - .sm\:mt-8 { - margin-top: 2rem; - } - - .sm\:mr-8 { - margin-right: 2rem; - } - - .sm\:mb-8 { - margin-bottom: 2rem; - } - - .sm\:ml-8 { - margin-left: 2rem; - } - - .sm\:mt-10 { - margin-top: 2.5rem; - } - - .sm\:mr-10 { - margin-right: 2.5rem; - } - - .sm\:mb-10 { - margin-bottom: 2.5rem; - } - - .sm\:ml-10 { - margin-left: 2.5rem; - } - - .sm\:mt-12 { - margin-top: 3rem; - } - - .sm\:mr-12 { - margin-right: 3rem; - } - - .sm\:mb-12 { - margin-bottom: 3rem; - } - - .sm\:ml-12 { - margin-left: 3rem; - } - - .sm\:mt-16 { - margin-top: 4rem; - } - - .sm\:mr-16 { - margin-right: 4rem; - } - - .sm\:mb-16 { - margin-bottom: 4rem; - } - - .sm\:ml-16 { - margin-left: 4rem; - } - - .sm\:mt-20 { - margin-top: 5rem; - } - - .sm\:mr-20 { - margin-right: 5rem; - } - - .sm\:mb-20 { - margin-bottom: 5rem; - } - - .sm\:ml-20 { - margin-left: 5rem; - } - - .sm\:mt-24 { - margin-top: 6rem; - } - - .sm\:mr-24 { - margin-right: 6rem; - } - - .sm\:mb-24 { - margin-bottom: 6rem; - } - - .sm\:ml-24 { - margin-left: 6rem; - } - - .sm\:mt-32 { - margin-top: 8rem; - } - - .sm\:mr-32 { - margin-right: 8rem; - } - - .sm\:mb-32 { - margin-bottom: 8rem; - } - - .sm\:ml-32 { - margin-left: 8rem; - } - - .sm\:mt-40 { - margin-top: 10rem; - } - - .sm\:mr-40 { - margin-right: 10rem; - } - - .sm\:mb-40 { - margin-bottom: 10rem; - } - - .sm\:ml-40 { - margin-left: 10rem; - } - - .sm\:mt-48 { - margin-top: 12rem; - } - - .sm\:mr-48 { - margin-right: 12rem; - } - - .sm\:mb-48 { - margin-bottom: 12rem; - } - - .sm\:ml-48 { - margin-left: 12rem; - } - - .sm\:mt-56 { - margin-top: 14rem; - } - - .sm\:mr-56 { - margin-right: 14rem; - } - - .sm\:mb-56 { - margin-bottom: 14rem; - } - - .sm\:ml-56 { - margin-left: 14rem; - } - - .sm\:mt-64 { - margin-top: 16rem; - } - - .sm\:mr-64 { - margin-right: 16rem; - } - - .sm\:mb-64 { - margin-bottom: 16rem; - } - - .sm\:ml-64 { - margin-left: 16rem; - } - - .sm\:mt-auto { - margin-top: auto; - } - - .sm\:mr-auto { - margin-right: auto; - } - - .sm\:mb-auto { - margin-bottom: auto; - } - - .sm\:ml-auto { - margin-left: auto; - } - - .sm\:mt-px { - margin-top: 1px; - } - - .sm\:mr-px { - margin-right: 1px; - } - - .sm\:mb-px { - margin-bottom: 1px; - } - - .sm\:ml-px { - margin-left: 1px; - } - - .sm\:-mt-1 { - margin-top: -0.25rem; - } - - .sm\:-mr-1 { - margin-right: -0.25rem; - } - - .sm\:-mb-1 { - margin-bottom: -0.25rem; - } - - .sm\:-ml-1 { - margin-left: -0.25rem; - } - - .sm\:-mt-2 { - margin-top: -0.5rem; - } - - .sm\:-mr-2 { - margin-right: -0.5rem; - } - - .sm\:-mb-2 { - margin-bottom: -0.5rem; - } - - .sm\:-ml-2 { - margin-left: -0.5rem; - } - - .sm\:-mt-3 { - margin-top: -0.75rem; - } - - .sm\:-mr-3 { - margin-right: -0.75rem; - } - - .sm\:-mb-3 { - margin-bottom: -0.75rem; - } - - .sm\:-ml-3 { - margin-left: -0.75rem; - } - - .sm\:-mt-4 { - margin-top: -1rem; - } - - .sm\:-mr-4 { - margin-right: -1rem; - } - - .sm\:-mb-4 { - margin-bottom: -1rem; - } - - .sm\:-ml-4 { - margin-left: -1rem; - } - - .sm\:-mt-5 { - margin-top: -1.25rem; - } - - .sm\:-mr-5 { - margin-right: -1.25rem; - } - - .sm\:-mb-5 { - margin-bottom: -1.25rem; - } - - .sm\:-ml-5 { - margin-left: -1.25rem; - } - - .sm\:-mt-6 { - margin-top: -1.5rem; - } - - .sm\:-mr-6 { - margin-right: -1.5rem; - } - - .sm\:-mb-6 { - margin-bottom: -1.5rem; - } - - .sm\:-ml-6 { - margin-left: -1.5rem; - } - - .sm\:-mt-8 { - margin-top: -2rem; - } - - .sm\:-mr-8 { - margin-right: -2rem; - } - - .sm\:-mb-8 { - margin-bottom: -2rem; - } - - .sm\:-ml-8 { - margin-left: -2rem; - } - - .sm\:-mt-10 { - margin-top: -2.5rem; - } - - .sm\:-mr-10 { - margin-right: -2.5rem; - } - - .sm\:-mb-10 { - margin-bottom: -2.5rem; - } - - .sm\:-ml-10 { - margin-left: -2.5rem; - } - - .sm\:-mt-12 { - margin-top: -3rem; - } - - .sm\:-mr-12 { - margin-right: -3rem; - } - - .sm\:-mb-12 { - margin-bottom: -3rem; - } - - .sm\:-ml-12 { - margin-left: -3rem; - } - - .sm\:-mt-16 { - margin-top: -4rem; - } - - .sm\:-mr-16 { - margin-right: -4rem; - } - - .sm\:-mb-16 { - margin-bottom: -4rem; - } - - .sm\:-ml-16 { - margin-left: -4rem; - } - - .sm\:-mt-20 { - margin-top: -5rem; - } - - .sm\:-mr-20 { - margin-right: -5rem; - } - - .sm\:-mb-20 { - margin-bottom: -5rem; - } - - .sm\:-ml-20 { - margin-left: -5rem; - } - - .sm\:-mt-24 { - margin-top: -6rem; - } - - .sm\:-mr-24 { - margin-right: -6rem; - } - - .sm\:-mb-24 { - margin-bottom: -6rem; - } - - .sm\:-ml-24 { - margin-left: -6rem; - } - - .sm\:-mt-32 { - margin-top: -8rem; - } - - .sm\:-mr-32 { - margin-right: -8rem; - } - - .sm\:-mb-32 { - margin-bottom: -8rem; - } - - .sm\:-ml-32 { - margin-left: -8rem; - } - - .sm\:-mt-40 { - margin-top: -10rem; - } - - .sm\:-mr-40 { - margin-right: -10rem; - } - - .sm\:-mb-40 { - margin-bottom: -10rem; - } - - .sm\:-ml-40 { - margin-left: -10rem; - } - - .sm\:-mt-48 { - margin-top: -12rem; - } - - .sm\:-mr-48 { - margin-right: -12rem; - } - - .sm\:-mb-48 { - margin-bottom: -12rem; - } - - .sm\:-ml-48 { - margin-left: -12rem; - } - - .sm\:-mt-56 { - margin-top: -14rem; - } - - .sm\:-mr-56 { - margin-right: -14rem; - } - - .sm\:-mb-56 { - margin-bottom: -14rem; - } - - .sm\:-ml-56 { - margin-left: -14rem; - } - - .sm\:-mt-64 { - margin-top: -16rem; - } - - .sm\:-mr-64 { - margin-right: -16rem; - } - - .sm\:-mb-64 { - margin-bottom: -16rem; - } - - .sm\:-ml-64 { - margin-left: -16rem; - } - - .sm\:-mt-px { - margin-top: -1px; - } - - .sm\:-mr-px { - margin-right: -1px; - } - - .sm\:-mb-px { - margin-bottom: -1px; - } - - .sm\:-ml-px { - margin-left: -1px; - } - - .sm\:max-h-full { - max-height: 100%; - } - - .sm\:max-h-screen { - max-height: 100vh; - } - - .sm\:max-w-xs { - max-width: 20rem; - } - - .sm\:max-w-sm { - max-width: 24rem; - } - - .sm\:max-w-md { - max-width: 28rem; - } - - .sm\:max-w-lg { - max-width: 32rem; - } - - .sm\:max-w-xl { - max-width: 36rem; - } - - .sm\:max-w-2xl { - max-width: 42rem; - } - - .sm\:max-w-3xl { - max-width: 48rem; - } - - .sm\:max-w-4xl { - max-width: 56rem; - } - - .sm\:max-w-5xl { - max-width: 64rem; - } - - .sm\:max-w-6xl { - max-width: 72rem; - } - - .sm\:max-w-full { - max-width: 100%; - } - - .sm\:min-h-0 { - min-height: 0; - } - - .sm\:min-h-full { - min-height: 100%; - } - - .sm\:min-h-screen { - min-height: 100vh; - } - - .sm\:min-w-0 { - min-width: 0; - } - - .sm\:min-w-full { - min-width: 100%; - } - - .sm\:object-contain { - -o-object-fit: contain; - object-fit: contain; - } - - .sm\:object-cover { - -o-object-fit: cover; - object-fit: cover; - } - - .sm\:object-fill { - -o-object-fit: fill; - object-fit: fill; - } - - .sm\:object-none { - -o-object-fit: none; - object-fit: none; - } - - .sm\:object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; - } - - .sm\:object-bottom { - -o-object-position: bottom; - object-position: bottom; - } - - .sm\:object-center { - -o-object-position: center; - object-position: center; - } - - .sm\:object-left { - -o-object-position: left; - object-position: left; - } - - .sm\:object-left-bottom { - -o-object-position: left bottom; - object-position: left bottom; - } - - .sm\:object-left-top { - -o-object-position: left top; - object-position: left top; - } - - .sm\:object-right { - -o-object-position: right; - object-position: right; - } - - .sm\:object-right-bottom { - -o-object-position: right bottom; - object-position: right bottom; - } - - .sm\:object-right-top { - -o-object-position: right top; - object-position: right top; - } - - .sm\:object-top { - -o-object-position: top; - object-position: top; - } - - .sm\:opacity-0 { - opacity: 0; - } - - .sm\:opacity-25 { - opacity: 0.25; - } - - .sm\:opacity-50 { - opacity: 0.5; - } - - .sm\:opacity-75 { - opacity: 0.75; - } - - .sm\:opacity-100 { - opacity: 1; - } - - .sm\:outline-none { - outline: 0; - } - - .sm\:focus\:outline-none:focus { - outline: 0; - } - - .sm\:overflow-auto { - overflow: auto; - } - - .sm\:overflow-hidden { - overflow: hidden; - } - - .sm\:overflow-visible { - overflow: visible; - } - - .sm\:overflow-scroll { - overflow: scroll; - } - - .sm\:overflow-x-auto { - overflow-x: auto; - } - - .sm\:overflow-y-auto { - overflow-y: auto; - } - - .sm\:overflow-x-hidden { - overflow-x: hidden; - } - - .sm\:overflow-y-hidden { - overflow-y: hidden; - } - - .sm\:overflow-x-visible { - overflow-x: visible; - } - - .sm\:overflow-y-visible { - overflow-y: visible; - } - - .sm\:overflow-x-scroll { - overflow-x: scroll; - } - - .sm\:overflow-y-scroll { - overflow-y: scroll; - } - - .sm\:scrolling-touch { - -webkit-overflow-scrolling: touch; - } - - .sm\:scrolling-auto { - -webkit-overflow-scrolling: auto; - } - - .sm\:p-0 { - padding: 0; - } - - .sm\:p-1 { - padding: 0.25rem; - } - - .sm\:p-2 { - padding: 0.5rem; - } - - .sm\:p-3 { - padding: 0.75rem; - } - - .sm\:p-4 { - padding: 1rem; - } - - .sm\:p-5 { - padding: 1.25rem; - } - - .sm\:p-6 { - padding: 1.5rem; - } - - .sm\:p-8 { - padding: 2rem; - } - - .sm\:p-10 { - padding: 2.5rem; - } - - .sm\:p-12 { - padding: 3rem; - } - - .sm\:p-16 { - padding: 4rem; - } - - .sm\:p-20 { - padding: 5rem; - } - - .sm\:p-24 { - padding: 6rem; - } - - .sm\:p-32 { - padding: 8rem; - } - - .sm\:p-40 { - padding: 10rem; - } - - .sm\:p-48 { - padding: 12rem; - } - - .sm\:p-56 { - padding: 14rem; - } - - .sm\:p-64 { - padding: 16rem; - } - - .sm\:p-px { - padding: 1px; - } - - .sm\:py-0 { - padding-top: 0; - padding-bottom: 0; - } - - .sm\:px-0 { - padding-left: 0; - padding-right: 0; - } - - .sm\:py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .sm\:px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; - } - - .sm\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .sm\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - - .sm\:py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - } - - .sm\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .sm\:py-4 { - padding-top: 1rem; - padding-bottom: 1rem; - } - - .sm\:px-4 { - padding-left: 1rem; - padding-right: 1rem; - } - - .sm\:py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; - } - - .sm\:px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; - } - - .sm\:py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - - .sm\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .sm\:py-8 { - padding-top: 2rem; - padding-bottom: 2rem; - } - - .sm\:px-8 { - padding-left: 2rem; - padding-right: 2rem; - } - - .sm\:py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; - } - - .sm\:px-10 { - padding-left: 2.5rem; - padding-right: 2.5rem; - } - - .sm\:py-12 { - padding-top: 3rem; - padding-bottom: 3rem; - } - - .sm\:px-12 { - padding-left: 3rem; - padding-right: 3rem; - } - - .sm\:py-16 { - padding-top: 4rem; - padding-bottom: 4rem; - } - - .sm\:px-16 { - padding-left: 4rem; - padding-right: 4rem; - } - - .sm\:py-20 { - padding-top: 5rem; - padding-bottom: 5rem; - } - - .sm\:px-20 { - padding-left: 5rem; - padding-right: 5rem; - } - - .sm\:py-24 { - padding-top: 6rem; - padding-bottom: 6rem; - } - - .sm\:px-24 { - padding-left: 6rem; - padding-right: 6rem; - } - - .sm\:py-32 { - padding-top: 8rem; - padding-bottom: 8rem; - } - - .sm\:px-32 { - padding-left: 8rem; - padding-right: 8rem; - } - - .sm\:py-40 { - padding-top: 10rem; - padding-bottom: 10rem; - } - - .sm\:px-40 { - padding-left: 10rem; - padding-right: 10rem; - } - - .sm\:py-48 { - padding-top: 12rem; - padding-bottom: 12rem; - } - - .sm\:px-48 { - padding-left: 12rem; - padding-right: 12rem; - } - - .sm\:py-56 { - padding-top: 14rem; - padding-bottom: 14rem; - } - - .sm\:px-56 { - padding-left: 14rem; - padding-right: 14rem; - } - - .sm\:py-64 { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .sm\:px-64 { - padding-left: 16rem; - padding-right: 16rem; - } - - .sm\:py-px { - padding-top: 1px; - padding-bottom: 1px; - } - - .sm\:px-px { - padding-left: 1px; - padding-right: 1px; - } - - .sm\:pt-0 { - padding-top: 0; - } - - .sm\:pr-0 { - padding-right: 0; - } - - .sm\:pb-0 { - padding-bottom: 0; - } - - .sm\:pl-0 { - padding-left: 0; - } - - .sm\:pt-1 { - padding-top: 0.25rem; - } - - .sm\:pr-1 { - padding-right: 0.25rem; - } - - .sm\:pb-1 { - padding-bottom: 0.25rem; - } - - .sm\:pl-1 { - padding-left: 0.25rem; - } - - .sm\:pt-2 { - padding-top: 0.5rem; - } - - .sm\:pr-2 { - padding-right: 0.5rem; - } - - .sm\:pb-2 { - padding-bottom: 0.5rem; - } - - .sm\:pl-2 { - padding-left: 0.5rem; - } - - .sm\:pt-3 { - padding-top: 0.75rem; - } - - .sm\:pr-3 { - padding-right: 0.75rem; - } - - .sm\:pb-3 { - padding-bottom: 0.75rem; - } - - .sm\:pl-3 { - padding-left: 0.75rem; - } - - .sm\:pt-4 { - padding-top: 1rem; - } - - .sm\:pr-4 { - padding-right: 1rem; - } - - .sm\:pb-4 { - padding-bottom: 1rem; - } - - .sm\:pl-4 { - padding-left: 1rem; - } - - .sm\:pt-5 { - padding-top: 1.25rem; - } - - .sm\:pr-5 { - padding-right: 1.25rem; - } - - .sm\:pb-5 { - padding-bottom: 1.25rem; - } - - .sm\:pl-5 { - padding-left: 1.25rem; - } - - .sm\:pt-6 { - padding-top: 1.5rem; - } - - .sm\:pr-6 { - padding-right: 1.5rem; - } - - .sm\:pb-6 { - padding-bottom: 1.5rem; - } - - .sm\:pl-6 { - padding-left: 1.5rem; - } - - .sm\:pt-8 { - padding-top: 2rem; - } - - .sm\:pr-8 { - padding-right: 2rem; - } - - .sm\:pb-8 { - padding-bottom: 2rem; - } - - .sm\:pl-8 { - padding-left: 2rem; - } - - .sm\:pt-10 { - padding-top: 2.5rem; - } - - .sm\:pr-10 { - padding-right: 2.5rem; - } - - .sm\:pb-10 { - padding-bottom: 2.5rem; - } - - .sm\:pl-10 { - padding-left: 2.5rem; - } - - .sm\:pt-12 { - padding-top: 3rem; - } - - .sm\:pr-12 { - padding-right: 3rem; - } - - .sm\:pb-12 { - padding-bottom: 3rem; - } - - .sm\:pl-12 { - padding-left: 3rem; - } - - .sm\:pt-16 { - padding-top: 4rem; - } - - .sm\:pr-16 { - padding-right: 4rem; - } - - .sm\:pb-16 { - padding-bottom: 4rem; - } - - .sm\:pl-16 { - padding-left: 4rem; - } - - .sm\:pt-20 { - padding-top: 5rem; - } - - .sm\:pr-20 { - padding-right: 5rem; - } - - .sm\:pb-20 { - padding-bottom: 5rem; - } - - .sm\:pl-20 { - padding-left: 5rem; - } - - .sm\:pt-24 { - padding-top: 6rem; - } - - .sm\:pr-24 { - padding-right: 6rem; - } - - .sm\:pb-24 { - padding-bottom: 6rem; - } - - .sm\:pl-24 { - padding-left: 6rem; - } - - .sm\:pt-32 { - padding-top: 8rem; - } - - .sm\:pr-32 { - padding-right: 8rem; - } - - .sm\:pb-32 { - padding-bottom: 8rem; - } - - .sm\:pl-32 { - padding-left: 8rem; - } - - .sm\:pt-40 { - padding-top: 10rem; - } - - .sm\:pr-40 { - padding-right: 10rem; - } - - .sm\:pb-40 { - padding-bottom: 10rem; - } - - .sm\:pl-40 { - padding-left: 10rem; - } - - .sm\:pt-48 { - padding-top: 12rem; - } - - .sm\:pr-48 { - padding-right: 12rem; - } - - .sm\:pb-48 { - padding-bottom: 12rem; - } - - .sm\:pl-48 { - padding-left: 12rem; - } - - .sm\:pt-56 { - padding-top: 14rem; - } - - .sm\:pr-56 { - padding-right: 14rem; - } - - .sm\:pb-56 { - padding-bottom: 14rem; - } - - .sm\:pl-56 { - padding-left: 14rem; - } - - .sm\:pt-64 { - padding-top: 16rem; - } - - .sm\:pr-64 { - padding-right: 16rem; - } - - .sm\:pb-64 { - padding-bottom: 16rem; - } - - .sm\:pl-64 { - padding-left: 16rem; - } - - .sm\:pt-px { - padding-top: 1px; - } - - .sm\:pr-px { - padding-right: 1px; - } - - .sm\:pb-px { - padding-bottom: 1px; - } - - .sm\:pl-px { - padding-left: 1px; - } - - .sm\:pointer-events-none { - pointer-events: none; - } - - .sm\:pointer-events-auto { - pointer-events: auto; - } - - .sm\:static { - position: static; - } - - .sm\:fixed { - position: fixed; - } - - .sm\:absolute { - position: absolute; - } - - .sm\:relative { - position: relative; - } - - .sm\:sticky { - position: -webkit-sticky; - position: sticky; - } - - .sm\:inset-0 { - top: 0; - right: 0; - bottom: 0; - left: 0; - } - - .sm\:inset-auto { - top: auto; - right: auto; - bottom: auto; - left: auto; - } - - .sm\:inset-y-0 { - top: 0; - bottom: 0; - } - - .sm\:inset-x-0 { - right: 0; - left: 0; - } - - .sm\:inset-y-auto { - top: auto; - bottom: auto; - } - - .sm\:inset-x-auto { - right: auto; - left: auto; - } - - .sm\:top-0 { - top: 0; - } - - .sm\:right-0 { - right: 0; - } - - .sm\:bottom-0 { - bottom: 0; - } - - .sm\:left-0 { - left: 0; - } - - .sm\:top-auto { - top: auto; - } - - .sm\:right-auto { - right: auto; - } - - .sm\:bottom-auto { - bottom: auto; - } - - .sm\:left-auto { - left: auto; - } - - .sm\:resize-none { - resize: none; - } - - .sm\:resize-y { - resize: vertical; - } - - .sm\:resize-x { - resize: horizontal; - } - - .sm\:resize { - resize: both; - } - - .sm\:shadow { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:shadow-md { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .sm\:shadow-lg { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .sm\:shadow-xl { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .sm\:shadow-2xl { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .sm\:shadow-inner { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:shadow-outline { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .sm\:shadow-none { - box-shadow: none; - } - - .sm\:hover\:shadow:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:hover\:shadow-md:hover { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .sm\:hover\:shadow-lg:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .sm\:hover\:shadow-xl:hover { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .sm\:hover\:shadow-2xl:hover { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .sm\:hover\:shadow-inner:hover { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:hover\:shadow-outline:hover { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .sm\:hover\:shadow-none:hover { - box-shadow: none; - } - - .sm\:focus\:shadow:focus { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:focus\:shadow-md:focus { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .sm\:focus\:shadow-lg:focus { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .sm\:focus\:shadow-xl:focus { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .sm\:focus\:shadow-2xl:focus { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .sm\:focus\:shadow-inner:focus { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .sm\:focus\:shadow-outline:focus { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .sm\:focus\:shadow-none:focus { - box-shadow: none; - } - - .sm\:fill-current { - fill: currentColor; - } - - .sm\:stroke-current { - stroke: currentColor; - } - - .sm\:table-auto { - table-layout: auto; - } - - .sm\:table-fixed { - table-layout: fixed; - } - - .sm\:text-left { - text-align: left; - } - - .sm\:text-center { - text-align: center; - } - - .sm\:text-right { - text-align: right; - } - - .sm\:text-justify { - text-align: justify; - } - - .sm\:text-transparent { - color: transparent; - } - - .sm\:text-black { - color: #000; - } - - .sm\:text-grey-darkest { - color: #3d4852; - } - - .sm\:text-grey-darker { - color: #606f7b; - } - - .sm\:text-grey-dark { - color: #8795a1; - } - - .sm\:text-grey { - color: #b8c2cc; - } - - .sm\:text-grey-light { - color: #dae1e7; - } - - .sm\:text-grey-lighter { - color: #f1f5f8; - } - - .sm\:text-grey-lightest { - color: #f8fafc; - } - - .sm\:text-white { - color: #fff; - } - - .sm\:text-snipline-green-darker { - color: #333510; - } - - .sm\:text-snipline-green-dark { - color: #94AB0D; - } - - .sm\:text-snipline-lime-light { - color: #e1f471; - } - - .sm\:text-snipline-lime { - color: #CDED15; - } - - .sm\:text-snipline-lime-dark { - color: #94AB0D; - } - - .sm\:text-snipline-green { - color: #15ED78; - } - - .sm\:text-snipline-yellow { - color: #EDE415; - } - - .sm\:text-snipline-grey-dark { - color: rgba(51, 53, 16, 0.8); - } - - .sm\:text-snipline-grey { - color: #EBF1EF; - } - - .sm\:text-snipline-grey-light { - color: #DAE1E7; - } - - .sm\:text-snipline-grey-lighter { - color: #E0E8EE; - } - - .sm\:text-success-100 { - color: #ECFBD7; - } - - .sm\:text-success-200 { - color: #D5F8B0; - } - - .sm\:text-success-300 { - color: #B3EC84; - } - - .sm\:text-success-400 { - color: #90D962; - } - - .sm\:text-success-500 { - color: #61C134; - } - - .sm\:text-success-600 { - color: #46A526; - } - - .sm\:text-success-700 { - color: #2F8A1A; - } - - .sm\:text-success-800 { - color: #1C6F10; - } - - .sm\:text-success-900 { - color: #0E5C09; - } - - .sm\:text-info-100 { - color: #DFF6FE; - } - - .sm\:text-info-200 { - color: #BFE9FE; - } - - .sm\:text-info-300 { - color: #9FD9FE; - } - - .sm\:text-info-400 { - color: #86CAFD; - } - - .sm\:text-info-500 { - color: #5FB0FC; - } - - .sm\:text-info-600 { - color: #4589D8; - } - - .sm\:text-info-700 { - color: #2F67B5; - } - - .sm\:text-info-800 { - color: #1E4892; - } - - .sm\:text-info-900 { - color: #123278; - } - - .sm\:text-danger-100 { - color: #FFEAD7; - } - - .sm\:text-danger-200 { - color: #FFD0B0; - } - - .sm\:text-danger-300 { - color: #FFB088; - } - - .sm\:text-danger-400 { - color: #FF916B; - } - - .sm\:text-danger-500 { - color: #FF5E3A; - } - - .sm\:text-danger-600 { - color: #DB3D2A; - } - - .sm\:text-danger-700 { - color: #B7221D; - } - - .sm\:text-danger-800 { - color: #931218; - } - - .sm\:text-danger-900 { - color: #7A0B18; - } - - .sm\:hover\:text-transparent:hover { - color: transparent; - } - - .sm\:hover\:text-black:hover { - color: #000; - } - - .sm\:hover\:text-grey-darkest:hover { - color: #3d4852; - } - - .sm\:hover\:text-grey-darker:hover { - color: #606f7b; - } - - .sm\:hover\:text-grey-dark:hover { - color: #8795a1; - } - - .sm\:hover\:text-grey:hover { - color: #b8c2cc; - } - - .sm\:hover\:text-grey-light:hover { - color: #dae1e7; - } - - .sm\:hover\:text-grey-lighter:hover { - color: #f1f5f8; - } - - .sm\:hover\:text-grey-lightest:hover { - color: #f8fafc; - } - - .sm\:hover\:text-white:hover { - color: #fff; - } - - .sm\:hover\:text-snipline-green-darker:hover { - color: #333510; - } - - .sm\:hover\:text-snipline-green-dark:hover { - color: #94AB0D; - } - - .sm\:hover\:text-snipline-lime-light:hover { - color: #e1f471; - } - - .sm\:hover\:text-snipline-lime:hover { - color: #CDED15; - } - - .sm\:hover\:text-snipline-lime-dark:hover { - color: #94AB0D; - } - - .sm\:hover\:text-snipline-green:hover { - color: #15ED78; - } - - .sm\:hover\:text-snipline-yellow:hover { - color: #EDE415; - } - - .sm\:hover\:text-snipline-grey-dark:hover { - color: rgba(51, 53, 16, 0.8); - } - - .sm\:hover\:text-snipline-grey:hover { - color: #EBF1EF; - } - - .sm\:hover\:text-snipline-grey-light:hover { - color: #DAE1E7; - } - - .sm\:hover\:text-snipline-grey-lighter:hover { - color: #E0E8EE; - } - - .sm\:hover\:text-success-100:hover { - color: #ECFBD7; - } - - .sm\:hover\:text-success-200:hover { - color: #D5F8B0; - } - - .sm\:hover\:text-success-300:hover { - color: #B3EC84; - } - - .sm\:hover\:text-success-400:hover { - color: #90D962; - } - - .sm\:hover\:text-success-500:hover { - color: #61C134; - } - - .sm\:hover\:text-success-600:hover { - color: #46A526; - } - - .sm\:hover\:text-success-700:hover { - color: #2F8A1A; - } - - .sm\:hover\:text-success-800:hover { - color: #1C6F10; - } - - .sm\:hover\:text-success-900:hover { - color: #0E5C09; - } - - .sm\:hover\:text-info-100:hover { - color: #DFF6FE; - } - - .sm\:hover\:text-info-200:hover { - color: #BFE9FE; - } - - .sm\:hover\:text-info-300:hover { - color: #9FD9FE; - } - - .sm\:hover\:text-info-400:hover { - color: #86CAFD; - } - - .sm\:hover\:text-info-500:hover { - color: #5FB0FC; - } - - .sm\:hover\:text-info-600:hover { - color: #4589D8; - } - - .sm\:hover\:text-info-700:hover { - color: #2F67B5; - } - - .sm\:hover\:text-info-800:hover { - color: #1E4892; - } - - .sm\:hover\:text-info-900:hover { - color: #123278; - } - - .sm\:hover\:text-danger-100:hover { - color: #FFEAD7; - } - - .sm\:hover\:text-danger-200:hover { - color: #FFD0B0; - } - - .sm\:hover\:text-danger-300:hover { - color: #FFB088; - } - - .sm\:hover\:text-danger-400:hover { - color: #FF916B; - } - - .sm\:hover\:text-danger-500:hover { - color: #FF5E3A; - } - - .sm\:hover\:text-danger-600:hover { - color: #DB3D2A; - } - - .sm\:hover\:text-danger-700:hover { - color: #B7221D; - } - - .sm\:hover\:text-danger-800:hover { - color: #931218; - } - - .sm\:hover\:text-danger-900:hover { - color: #7A0B18; - } - - .sm\:focus\:text-transparent:focus { - color: transparent; - } - - .sm\:focus\:text-black:focus { - color: #000; - } - - .sm\:focus\:text-grey-darkest:focus { - color: #3d4852; - } - - .sm\:focus\:text-grey-darker:focus { - color: #606f7b; - } - - .sm\:focus\:text-grey-dark:focus { - color: #8795a1; - } - - .sm\:focus\:text-grey:focus { - color: #b8c2cc; - } - - .sm\:focus\:text-grey-light:focus { - color: #dae1e7; - } - - .sm\:focus\:text-grey-lighter:focus { - color: #f1f5f8; - } - - .sm\:focus\:text-grey-lightest:focus { - color: #f8fafc; - } - - .sm\:focus\:text-white:focus { - color: #fff; - } - - .sm\:focus\:text-snipline-green-darker:focus { - color: #333510; - } - - .sm\:focus\:text-snipline-green-dark:focus { - color: #94AB0D; - } - - .sm\:focus\:text-snipline-lime-light:focus { - color: #e1f471; - } - - .sm\:focus\:text-snipline-lime:focus { - color: #CDED15; - } - - .sm\:focus\:text-snipline-lime-dark:focus { - color: #94AB0D; - } - - .sm\:focus\:text-snipline-green:focus { - color: #15ED78; - } - - .sm\:focus\:text-snipline-yellow:focus { - color: #EDE415; - } - - .sm\:focus\:text-snipline-grey-dark:focus { - color: rgba(51, 53, 16, 0.8); - } - - .sm\:focus\:text-snipline-grey:focus { - color: #EBF1EF; - } - - .sm\:focus\:text-snipline-grey-light:focus { - color: #DAE1E7; - } - - .sm\:focus\:text-snipline-grey-lighter:focus { - color: #E0E8EE; - } - - .sm\:focus\:text-success-100:focus { - color: #ECFBD7; - } - - .sm\:focus\:text-success-200:focus { - color: #D5F8B0; - } - - .sm\:focus\:text-success-300:focus { - color: #B3EC84; - } - - .sm\:focus\:text-success-400:focus { - color: #90D962; - } - - .sm\:focus\:text-success-500:focus { - color: #61C134; - } - - .sm\:focus\:text-success-600:focus { - color: #46A526; - } - - .sm\:focus\:text-success-700:focus { - color: #2F8A1A; - } - - .sm\:focus\:text-success-800:focus { - color: #1C6F10; - } - - .sm\:focus\:text-success-900:focus { - color: #0E5C09; - } - - .sm\:focus\:text-info-100:focus { - color: #DFF6FE; - } - - .sm\:focus\:text-info-200:focus { - color: #BFE9FE; - } - - .sm\:focus\:text-info-300:focus { - color: #9FD9FE; - } - - .sm\:focus\:text-info-400:focus { - color: #86CAFD; - } - - .sm\:focus\:text-info-500:focus { - color: #5FB0FC; - } - - .sm\:focus\:text-info-600:focus { - color: #4589D8; - } - - .sm\:focus\:text-info-700:focus { - color: #2F67B5; - } - - .sm\:focus\:text-info-800:focus { - color: #1E4892; - } - - .sm\:focus\:text-info-900:focus { - color: #123278; - } - - .sm\:focus\:text-danger-100:focus { - color: #FFEAD7; - } - - .sm\:focus\:text-danger-200:focus { - color: #FFD0B0; - } - - .sm\:focus\:text-danger-300:focus { - color: #FFB088; - } - - .sm\:focus\:text-danger-400:focus { - color: #FF916B; - } - - .sm\:focus\:text-danger-500:focus { - color: #FF5E3A; - } - - .sm\:focus\:text-danger-600:focus { - color: #DB3D2A; - } - - .sm\:focus\:text-danger-700:focus { - color: #B7221D; - } - - .sm\:focus\:text-danger-800:focus { - color: #931218; - } - - .sm\:focus\:text-danger-900:focus { - color: #7A0B18; - } - - .sm\:text-xs { - font-size: 0.75rem; - } - - .sm\:text-sm { - font-size: 0.875rem; - } - - .sm\:text-base { - font-size: 1rem; - } - - .sm\:text-lg { - font-size: 1.125rem; - } - - .sm\:text-xl { - font-size: 1.25rem; - } - - .sm\:text-2xl { - font-size: 1.5rem; - } - - .sm\:text-3xl { - font-size: 1.875rem; - } - - .sm\:text-4xl { - font-size: 2.25rem; - } - - .sm\:text-5xl { - font-size: 3rem; - } - - .sm\:text-6xl { - font-size: 4rem; - } - - .sm\:italic { - font-style: italic; - } - - .sm\:not-italic { - font-style: normal; - } - - .sm\:uppercase { - text-transform: uppercase; - } - - .sm\:lowercase { - text-transform: lowercase; - } - - .sm\:capitalize { - text-transform: capitalize; - } - - .sm\:normal-case { - text-transform: none; - } - - .sm\:underline { - text-decoration: underline; - } - - .sm\:line-through { - text-decoration: line-through; - } - - .sm\:no-underline { - text-decoration: none; - } - - .sm\:hover\:underline:hover { - text-decoration: underline; - } - - .sm\:hover\:line-through:hover { - text-decoration: line-through; - } - - .sm\:hover\:no-underline:hover { - text-decoration: none; - } - - .sm\:focus\:underline:focus { - text-decoration: underline; - } - - .sm\:focus\:line-through:focus { - text-decoration: line-through; - } - - .sm\:focus\:no-underline:focus { - text-decoration: none; - } - - .sm\:antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .sm\:subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; - } - - .sm\:tracking-tighter { - letter-spacing: -0.05em; - } - - .sm\:tracking-tight { - letter-spacing: -0.025em; - } - - .sm\:tracking-normal { - letter-spacing: 0; - } - - .sm\:tracking-wide { - letter-spacing: 0.025em; - } - - .sm\:tracking-wider { - letter-spacing: 0.05em; - } - - .sm\:tracking-widest { - letter-spacing: 0.1em; - } - - .sm\:select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - .sm\:select-text { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - .sm\:select-all { - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; - } - - .sm\:select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; - } - - .sm\:align-baseline { - vertical-align: baseline; - } - - .sm\:align-top { - vertical-align: top; - } - - .sm\:align-middle { - vertical-align: middle; - } - - .sm\:align-bottom { - vertical-align: bottom; - } - - .sm\:align-text-top { - vertical-align: text-top; - } - - .sm\:align-text-bottom { - vertical-align: text-bottom; - } - - .sm\:visible { - visibility: visible; - } - - .sm\:invisible { - visibility: hidden; - } - - .sm\:whitespace-normal { - white-space: normal; - } - - .sm\:whitespace-no-wrap { - white-space: nowrap; - } - - .sm\:whitespace-pre { - white-space: pre; - } - - .sm\:whitespace-pre-line { - white-space: pre-line; - } - - .sm\:whitespace-pre-wrap { - white-space: pre-wrap; - } - - .sm\:break-normal { - overflow-wrap: normal; - word-break: normal; - } - - .sm\:break-words { - overflow-wrap: break-word; - } - - .sm\:break-all { - word-break: break-all; - } - - .sm\:truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .sm\:w-0 { - width: 0; - } - - .sm\:w-1 { - width: 0.25rem; - } - - .sm\:w-2 { - width: 0.5rem; - } - - .sm\:w-3 { - width: 0.75rem; - } - - .sm\:w-4 { - width: 1rem; - } - - .sm\:w-5 { - width: 1.25rem; - } - - .sm\:w-6 { - width: 1.5rem; - } - - .sm\:w-8 { - width: 2rem; - } - - .sm\:w-10 { - width: 2.5rem; - } - - .sm\:w-12 { - width: 3rem; - } - - .sm\:w-16 { - width: 4rem; - } - - .sm\:w-20 { - width: 5rem; - } - - .sm\:w-24 { - width: 6rem; - } - - .sm\:w-32 { - width: 8rem; - } - - .sm\:w-40 { - width: 10rem; - } - - .sm\:w-48 { - width: 12rem; - } - - .sm\:w-56 { - width: 14rem; - } - - .sm\:w-64 { - width: 16rem; - } - - .sm\:w-auto { - width: auto; - } - - .sm\:w-px { - width: 1px; - } - - .sm\:w-1\/2 { - width: 50%; - } - - .sm\:w-1\/3 { - width: 33.33333%; - } - - .sm\:w-2\/3 { - width: 66.66667%; - } - - .sm\:w-1\/4 { - width: 25%; - } - - .sm\:w-2\/4 { - width: 50%; - } - - .sm\:w-3\/4 { - width: 75%; - } - - .sm\:w-1\/5 { - width: 20%; - } - - .sm\:w-2\/5 { - width: 40%; - } - - .sm\:w-3\/5 { - width: 60%; - } - - .sm\:w-4\/5 { - width: 80%; - } - - .sm\:w-1\/6 { - width: 16.66667%; - } - - .sm\:w-2\/6 { - width: 33.33333%; - } - - .sm\:w-3\/6 { - width: 50%; - } - - .sm\:w-4\/6 { - width: 66.66667%; - } - - .sm\:w-5\/6 { - width: 83.33333%; - } - - .sm\:w-1\/12 { - width: 8.33333%; - } - - .sm\:w-2\/12 { - width: 16.66667%; - } - - .sm\:w-3\/12 { - width: 25%; - } - - .sm\:w-4\/12 { - width: 33.33333%; - } - - .sm\:w-5\/12 { - width: 41.66667%; - } - - .sm\:w-6\/12 { - width: 50%; - } - - .sm\:w-7\/12 { - width: 58.33333%; - } - - .sm\:w-8\/12 { - width: 66.66667%; - } - - .sm\:w-9\/12 { - width: 75%; - } - - .sm\:w-10\/12 { - width: 83.33333%; - } - - .sm\:w-11\/12 { - width: 91.66667%; - } - - .sm\:w-full { - width: 100%; - } - - .sm\:w-screen { - width: 100vw; - } - - .sm\:z-0 { - z-index: 0; - } - - .sm\:z-10 { - z-index: 10; - } - - .sm\:z-20 { - z-index: 20; - } - - .sm\:z-30 { - z-index: 30; - } - - .sm\:z-40 { - z-index: 40; - } - - .sm\:z-50 { - z-index: 50; - } - - .sm\:z-auto { - z-index: auto; - } -} - -@media (min-width: 768px) { - .md\:appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } - - .md\:bg-fixed { - background-attachment: fixed; - } - - .md\:bg-local { - background-attachment: local; - } - - .md\:bg-scroll { - background-attachment: scroll; - } - - .md\:bg-transparent { - background-color: transparent; - } - - .md\:bg-black { - background-color: #000; - } - - .md\:bg-grey-darkest { - background-color: #3d4852; - } - - .md\:bg-grey-darker { - background-color: #606f7b; - } - - .md\:bg-grey-dark { - background-color: #8795a1; - } - - .md\:bg-grey { - background-color: #b8c2cc; - } - - .md\:bg-grey-light { - background-color: #dae1e7; - } - - .md\:bg-grey-lighter { - background-color: #f1f5f8; - } - - .md\:bg-grey-lightest { - background-color: #f8fafc; - } - - .md\:bg-white { - background-color: #fff; - } - - .md\:bg-snipline-green-darker { - background-color: #333510; - } - - .md\:bg-snipline-green-dark { - background-color: #94AB0D; - } - - .md\:bg-snipline-lime-light { - background-color: #e1f471; - } - - .md\:bg-snipline-lime { - background-color: #CDED15; - } - - .md\:bg-snipline-lime-dark { - background-color: #94AB0D; - } - - .md\:bg-snipline-green { - background-color: #15ED78; - } - - .md\:bg-snipline-yellow { - background-color: #EDE415; - } - - .md\:bg-snipline-grey-dark { - background-color: rgba(51, 53, 16, 0.8); - } - - .md\:bg-snipline-grey { - background-color: #EBF1EF; - } - - .md\:bg-snipline-grey-light { - background-color: #DAE1E7; - } - - .md\:bg-snipline-grey-lighter { - background-color: #E0E8EE; - } - - .md\:bg-success-100 { - background-color: #ECFBD7; - } - - .md\:bg-success-200 { - background-color: #D5F8B0; - } - - .md\:bg-success-300 { - background-color: #B3EC84; - } - - .md\:bg-success-400 { - background-color: #90D962; - } - - .md\:bg-success-500 { - background-color: #61C134; - } - - .md\:bg-success-600 { - background-color: #46A526; - } - - .md\:bg-success-700 { - background-color: #2F8A1A; - } - - .md\:bg-success-800 { - background-color: #1C6F10; - } - - .md\:bg-success-900 { - background-color: #0E5C09; - } - - .md\:bg-info-100 { - background-color: #DFF6FE; - } - - .md\:bg-info-200 { - background-color: #BFE9FE; - } - - .md\:bg-info-300 { - background-color: #9FD9FE; - } - - .md\:bg-info-400 { - background-color: #86CAFD; - } - - .md\:bg-info-500 { - background-color: #5FB0FC; - } - - .md\:bg-info-600 { - background-color: #4589D8; - } - - .md\:bg-info-700 { - background-color: #2F67B5; - } - - .md\:bg-info-800 { - background-color: #1E4892; - } - - .md\:bg-info-900 { - background-color: #123278; - } - - .md\:bg-danger-100 { - background-color: #FFEAD7; - } - - .md\:bg-danger-200 { - background-color: #FFD0B0; - } - - .md\:bg-danger-300 { - background-color: #FFB088; - } - - .md\:bg-danger-400 { - background-color: #FF916B; - } - - .md\:bg-danger-500 { - background-color: #FF5E3A; - } - - .md\:bg-danger-600 { - background-color: #DB3D2A; - } - - .md\:bg-danger-700 { - background-color: #B7221D; - } - - .md\:bg-danger-800 { - background-color: #931218; - } - - .md\:bg-danger-900 { - background-color: #7A0B18; - } - - .md\:hover\:bg-transparent:hover { - background-color: transparent; - } - - .md\:hover\:bg-black:hover { - background-color: #000; - } - - .md\:hover\:bg-grey-darkest:hover { - background-color: #3d4852; - } - - .md\:hover\:bg-grey-darker:hover { - background-color: #606f7b; - } - - .md\:hover\:bg-grey-dark:hover { - background-color: #8795a1; - } - - .md\:hover\:bg-grey:hover { - background-color: #b8c2cc; - } - - .md\:hover\:bg-grey-light:hover { - background-color: #dae1e7; - } - - .md\:hover\:bg-grey-lighter:hover { - background-color: #f1f5f8; - } - - .md\:hover\:bg-grey-lightest:hover { - background-color: #f8fafc; - } - - .md\:hover\:bg-white:hover { - background-color: #fff; - } - - .md\:hover\:bg-snipline-green-darker:hover { - background-color: #333510; - } - - .md\:hover\:bg-snipline-green-dark:hover { - background-color: #94AB0D; - } - - .md\:hover\:bg-snipline-lime-light:hover { - background-color: #e1f471; - } - - .md\:hover\:bg-snipline-lime:hover { - background-color: #CDED15; - } - - .md\:hover\:bg-snipline-lime-dark:hover { - background-color: #94AB0D; - } - - .md\:hover\:bg-snipline-green:hover { - background-color: #15ED78; - } - - .md\:hover\:bg-snipline-yellow:hover { - background-color: #EDE415; - } - - .md\:hover\:bg-snipline-grey-dark:hover { - background-color: rgba(51, 53, 16, 0.8); - } - - .md\:hover\:bg-snipline-grey:hover { - background-color: #EBF1EF; - } - - .md\:hover\:bg-snipline-grey-light:hover { - background-color: #DAE1E7; - } - - .md\:hover\:bg-snipline-grey-lighter:hover { - background-color: #E0E8EE; - } - - .md\:hover\:bg-success-100:hover { - background-color: #ECFBD7; - } - - .md\:hover\:bg-success-200:hover { - background-color: #D5F8B0; - } - - .md\:hover\:bg-success-300:hover { - background-color: #B3EC84; - } - - .md\:hover\:bg-success-400:hover { - background-color: #90D962; - } - - .md\:hover\:bg-success-500:hover { - background-color: #61C134; - } - - .md\:hover\:bg-success-600:hover { - background-color: #46A526; - } - - .md\:hover\:bg-success-700:hover { - background-color: #2F8A1A; - } - - .md\:hover\:bg-success-800:hover { - background-color: #1C6F10; - } - - .md\:hover\:bg-success-900:hover { - background-color: #0E5C09; - } - - .md\:hover\:bg-info-100:hover { - background-color: #DFF6FE; - } - - .md\:hover\:bg-info-200:hover { - background-color: #BFE9FE; - } - - .md\:hover\:bg-info-300:hover { - background-color: #9FD9FE; - } - - .md\:hover\:bg-info-400:hover { - background-color: #86CAFD; - } - - .md\:hover\:bg-info-500:hover { - background-color: #5FB0FC; - } - - .md\:hover\:bg-info-600:hover { - background-color: #4589D8; - } - - .md\:hover\:bg-info-700:hover { - background-color: #2F67B5; - } - - .md\:hover\:bg-info-800:hover { - background-color: #1E4892; - } - - .md\:hover\:bg-info-900:hover { - background-color: #123278; - } - - .md\:hover\:bg-danger-100:hover { - background-color: #FFEAD7; - } - - .md\:hover\:bg-danger-200:hover { - background-color: #FFD0B0; - } - - .md\:hover\:bg-danger-300:hover { - background-color: #FFB088; - } - - .md\:hover\:bg-danger-400:hover { - background-color: #FF916B; - } - - .md\:hover\:bg-danger-500:hover { - background-color: #FF5E3A; - } - - .md\:hover\:bg-danger-600:hover { - background-color: #DB3D2A; - } - - .md\:hover\:bg-danger-700:hover { - background-color: #B7221D; - } - - .md\:hover\:bg-danger-800:hover { - background-color: #931218; - } - - .md\:hover\:bg-danger-900:hover { - background-color: #7A0B18; - } - - .md\:focus\:bg-transparent:focus { - background-color: transparent; - } - - .md\:focus\:bg-black:focus { - background-color: #000; - } - - .md\:focus\:bg-grey-darkest:focus { - background-color: #3d4852; - } - - .md\:focus\:bg-grey-darker:focus { - background-color: #606f7b; - } - - .md\:focus\:bg-grey-dark:focus { - background-color: #8795a1; - } - - .md\:focus\:bg-grey:focus { - background-color: #b8c2cc; - } - - .md\:focus\:bg-grey-light:focus { - background-color: #dae1e7; - } - - .md\:focus\:bg-grey-lighter:focus { - background-color: #f1f5f8; - } - - .md\:focus\:bg-grey-lightest:focus { - background-color: #f8fafc; - } - - .md\:focus\:bg-white:focus { - background-color: #fff; - } - - .md\:focus\:bg-snipline-green-darker:focus { - background-color: #333510; - } - - .md\:focus\:bg-snipline-green-dark:focus { - background-color: #94AB0D; - } - - .md\:focus\:bg-snipline-lime-light:focus { - background-color: #e1f471; - } - - .md\:focus\:bg-snipline-lime:focus { - background-color: #CDED15; - } - - .md\:focus\:bg-snipline-lime-dark:focus { - background-color: #94AB0D; - } - - .md\:focus\:bg-snipline-green:focus { - background-color: #15ED78; - } - - .md\:focus\:bg-snipline-yellow:focus { - background-color: #EDE415; - } - - .md\:focus\:bg-snipline-grey-dark:focus { - background-color: rgba(51, 53, 16, 0.8); - } - - .md\:focus\:bg-snipline-grey:focus { - background-color: #EBF1EF; - } - - .md\:focus\:bg-snipline-grey-light:focus { - background-color: #DAE1E7; - } - - .md\:focus\:bg-snipline-grey-lighter:focus { - background-color: #E0E8EE; - } - - .md\:focus\:bg-success-100:focus { - background-color: #ECFBD7; - } - - .md\:focus\:bg-success-200:focus { - background-color: #D5F8B0; - } - - .md\:focus\:bg-success-300:focus { - background-color: #B3EC84; - } - - .md\:focus\:bg-success-400:focus { - background-color: #90D962; - } - - .md\:focus\:bg-success-500:focus { - background-color: #61C134; - } - - .md\:focus\:bg-success-600:focus { - background-color: #46A526; - } - - .md\:focus\:bg-success-700:focus { - background-color: #2F8A1A; - } - - .md\:focus\:bg-success-800:focus { - background-color: #1C6F10; - } - - .md\:focus\:bg-success-900:focus { - background-color: #0E5C09; - } - - .md\:focus\:bg-info-100:focus { - background-color: #DFF6FE; - } - - .md\:focus\:bg-info-200:focus { - background-color: #BFE9FE; - } - - .md\:focus\:bg-info-300:focus { - background-color: #9FD9FE; - } - - .md\:focus\:bg-info-400:focus { - background-color: #86CAFD; - } - - .md\:focus\:bg-info-500:focus { - background-color: #5FB0FC; - } - - .md\:focus\:bg-info-600:focus { - background-color: #4589D8; - } - - .md\:focus\:bg-info-700:focus { - background-color: #2F67B5; - } - - .md\:focus\:bg-info-800:focus { - background-color: #1E4892; - } - - .md\:focus\:bg-info-900:focus { - background-color: #123278; - } - - .md\:focus\:bg-danger-100:focus { - background-color: #FFEAD7; - } - - .md\:focus\:bg-danger-200:focus { - background-color: #FFD0B0; - } - - .md\:focus\:bg-danger-300:focus { - background-color: #FFB088; - } - - .md\:focus\:bg-danger-400:focus { - background-color: #FF916B; - } - - .md\:focus\:bg-danger-500:focus { - background-color: #FF5E3A; - } - - .md\:focus\:bg-danger-600:focus { - background-color: #DB3D2A; - } - - .md\:focus\:bg-danger-700:focus { - background-color: #B7221D; - } - - .md\:focus\:bg-danger-800:focus { - background-color: #931218; - } - - .md\:focus\:bg-danger-900:focus { - background-color: #7A0B18; - } - - .md\:bg-bottom { - background-position: bottom; - } - - .md\:bg-center { - background-position: center; - } - - .md\:bg-left { - background-position: left; - } - - .md\:bg-left-bottom { - background-position: left bottom; - } - - .md\:bg-left-top { - background-position: left top; - } - - .md\:bg-right { - background-position: right; - } - - .md\:bg-right-bottom { - background-position: right bottom; - } - - .md\:bg-right-top { - background-position: right top; - } - - .md\:bg-top { - background-position: top; - } - - .md\:bg-repeat { - background-repeat: repeat; - } - - .md\:bg-no-repeat { - background-repeat: no-repeat; - } - - .md\:bg-repeat-x { - background-repeat: repeat-x; - } - - .md\:bg-repeat-y { - background-repeat: repeat-y; - } - - .md\:bg-repeat-round { - background-repeat: round; - } - - .md\:bg-repeat-space { - background-repeat: space; - } - - .md\:bg-auto { - background-size: auto; - } - - .md\:bg-cover { - background-size: cover; - } - - .md\:bg-contain { - background-size: contain; - } - - .md\:border-collapse { - border-collapse: collapse; - } - - .md\:border-separate { - border-collapse: separate; - } - - .md\:border-transparent { - border-color: transparent; - } - - .md\:border-black { - border-color: #000; - } - - .md\:border-grey-darkest { - border-color: #3d4852; - } - - .md\:border-grey-darker { - border-color: #606f7b; - } - - .md\:border-grey-dark { - border-color: #8795a1; - } - - .md\:border-grey { - border-color: #b8c2cc; - } - - .md\:border-grey-light { - border-color: #dae1e7; - } - - .md\:border-grey-lighter { - border-color: #f1f5f8; - } - - .md\:border-grey-lightest { - border-color: #f8fafc; - } - - .md\:border-white { - border-color: #fff; - } - - .md\:border-snipline-green-darker { - border-color: #333510; - } - - .md\:border-snipline-green-dark { - border-color: #94AB0D; - } - - .md\:border-snipline-lime-light { - border-color: #e1f471; - } - - .md\:border-snipline-lime { - border-color: #CDED15; - } - - .md\:border-snipline-lime-dark { - border-color: #94AB0D; - } - - .md\:border-snipline-green { - border-color: #15ED78; - } - - .md\:border-snipline-yellow { - border-color: #EDE415; - } - - .md\:border-snipline-grey-dark { - border-color: rgba(51, 53, 16, 0.8); - } - - .md\:border-snipline-grey { - border-color: #EBF1EF; - } - - .md\:border-snipline-grey-light { - border-color: #DAE1E7; - } - - .md\:border-snipline-grey-lighter { - border-color: #E0E8EE; - } - - .md\:border-success-100 { - border-color: #ECFBD7; - } - - .md\:border-success-200 { - border-color: #D5F8B0; - } - - .md\:border-success-300 { - border-color: #B3EC84; - } - - .md\:border-success-400 { - border-color: #90D962; - } - - .md\:border-success-500 { - border-color: #61C134; - } - - .md\:border-success-600 { - border-color: #46A526; - } - - .md\:border-success-700 { - border-color: #2F8A1A; - } - - .md\:border-success-800 { - border-color: #1C6F10; - } - - .md\:border-success-900 { - border-color: #0E5C09; - } - - .md\:border-info-100 { - border-color: #DFF6FE; - } - - .md\:border-info-200 { - border-color: #BFE9FE; - } - - .md\:border-info-300 { - border-color: #9FD9FE; - } - - .md\:border-info-400 { - border-color: #86CAFD; - } - - .md\:border-info-500 { - border-color: #5FB0FC; - } - - .md\:border-info-600 { - border-color: #4589D8; - } - - .md\:border-info-700 { - border-color: #2F67B5; - } - - .md\:border-info-800 { - border-color: #1E4892; - } - - .md\:border-info-900 { - border-color: #123278; - } - - .md\:border-danger-100 { - border-color: #FFEAD7; - } - - .md\:border-danger-200 { - border-color: #FFD0B0; - } - - .md\:border-danger-300 { - border-color: #FFB088; - } - - .md\:border-danger-400 { - border-color: #FF916B; - } - - .md\:border-danger-500 { - border-color: #FF5E3A; - } - - .md\:border-danger-600 { - border-color: #DB3D2A; - } - - .md\:border-danger-700 { - border-color: #B7221D; - } - - .md\:border-danger-800 { - border-color: #931218; - } - - .md\:border-danger-900 { - border-color: #7A0B18; - } - - .md\:hover\:border-transparent:hover { - border-color: transparent; - } - - .md\:hover\:border-black:hover { - border-color: #000; - } - - .md\:hover\:border-grey-darkest:hover { - border-color: #3d4852; - } - - .md\:hover\:border-grey-darker:hover { - border-color: #606f7b; - } - - .md\:hover\:border-grey-dark:hover { - border-color: #8795a1; - } - - .md\:hover\:border-grey:hover { - border-color: #b8c2cc; - } - - .md\:hover\:border-grey-light:hover { - border-color: #dae1e7; - } - - .md\:hover\:border-grey-lighter:hover { - border-color: #f1f5f8; - } - - .md\:hover\:border-grey-lightest:hover { - border-color: #f8fafc; - } - - .md\:hover\:border-white:hover { - border-color: #fff; - } - - .md\:hover\:border-snipline-green-darker:hover { - border-color: #333510; - } - - .md\:hover\:border-snipline-green-dark:hover { - border-color: #94AB0D; - } - - .md\:hover\:border-snipline-lime-light:hover { - border-color: #e1f471; - } - - .md\:hover\:border-snipline-lime:hover { - border-color: #CDED15; - } - - .md\:hover\:border-snipline-lime-dark:hover { - border-color: #94AB0D; - } - - .md\:hover\:border-snipline-green:hover { - border-color: #15ED78; - } - - .md\:hover\:border-snipline-yellow:hover { - border-color: #EDE415; - } - - .md\:hover\:border-snipline-grey-dark:hover { - border-color: rgba(51, 53, 16, 0.8); - } - - .md\:hover\:border-snipline-grey:hover { - border-color: #EBF1EF; - } - - .md\:hover\:border-snipline-grey-light:hover { - border-color: #DAE1E7; - } - - .md\:hover\:border-snipline-grey-lighter:hover { - border-color: #E0E8EE; - } - - .md\:hover\:border-success-100:hover { - border-color: #ECFBD7; - } - - .md\:hover\:border-success-200:hover { - border-color: #D5F8B0; - } - - .md\:hover\:border-success-300:hover { - border-color: #B3EC84; - } - - .md\:hover\:border-success-400:hover { - border-color: #90D962; - } - - .md\:hover\:border-success-500:hover { - border-color: #61C134; - } - - .md\:hover\:border-success-600:hover { - border-color: #46A526; - } - - .md\:hover\:border-success-700:hover { - border-color: #2F8A1A; - } - - .md\:hover\:border-success-800:hover { - border-color: #1C6F10; - } - - .md\:hover\:border-success-900:hover { - border-color: #0E5C09; - } - - .md\:hover\:border-info-100:hover { - border-color: #DFF6FE; - } - - .md\:hover\:border-info-200:hover { - border-color: #BFE9FE; - } - - .md\:hover\:border-info-300:hover { - border-color: #9FD9FE; - } - - .md\:hover\:border-info-400:hover { - border-color: #86CAFD; - } - - .md\:hover\:border-info-500:hover { - border-color: #5FB0FC; - } - - .md\:hover\:border-info-600:hover { - border-color: #4589D8; - } - - .md\:hover\:border-info-700:hover { - border-color: #2F67B5; - } - - .md\:hover\:border-info-800:hover { - border-color: #1E4892; - } - - .md\:hover\:border-info-900:hover { - border-color: #123278; - } - - .md\:hover\:border-danger-100:hover { - border-color: #FFEAD7; - } - - .md\:hover\:border-danger-200:hover { - border-color: #FFD0B0; - } - - .md\:hover\:border-danger-300:hover { - border-color: #FFB088; - } - - .md\:hover\:border-danger-400:hover { - border-color: #FF916B; - } - - .md\:hover\:border-danger-500:hover { - border-color: #FF5E3A; - } - - .md\:hover\:border-danger-600:hover { - border-color: #DB3D2A; - } - - .md\:hover\:border-danger-700:hover { - border-color: #B7221D; - } - - .md\:hover\:border-danger-800:hover { - border-color: #931218; - } - - .md\:hover\:border-danger-900:hover { - border-color: #7A0B18; - } - - .md\:focus\:border-transparent:focus { - border-color: transparent; - } - - .md\:focus\:border-black:focus { - border-color: #000; - } - - .md\:focus\:border-grey-darkest:focus { - border-color: #3d4852; - } - - .md\:focus\:border-grey-darker:focus { - border-color: #606f7b; - } - - .md\:focus\:border-grey-dark:focus { - border-color: #8795a1; - } - - .md\:focus\:border-grey:focus { - border-color: #b8c2cc; - } - - .md\:focus\:border-grey-light:focus { - border-color: #dae1e7; - } - - .md\:focus\:border-grey-lighter:focus { - border-color: #f1f5f8; - } - - .md\:focus\:border-grey-lightest:focus { - border-color: #f8fafc; - } - - .md\:focus\:border-white:focus { - border-color: #fff; - } - - .md\:focus\:border-snipline-green-darker:focus { - border-color: #333510; - } - - .md\:focus\:border-snipline-green-dark:focus { - border-color: #94AB0D; - } - - .md\:focus\:border-snipline-lime-light:focus { - border-color: #e1f471; - } - - .md\:focus\:border-snipline-lime:focus { - border-color: #CDED15; - } - - .md\:focus\:border-snipline-lime-dark:focus { - border-color: #94AB0D; - } - - .md\:focus\:border-snipline-green:focus { - border-color: #15ED78; - } - - .md\:focus\:border-snipline-yellow:focus { - border-color: #EDE415; - } - - .md\:focus\:border-snipline-grey-dark:focus { - border-color: rgba(51, 53, 16, 0.8); - } - - .md\:focus\:border-snipline-grey:focus { - border-color: #EBF1EF; - } - - .md\:focus\:border-snipline-grey-light:focus { - border-color: #DAE1E7; - } - - .md\:focus\:border-snipline-grey-lighter:focus { - border-color: #E0E8EE; - } - - .md\:focus\:border-success-100:focus { - border-color: #ECFBD7; - } - - .md\:focus\:border-success-200:focus { - border-color: #D5F8B0; - } - - .md\:focus\:border-success-300:focus { - border-color: #B3EC84; - } - - .md\:focus\:border-success-400:focus { - border-color: #90D962; - } - - .md\:focus\:border-success-500:focus { - border-color: #61C134; - } - - .md\:focus\:border-success-600:focus { - border-color: #46A526; - } - - .md\:focus\:border-success-700:focus { - border-color: #2F8A1A; - } - - .md\:focus\:border-success-800:focus { - border-color: #1C6F10; - } - - .md\:focus\:border-success-900:focus { - border-color: #0E5C09; - } - - .md\:focus\:border-info-100:focus { - border-color: #DFF6FE; - } - - .md\:focus\:border-info-200:focus { - border-color: #BFE9FE; - } - - .md\:focus\:border-info-300:focus { - border-color: #9FD9FE; - } - - .md\:focus\:border-info-400:focus { - border-color: #86CAFD; - } - - .md\:focus\:border-info-500:focus { - border-color: #5FB0FC; - } - - .md\:focus\:border-info-600:focus { - border-color: #4589D8; - } - - .md\:focus\:border-info-700:focus { - border-color: #2F67B5; - } - - .md\:focus\:border-info-800:focus { - border-color: #1E4892; - } - - .md\:focus\:border-info-900:focus { - border-color: #123278; - } - - .md\:focus\:border-danger-100:focus { - border-color: #FFEAD7; - } - - .md\:focus\:border-danger-200:focus { - border-color: #FFD0B0; - } - - .md\:focus\:border-danger-300:focus { - border-color: #FFB088; - } - - .md\:focus\:border-danger-400:focus { - border-color: #FF916B; - } - - .md\:focus\:border-danger-500:focus { - border-color: #FF5E3A; - } - - .md\:focus\:border-danger-600:focus { - border-color: #DB3D2A; - } - - .md\:focus\:border-danger-700:focus { - border-color: #B7221D; - } - - .md\:focus\:border-danger-800:focus { - border-color: #931218; - } - - .md\:focus\:border-danger-900:focus { - border-color: #7A0B18; - } - - .md\:rounded-none { - border-radius: 0; - } - - .md\:rounded-sm { - border-radius: 0.125rem; - } - - .md\:rounded { - border-radius: 0.25rem; - } - - .md\:rounded-lg { - border-radius: 0.5rem; - } - - .md\:rounded-full { - border-radius: 9999px; - } - - .md\:rounded-t-none { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - .md\:rounded-r-none { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - .md\:rounded-b-none { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .md\:rounded-l-none { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - .md\:rounded-t-sm { - border-top-left-radius: 0.125rem; - border-top-right-radius: 0.125rem; - } - - .md\:rounded-r-sm { - border-top-right-radius: 0.125rem; - border-bottom-right-radius: 0.125rem; - } - - .md\:rounded-b-sm { - border-bottom-right-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .md\:rounded-l-sm { - border-top-left-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .md\:rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - - .md\:rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - } - - .md\:rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .md\:rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .md\:rounded-t-lg { - border-top-left-radius: 0.5rem; - border-top-right-radius: 0.5rem; - } - - .md\:rounded-r-lg { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; - } - - .md\:rounded-b-lg { - border-bottom-right-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .md\:rounded-l-lg { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .md\:rounded-t-full { - border-top-left-radius: 9999px; - border-top-right-radius: 9999px; - } - - .md\:rounded-r-full { - border-top-right-radius: 9999px; - border-bottom-right-radius: 9999px; - } - - .md\:rounded-b-full { - border-bottom-right-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .md\:rounded-l-full { - border-top-left-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .md\:rounded-tl-none { - border-top-left-radius: 0; - } - - .md\:rounded-tr-none { - border-top-right-radius: 0; - } - - .md\:rounded-br-none { - border-bottom-right-radius: 0; - } - - .md\:rounded-bl-none { - border-bottom-left-radius: 0; - } - - .md\:rounded-tl-sm { - border-top-left-radius: 0.125rem; - } - - .md\:rounded-tr-sm { - border-top-right-radius: 0.125rem; - } - - .md\:rounded-br-sm { - border-bottom-right-radius: 0.125rem; - } - - .md\:rounded-bl-sm { - border-bottom-left-radius: 0.125rem; - } - - .md\:rounded-tl { - border-top-left-radius: 0.25rem; - } - - .md\:rounded-tr { - border-top-right-radius: 0.25rem; - } - - .md\:rounded-br { - border-bottom-right-radius: 0.25rem; - } - - .md\:rounded-bl { - border-bottom-left-radius: 0.25rem; - } - - .md\:rounded-tl-lg { - border-top-left-radius: 0.5rem; - } - - .md\:rounded-tr-lg { - border-top-right-radius: 0.5rem; - } - - .md\:rounded-br-lg { - border-bottom-right-radius: 0.5rem; - } - - .md\:rounded-bl-lg { - border-bottom-left-radius: 0.5rem; - } - - .md\:rounded-tl-full { - border-top-left-radius: 9999px; - } - - .md\:rounded-tr-full { - border-top-right-radius: 9999px; - } - - .md\:rounded-br-full { - border-bottom-right-radius: 9999px; - } - - .md\:rounded-bl-full { - border-bottom-left-radius: 9999px; - } - - .md\:border-solid { - border-style: solid; - } - - .md\:border-dashed { - border-style: dashed; - } - - .md\:border-dotted { - border-style: dotted; - } - - .md\:border-none { - border-style: none; - } - - .md\:border-0 { - border-width: 0; - } - - .md\:border-2 { - border-width: 2px; - } - - .md\:border-4 { - border-width: 4px; - } - - .md\:border-8 { - border-width: 8px; - } - - .md\:border { - border-width: 1px; - } - - .md\:border-t-0 { - border-top-width: 0; - } - - .md\:border-r-0 { - border-right-width: 0; - } - - .md\:border-b-0 { - border-bottom-width: 0; - } - - .md\:border-l-0 { - border-left-width: 0; - } - - .md\:border-t-2 { - border-top-width: 2px; - } - - .md\:border-r-2 { - border-right-width: 2px; - } - - .md\:border-b-2 { - border-bottom-width: 2px; - } - - .md\:border-l-2 { - border-left-width: 2px; - } - - .md\:border-t-4 { - border-top-width: 4px; - } - - .md\:border-r-4 { - border-right-width: 4px; - } - - .md\:border-b-4 { - border-bottom-width: 4px; - } - - .md\:border-l-4 { - border-left-width: 4px; - } - - .md\:border-t-8 { - border-top-width: 8px; - } - - .md\:border-r-8 { - border-right-width: 8px; - } - - .md\:border-b-8 { - border-bottom-width: 8px; - } - - .md\:border-l-8 { - border-left-width: 8px; - } - - .md\:border-t { - border-top-width: 1px; - } - - .md\:border-r { - border-right-width: 1px; - } - - .md\:border-b { - border-bottom-width: 1px; - } - - .md\:border-l { - border-left-width: 1px; - } - - .md\:cursor-auto { - cursor: auto; - } - - .md\:cursor-default { - cursor: default; - } - - .md\:cursor-pointer { - cursor: pointer; - } - - .md\:cursor-wait { - cursor: wait; - } - - .md\:cursor-text { - cursor: text; - } - - .md\:cursor-move { - cursor: move; - } - - .md\:cursor-not-allowed { - cursor: not-allowed; - } - - .md\:block { - display: block; - } - - .md\:inline-block { - display: inline-block; - } - - .md\:inline { - display: inline; - } - - .md\:flex { - display: flex; - } - - .md\:inline-flex { - display: inline-flex; - } - - .md\:table { - display: table; - } - - .md\:table-row { - display: table-row; - } - - .md\:table-cell { - display: table-cell; - } - - .md\:hidden { - display: none; - } - - .md\:flex-row { - flex-direction: row; - } - - .md\:flex-row-reverse { - flex-direction: row-reverse; - } - - .md\:flex-col { - flex-direction: column; - } - - .md\:flex-col-reverse { - flex-direction: column-reverse; - } - - .md\:flex-wrap { - flex-wrap: wrap; - } - - .md\:flex-wrap-reverse { - flex-wrap: wrap-reverse; - } - - .md\:flex-no-wrap { - flex-wrap: nowrap; - } - - .md\:items-start { - align-items: flex-start; - } - - .md\:items-end { - align-items: flex-end; - } - - .md\:items-center { - align-items: center; - } - - .md\:items-baseline { - align-items: baseline; - } - - .md\:items-stretch { - align-items: stretch; - } - - .md\:self-auto { - align-self: auto; - } - - .md\:self-start { - align-self: flex-start; - } - - .md\:self-end { - align-self: flex-end; - } - - .md\:self-center { - align-self: center; - } - - .md\:self-stretch { - align-self: stretch; - } - - .md\:justify-start { - justify-content: flex-start; - } - - .md\:justify-end { - justify-content: flex-end; - } - - .md\:justify-center { - justify-content: center; - } - - .md\:justify-between { - justify-content: space-between; - } - - .md\:justify-around { - justify-content: space-around; - } - - .md\:content-center { - align-content: center; - } - - .md\:content-start { - align-content: flex-start; - } - - .md\:content-end { - align-content: flex-end; - } - - .md\:content-between { - align-content: space-between; - } - - .md\:content-around { - align-content: space-around; - } - - .md\:flex-1 { - flex: 1 1 0%; - } - - .md\:flex-auto { - flex: 1 1 auto; - } - - .md\:flex-initial { - flex: 0 1 auto; - } - - .md\:flex-none { - flex: none; - } - - .md\:flex-grow-0 { - flex-grow: 0; - } - - .md\:flex-grow { - flex-grow: 1; - } - - .md\:flex-shrink-0 { - flex-shrink: 0; - } - - .md\:flex-shrink { - flex-shrink: 1; - } - - .md\:order-1 { - order: 1; - } - - .md\:order-2 { - order: 2; - } - - .md\:order-3 { - order: 3; - } - - .md\:order-4 { - order: 4; - } - - .md\:order-5 { - order: 5; - } - - .md\:order-6 { - order: 6; - } - - .md\:order-7 { - order: 7; - } - - .md\:order-8 { - order: 8; - } - - .md\:order-9 { - order: 9; - } - - .md\:order-10 { - order: 10; - } - - .md\:order-11 { - order: 11; - } - - .md\:order-12 { - order: 12; - } - - .md\:order-first { - order: -9999; - } - - .md\:order-last { - order: 9999; - } - - .md\:order-none { - order: 0; - } - - .md\:float-right { - float: right; - } - - .md\:float-left { - float: left; - } - - .md\:float-none { - float: none; - } - - .md\:clearfix:after { - content: ""; - display: table; - clear: both; - } - - .md\:font-sans { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } - - .md\:font-serif { - font-family: Georgia, Cambria, "Times New Roman", Times, serif; - } - - .md\:font-mono { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - } - - .md\:font-hairline { - font-weight: 100; - } - - .md\:font-thin { - font-weight: 200; - } - - .md\:font-light { - font-weight: 300; - } - - .md\:font-normal { - font-weight: 400; - } - - .md\:font-medium { - font-weight: 500; - } - - .md\:font-semibold { - font-weight: 600; - } - - .md\:font-bold { - font-weight: 700; - } - - .md\:font-extrabold { - font-weight: 800; - } - - .md\:font-black { - font-weight: 900; - } - - .md\:hover\:font-hairline:hover { - font-weight: 100; - } - - .md\:hover\:font-thin:hover { - font-weight: 200; - } - - .md\:hover\:font-light:hover { - font-weight: 300; - } - - .md\:hover\:font-normal:hover { - font-weight: 400; - } - - .md\:hover\:font-medium:hover { - font-weight: 500; - } - - .md\:hover\:font-semibold:hover { - font-weight: 600; - } - - .md\:hover\:font-bold:hover { - font-weight: 700; - } - - .md\:hover\:font-extrabold:hover { - font-weight: 800; - } - - .md\:hover\:font-black:hover { - font-weight: 900; - } - - .md\:focus\:font-hairline:focus { - font-weight: 100; - } - - .md\:focus\:font-thin:focus { - font-weight: 200; - } - - .md\:focus\:font-light:focus { - font-weight: 300; - } - - .md\:focus\:font-normal:focus { - font-weight: 400; - } - - .md\:focus\:font-medium:focus { - font-weight: 500; - } - - .md\:focus\:font-semibold:focus { - font-weight: 600; - } - - .md\:focus\:font-bold:focus { - font-weight: 700; - } - - .md\:focus\:font-extrabold:focus { - font-weight: 800; - } - - .md\:focus\:font-black:focus { - font-weight: 900; - } - - .md\:h-0 { - height: 0; - } - - .md\:h-1 { - height: 0.25rem; - } - - .md\:h-2 { - height: 0.5rem; - } - - .md\:h-3 { - height: 0.75rem; - } - - .md\:h-4 { - height: 1rem; - } - - .md\:h-5 { - height: 1.25rem; - } - - .md\:h-6 { - height: 1.5rem; - } - - .md\:h-8 { - height: 2rem; - } - - .md\:h-10 { - height: 2.5rem; - } - - .md\:h-12 { - height: 3rem; - } - - .md\:h-16 { - height: 4rem; - } - - .md\:h-20 { - height: 5rem; - } - - .md\:h-24 { - height: 6rem; - } - - .md\:h-32 { - height: 8rem; - } - - .md\:h-40 { - height: 10rem; - } - - .md\:h-48 { - height: 12rem; - } - - .md\:h-56 { - height: 14rem; - } - - .md\:h-64 { - height: 16rem; - } - - .md\:h-auto { - height: auto; - } - - .md\:h-px { - height: 1px; - } - - .md\:h-full { - height: 100%; - } - - .md\:h-screen { - height: 100vh; - } - - .md\:leading-none { - line-height: 1; - } - - .md\:leading-tight { - line-height: 1.25; - } - - .md\:leading-snug { - line-height: 1.375; - } - - .md\:leading-normal { - line-height: 1.5; - } - - .md\:leading-relaxed { - line-height: 1.625; - } - - .md\:leading-loose { - line-height: 2; - } - - .md\:list-inside { - list-style-position: inside; - } - - .md\:list-outside { - list-style-position: outside; - } - - .md\:list-none { - list-style-type: none; - } - - .md\:list-disc { - list-style-type: disc; - } - - .md\:list-decimal { - list-style-type: decimal; - } - - .md\:m-0 { - margin: 0; - } - - .md\:m-1 { - margin: 0.25rem; - } - - .md\:m-2 { - margin: 0.5rem; - } - - .md\:m-3 { - margin: 0.75rem; - } - - .md\:m-4 { - margin: 1rem; - } - - .md\:m-5 { - margin: 1.25rem; - } - - .md\:m-6 { - margin: 1.5rem; - } - - .md\:m-8 { - margin: 2rem; - } - - .md\:m-10 { - margin: 2.5rem; - } - - .md\:m-12 { - margin: 3rem; - } - - .md\:m-16 { - margin: 4rem; - } - - .md\:m-20 { - margin: 5rem; - } - - .md\:m-24 { - margin: 6rem; - } - - .md\:m-32 { - margin: 8rem; - } - - .md\:m-40 { - margin: 10rem; - } - - .md\:m-48 { - margin: 12rem; - } - - .md\:m-56 { - margin: 14rem; - } - - .md\:m-64 { - margin: 16rem; - } - - .md\:m-auto { - margin: auto; - } - - .md\:m-px { - margin: 1px; - } - - .md\:-m-1 { - margin: -0.25rem; - } - - .md\:-m-2 { - margin: -0.5rem; - } - - .md\:-m-3 { - margin: -0.75rem; - } - - .md\:-m-4 { - margin: -1rem; - } - - .md\:-m-5 { - margin: -1.25rem; - } - - .md\:-m-6 { - margin: -1.5rem; - } - - .md\:-m-8 { - margin: -2rem; - } - - .md\:-m-10 { - margin: -2.5rem; - } - - .md\:-m-12 { - margin: -3rem; - } - - .md\:-m-16 { - margin: -4rem; - } - - .md\:-m-20 { - margin: -5rem; - } - - .md\:-m-24 { - margin: -6rem; - } - - .md\:-m-32 { - margin: -8rem; - } - - .md\:-m-40 { - margin: -10rem; - } - - .md\:-m-48 { - margin: -12rem; - } - - .md\:-m-56 { - margin: -14rem; - } - - .md\:-m-64 { - margin: -16rem; - } - - .md\:-m-px { - margin: -1px; - } - - .md\:my-0 { - margin-top: 0; - margin-bottom: 0; - } - - .md\:mx-0 { - margin-left: 0; - margin-right: 0; - } - - .md\:my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; - } - - .md\:mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; - } - - .md\:my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; - } - - .md\:mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - - .md\:my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; - } - - .md\:mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; - } - - .md\:my-4 { - margin-top: 1rem; - margin-bottom: 1rem; - } - - .md\:mx-4 { - margin-left: 1rem; - margin-right: 1rem; - } - - .md\:my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; - } - - .md\:mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; - } - - .md\:my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; - } - - .md\:mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - - .md\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .md\:mx-8 { - margin-left: 2rem; - margin-right: 2rem; - } - - .md\:my-10 { - margin-top: 2.5rem; - margin-bottom: 2.5rem; - } - - .md\:mx-10 { - margin-left: 2.5rem; - margin-right: 2.5rem; - } - - .md\:my-12 { - margin-top: 3rem; - margin-bottom: 3rem; - } - - .md\:mx-12 { - margin-left: 3rem; - margin-right: 3rem; - } - - .md\:my-16 { - margin-top: 4rem; - margin-bottom: 4rem; - } - - .md\:mx-16 { - margin-left: 4rem; - margin-right: 4rem; - } - - .md\:my-20 { - margin-top: 5rem; - margin-bottom: 5rem; - } - - .md\:mx-20 { - margin-left: 5rem; - margin-right: 5rem; - } - - .md\:my-24 { - margin-top: 6rem; - margin-bottom: 6rem; - } - - .md\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - - .md\:my-32 { - margin-top: 8rem; - margin-bottom: 8rem; - } - - .md\:mx-32 { - margin-left: 8rem; - margin-right: 8rem; - } - - .md\:my-40 { - margin-top: 10rem; - margin-bottom: 10rem; - } - - .md\:mx-40 { - margin-left: 10rem; - margin-right: 10rem; - } - - .md\:my-48 { - margin-top: 12rem; - margin-bottom: 12rem; - } - - .md\:mx-48 { - margin-left: 12rem; - margin-right: 12rem; - } - - .md\:my-56 { - margin-top: 14rem; - margin-bottom: 14rem; - } - - .md\:mx-56 { - margin-left: 14rem; - margin-right: 14rem; - } - - .md\:my-64 { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .md\:mx-64 { - margin-left: 16rem; - margin-right: 16rem; - } - - .md\:my-auto { - margin-top: auto; - margin-bottom: auto; - } - - .md\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .md\:my-px { - margin-top: 1px; - margin-bottom: 1px; - } - - .md\:mx-px { - margin-left: 1px; - margin-right: 1px; - } - - .md\:-my-1 { - margin-top: -0.25rem; - margin-bottom: -0.25rem; - } - - .md\:-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; - } - - .md\:-my-2 { - margin-top: -0.5rem; - margin-bottom: -0.5rem; - } - - .md\:-mx-2 { - margin-left: -0.5rem; - margin-right: -0.5rem; - } - - .md\:-my-3 { - margin-top: -0.75rem; - margin-bottom: -0.75rem; - } - - .md\:-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; - } - - .md\:-my-4 { - margin-top: -1rem; - margin-bottom: -1rem; - } - - .md\:-mx-4 { - margin-left: -1rem; - margin-right: -1rem; - } - - .md\:-my-5 { - margin-top: -1.25rem; - margin-bottom: -1.25rem; - } - - .md\:-mx-5 { - margin-left: -1.25rem; - margin-right: -1.25rem; - } - - .md\:-my-6 { - margin-top: -1.5rem; - margin-bottom: -1.5rem; - } - - .md\:-mx-6 { - margin-left: -1.5rem; - margin-right: -1.5rem; - } - - .md\:-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; - } - - .md\:-mx-8 { - margin-left: -2rem; - margin-right: -2rem; - } - - .md\:-my-10 { - margin-top: -2.5rem; - margin-bottom: -2.5rem; - } - - .md\:-mx-10 { - margin-left: -2.5rem; - margin-right: -2.5rem; - } - - .md\:-my-12 { - margin-top: -3rem; - margin-bottom: -3rem; - } - - .md\:-mx-12 { - margin-left: -3rem; - margin-right: -3rem; - } - - .md\:-my-16 { - margin-top: -4rem; - margin-bottom: -4rem; - } - - .md\:-mx-16 { - margin-left: -4rem; - margin-right: -4rem; - } - - .md\:-my-20 { - margin-top: -5rem; - margin-bottom: -5rem; - } - - .md\:-mx-20 { - margin-left: -5rem; - margin-right: -5rem; - } - - .md\:-my-24 { - margin-top: -6rem; - margin-bottom: -6rem; - } - - .md\:-mx-24 { - margin-left: -6rem; - margin-right: -6rem; - } - - .md\:-my-32 { - margin-top: -8rem; - margin-bottom: -8rem; - } - - .md\:-mx-32 { - margin-left: -8rem; - margin-right: -8rem; - } - - .md\:-my-40 { - margin-top: -10rem; - margin-bottom: -10rem; - } - - .md\:-mx-40 { - margin-left: -10rem; - margin-right: -10rem; - } - - .md\:-my-48 { - margin-top: -12rem; - margin-bottom: -12rem; - } - - .md\:-mx-48 { - margin-left: -12rem; - margin-right: -12rem; - } - - .md\:-my-56 { - margin-top: -14rem; - margin-bottom: -14rem; - } - - .md\:-mx-56 { - margin-left: -14rem; - margin-right: -14rem; - } - - .md\:-my-64 { - margin-top: -16rem; - margin-bottom: -16rem; - } - - .md\:-mx-64 { - margin-left: -16rem; - margin-right: -16rem; - } - - .md\:-my-px { - margin-top: -1px; - margin-bottom: -1px; - } - - .md\:-mx-px { - margin-left: -1px; - margin-right: -1px; - } - - .md\:mt-0 { - margin-top: 0; - } - - .md\:mr-0 { - margin-right: 0; - } - - .md\:mb-0 { - margin-bottom: 0; - } - - .md\:ml-0 { - margin-left: 0; - } - - .md\:mt-1 { - margin-top: 0.25rem; - } - - .md\:mr-1 { - margin-right: 0.25rem; - } - - .md\:mb-1 { - margin-bottom: 0.25rem; - } - - .md\:ml-1 { - margin-left: 0.25rem; - } - - .md\:mt-2 { - margin-top: 0.5rem; - } - - .md\:mr-2 { - margin-right: 0.5rem; - } - - .md\:mb-2 { - margin-bottom: 0.5rem; - } - - .md\:ml-2 { - margin-left: 0.5rem; - } - - .md\:mt-3 { - margin-top: 0.75rem; - } - - .md\:mr-3 { - margin-right: 0.75rem; - } - - .md\:mb-3 { - margin-bottom: 0.75rem; - } - - .md\:ml-3 { - margin-left: 0.75rem; - } - - .md\:mt-4 { - margin-top: 1rem; - } - - .md\:mr-4 { - margin-right: 1rem; - } - - .md\:mb-4 { - margin-bottom: 1rem; - } - - .md\:ml-4 { - margin-left: 1rem; - } - - .md\:mt-5 { - margin-top: 1.25rem; - } - - .md\:mr-5 { - margin-right: 1.25rem; - } - - .md\:mb-5 { - margin-bottom: 1.25rem; - } - - .md\:ml-5 { - margin-left: 1.25rem; - } - - .md\:mt-6 { - margin-top: 1.5rem; - } - - .md\:mr-6 { - margin-right: 1.5rem; - } - - .md\:mb-6 { - margin-bottom: 1.5rem; - } - - .md\:ml-6 { - margin-left: 1.5rem; - } - - .md\:mt-8 { - margin-top: 2rem; - } - - .md\:mr-8 { - margin-right: 2rem; - } - - .md\:mb-8 { - margin-bottom: 2rem; - } - - .md\:ml-8 { - margin-left: 2rem; - } - - .md\:mt-10 { - margin-top: 2.5rem; - } - - .md\:mr-10 { - margin-right: 2.5rem; - } - - .md\:mb-10 { - margin-bottom: 2.5rem; - } - - .md\:ml-10 { - margin-left: 2.5rem; - } - - .md\:mt-12 { - margin-top: 3rem; - } - - .md\:mr-12 { - margin-right: 3rem; - } - - .md\:mb-12 { - margin-bottom: 3rem; - } - - .md\:ml-12 { - margin-left: 3rem; - } - - .md\:mt-16 { - margin-top: 4rem; - } - - .md\:mr-16 { - margin-right: 4rem; - } - - .md\:mb-16 { - margin-bottom: 4rem; - } - - .md\:ml-16 { - margin-left: 4rem; - } - - .md\:mt-20 { - margin-top: 5rem; - } - - .md\:mr-20 { - margin-right: 5rem; - } - - .md\:mb-20 { - margin-bottom: 5rem; - } - - .md\:ml-20 { - margin-left: 5rem; - } - - .md\:mt-24 { - margin-top: 6rem; - } - - .md\:mr-24 { - margin-right: 6rem; - } - - .md\:mb-24 { - margin-bottom: 6rem; - } - - .md\:ml-24 { - margin-left: 6rem; - } - - .md\:mt-32 { - margin-top: 8rem; - } - - .md\:mr-32 { - margin-right: 8rem; - } - - .md\:mb-32 { - margin-bottom: 8rem; - } - - .md\:ml-32 { - margin-left: 8rem; - } - - .md\:mt-40 { - margin-top: 10rem; - } - - .md\:mr-40 { - margin-right: 10rem; - } - - .md\:mb-40 { - margin-bottom: 10rem; - } - - .md\:ml-40 { - margin-left: 10rem; - } - - .md\:mt-48 { - margin-top: 12rem; - } - - .md\:mr-48 { - margin-right: 12rem; - } - - .md\:mb-48 { - margin-bottom: 12rem; - } - - .md\:ml-48 { - margin-left: 12rem; - } - - .md\:mt-56 { - margin-top: 14rem; - } - - .md\:mr-56 { - margin-right: 14rem; - } - - .md\:mb-56 { - margin-bottom: 14rem; - } - - .md\:ml-56 { - margin-left: 14rem; - } - - .md\:mt-64 { - margin-top: 16rem; - } - - .md\:mr-64 { - margin-right: 16rem; - } - - .md\:mb-64 { - margin-bottom: 16rem; - } - - .md\:ml-64 { - margin-left: 16rem; - } - - .md\:mt-auto { - margin-top: auto; - } - - .md\:mr-auto { - margin-right: auto; - } - - .md\:mb-auto { - margin-bottom: auto; - } - - .md\:ml-auto { - margin-left: auto; - } - - .md\:mt-px { - margin-top: 1px; - } - - .md\:mr-px { - margin-right: 1px; - } - - .md\:mb-px { - margin-bottom: 1px; - } - - .md\:ml-px { - margin-left: 1px; - } - - .md\:-mt-1 { - margin-top: -0.25rem; - } - - .md\:-mr-1 { - margin-right: -0.25rem; - } - - .md\:-mb-1 { - margin-bottom: -0.25rem; - } - - .md\:-ml-1 { - margin-left: -0.25rem; - } - - .md\:-mt-2 { - margin-top: -0.5rem; - } - - .md\:-mr-2 { - margin-right: -0.5rem; - } - - .md\:-mb-2 { - margin-bottom: -0.5rem; - } - - .md\:-ml-2 { - margin-left: -0.5rem; - } - - .md\:-mt-3 { - margin-top: -0.75rem; - } - - .md\:-mr-3 { - margin-right: -0.75rem; - } - - .md\:-mb-3 { - margin-bottom: -0.75rem; - } - - .md\:-ml-3 { - margin-left: -0.75rem; - } - - .md\:-mt-4 { - margin-top: -1rem; - } - - .md\:-mr-4 { - margin-right: -1rem; - } - - .md\:-mb-4 { - margin-bottom: -1rem; - } - - .md\:-ml-4 { - margin-left: -1rem; - } - - .md\:-mt-5 { - margin-top: -1.25rem; - } - - .md\:-mr-5 { - margin-right: -1.25rem; - } - - .md\:-mb-5 { - margin-bottom: -1.25rem; - } - - .md\:-ml-5 { - margin-left: -1.25rem; - } - - .md\:-mt-6 { - margin-top: -1.5rem; - } - - .md\:-mr-6 { - margin-right: -1.5rem; - } - - .md\:-mb-6 { - margin-bottom: -1.5rem; - } - - .md\:-ml-6 { - margin-left: -1.5rem; - } - - .md\:-mt-8 { - margin-top: -2rem; - } - - .md\:-mr-8 { - margin-right: -2rem; - } - - .md\:-mb-8 { - margin-bottom: -2rem; - } - - .md\:-ml-8 { - margin-left: -2rem; - } - - .md\:-mt-10 { - margin-top: -2.5rem; - } - - .md\:-mr-10 { - margin-right: -2.5rem; - } - - .md\:-mb-10 { - margin-bottom: -2.5rem; - } - - .md\:-ml-10 { - margin-left: -2.5rem; - } - - .md\:-mt-12 { - margin-top: -3rem; - } - - .md\:-mr-12 { - margin-right: -3rem; - } - - .md\:-mb-12 { - margin-bottom: -3rem; - } - - .md\:-ml-12 { - margin-left: -3rem; - } - - .md\:-mt-16 { - margin-top: -4rem; - } - - .md\:-mr-16 { - margin-right: -4rem; - } - - .md\:-mb-16 { - margin-bottom: -4rem; - } - - .md\:-ml-16 { - margin-left: -4rem; - } - - .md\:-mt-20 { - margin-top: -5rem; - } - - .md\:-mr-20 { - margin-right: -5rem; - } - - .md\:-mb-20 { - margin-bottom: -5rem; - } - - .md\:-ml-20 { - margin-left: -5rem; - } - - .md\:-mt-24 { - margin-top: -6rem; - } - - .md\:-mr-24 { - margin-right: -6rem; - } - - .md\:-mb-24 { - margin-bottom: -6rem; - } - - .md\:-ml-24 { - margin-left: -6rem; - } - - .md\:-mt-32 { - margin-top: -8rem; - } - - .md\:-mr-32 { - margin-right: -8rem; - } - - .md\:-mb-32 { - margin-bottom: -8rem; - } - - .md\:-ml-32 { - margin-left: -8rem; - } - - .md\:-mt-40 { - margin-top: -10rem; - } - - .md\:-mr-40 { - margin-right: -10rem; - } - - .md\:-mb-40 { - margin-bottom: -10rem; - } - - .md\:-ml-40 { - margin-left: -10rem; - } - - .md\:-mt-48 { - margin-top: -12rem; - } - - .md\:-mr-48 { - margin-right: -12rem; - } - - .md\:-mb-48 { - margin-bottom: -12rem; - } - - .md\:-ml-48 { - margin-left: -12rem; - } - - .md\:-mt-56 { - margin-top: -14rem; - } - - .md\:-mr-56 { - margin-right: -14rem; - } - - .md\:-mb-56 { - margin-bottom: -14rem; - } - - .md\:-ml-56 { - margin-left: -14rem; - } - - .md\:-mt-64 { - margin-top: -16rem; - } - - .md\:-mr-64 { - margin-right: -16rem; - } - - .md\:-mb-64 { - margin-bottom: -16rem; - } - - .md\:-ml-64 { - margin-left: -16rem; - } - - .md\:-mt-px { - margin-top: -1px; - } - - .md\:-mr-px { - margin-right: -1px; - } - - .md\:-mb-px { - margin-bottom: -1px; - } - - .md\:-ml-px { - margin-left: -1px; - } - - .md\:max-h-full { - max-height: 100%; - } - - .md\:max-h-screen { - max-height: 100vh; - } - - .md\:max-w-xs { - max-width: 20rem; - } - - .md\:max-w-sm { - max-width: 24rem; - } - - .md\:max-w-md { - max-width: 28rem; - } - - .md\:max-w-lg { - max-width: 32rem; - } - - .md\:max-w-xl { - max-width: 36rem; - } - - .md\:max-w-2xl { - max-width: 42rem; - } - - .md\:max-w-3xl { - max-width: 48rem; - } - - .md\:max-w-4xl { - max-width: 56rem; - } - - .md\:max-w-5xl { - max-width: 64rem; - } - - .md\:max-w-6xl { - max-width: 72rem; - } - - .md\:max-w-full { - max-width: 100%; - } - - .md\:min-h-0 { - min-height: 0; - } - - .md\:min-h-full { - min-height: 100%; - } - - .md\:min-h-screen { - min-height: 100vh; - } - - .md\:min-w-0 { - min-width: 0; - } - - .md\:min-w-full { - min-width: 100%; - } - - .md\:object-contain { - -o-object-fit: contain; - object-fit: contain; - } - - .md\:object-cover { - -o-object-fit: cover; - object-fit: cover; - } - - .md\:object-fill { - -o-object-fit: fill; - object-fit: fill; - } - - .md\:object-none { - -o-object-fit: none; - object-fit: none; - } - - .md\:object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; - } - - .md\:object-bottom { - -o-object-position: bottom; - object-position: bottom; - } - - .md\:object-center { - -o-object-position: center; - object-position: center; - } - - .md\:object-left { - -o-object-position: left; - object-position: left; - } - - .md\:object-left-bottom { - -o-object-position: left bottom; - object-position: left bottom; - } - - .md\:object-left-top { - -o-object-position: left top; - object-position: left top; - } - - .md\:object-right { - -o-object-position: right; - object-position: right; - } - - .md\:object-right-bottom { - -o-object-position: right bottom; - object-position: right bottom; - } - - .md\:object-right-top { - -o-object-position: right top; - object-position: right top; - } - - .md\:object-top { - -o-object-position: top; - object-position: top; - } - - .md\:opacity-0 { - opacity: 0; - } - - .md\:opacity-25 { - opacity: 0.25; - } - - .md\:opacity-50 { - opacity: 0.5; - } - - .md\:opacity-75 { - opacity: 0.75; - } - - .md\:opacity-100 { - opacity: 1; - } - - .md\:outline-none { - outline: 0; - } - - .md\:focus\:outline-none:focus { - outline: 0; - } - - .md\:overflow-auto { - overflow: auto; - } - - .md\:overflow-hidden { - overflow: hidden; - } - - .md\:overflow-visible { - overflow: visible; - } - - .md\:overflow-scroll { - overflow: scroll; - } - - .md\:overflow-x-auto { - overflow-x: auto; - } - - .md\:overflow-y-auto { - overflow-y: auto; - } - - .md\:overflow-x-hidden { - overflow-x: hidden; - } - - .md\:overflow-y-hidden { - overflow-y: hidden; - } - - .md\:overflow-x-visible { - overflow-x: visible; - } - - .md\:overflow-y-visible { - overflow-y: visible; - } - - .md\:overflow-x-scroll { - overflow-x: scroll; - } - - .md\:overflow-y-scroll { - overflow-y: scroll; - } - - .md\:scrolling-touch { - -webkit-overflow-scrolling: touch; - } - - .md\:scrolling-auto { - -webkit-overflow-scrolling: auto; - } - - .md\:p-0 { - padding: 0; - } - - .md\:p-1 { - padding: 0.25rem; - } - - .md\:p-2 { - padding: 0.5rem; - } - - .md\:p-3 { - padding: 0.75rem; - } - - .md\:p-4 { - padding: 1rem; - } - - .md\:p-5 { - padding: 1.25rem; - } - - .md\:p-6 { - padding: 1.5rem; - } - - .md\:p-8 { - padding: 2rem; - } - - .md\:p-10 { - padding: 2.5rem; - } - - .md\:p-12 { - padding: 3rem; - } - - .md\:p-16 { - padding: 4rem; - } - - .md\:p-20 { - padding: 5rem; - } - - .md\:p-24 { - padding: 6rem; - } - - .md\:p-32 { - padding: 8rem; - } - - .md\:p-40 { - padding: 10rem; - } - - .md\:p-48 { - padding: 12rem; - } - - .md\:p-56 { - padding: 14rem; - } - - .md\:p-64 { - padding: 16rem; - } - - .md\:p-px { - padding: 1px; - } - - .md\:py-0 { - padding-top: 0; - padding-bottom: 0; - } - - .md\:px-0 { - padding-left: 0; - padding-right: 0; - } - - .md\:py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .md\:px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; - } - - .md\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .md\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - - .md\:py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - } - - .md\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .md\:py-4 { - padding-top: 1rem; - padding-bottom: 1rem; - } - - .md\:px-4 { - padding-left: 1rem; - padding-right: 1rem; - } - - .md\:py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; - } - - .md\:px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; - } - - .md\:py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - - .md\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .md\:py-8 { - padding-top: 2rem; - padding-bottom: 2rem; - } - - .md\:px-8 { - padding-left: 2rem; - padding-right: 2rem; - } - - .md\:py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; - } - - .md\:px-10 { - padding-left: 2.5rem; - padding-right: 2.5rem; - } - - .md\:py-12 { - padding-top: 3rem; - padding-bottom: 3rem; - } - - .md\:px-12 { - padding-left: 3rem; - padding-right: 3rem; - } - - .md\:py-16 { - padding-top: 4rem; - padding-bottom: 4rem; - } - - .md\:px-16 { - padding-left: 4rem; - padding-right: 4rem; - } - - .md\:py-20 { - padding-top: 5rem; - padding-bottom: 5rem; - } - - .md\:px-20 { - padding-left: 5rem; - padding-right: 5rem; - } - - .md\:py-24 { - padding-top: 6rem; - padding-bottom: 6rem; - } - - .md\:px-24 { - padding-left: 6rem; - padding-right: 6rem; - } - - .md\:py-32 { - padding-top: 8rem; - padding-bottom: 8rem; - } - - .md\:px-32 { - padding-left: 8rem; - padding-right: 8rem; - } - - .md\:py-40 { - padding-top: 10rem; - padding-bottom: 10rem; - } - - .md\:px-40 { - padding-left: 10rem; - padding-right: 10rem; - } - - .md\:py-48 { - padding-top: 12rem; - padding-bottom: 12rem; - } - - .md\:px-48 { - padding-left: 12rem; - padding-right: 12rem; - } - - .md\:py-56 { - padding-top: 14rem; - padding-bottom: 14rem; - } - - .md\:px-56 { - padding-left: 14rem; - padding-right: 14rem; - } - - .md\:py-64 { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .md\:px-64 { - padding-left: 16rem; - padding-right: 16rem; - } - - .md\:py-px { - padding-top: 1px; - padding-bottom: 1px; - } - - .md\:px-px { - padding-left: 1px; - padding-right: 1px; - } - - .md\:pt-0 { - padding-top: 0; - } - - .md\:pr-0 { - padding-right: 0; - } - - .md\:pb-0 { - padding-bottom: 0; - } - - .md\:pl-0 { - padding-left: 0; - } - - .md\:pt-1 { - padding-top: 0.25rem; - } - - .md\:pr-1 { - padding-right: 0.25rem; - } - - .md\:pb-1 { - padding-bottom: 0.25rem; - } - - .md\:pl-1 { - padding-left: 0.25rem; - } - - .md\:pt-2 { - padding-top: 0.5rem; - } - - .md\:pr-2 { - padding-right: 0.5rem; - } - - .md\:pb-2 { - padding-bottom: 0.5rem; - } - - .md\:pl-2 { - padding-left: 0.5rem; - } - - .md\:pt-3 { - padding-top: 0.75rem; - } - - .md\:pr-3 { - padding-right: 0.75rem; - } - - .md\:pb-3 { - padding-bottom: 0.75rem; - } - - .md\:pl-3 { - padding-left: 0.75rem; - } - - .md\:pt-4 { - padding-top: 1rem; - } - - .md\:pr-4 { - padding-right: 1rem; - } - - .md\:pb-4 { - padding-bottom: 1rem; - } - - .md\:pl-4 { - padding-left: 1rem; - } - - .md\:pt-5 { - padding-top: 1.25rem; - } - - .md\:pr-5 { - padding-right: 1.25rem; - } - - .md\:pb-5 { - padding-bottom: 1.25rem; - } - - .md\:pl-5 { - padding-left: 1.25rem; - } - - .md\:pt-6 { - padding-top: 1.5rem; - } - - .md\:pr-6 { - padding-right: 1.5rem; - } - - .md\:pb-6 { - padding-bottom: 1.5rem; - } - - .md\:pl-6 { - padding-left: 1.5rem; - } - - .md\:pt-8 { - padding-top: 2rem; - } - - .md\:pr-8 { - padding-right: 2rem; - } - - .md\:pb-8 { - padding-bottom: 2rem; - } - - .md\:pl-8 { - padding-left: 2rem; - } - - .md\:pt-10 { - padding-top: 2.5rem; - } - - .md\:pr-10 { - padding-right: 2.5rem; - } - - .md\:pb-10 { - padding-bottom: 2.5rem; - } - - .md\:pl-10 { - padding-left: 2.5rem; - } - - .md\:pt-12 { - padding-top: 3rem; - } - - .md\:pr-12 { - padding-right: 3rem; - } - - .md\:pb-12 { - padding-bottom: 3rem; - } - - .md\:pl-12 { - padding-left: 3rem; - } - - .md\:pt-16 { - padding-top: 4rem; - } - - .md\:pr-16 { - padding-right: 4rem; - } - - .md\:pb-16 { - padding-bottom: 4rem; - } - - .md\:pl-16 { - padding-left: 4rem; - } - - .md\:pt-20 { - padding-top: 5rem; - } - - .md\:pr-20 { - padding-right: 5rem; - } - - .md\:pb-20 { - padding-bottom: 5rem; - } - - .md\:pl-20 { - padding-left: 5rem; - } - - .md\:pt-24 { - padding-top: 6rem; - } - - .md\:pr-24 { - padding-right: 6rem; - } - - .md\:pb-24 { - padding-bottom: 6rem; - } - - .md\:pl-24 { - padding-left: 6rem; - } - - .md\:pt-32 { - padding-top: 8rem; - } - - .md\:pr-32 { - padding-right: 8rem; - } - - .md\:pb-32 { - padding-bottom: 8rem; - } - - .md\:pl-32 { - padding-left: 8rem; - } - - .md\:pt-40 { - padding-top: 10rem; - } - - .md\:pr-40 { - padding-right: 10rem; - } - - .md\:pb-40 { - padding-bottom: 10rem; - } - - .md\:pl-40 { - padding-left: 10rem; - } - - .md\:pt-48 { - padding-top: 12rem; - } - - .md\:pr-48 { - padding-right: 12rem; - } - - .md\:pb-48 { - padding-bottom: 12rem; - } - - .md\:pl-48 { - padding-left: 12rem; - } - - .md\:pt-56 { - padding-top: 14rem; - } - - .md\:pr-56 { - padding-right: 14rem; - } - - .md\:pb-56 { - padding-bottom: 14rem; - } - - .md\:pl-56 { - padding-left: 14rem; - } - - .md\:pt-64 { - padding-top: 16rem; - } - - .md\:pr-64 { - padding-right: 16rem; - } - - .md\:pb-64 { - padding-bottom: 16rem; - } - - .md\:pl-64 { - padding-left: 16rem; - } - - .md\:pt-px { - padding-top: 1px; - } - - .md\:pr-px { - padding-right: 1px; - } - - .md\:pb-px { - padding-bottom: 1px; - } - - .md\:pl-px { - padding-left: 1px; - } - - .md\:pointer-events-none { - pointer-events: none; - } - - .md\:pointer-events-auto { - pointer-events: auto; - } - - .md\:static { - position: static; - } - - .md\:fixed { - position: fixed; - } - - .md\:absolute { - position: absolute; - } - - .md\:relative { - position: relative; - } - - .md\:sticky { - position: -webkit-sticky; - position: sticky; - } - - .md\:inset-0 { - top: 0; - right: 0; - bottom: 0; - left: 0; - } - - .md\:inset-auto { - top: auto; - right: auto; - bottom: auto; - left: auto; - } - - .md\:inset-y-0 { - top: 0; - bottom: 0; - } - - .md\:inset-x-0 { - right: 0; - left: 0; - } - - .md\:inset-y-auto { - top: auto; - bottom: auto; - } - - .md\:inset-x-auto { - right: auto; - left: auto; - } - - .md\:top-0 { - top: 0; - } - - .md\:right-0 { - right: 0; - } - - .md\:bottom-0 { - bottom: 0; - } - - .md\:left-0 { - left: 0; - } - - .md\:top-auto { - top: auto; - } - - .md\:right-auto { - right: auto; - } - - .md\:bottom-auto { - bottom: auto; - } - - .md\:left-auto { - left: auto; - } - - .md\:resize-none { - resize: none; - } - - .md\:resize-y { - resize: vertical; - } - - .md\:resize-x { - resize: horizontal; - } - - .md\:resize { - resize: both; - } - - .md\:shadow { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .md\:shadow-md { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .md\:shadow-lg { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .md\:shadow-xl { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .md\:shadow-2xl { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .md\:shadow-inner { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .md\:shadow-outline { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .md\:shadow-none { - box-shadow: none; - } - - .md\:hover\:shadow:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .md\:hover\:shadow-md:hover { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .md\:hover\:shadow-lg:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .md\:hover\:shadow-xl:hover { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .md\:hover\:shadow-2xl:hover { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .md\:hover\:shadow-inner:hover { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .md\:hover\:shadow-outline:hover { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .md\:hover\:shadow-none:hover { - box-shadow: none; - } - - .md\:focus\:shadow:focus { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .md\:focus\:shadow-md:focus { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .md\:focus\:shadow-lg:focus { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .md\:focus\:shadow-xl:focus { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .md\:focus\:shadow-2xl:focus { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .md\:focus\:shadow-inner:focus { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .md\:focus\:shadow-outline:focus { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .md\:focus\:shadow-none:focus { - box-shadow: none; - } - - .md\:fill-current { - fill: currentColor; - } - - .md\:stroke-current { - stroke: currentColor; - } - - .md\:table-auto { - table-layout: auto; - } - - .md\:table-fixed { - table-layout: fixed; - } - - .md\:text-left { - text-align: left; - } - - .md\:text-center { - text-align: center; - } - - .md\:text-right { - text-align: right; - } - - .md\:text-justify { - text-align: justify; - } - - .md\:text-transparent { - color: transparent; - } - - .md\:text-black { - color: #000; - } - - .md\:text-grey-darkest { - color: #3d4852; - } - - .md\:text-grey-darker { - color: #606f7b; - } - - .md\:text-grey-dark { - color: #8795a1; - } - - .md\:text-grey { - color: #b8c2cc; - } - - .md\:text-grey-light { - color: #dae1e7; - } - - .md\:text-grey-lighter { - color: #f1f5f8; - } - - .md\:text-grey-lightest { - color: #f8fafc; - } - - .md\:text-white { - color: #fff; - } - - .md\:text-snipline-green-darker { - color: #333510; - } - - .md\:text-snipline-green-dark { - color: #94AB0D; - } - - .md\:text-snipline-lime-light { - color: #e1f471; - } - - .md\:text-snipline-lime { - color: #CDED15; - } - - .md\:text-snipline-lime-dark { - color: #94AB0D; - } - - .md\:text-snipline-green { - color: #15ED78; - } - - .md\:text-snipline-yellow { - color: #EDE415; - } - - .md\:text-snipline-grey-dark { - color: rgba(51, 53, 16, 0.8); - } - - .md\:text-snipline-grey { - color: #EBF1EF; - } - - .md\:text-snipline-grey-light { - color: #DAE1E7; - } - - .md\:text-snipline-grey-lighter { - color: #E0E8EE; - } - - .md\:text-success-100 { - color: #ECFBD7; - } - - .md\:text-success-200 { - color: #D5F8B0; - } - - .md\:text-success-300 { - color: #B3EC84; - } - - .md\:text-success-400 { - color: #90D962; - } - - .md\:text-success-500 { - color: #61C134; - } - - .md\:text-success-600 { - color: #46A526; - } - - .md\:text-success-700 { - color: #2F8A1A; - } - - .md\:text-success-800 { - color: #1C6F10; - } - - .md\:text-success-900 { - color: #0E5C09; - } - - .md\:text-info-100 { - color: #DFF6FE; - } - - .md\:text-info-200 { - color: #BFE9FE; - } - - .md\:text-info-300 { - color: #9FD9FE; - } - - .md\:text-info-400 { - color: #86CAFD; - } - - .md\:text-info-500 { - color: #5FB0FC; - } - - .md\:text-info-600 { - color: #4589D8; - } - - .md\:text-info-700 { - color: #2F67B5; - } - - .md\:text-info-800 { - color: #1E4892; - } - - .md\:text-info-900 { - color: #123278; - } - - .md\:text-danger-100 { - color: #FFEAD7; - } - - .md\:text-danger-200 { - color: #FFD0B0; - } - - .md\:text-danger-300 { - color: #FFB088; - } - - .md\:text-danger-400 { - color: #FF916B; - } - - .md\:text-danger-500 { - color: #FF5E3A; - } - - .md\:text-danger-600 { - color: #DB3D2A; - } - - .md\:text-danger-700 { - color: #B7221D; - } - - .md\:text-danger-800 { - color: #931218; - } - - .md\:text-danger-900 { - color: #7A0B18; - } - - .md\:hover\:text-transparent:hover { - color: transparent; - } - - .md\:hover\:text-black:hover { - color: #000; - } - - .md\:hover\:text-grey-darkest:hover { - color: #3d4852; - } - - .md\:hover\:text-grey-darker:hover { - color: #606f7b; - } - - .md\:hover\:text-grey-dark:hover { - color: #8795a1; - } - - .md\:hover\:text-grey:hover { - color: #b8c2cc; - } - - .md\:hover\:text-grey-light:hover { - color: #dae1e7; - } - - .md\:hover\:text-grey-lighter:hover { - color: #f1f5f8; - } - - .md\:hover\:text-grey-lightest:hover { - color: #f8fafc; - } - - .md\:hover\:text-white:hover { - color: #fff; - } - - .md\:hover\:text-snipline-green-darker:hover { - color: #333510; - } - - .md\:hover\:text-snipline-green-dark:hover { - color: #94AB0D; - } - - .md\:hover\:text-snipline-lime-light:hover { - color: #e1f471; - } - - .md\:hover\:text-snipline-lime:hover { - color: #CDED15; - } - - .md\:hover\:text-snipline-lime-dark:hover { - color: #94AB0D; - } - - .md\:hover\:text-snipline-green:hover { - color: #15ED78; - } - - .md\:hover\:text-snipline-yellow:hover { - color: #EDE415; - } - - .md\:hover\:text-snipline-grey-dark:hover { - color: rgba(51, 53, 16, 0.8); - } - - .md\:hover\:text-snipline-grey:hover { - color: #EBF1EF; - } - - .md\:hover\:text-snipline-grey-light:hover { - color: #DAE1E7; - } - - .md\:hover\:text-snipline-grey-lighter:hover { - color: #E0E8EE; - } - - .md\:hover\:text-success-100:hover { - color: #ECFBD7; - } - - .md\:hover\:text-success-200:hover { - color: #D5F8B0; - } - - .md\:hover\:text-success-300:hover { - color: #B3EC84; - } - - .md\:hover\:text-success-400:hover { - color: #90D962; - } - - .md\:hover\:text-success-500:hover { - color: #61C134; - } - - .md\:hover\:text-success-600:hover { - color: #46A526; - } - - .md\:hover\:text-success-700:hover { - color: #2F8A1A; - } - - .md\:hover\:text-success-800:hover { - color: #1C6F10; - } - - .md\:hover\:text-success-900:hover { - color: #0E5C09; - } - - .md\:hover\:text-info-100:hover { - color: #DFF6FE; - } - - .md\:hover\:text-info-200:hover { - color: #BFE9FE; - } - - .md\:hover\:text-info-300:hover { - color: #9FD9FE; - } - - .md\:hover\:text-info-400:hover { - color: #86CAFD; - } - - .md\:hover\:text-info-500:hover { - color: #5FB0FC; - } - - .md\:hover\:text-info-600:hover { - color: #4589D8; - } - - .md\:hover\:text-info-700:hover { - color: #2F67B5; - } - - .md\:hover\:text-info-800:hover { - color: #1E4892; - } - - .md\:hover\:text-info-900:hover { - color: #123278; - } - - .md\:hover\:text-danger-100:hover { - color: #FFEAD7; - } - - .md\:hover\:text-danger-200:hover { - color: #FFD0B0; - } - - .md\:hover\:text-danger-300:hover { - color: #FFB088; - } - - .md\:hover\:text-danger-400:hover { - color: #FF916B; - } - - .md\:hover\:text-danger-500:hover { - color: #FF5E3A; - } - - .md\:hover\:text-danger-600:hover { - color: #DB3D2A; - } - - .md\:hover\:text-danger-700:hover { - color: #B7221D; - } - - .md\:hover\:text-danger-800:hover { - color: #931218; - } - - .md\:hover\:text-danger-900:hover { - color: #7A0B18; - } - - .md\:focus\:text-transparent:focus { - color: transparent; - } - - .md\:focus\:text-black:focus { - color: #000; - } - - .md\:focus\:text-grey-darkest:focus { - color: #3d4852; - } - - .md\:focus\:text-grey-darker:focus { - color: #606f7b; - } - - .md\:focus\:text-grey-dark:focus { - color: #8795a1; - } - - .md\:focus\:text-grey:focus { - color: #b8c2cc; - } - - .md\:focus\:text-grey-light:focus { - color: #dae1e7; - } - - .md\:focus\:text-grey-lighter:focus { - color: #f1f5f8; - } - - .md\:focus\:text-grey-lightest:focus { - color: #f8fafc; - } - - .md\:focus\:text-white:focus { - color: #fff; - } - - .md\:focus\:text-snipline-green-darker:focus { - color: #333510; - } - - .md\:focus\:text-snipline-green-dark:focus { - color: #94AB0D; - } - - .md\:focus\:text-snipline-lime-light:focus { - color: #e1f471; - } - - .md\:focus\:text-snipline-lime:focus { - color: #CDED15; - } - - .md\:focus\:text-snipline-lime-dark:focus { - color: #94AB0D; - } - - .md\:focus\:text-snipline-green:focus { - color: #15ED78; - } - - .md\:focus\:text-snipline-yellow:focus { - color: #EDE415; - } - - .md\:focus\:text-snipline-grey-dark:focus { - color: rgba(51, 53, 16, 0.8); - } - - .md\:focus\:text-snipline-grey:focus { - color: #EBF1EF; - } - - .md\:focus\:text-snipline-grey-light:focus { - color: #DAE1E7; - } - - .md\:focus\:text-snipline-grey-lighter:focus { - color: #E0E8EE; - } - - .md\:focus\:text-success-100:focus { - color: #ECFBD7; - } - - .md\:focus\:text-success-200:focus { - color: #D5F8B0; - } - - .md\:focus\:text-success-300:focus { - color: #B3EC84; - } - - .md\:focus\:text-success-400:focus { - color: #90D962; - } - - .md\:focus\:text-success-500:focus { - color: #61C134; - } - - .md\:focus\:text-success-600:focus { - color: #46A526; - } - - .md\:focus\:text-success-700:focus { - color: #2F8A1A; - } - - .md\:focus\:text-success-800:focus { - color: #1C6F10; - } - - .md\:focus\:text-success-900:focus { - color: #0E5C09; - } - - .md\:focus\:text-info-100:focus { - color: #DFF6FE; - } - - .md\:focus\:text-info-200:focus { - color: #BFE9FE; - } - - .md\:focus\:text-info-300:focus { - color: #9FD9FE; - } - - .md\:focus\:text-info-400:focus { - color: #86CAFD; - } - - .md\:focus\:text-info-500:focus { - color: #5FB0FC; - } - - .md\:focus\:text-info-600:focus { - color: #4589D8; - } - - .md\:focus\:text-info-700:focus { - color: #2F67B5; - } - - .md\:focus\:text-info-800:focus { - color: #1E4892; - } - - .md\:focus\:text-info-900:focus { - color: #123278; - } - - .md\:focus\:text-danger-100:focus { - color: #FFEAD7; - } - - .md\:focus\:text-danger-200:focus { - color: #FFD0B0; - } - - .md\:focus\:text-danger-300:focus { - color: #FFB088; - } - - .md\:focus\:text-danger-400:focus { - color: #FF916B; - } - - .md\:focus\:text-danger-500:focus { - color: #FF5E3A; - } - - .md\:focus\:text-danger-600:focus { - color: #DB3D2A; - } - - .md\:focus\:text-danger-700:focus { - color: #B7221D; - } - - .md\:focus\:text-danger-800:focus { - color: #931218; - } - - .md\:focus\:text-danger-900:focus { - color: #7A0B18; - } - - .md\:text-xs { - font-size: 0.75rem; - } - - .md\:text-sm { - font-size: 0.875rem; - } - - .md\:text-base { - font-size: 1rem; - } - - .md\:text-lg { - font-size: 1.125rem; - } - - .md\:text-xl { - font-size: 1.25rem; - } - - .md\:text-2xl { - font-size: 1.5rem; - } - - .md\:text-3xl { - font-size: 1.875rem; - } - - .md\:text-4xl { - font-size: 2.25rem; - } - - .md\:text-5xl { - font-size: 3rem; - } - - .md\:text-6xl { - font-size: 4rem; - } - - .md\:italic { - font-style: italic; - } - - .md\:not-italic { - font-style: normal; - } - - .md\:uppercase { - text-transform: uppercase; - } - - .md\:lowercase { - text-transform: lowercase; - } - - .md\:capitalize { - text-transform: capitalize; - } - - .md\:normal-case { - text-transform: none; - } - - .md\:underline { - text-decoration: underline; - } - - .md\:line-through { - text-decoration: line-through; - } - - .md\:no-underline { - text-decoration: none; - } - - .md\:hover\:underline:hover { - text-decoration: underline; - } - - .md\:hover\:line-through:hover { - text-decoration: line-through; - } - - .md\:hover\:no-underline:hover { - text-decoration: none; - } - - .md\:focus\:underline:focus { - text-decoration: underline; - } - - .md\:focus\:line-through:focus { - text-decoration: line-through; - } - - .md\:focus\:no-underline:focus { - text-decoration: none; - } - - .md\:antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .md\:subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; - } - - .md\:tracking-tighter { - letter-spacing: -0.05em; - } - - .md\:tracking-tight { - letter-spacing: -0.025em; - } - - .md\:tracking-normal { - letter-spacing: 0; - } - - .md\:tracking-wide { - letter-spacing: 0.025em; - } - - .md\:tracking-wider { - letter-spacing: 0.05em; - } - - .md\:tracking-widest { - letter-spacing: 0.1em; - } - - .md\:select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - .md\:select-text { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - .md\:select-all { - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; - } - - .md\:select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; - } - - .md\:align-baseline { - vertical-align: baseline; - } - - .md\:align-top { - vertical-align: top; - } - - .md\:align-middle { - vertical-align: middle; - } - - .md\:align-bottom { - vertical-align: bottom; - } - - .md\:align-text-top { - vertical-align: text-top; - } - - .md\:align-text-bottom { - vertical-align: text-bottom; - } - - .md\:visible { - visibility: visible; - } - - .md\:invisible { - visibility: hidden; - } - - .md\:whitespace-normal { - white-space: normal; - } - - .md\:whitespace-no-wrap { - white-space: nowrap; - } - - .md\:whitespace-pre { - white-space: pre; - } - - .md\:whitespace-pre-line { - white-space: pre-line; - } - - .md\:whitespace-pre-wrap { - white-space: pre-wrap; - } - - .md\:break-normal { - overflow-wrap: normal; - word-break: normal; - } - - .md\:break-words { - overflow-wrap: break-word; - } - - .md\:break-all { - word-break: break-all; - } - - .md\:truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .md\:w-0 { - width: 0; - } - - .md\:w-1 { - width: 0.25rem; - } - - .md\:w-2 { - width: 0.5rem; - } - - .md\:w-3 { - width: 0.75rem; - } - - .md\:w-4 { - width: 1rem; - } - - .md\:w-5 { - width: 1.25rem; - } - - .md\:w-6 { - width: 1.5rem; - } - - .md\:w-8 { - width: 2rem; - } - - .md\:w-10 { - width: 2.5rem; - } - - .md\:w-12 { - width: 3rem; - } - - .md\:w-16 { - width: 4rem; - } - - .md\:w-20 { - width: 5rem; - } - - .md\:w-24 { - width: 6rem; - } - - .md\:w-32 { - width: 8rem; - } - - .md\:w-40 { - width: 10rem; - } - - .md\:w-48 { - width: 12rem; - } - - .md\:w-56 { - width: 14rem; - } - - .md\:w-64 { - width: 16rem; - } - - .md\:w-auto { - width: auto; - } - - .md\:w-px { - width: 1px; - } - - .md\:w-1\/2 { - width: 50%; - } - - .md\:w-1\/3 { - width: 33.33333%; - } - - .md\:w-2\/3 { - width: 66.66667%; - } - - .md\:w-1\/4 { - width: 25%; - } - - .md\:w-2\/4 { - width: 50%; - } - - .md\:w-3\/4 { - width: 75%; - } - - .md\:w-1\/5 { - width: 20%; - } - - .md\:w-2\/5 { - width: 40%; - } - - .md\:w-3\/5 { - width: 60%; - } - - .md\:w-4\/5 { - width: 80%; - } - - .md\:w-1\/6 { - width: 16.66667%; - } - - .md\:w-2\/6 { - width: 33.33333%; - } - - .md\:w-3\/6 { - width: 50%; - } - - .md\:w-4\/6 { - width: 66.66667%; - } - - .md\:w-5\/6 { - width: 83.33333%; - } - - .md\:w-1\/12 { - width: 8.33333%; - } - - .md\:w-2\/12 { - width: 16.66667%; - } - - .md\:w-3\/12 { - width: 25%; - } - - .md\:w-4\/12 { - width: 33.33333%; - } - - .md\:w-5\/12 { - width: 41.66667%; - } - - .md\:w-6\/12 { - width: 50%; - } - - .md\:w-7\/12 { - width: 58.33333%; - } - - .md\:w-8\/12 { - width: 66.66667%; - } - - .md\:w-9\/12 { - width: 75%; - } - - .md\:w-10\/12 { - width: 83.33333%; - } - - .md\:w-11\/12 { - width: 91.66667%; - } - - .md\:w-full { - width: 100%; - } - - .md\:w-screen { - width: 100vw; - } - - .md\:z-0 { - z-index: 0; - } - - .md\:z-10 { - z-index: 10; - } - - .md\:z-20 { - z-index: 20; - } - - .md\:z-30 { - z-index: 30; - } - - .md\:z-40 { - z-index: 40; - } - - .md\:z-50 { - z-index: 50; - } - - .md\:z-auto { - z-index: auto; - } -} - -@media (min-width: 1024px) { - .lg\:appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } - - .lg\:bg-fixed { - background-attachment: fixed; - } - - .lg\:bg-local { - background-attachment: local; - } - - .lg\:bg-scroll { - background-attachment: scroll; - } - - .lg\:bg-transparent { - background-color: transparent; - } - - .lg\:bg-black { - background-color: #000; - } - - .lg\:bg-grey-darkest { - background-color: #3d4852; - } - - .lg\:bg-grey-darker { - background-color: #606f7b; - } - - .lg\:bg-grey-dark { - background-color: #8795a1; - } - - .lg\:bg-grey { - background-color: #b8c2cc; - } - - .lg\:bg-grey-light { - background-color: #dae1e7; - } - - .lg\:bg-grey-lighter { - background-color: #f1f5f8; - } - - .lg\:bg-grey-lightest { - background-color: #f8fafc; - } - - .lg\:bg-white { - background-color: #fff; - } - - .lg\:bg-snipline-green-darker { - background-color: #333510; - } - - .lg\:bg-snipline-green-dark { - background-color: #94AB0D; - } - - .lg\:bg-snipline-lime-light { - background-color: #e1f471; - } - - .lg\:bg-snipline-lime { - background-color: #CDED15; - } - - .lg\:bg-snipline-lime-dark { - background-color: #94AB0D; - } - - .lg\:bg-snipline-green { - background-color: #15ED78; - } - - .lg\:bg-snipline-yellow { - background-color: #EDE415; - } - - .lg\:bg-snipline-grey-dark { - background-color: rgba(51, 53, 16, 0.8); - } - - .lg\:bg-snipline-grey { - background-color: #EBF1EF; - } - - .lg\:bg-snipline-grey-light { - background-color: #DAE1E7; - } - - .lg\:bg-snipline-grey-lighter { - background-color: #E0E8EE; - } - - .lg\:bg-success-100 { - background-color: #ECFBD7; - } - - .lg\:bg-success-200 { - background-color: #D5F8B0; - } - - .lg\:bg-success-300 { - background-color: #B3EC84; - } - - .lg\:bg-success-400 { - background-color: #90D962; - } - - .lg\:bg-success-500 { - background-color: #61C134; - } - - .lg\:bg-success-600 { - background-color: #46A526; - } - - .lg\:bg-success-700 { - background-color: #2F8A1A; - } - - .lg\:bg-success-800 { - background-color: #1C6F10; - } - - .lg\:bg-success-900 { - background-color: #0E5C09; - } - - .lg\:bg-info-100 { - background-color: #DFF6FE; - } - - .lg\:bg-info-200 { - background-color: #BFE9FE; - } - - .lg\:bg-info-300 { - background-color: #9FD9FE; - } - - .lg\:bg-info-400 { - background-color: #86CAFD; - } - - .lg\:bg-info-500 { - background-color: #5FB0FC; - } - - .lg\:bg-info-600 { - background-color: #4589D8; - } - - .lg\:bg-info-700 { - background-color: #2F67B5; - } - - .lg\:bg-info-800 { - background-color: #1E4892; - } - - .lg\:bg-info-900 { - background-color: #123278; - } - - .lg\:bg-danger-100 { - background-color: #FFEAD7; - } - - .lg\:bg-danger-200 { - background-color: #FFD0B0; - } - - .lg\:bg-danger-300 { - background-color: #FFB088; - } - - .lg\:bg-danger-400 { - background-color: #FF916B; - } - - .lg\:bg-danger-500 { - background-color: #FF5E3A; - } - - .lg\:bg-danger-600 { - background-color: #DB3D2A; - } - - .lg\:bg-danger-700 { - background-color: #B7221D; - } - - .lg\:bg-danger-800 { - background-color: #931218; - } - - .lg\:bg-danger-900 { - background-color: #7A0B18; - } - - .lg\:hover\:bg-transparent:hover { - background-color: transparent; - } - - .lg\:hover\:bg-black:hover { - background-color: #000; - } - - .lg\:hover\:bg-grey-darkest:hover { - background-color: #3d4852; - } - - .lg\:hover\:bg-grey-darker:hover { - background-color: #606f7b; - } - - .lg\:hover\:bg-grey-dark:hover { - background-color: #8795a1; - } - - .lg\:hover\:bg-grey:hover { - background-color: #b8c2cc; - } - - .lg\:hover\:bg-grey-light:hover { - background-color: #dae1e7; - } - - .lg\:hover\:bg-grey-lighter:hover { - background-color: #f1f5f8; - } - - .lg\:hover\:bg-grey-lightest:hover { - background-color: #f8fafc; - } - - .lg\:hover\:bg-white:hover { - background-color: #fff; - } - - .lg\:hover\:bg-snipline-green-darker:hover { - background-color: #333510; - } - - .lg\:hover\:bg-snipline-green-dark:hover { - background-color: #94AB0D; - } - - .lg\:hover\:bg-snipline-lime-light:hover { - background-color: #e1f471; - } - - .lg\:hover\:bg-snipline-lime:hover { - background-color: #CDED15; - } - - .lg\:hover\:bg-snipline-lime-dark:hover { - background-color: #94AB0D; - } - - .lg\:hover\:bg-snipline-green:hover { - background-color: #15ED78; - } - - .lg\:hover\:bg-snipline-yellow:hover { - background-color: #EDE415; - } - - .lg\:hover\:bg-snipline-grey-dark:hover { - background-color: rgba(51, 53, 16, 0.8); - } - - .lg\:hover\:bg-snipline-grey:hover { - background-color: #EBF1EF; - } - - .lg\:hover\:bg-snipline-grey-light:hover { - background-color: #DAE1E7; - } - - .lg\:hover\:bg-snipline-grey-lighter:hover { - background-color: #E0E8EE; - } - - .lg\:hover\:bg-success-100:hover { - background-color: #ECFBD7; - } - - .lg\:hover\:bg-success-200:hover { - background-color: #D5F8B0; - } - - .lg\:hover\:bg-success-300:hover { - background-color: #B3EC84; - } - - .lg\:hover\:bg-success-400:hover { - background-color: #90D962; - } - - .lg\:hover\:bg-success-500:hover { - background-color: #61C134; - } - - .lg\:hover\:bg-success-600:hover { - background-color: #46A526; - } - - .lg\:hover\:bg-success-700:hover { - background-color: #2F8A1A; - } - - .lg\:hover\:bg-success-800:hover { - background-color: #1C6F10; - } - - .lg\:hover\:bg-success-900:hover { - background-color: #0E5C09; - } - - .lg\:hover\:bg-info-100:hover { - background-color: #DFF6FE; - } - - .lg\:hover\:bg-info-200:hover { - background-color: #BFE9FE; - } - - .lg\:hover\:bg-info-300:hover { - background-color: #9FD9FE; - } - - .lg\:hover\:bg-info-400:hover { - background-color: #86CAFD; - } - - .lg\:hover\:bg-info-500:hover { - background-color: #5FB0FC; - } - - .lg\:hover\:bg-info-600:hover { - background-color: #4589D8; - } - - .lg\:hover\:bg-info-700:hover { - background-color: #2F67B5; - } - - .lg\:hover\:bg-info-800:hover { - background-color: #1E4892; - } - - .lg\:hover\:bg-info-900:hover { - background-color: #123278; - } - - .lg\:hover\:bg-danger-100:hover { - background-color: #FFEAD7; - } - - .lg\:hover\:bg-danger-200:hover { - background-color: #FFD0B0; - } - - .lg\:hover\:bg-danger-300:hover { - background-color: #FFB088; - } - - .lg\:hover\:bg-danger-400:hover { - background-color: #FF916B; - } - - .lg\:hover\:bg-danger-500:hover { - background-color: #FF5E3A; - } - - .lg\:hover\:bg-danger-600:hover { - background-color: #DB3D2A; - } - - .lg\:hover\:bg-danger-700:hover { - background-color: #B7221D; - } - - .lg\:hover\:bg-danger-800:hover { - background-color: #931218; - } - - .lg\:hover\:bg-danger-900:hover { - background-color: #7A0B18; - } - - .lg\:focus\:bg-transparent:focus { - background-color: transparent; - } - - .lg\:focus\:bg-black:focus { - background-color: #000; - } - - .lg\:focus\:bg-grey-darkest:focus { - background-color: #3d4852; - } - - .lg\:focus\:bg-grey-darker:focus { - background-color: #606f7b; - } - - .lg\:focus\:bg-grey-dark:focus { - background-color: #8795a1; - } - - .lg\:focus\:bg-grey:focus { - background-color: #b8c2cc; - } - - .lg\:focus\:bg-grey-light:focus { - background-color: #dae1e7; - } - - .lg\:focus\:bg-grey-lighter:focus { - background-color: #f1f5f8; - } - - .lg\:focus\:bg-grey-lightest:focus { - background-color: #f8fafc; - } - - .lg\:focus\:bg-white:focus { - background-color: #fff; - } - - .lg\:focus\:bg-snipline-green-darker:focus { - background-color: #333510; - } - - .lg\:focus\:bg-snipline-green-dark:focus { - background-color: #94AB0D; - } - - .lg\:focus\:bg-snipline-lime-light:focus { - background-color: #e1f471; - } - - .lg\:focus\:bg-snipline-lime:focus { - background-color: #CDED15; - } - - .lg\:focus\:bg-snipline-lime-dark:focus { - background-color: #94AB0D; - } - - .lg\:focus\:bg-snipline-green:focus { - background-color: #15ED78; - } - - .lg\:focus\:bg-snipline-yellow:focus { - background-color: #EDE415; - } - - .lg\:focus\:bg-snipline-grey-dark:focus { - background-color: rgba(51, 53, 16, 0.8); - } - - .lg\:focus\:bg-snipline-grey:focus { - background-color: #EBF1EF; - } - - .lg\:focus\:bg-snipline-grey-light:focus { - background-color: #DAE1E7; - } - - .lg\:focus\:bg-snipline-grey-lighter:focus { - background-color: #E0E8EE; - } - - .lg\:focus\:bg-success-100:focus { - background-color: #ECFBD7; - } - - .lg\:focus\:bg-success-200:focus { - background-color: #D5F8B0; - } - - .lg\:focus\:bg-success-300:focus { - background-color: #B3EC84; - } - - .lg\:focus\:bg-success-400:focus { - background-color: #90D962; - } - - .lg\:focus\:bg-success-500:focus { - background-color: #61C134; - } - - .lg\:focus\:bg-success-600:focus { - background-color: #46A526; - } - - .lg\:focus\:bg-success-700:focus { - background-color: #2F8A1A; - } - - .lg\:focus\:bg-success-800:focus { - background-color: #1C6F10; - } - - .lg\:focus\:bg-success-900:focus { - background-color: #0E5C09; - } - - .lg\:focus\:bg-info-100:focus { - background-color: #DFF6FE; - } - - .lg\:focus\:bg-info-200:focus { - background-color: #BFE9FE; - } - - .lg\:focus\:bg-info-300:focus { - background-color: #9FD9FE; - } - - .lg\:focus\:bg-info-400:focus { - background-color: #86CAFD; - } - - .lg\:focus\:bg-info-500:focus { - background-color: #5FB0FC; - } - - .lg\:focus\:bg-info-600:focus { - background-color: #4589D8; - } - - .lg\:focus\:bg-info-700:focus { - background-color: #2F67B5; - } - - .lg\:focus\:bg-info-800:focus { - background-color: #1E4892; - } - - .lg\:focus\:bg-info-900:focus { - background-color: #123278; - } - - .lg\:focus\:bg-danger-100:focus { - background-color: #FFEAD7; - } - - .lg\:focus\:bg-danger-200:focus { - background-color: #FFD0B0; - } - - .lg\:focus\:bg-danger-300:focus { - background-color: #FFB088; - } - - .lg\:focus\:bg-danger-400:focus { - background-color: #FF916B; - } - - .lg\:focus\:bg-danger-500:focus { - background-color: #FF5E3A; - } - - .lg\:focus\:bg-danger-600:focus { - background-color: #DB3D2A; - } - - .lg\:focus\:bg-danger-700:focus { - background-color: #B7221D; - } - - .lg\:focus\:bg-danger-800:focus { - background-color: #931218; - } - - .lg\:focus\:bg-danger-900:focus { - background-color: #7A0B18; - } - - .lg\:bg-bottom { - background-position: bottom; - } - - .lg\:bg-center { - background-position: center; - } - - .lg\:bg-left { - background-position: left; - } - - .lg\:bg-left-bottom { - background-position: left bottom; - } - - .lg\:bg-left-top { - background-position: left top; - } - - .lg\:bg-right { - background-position: right; - } - - .lg\:bg-right-bottom { - background-position: right bottom; - } - - .lg\:bg-right-top { - background-position: right top; - } - - .lg\:bg-top { - background-position: top; - } - - .lg\:bg-repeat { - background-repeat: repeat; - } - - .lg\:bg-no-repeat { - background-repeat: no-repeat; - } - - .lg\:bg-repeat-x { - background-repeat: repeat-x; - } - - .lg\:bg-repeat-y { - background-repeat: repeat-y; - } - - .lg\:bg-repeat-round { - background-repeat: round; - } - - .lg\:bg-repeat-space { - background-repeat: space; - } - - .lg\:bg-auto { - background-size: auto; - } - - .lg\:bg-cover { - background-size: cover; - } - - .lg\:bg-contain { - background-size: contain; - } - - .lg\:border-collapse { - border-collapse: collapse; - } - - .lg\:border-separate { - border-collapse: separate; - } - - .lg\:border-transparent { - border-color: transparent; - } - - .lg\:border-black { - border-color: #000; - } - - .lg\:border-grey-darkest { - border-color: #3d4852; - } - - .lg\:border-grey-darker { - border-color: #606f7b; - } - - .lg\:border-grey-dark { - border-color: #8795a1; - } - - .lg\:border-grey { - border-color: #b8c2cc; - } - - .lg\:border-grey-light { - border-color: #dae1e7; - } - - .lg\:border-grey-lighter { - border-color: #f1f5f8; - } - - .lg\:border-grey-lightest { - border-color: #f8fafc; - } - - .lg\:border-white { - border-color: #fff; - } - - .lg\:border-snipline-green-darker { - border-color: #333510; - } - - .lg\:border-snipline-green-dark { - border-color: #94AB0D; - } - - .lg\:border-snipline-lime-light { - border-color: #e1f471; - } - - .lg\:border-snipline-lime { - border-color: #CDED15; - } - - .lg\:border-snipline-lime-dark { - border-color: #94AB0D; - } - - .lg\:border-snipline-green { - border-color: #15ED78; - } - - .lg\:border-snipline-yellow { - border-color: #EDE415; - } - - .lg\:border-snipline-grey-dark { - border-color: rgba(51, 53, 16, 0.8); - } - - .lg\:border-snipline-grey { - border-color: #EBF1EF; - } - - .lg\:border-snipline-grey-light { - border-color: #DAE1E7; - } - - .lg\:border-snipline-grey-lighter { - border-color: #E0E8EE; - } - - .lg\:border-success-100 { - border-color: #ECFBD7; - } - - .lg\:border-success-200 { - border-color: #D5F8B0; - } - - .lg\:border-success-300 { - border-color: #B3EC84; - } - - .lg\:border-success-400 { - border-color: #90D962; - } - - .lg\:border-success-500 { - border-color: #61C134; - } - - .lg\:border-success-600 { - border-color: #46A526; - } - - .lg\:border-success-700 { - border-color: #2F8A1A; - } - - .lg\:border-success-800 { - border-color: #1C6F10; - } - - .lg\:border-success-900 { - border-color: #0E5C09; - } - - .lg\:border-info-100 { - border-color: #DFF6FE; - } - - .lg\:border-info-200 { - border-color: #BFE9FE; - } - - .lg\:border-info-300 { - border-color: #9FD9FE; - } - - .lg\:border-info-400 { - border-color: #86CAFD; - } - - .lg\:border-info-500 { - border-color: #5FB0FC; - } - - .lg\:border-info-600 { - border-color: #4589D8; - } - - .lg\:border-info-700 { - border-color: #2F67B5; - } - - .lg\:border-info-800 { - border-color: #1E4892; - } - - .lg\:border-info-900 { - border-color: #123278; - } - - .lg\:border-danger-100 { - border-color: #FFEAD7; - } - - .lg\:border-danger-200 { - border-color: #FFD0B0; - } - - .lg\:border-danger-300 { - border-color: #FFB088; - } - - .lg\:border-danger-400 { - border-color: #FF916B; - } - - .lg\:border-danger-500 { - border-color: #FF5E3A; - } - - .lg\:border-danger-600 { - border-color: #DB3D2A; - } - - .lg\:border-danger-700 { - border-color: #B7221D; - } - - .lg\:border-danger-800 { - border-color: #931218; - } - - .lg\:border-danger-900 { - border-color: #7A0B18; - } - - .lg\:hover\:border-transparent:hover { - border-color: transparent; - } - - .lg\:hover\:border-black:hover { - border-color: #000; - } - - .lg\:hover\:border-grey-darkest:hover { - border-color: #3d4852; - } - - .lg\:hover\:border-grey-darker:hover { - border-color: #606f7b; - } - - .lg\:hover\:border-grey-dark:hover { - border-color: #8795a1; - } - - .lg\:hover\:border-grey:hover { - border-color: #b8c2cc; - } - - .lg\:hover\:border-grey-light:hover { - border-color: #dae1e7; - } - - .lg\:hover\:border-grey-lighter:hover { - border-color: #f1f5f8; - } - - .lg\:hover\:border-grey-lightest:hover { - border-color: #f8fafc; - } - - .lg\:hover\:border-white:hover { - border-color: #fff; - } - - .lg\:hover\:border-snipline-green-darker:hover { - border-color: #333510; - } - - .lg\:hover\:border-snipline-green-dark:hover { - border-color: #94AB0D; - } - - .lg\:hover\:border-snipline-lime-light:hover { - border-color: #e1f471; - } - - .lg\:hover\:border-snipline-lime:hover { - border-color: #CDED15; - } - - .lg\:hover\:border-snipline-lime-dark:hover { - border-color: #94AB0D; - } - - .lg\:hover\:border-snipline-green:hover { - border-color: #15ED78; - } - - .lg\:hover\:border-snipline-yellow:hover { - border-color: #EDE415; - } - - .lg\:hover\:border-snipline-grey-dark:hover { - border-color: rgba(51, 53, 16, 0.8); - } - - .lg\:hover\:border-snipline-grey:hover { - border-color: #EBF1EF; - } - - .lg\:hover\:border-snipline-grey-light:hover { - border-color: #DAE1E7; - } - - .lg\:hover\:border-snipline-grey-lighter:hover { - border-color: #E0E8EE; - } - - .lg\:hover\:border-success-100:hover { - border-color: #ECFBD7; - } - - .lg\:hover\:border-success-200:hover { - border-color: #D5F8B0; - } - - .lg\:hover\:border-success-300:hover { - border-color: #B3EC84; - } - - .lg\:hover\:border-success-400:hover { - border-color: #90D962; - } - - .lg\:hover\:border-success-500:hover { - border-color: #61C134; - } - - .lg\:hover\:border-success-600:hover { - border-color: #46A526; - } - - .lg\:hover\:border-success-700:hover { - border-color: #2F8A1A; - } - - .lg\:hover\:border-success-800:hover { - border-color: #1C6F10; - } - - .lg\:hover\:border-success-900:hover { - border-color: #0E5C09; - } - - .lg\:hover\:border-info-100:hover { - border-color: #DFF6FE; - } - - .lg\:hover\:border-info-200:hover { - border-color: #BFE9FE; - } - - .lg\:hover\:border-info-300:hover { - border-color: #9FD9FE; - } - - .lg\:hover\:border-info-400:hover { - border-color: #86CAFD; - } - - .lg\:hover\:border-info-500:hover { - border-color: #5FB0FC; - } - - .lg\:hover\:border-info-600:hover { - border-color: #4589D8; - } - - .lg\:hover\:border-info-700:hover { - border-color: #2F67B5; - } - - .lg\:hover\:border-info-800:hover { - border-color: #1E4892; - } - - .lg\:hover\:border-info-900:hover { - border-color: #123278; - } - - .lg\:hover\:border-danger-100:hover { - border-color: #FFEAD7; - } - - .lg\:hover\:border-danger-200:hover { - border-color: #FFD0B0; - } - - .lg\:hover\:border-danger-300:hover { - border-color: #FFB088; - } - - .lg\:hover\:border-danger-400:hover { - border-color: #FF916B; - } - - .lg\:hover\:border-danger-500:hover { - border-color: #FF5E3A; - } - - .lg\:hover\:border-danger-600:hover { - border-color: #DB3D2A; - } - - .lg\:hover\:border-danger-700:hover { - border-color: #B7221D; - } - - .lg\:hover\:border-danger-800:hover { - border-color: #931218; - } - - .lg\:hover\:border-danger-900:hover { - border-color: #7A0B18; - } - - .lg\:focus\:border-transparent:focus { - border-color: transparent; - } - - .lg\:focus\:border-black:focus { - border-color: #000; - } - - .lg\:focus\:border-grey-darkest:focus { - border-color: #3d4852; - } - - .lg\:focus\:border-grey-darker:focus { - border-color: #606f7b; - } - - .lg\:focus\:border-grey-dark:focus { - border-color: #8795a1; - } - - .lg\:focus\:border-grey:focus { - border-color: #b8c2cc; - } - - .lg\:focus\:border-grey-light:focus { - border-color: #dae1e7; - } - - .lg\:focus\:border-grey-lighter:focus { - border-color: #f1f5f8; - } - - .lg\:focus\:border-grey-lightest:focus { - border-color: #f8fafc; - } - - .lg\:focus\:border-white:focus { - border-color: #fff; - } - - .lg\:focus\:border-snipline-green-darker:focus { - border-color: #333510; - } - - .lg\:focus\:border-snipline-green-dark:focus { - border-color: #94AB0D; - } - - .lg\:focus\:border-snipline-lime-light:focus { - border-color: #e1f471; - } - - .lg\:focus\:border-snipline-lime:focus { - border-color: #CDED15; - } - - .lg\:focus\:border-snipline-lime-dark:focus { - border-color: #94AB0D; - } - - .lg\:focus\:border-snipline-green:focus { - border-color: #15ED78; - } - - .lg\:focus\:border-snipline-yellow:focus { - border-color: #EDE415; - } - - .lg\:focus\:border-snipline-grey-dark:focus { - border-color: rgba(51, 53, 16, 0.8); - } - - .lg\:focus\:border-snipline-grey:focus { - border-color: #EBF1EF; - } - - .lg\:focus\:border-snipline-grey-light:focus { - border-color: #DAE1E7; - } - - .lg\:focus\:border-snipline-grey-lighter:focus { - border-color: #E0E8EE; - } - - .lg\:focus\:border-success-100:focus { - border-color: #ECFBD7; - } - - .lg\:focus\:border-success-200:focus { - border-color: #D5F8B0; - } - - .lg\:focus\:border-success-300:focus { - border-color: #B3EC84; - } - - .lg\:focus\:border-success-400:focus { - border-color: #90D962; - } - - .lg\:focus\:border-success-500:focus { - border-color: #61C134; - } - - .lg\:focus\:border-success-600:focus { - border-color: #46A526; - } - - .lg\:focus\:border-success-700:focus { - border-color: #2F8A1A; - } - - .lg\:focus\:border-success-800:focus { - border-color: #1C6F10; - } - - .lg\:focus\:border-success-900:focus { - border-color: #0E5C09; - } - - .lg\:focus\:border-info-100:focus { - border-color: #DFF6FE; - } - - .lg\:focus\:border-info-200:focus { - border-color: #BFE9FE; - } - - .lg\:focus\:border-info-300:focus { - border-color: #9FD9FE; - } - - .lg\:focus\:border-info-400:focus { - border-color: #86CAFD; - } - - .lg\:focus\:border-info-500:focus { - border-color: #5FB0FC; - } - - .lg\:focus\:border-info-600:focus { - border-color: #4589D8; - } - - .lg\:focus\:border-info-700:focus { - border-color: #2F67B5; - } - - .lg\:focus\:border-info-800:focus { - border-color: #1E4892; - } - - .lg\:focus\:border-info-900:focus { - border-color: #123278; - } - - .lg\:focus\:border-danger-100:focus { - border-color: #FFEAD7; - } - - .lg\:focus\:border-danger-200:focus { - border-color: #FFD0B0; - } - - .lg\:focus\:border-danger-300:focus { - border-color: #FFB088; - } - - .lg\:focus\:border-danger-400:focus { - border-color: #FF916B; - } - - .lg\:focus\:border-danger-500:focus { - border-color: #FF5E3A; - } - - .lg\:focus\:border-danger-600:focus { - border-color: #DB3D2A; - } - - .lg\:focus\:border-danger-700:focus { - border-color: #B7221D; - } - - .lg\:focus\:border-danger-800:focus { - border-color: #931218; - } - - .lg\:focus\:border-danger-900:focus { - border-color: #7A0B18; - } - - .lg\:rounded-none { - border-radius: 0; - } - - .lg\:rounded-sm { - border-radius: 0.125rem; - } - - .lg\:rounded { - border-radius: 0.25rem; - } - - .lg\:rounded-lg { - border-radius: 0.5rem; - } - - .lg\:rounded-full { - border-radius: 9999px; - } - - .lg\:rounded-t-none { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - .lg\:rounded-r-none { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - .lg\:rounded-b-none { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .lg\:rounded-l-none { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - .lg\:rounded-t-sm { - border-top-left-radius: 0.125rem; - border-top-right-radius: 0.125rem; - } - - .lg\:rounded-r-sm { - border-top-right-radius: 0.125rem; - border-bottom-right-radius: 0.125rem; - } - - .lg\:rounded-b-sm { - border-bottom-right-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .lg\:rounded-l-sm { - border-top-left-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .lg\:rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - - .lg\:rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - } - - .lg\:rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .lg\:rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .lg\:rounded-t-lg { - border-top-left-radius: 0.5rem; - border-top-right-radius: 0.5rem; - } - - .lg\:rounded-r-lg { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; - } - - .lg\:rounded-b-lg { - border-bottom-right-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .lg\:rounded-l-lg { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .lg\:rounded-t-full { - border-top-left-radius: 9999px; - border-top-right-radius: 9999px; - } - - .lg\:rounded-r-full { - border-top-right-radius: 9999px; - border-bottom-right-radius: 9999px; - } - - .lg\:rounded-b-full { - border-bottom-right-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .lg\:rounded-l-full { - border-top-left-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .lg\:rounded-tl-none { - border-top-left-radius: 0; - } - - .lg\:rounded-tr-none { - border-top-right-radius: 0; - } - - .lg\:rounded-br-none { - border-bottom-right-radius: 0; - } - - .lg\:rounded-bl-none { - border-bottom-left-radius: 0; - } - - .lg\:rounded-tl-sm { - border-top-left-radius: 0.125rem; - } - - .lg\:rounded-tr-sm { - border-top-right-radius: 0.125rem; - } - - .lg\:rounded-br-sm { - border-bottom-right-radius: 0.125rem; - } - - .lg\:rounded-bl-sm { - border-bottom-left-radius: 0.125rem; - } - - .lg\:rounded-tl { - border-top-left-radius: 0.25rem; - } - - .lg\:rounded-tr { - border-top-right-radius: 0.25rem; - } - - .lg\:rounded-br { - border-bottom-right-radius: 0.25rem; - } - - .lg\:rounded-bl { - border-bottom-left-radius: 0.25rem; - } - - .lg\:rounded-tl-lg { - border-top-left-radius: 0.5rem; - } - - .lg\:rounded-tr-lg { - border-top-right-radius: 0.5rem; - } - - .lg\:rounded-br-lg { - border-bottom-right-radius: 0.5rem; - } - - .lg\:rounded-bl-lg { - border-bottom-left-radius: 0.5rem; - } - - .lg\:rounded-tl-full { - border-top-left-radius: 9999px; - } - - .lg\:rounded-tr-full { - border-top-right-radius: 9999px; - } - - .lg\:rounded-br-full { - border-bottom-right-radius: 9999px; - } - - .lg\:rounded-bl-full { - border-bottom-left-radius: 9999px; - } - - .lg\:border-solid { - border-style: solid; - } - - .lg\:border-dashed { - border-style: dashed; - } - - .lg\:border-dotted { - border-style: dotted; - } - - .lg\:border-none { - border-style: none; - } - - .lg\:border-0 { - border-width: 0; - } - - .lg\:border-2 { - border-width: 2px; - } - - .lg\:border-4 { - border-width: 4px; - } - - .lg\:border-8 { - border-width: 8px; - } - - .lg\:border { - border-width: 1px; - } - - .lg\:border-t-0 { - border-top-width: 0; - } - - .lg\:border-r-0 { - border-right-width: 0; - } - - .lg\:border-b-0 { - border-bottom-width: 0; - } - - .lg\:border-l-0 { - border-left-width: 0; - } - - .lg\:border-t-2 { - border-top-width: 2px; - } - - .lg\:border-r-2 { - border-right-width: 2px; - } - - .lg\:border-b-2 { - border-bottom-width: 2px; - } - - .lg\:border-l-2 { - border-left-width: 2px; - } - - .lg\:border-t-4 { - border-top-width: 4px; - } - - .lg\:border-r-4 { - border-right-width: 4px; - } - - .lg\:border-b-4 { - border-bottom-width: 4px; - } - - .lg\:border-l-4 { - border-left-width: 4px; - } - - .lg\:border-t-8 { - border-top-width: 8px; - } - - .lg\:border-r-8 { - border-right-width: 8px; - } - - .lg\:border-b-8 { - border-bottom-width: 8px; - } - - .lg\:border-l-8 { - border-left-width: 8px; - } - - .lg\:border-t { - border-top-width: 1px; - } - - .lg\:border-r { - border-right-width: 1px; - } - - .lg\:border-b { - border-bottom-width: 1px; - } - - .lg\:border-l { - border-left-width: 1px; - } - - .lg\:cursor-auto { - cursor: auto; - } - - .lg\:cursor-default { - cursor: default; - } - - .lg\:cursor-pointer { - cursor: pointer; - } - - .lg\:cursor-wait { - cursor: wait; - } - - .lg\:cursor-text { - cursor: text; - } - - .lg\:cursor-move { - cursor: move; - } - - .lg\:cursor-not-allowed { - cursor: not-allowed; - } - - .lg\:block { - display: block; - } - - .lg\:inline-block { - display: inline-block; - } - - .lg\:inline { - display: inline; - } - - .lg\:flex { - display: flex; - } - - .lg\:inline-flex { - display: inline-flex; - } - - .lg\:table { - display: table; - } - - .lg\:table-row { - display: table-row; - } - - .lg\:table-cell { - display: table-cell; - } - - .lg\:hidden { - display: none; - } - - .lg\:flex-row { - flex-direction: row; - } - - .lg\:flex-row-reverse { - flex-direction: row-reverse; - } - - .lg\:flex-col { - flex-direction: column; - } - - .lg\:flex-col-reverse { - flex-direction: column-reverse; - } - - .lg\:flex-wrap { - flex-wrap: wrap; - } - - .lg\:flex-wrap-reverse { - flex-wrap: wrap-reverse; - } - - .lg\:flex-no-wrap { - flex-wrap: nowrap; - } - - .lg\:items-start { - align-items: flex-start; - } - - .lg\:items-end { - align-items: flex-end; - } - - .lg\:items-center { - align-items: center; - } - - .lg\:items-baseline { - align-items: baseline; - } - - .lg\:items-stretch { - align-items: stretch; - } - - .lg\:self-auto { - align-self: auto; - } - - .lg\:self-start { - align-self: flex-start; - } - - .lg\:self-end { - align-self: flex-end; - } - - .lg\:self-center { - align-self: center; - } - - .lg\:self-stretch { - align-self: stretch; - } - - .lg\:justify-start { - justify-content: flex-start; - } - - .lg\:justify-end { - justify-content: flex-end; - } - - .lg\:justify-center { - justify-content: center; - } - - .lg\:justify-between { - justify-content: space-between; - } - - .lg\:justify-around { - justify-content: space-around; - } - - .lg\:content-center { - align-content: center; - } - - .lg\:content-start { - align-content: flex-start; - } - - .lg\:content-end { - align-content: flex-end; - } - - .lg\:content-between { - align-content: space-between; - } - - .lg\:content-around { - align-content: space-around; - } - - .lg\:flex-1 { - flex: 1 1 0%; - } - - .lg\:flex-auto { - flex: 1 1 auto; - } - - .lg\:flex-initial { - flex: 0 1 auto; - } - - .lg\:flex-none { - flex: none; - } - - .lg\:flex-grow-0 { - flex-grow: 0; - } - - .lg\:flex-grow { - flex-grow: 1; - } - - .lg\:flex-shrink-0 { - flex-shrink: 0; - } - - .lg\:flex-shrink { - flex-shrink: 1; - } - - .lg\:order-1 { - order: 1; - } - - .lg\:order-2 { - order: 2; - } - - .lg\:order-3 { - order: 3; - } - - .lg\:order-4 { - order: 4; - } - - .lg\:order-5 { - order: 5; - } - - .lg\:order-6 { - order: 6; - } - - .lg\:order-7 { - order: 7; - } - - .lg\:order-8 { - order: 8; - } - - .lg\:order-9 { - order: 9; - } - - .lg\:order-10 { - order: 10; - } - - .lg\:order-11 { - order: 11; - } - - .lg\:order-12 { - order: 12; - } - - .lg\:order-first { - order: -9999; - } - - .lg\:order-last { - order: 9999; - } - - .lg\:order-none { - order: 0; - } - - .lg\:float-right { - float: right; - } - - .lg\:float-left { - float: left; - } - - .lg\:float-none { - float: none; - } - - .lg\:clearfix:after { - content: ""; - display: table; - clear: both; - } - - .lg\:font-sans { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } - - .lg\:font-serif { - font-family: Georgia, Cambria, "Times New Roman", Times, serif; - } - - .lg\:font-mono { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - } - - .lg\:font-hairline { - font-weight: 100; - } - - .lg\:font-thin { - font-weight: 200; - } - - .lg\:font-light { - font-weight: 300; - } - - .lg\:font-normal { - font-weight: 400; - } - - .lg\:font-medium { - font-weight: 500; - } - - .lg\:font-semibold { - font-weight: 600; - } - - .lg\:font-bold { - font-weight: 700; - } - - .lg\:font-extrabold { - font-weight: 800; - } - - .lg\:font-black { - font-weight: 900; - } - - .lg\:hover\:font-hairline:hover { - font-weight: 100; - } - - .lg\:hover\:font-thin:hover { - font-weight: 200; - } - - .lg\:hover\:font-light:hover { - font-weight: 300; - } - - .lg\:hover\:font-normal:hover { - font-weight: 400; - } - - .lg\:hover\:font-medium:hover { - font-weight: 500; - } - - .lg\:hover\:font-semibold:hover { - font-weight: 600; - } - - .lg\:hover\:font-bold:hover { - font-weight: 700; - } - - .lg\:hover\:font-extrabold:hover { - font-weight: 800; - } - - .lg\:hover\:font-black:hover { - font-weight: 900; - } - - .lg\:focus\:font-hairline:focus { - font-weight: 100; - } - - .lg\:focus\:font-thin:focus { - font-weight: 200; - } - - .lg\:focus\:font-light:focus { - font-weight: 300; - } - - .lg\:focus\:font-normal:focus { - font-weight: 400; - } - - .lg\:focus\:font-medium:focus { - font-weight: 500; - } - - .lg\:focus\:font-semibold:focus { - font-weight: 600; - } - - .lg\:focus\:font-bold:focus { - font-weight: 700; - } - - .lg\:focus\:font-extrabold:focus { - font-weight: 800; - } - - .lg\:focus\:font-black:focus { - font-weight: 900; - } - - .lg\:h-0 { - height: 0; - } - - .lg\:h-1 { - height: 0.25rem; - } - - .lg\:h-2 { - height: 0.5rem; - } - - .lg\:h-3 { - height: 0.75rem; - } - - .lg\:h-4 { - height: 1rem; - } - - .lg\:h-5 { - height: 1.25rem; - } - - .lg\:h-6 { - height: 1.5rem; - } - - .lg\:h-8 { - height: 2rem; - } - - .lg\:h-10 { - height: 2.5rem; - } - - .lg\:h-12 { - height: 3rem; - } - - .lg\:h-16 { - height: 4rem; - } - - .lg\:h-20 { - height: 5rem; - } - - .lg\:h-24 { - height: 6rem; - } - - .lg\:h-32 { - height: 8rem; - } - - .lg\:h-40 { - height: 10rem; - } - - .lg\:h-48 { - height: 12rem; - } - - .lg\:h-56 { - height: 14rem; - } - - .lg\:h-64 { - height: 16rem; - } - - .lg\:h-auto { - height: auto; - } - - .lg\:h-px { - height: 1px; - } - - .lg\:h-full { - height: 100%; - } - - .lg\:h-screen { - height: 100vh; - } - - .lg\:leading-none { - line-height: 1; - } - - .lg\:leading-tight { - line-height: 1.25; - } - - .lg\:leading-snug { - line-height: 1.375; - } - - .lg\:leading-normal { - line-height: 1.5; - } - - .lg\:leading-relaxed { - line-height: 1.625; - } - - .lg\:leading-loose { - line-height: 2; - } - - .lg\:list-inside { - list-style-position: inside; - } - - .lg\:list-outside { - list-style-position: outside; - } - - .lg\:list-none { - list-style-type: none; - } - - .lg\:list-disc { - list-style-type: disc; - } - - .lg\:list-decimal { - list-style-type: decimal; - } - - .lg\:m-0 { - margin: 0; - } - - .lg\:m-1 { - margin: 0.25rem; - } - - .lg\:m-2 { - margin: 0.5rem; - } - - .lg\:m-3 { - margin: 0.75rem; - } - - .lg\:m-4 { - margin: 1rem; - } - - .lg\:m-5 { - margin: 1.25rem; - } - - .lg\:m-6 { - margin: 1.5rem; - } - - .lg\:m-8 { - margin: 2rem; - } - - .lg\:m-10 { - margin: 2.5rem; - } - - .lg\:m-12 { - margin: 3rem; - } - - .lg\:m-16 { - margin: 4rem; - } - - .lg\:m-20 { - margin: 5rem; - } - - .lg\:m-24 { - margin: 6rem; - } - - .lg\:m-32 { - margin: 8rem; - } - - .lg\:m-40 { - margin: 10rem; - } - - .lg\:m-48 { - margin: 12rem; - } - - .lg\:m-56 { - margin: 14rem; - } - - .lg\:m-64 { - margin: 16rem; - } - - .lg\:m-auto { - margin: auto; - } - - .lg\:m-px { - margin: 1px; - } - - .lg\:-m-1 { - margin: -0.25rem; - } - - .lg\:-m-2 { - margin: -0.5rem; - } - - .lg\:-m-3 { - margin: -0.75rem; - } - - .lg\:-m-4 { - margin: -1rem; - } - - .lg\:-m-5 { - margin: -1.25rem; - } - - .lg\:-m-6 { - margin: -1.5rem; - } - - .lg\:-m-8 { - margin: -2rem; - } - - .lg\:-m-10 { - margin: -2.5rem; - } - - .lg\:-m-12 { - margin: -3rem; - } - - .lg\:-m-16 { - margin: -4rem; - } - - .lg\:-m-20 { - margin: -5rem; - } - - .lg\:-m-24 { - margin: -6rem; - } - - .lg\:-m-32 { - margin: -8rem; - } - - .lg\:-m-40 { - margin: -10rem; - } - - .lg\:-m-48 { - margin: -12rem; - } - - .lg\:-m-56 { - margin: -14rem; - } - - .lg\:-m-64 { - margin: -16rem; - } - - .lg\:-m-px { - margin: -1px; - } - - .lg\:my-0 { - margin-top: 0; - margin-bottom: 0; - } - - .lg\:mx-0 { - margin-left: 0; - margin-right: 0; - } - - .lg\:my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; - } - - .lg\:mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; - } - - .lg\:my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; - } - - .lg\:mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - - .lg\:my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; - } - - .lg\:mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; - } - - .lg\:my-4 { - margin-top: 1rem; - margin-bottom: 1rem; - } - - .lg\:mx-4 { - margin-left: 1rem; - margin-right: 1rem; - } - - .lg\:my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; - } - - .lg\:mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; - } - - .lg\:my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; - } - - .lg\:mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - - .lg\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .lg\:mx-8 { - margin-left: 2rem; - margin-right: 2rem; - } - - .lg\:my-10 { - margin-top: 2.5rem; - margin-bottom: 2.5rem; - } - - .lg\:mx-10 { - margin-left: 2.5rem; - margin-right: 2.5rem; - } - - .lg\:my-12 { - margin-top: 3rem; - margin-bottom: 3rem; - } - - .lg\:mx-12 { - margin-left: 3rem; - margin-right: 3rem; - } - - .lg\:my-16 { - margin-top: 4rem; - margin-bottom: 4rem; - } - - .lg\:mx-16 { - margin-left: 4rem; - margin-right: 4rem; - } - - .lg\:my-20 { - margin-top: 5rem; - margin-bottom: 5rem; - } - - .lg\:mx-20 { - margin-left: 5rem; - margin-right: 5rem; - } - - .lg\:my-24 { - margin-top: 6rem; - margin-bottom: 6rem; - } - - .lg\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - - .lg\:my-32 { - margin-top: 8rem; - margin-bottom: 8rem; - } - - .lg\:mx-32 { - margin-left: 8rem; - margin-right: 8rem; - } - - .lg\:my-40 { - margin-top: 10rem; - margin-bottom: 10rem; - } - - .lg\:mx-40 { - margin-left: 10rem; - margin-right: 10rem; - } - - .lg\:my-48 { - margin-top: 12rem; - margin-bottom: 12rem; - } - - .lg\:mx-48 { - margin-left: 12rem; - margin-right: 12rem; - } - - .lg\:my-56 { - margin-top: 14rem; - margin-bottom: 14rem; - } - - .lg\:mx-56 { - margin-left: 14rem; - margin-right: 14rem; - } - - .lg\:my-64 { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .lg\:mx-64 { - margin-left: 16rem; - margin-right: 16rem; - } - - .lg\:my-auto { - margin-top: auto; - margin-bottom: auto; - } - - .lg\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .lg\:my-px { - margin-top: 1px; - margin-bottom: 1px; - } - - .lg\:mx-px { - margin-left: 1px; - margin-right: 1px; - } - - .lg\:-my-1 { - margin-top: -0.25rem; - margin-bottom: -0.25rem; - } - - .lg\:-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; - } - - .lg\:-my-2 { - margin-top: -0.5rem; - margin-bottom: -0.5rem; - } - - .lg\:-mx-2 { - margin-left: -0.5rem; - margin-right: -0.5rem; - } - - .lg\:-my-3 { - margin-top: -0.75rem; - margin-bottom: -0.75rem; - } - - .lg\:-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; - } - - .lg\:-my-4 { - margin-top: -1rem; - margin-bottom: -1rem; - } - - .lg\:-mx-4 { - margin-left: -1rem; - margin-right: -1rem; - } - - .lg\:-my-5 { - margin-top: -1.25rem; - margin-bottom: -1.25rem; - } - - .lg\:-mx-5 { - margin-left: -1.25rem; - margin-right: -1.25rem; - } - - .lg\:-my-6 { - margin-top: -1.5rem; - margin-bottom: -1.5rem; - } - - .lg\:-mx-6 { - margin-left: -1.5rem; - margin-right: -1.5rem; - } - - .lg\:-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; - } - - .lg\:-mx-8 { - margin-left: -2rem; - margin-right: -2rem; - } - - .lg\:-my-10 { - margin-top: -2.5rem; - margin-bottom: -2.5rem; - } - - .lg\:-mx-10 { - margin-left: -2.5rem; - margin-right: -2.5rem; - } - - .lg\:-my-12 { - margin-top: -3rem; - margin-bottom: -3rem; - } - - .lg\:-mx-12 { - margin-left: -3rem; - margin-right: -3rem; - } - - .lg\:-my-16 { - margin-top: -4rem; - margin-bottom: -4rem; - } - - .lg\:-mx-16 { - margin-left: -4rem; - margin-right: -4rem; - } - - .lg\:-my-20 { - margin-top: -5rem; - margin-bottom: -5rem; - } - - .lg\:-mx-20 { - margin-left: -5rem; - margin-right: -5rem; - } - - .lg\:-my-24 { - margin-top: -6rem; - margin-bottom: -6rem; - } - - .lg\:-mx-24 { - margin-left: -6rem; - margin-right: -6rem; - } - - .lg\:-my-32 { - margin-top: -8rem; - margin-bottom: -8rem; - } - - .lg\:-mx-32 { - margin-left: -8rem; - margin-right: -8rem; - } - - .lg\:-my-40 { - margin-top: -10rem; - margin-bottom: -10rem; - } - - .lg\:-mx-40 { - margin-left: -10rem; - margin-right: -10rem; - } - - .lg\:-my-48 { - margin-top: -12rem; - margin-bottom: -12rem; - } - - .lg\:-mx-48 { - margin-left: -12rem; - margin-right: -12rem; - } - - .lg\:-my-56 { - margin-top: -14rem; - margin-bottom: -14rem; - } - - .lg\:-mx-56 { - margin-left: -14rem; - margin-right: -14rem; - } - - .lg\:-my-64 { - margin-top: -16rem; - margin-bottom: -16rem; - } - - .lg\:-mx-64 { - margin-left: -16rem; - margin-right: -16rem; - } - - .lg\:-my-px { - margin-top: -1px; - margin-bottom: -1px; - } - - .lg\:-mx-px { - margin-left: -1px; - margin-right: -1px; - } - - .lg\:mt-0 { - margin-top: 0; - } - - .lg\:mr-0 { - margin-right: 0; - } - - .lg\:mb-0 { - margin-bottom: 0; - } - - .lg\:ml-0 { - margin-left: 0; - } - - .lg\:mt-1 { - margin-top: 0.25rem; - } - - .lg\:mr-1 { - margin-right: 0.25rem; - } - - .lg\:mb-1 { - margin-bottom: 0.25rem; - } - - .lg\:ml-1 { - margin-left: 0.25rem; - } - - .lg\:mt-2 { - margin-top: 0.5rem; - } - - .lg\:mr-2 { - margin-right: 0.5rem; - } - - .lg\:mb-2 { - margin-bottom: 0.5rem; - } - - .lg\:ml-2 { - margin-left: 0.5rem; - } - - .lg\:mt-3 { - margin-top: 0.75rem; - } - - .lg\:mr-3 { - margin-right: 0.75rem; - } - - .lg\:mb-3 { - margin-bottom: 0.75rem; - } - - .lg\:ml-3 { - margin-left: 0.75rem; - } - - .lg\:mt-4 { - margin-top: 1rem; - } - - .lg\:mr-4 { - margin-right: 1rem; - } - - .lg\:mb-4 { - margin-bottom: 1rem; - } - - .lg\:ml-4 { - margin-left: 1rem; - } - - .lg\:mt-5 { - margin-top: 1.25rem; - } - - .lg\:mr-5 { - margin-right: 1.25rem; - } - - .lg\:mb-5 { - margin-bottom: 1.25rem; - } - - .lg\:ml-5 { - margin-left: 1.25rem; - } - - .lg\:mt-6 { - margin-top: 1.5rem; - } - - .lg\:mr-6 { - margin-right: 1.5rem; - } - - .lg\:mb-6 { - margin-bottom: 1.5rem; - } - - .lg\:ml-6 { - margin-left: 1.5rem; - } - - .lg\:mt-8 { - margin-top: 2rem; - } - - .lg\:mr-8 { - margin-right: 2rem; - } - - .lg\:mb-8 { - margin-bottom: 2rem; - } - - .lg\:ml-8 { - margin-left: 2rem; - } - - .lg\:mt-10 { - margin-top: 2.5rem; - } - - .lg\:mr-10 { - margin-right: 2.5rem; - } - - .lg\:mb-10 { - margin-bottom: 2.5rem; - } - - .lg\:ml-10 { - margin-left: 2.5rem; - } - - .lg\:mt-12 { - margin-top: 3rem; - } - - .lg\:mr-12 { - margin-right: 3rem; - } - - .lg\:mb-12 { - margin-bottom: 3rem; - } - - .lg\:ml-12 { - margin-left: 3rem; - } - - .lg\:mt-16 { - margin-top: 4rem; - } - - .lg\:mr-16 { - margin-right: 4rem; - } - - .lg\:mb-16 { - margin-bottom: 4rem; - } - - .lg\:ml-16 { - margin-left: 4rem; - } - - .lg\:mt-20 { - margin-top: 5rem; - } - - .lg\:mr-20 { - margin-right: 5rem; - } - - .lg\:mb-20 { - margin-bottom: 5rem; - } - - .lg\:ml-20 { - margin-left: 5rem; - } - - .lg\:mt-24 { - margin-top: 6rem; - } - - .lg\:mr-24 { - margin-right: 6rem; - } - - .lg\:mb-24 { - margin-bottom: 6rem; - } - - .lg\:ml-24 { - margin-left: 6rem; - } - - .lg\:mt-32 { - margin-top: 8rem; - } - - .lg\:mr-32 { - margin-right: 8rem; - } - - .lg\:mb-32 { - margin-bottom: 8rem; - } - - .lg\:ml-32 { - margin-left: 8rem; - } - - .lg\:mt-40 { - margin-top: 10rem; - } - - .lg\:mr-40 { - margin-right: 10rem; - } - - .lg\:mb-40 { - margin-bottom: 10rem; - } - - .lg\:ml-40 { - margin-left: 10rem; - } - - .lg\:mt-48 { - margin-top: 12rem; - } - - .lg\:mr-48 { - margin-right: 12rem; - } - - .lg\:mb-48 { - margin-bottom: 12rem; - } - - .lg\:ml-48 { - margin-left: 12rem; - } - - .lg\:mt-56 { - margin-top: 14rem; - } - - .lg\:mr-56 { - margin-right: 14rem; - } - - .lg\:mb-56 { - margin-bottom: 14rem; - } - - .lg\:ml-56 { - margin-left: 14rem; - } - - .lg\:mt-64 { - margin-top: 16rem; - } - - .lg\:mr-64 { - margin-right: 16rem; - } - - .lg\:mb-64 { - margin-bottom: 16rem; - } - - .lg\:ml-64 { - margin-left: 16rem; - } - - .lg\:mt-auto { - margin-top: auto; - } - - .lg\:mr-auto { - margin-right: auto; - } - - .lg\:mb-auto { - margin-bottom: auto; - } - - .lg\:ml-auto { - margin-left: auto; - } - - .lg\:mt-px { - margin-top: 1px; - } - - .lg\:mr-px { - margin-right: 1px; - } - - .lg\:mb-px { - margin-bottom: 1px; - } - - .lg\:ml-px { - margin-left: 1px; - } - - .lg\:-mt-1 { - margin-top: -0.25rem; - } - - .lg\:-mr-1 { - margin-right: -0.25rem; - } - - .lg\:-mb-1 { - margin-bottom: -0.25rem; - } - - .lg\:-ml-1 { - margin-left: -0.25rem; - } - - .lg\:-mt-2 { - margin-top: -0.5rem; - } - - .lg\:-mr-2 { - margin-right: -0.5rem; - } - - .lg\:-mb-2 { - margin-bottom: -0.5rem; - } - - .lg\:-ml-2 { - margin-left: -0.5rem; - } - - .lg\:-mt-3 { - margin-top: -0.75rem; - } - - .lg\:-mr-3 { - margin-right: -0.75rem; - } - - .lg\:-mb-3 { - margin-bottom: -0.75rem; - } - - .lg\:-ml-3 { - margin-left: -0.75rem; - } - - .lg\:-mt-4 { - margin-top: -1rem; - } - - .lg\:-mr-4 { - margin-right: -1rem; - } - - .lg\:-mb-4 { - margin-bottom: -1rem; - } - - .lg\:-ml-4 { - margin-left: -1rem; - } - - .lg\:-mt-5 { - margin-top: -1.25rem; - } - - .lg\:-mr-5 { - margin-right: -1.25rem; - } - - .lg\:-mb-5 { - margin-bottom: -1.25rem; - } - - .lg\:-ml-5 { - margin-left: -1.25rem; - } - - .lg\:-mt-6 { - margin-top: -1.5rem; - } - - .lg\:-mr-6 { - margin-right: -1.5rem; - } - - .lg\:-mb-6 { - margin-bottom: -1.5rem; - } - - .lg\:-ml-6 { - margin-left: -1.5rem; - } - - .lg\:-mt-8 { - margin-top: -2rem; - } - - .lg\:-mr-8 { - margin-right: -2rem; - } - - .lg\:-mb-8 { - margin-bottom: -2rem; - } - - .lg\:-ml-8 { - margin-left: -2rem; - } - - .lg\:-mt-10 { - margin-top: -2.5rem; - } - - .lg\:-mr-10 { - margin-right: -2.5rem; - } - - .lg\:-mb-10 { - margin-bottom: -2.5rem; - } - - .lg\:-ml-10 { - margin-left: -2.5rem; - } - - .lg\:-mt-12 { - margin-top: -3rem; - } - - .lg\:-mr-12 { - margin-right: -3rem; - } - - .lg\:-mb-12 { - margin-bottom: -3rem; - } - - .lg\:-ml-12 { - margin-left: -3rem; - } - - .lg\:-mt-16 { - margin-top: -4rem; - } - - .lg\:-mr-16 { - margin-right: -4rem; - } - - .lg\:-mb-16 { - margin-bottom: -4rem; - } - - .lg\:-ml-16 { - margin-left: -4rem; - } - - .lg\:-mt-20 { - margin-top: -5rem; - } - - .lg\:-mr-20 { - margin-right: -5rem; - } - - .lg\:-mb-20 { - margin-bottom: -5rem; - } - - .lg\:-ml-20 { - margin-left: -5rem; - } - - .lg\:-mt-24 { - margin-top: -6rem; - } - - .lg\:-mr-24 { - margin-right: -6rem; - } - - .lg\:-mb-24 { - margin-bottom: -6rem; - } - - .lg\:-ml-24 { - margin-left: -6rem; - } - - .lg\:-mt-32 { - margin-top: -8rem; - } - - .lg\:-mr-32 { - margin-right: -8rem; - } - - .lg\:-mb-32 { - margin-bottom: -8rem; - } - - .lg\:-ml-32 { - margin-left: -8rem; - } - - .lg\:-mt-40 { - margin-top: -10rem; - } - - .lg\:-mr-40 { - margin-right: -10rem; - } - - .lg\:-mb-40 { - margin-bottom: -10rem; - } - - .lg\:-ml-40 { - margin-left: -10rem; - } - - .lg\:-mt-48 { - margin-top: -12rem; - } - - .lg\:-mr-48 { - margin-right: -12rem; - } - - .lg\:-mb-48 { - margin-bottom: -12rem; - } - - .lg\:-ml-48 { - margin-left: -12rem; - } - - .lg\:-mt-56 { - margin-top: -14rem; - } - - .lg\:-mr-56 { - margin-right: -14rem; - } - - .lg\:-mb-56 { - margin-bottom: -14rem; - } - - .lg\:-ml-56 { - margin-left: -14rem; - } - - .lg\:-mt-64 { - margin-top: -16rem; - } - - .lg\:-mr-64 { - margin-right: -16rem; - } - - .lg\:-mb-64 { - margin-bottom: -16rem; - } - - .lg\:-ml-64 { - margin-left: -16rem; - } - - .lg\:-mt-px { - margin-top: -1px; - } - - .lg\:-mr-px { - margin-right: -1px; - } - - .lg\:-mb-px { - margin-bottom: -1px; - } - - .lg\:-ml-px { - margin-left: -1px; - } - - .lg\:max-h-full { - max-height: 100%; - } - - .lg\:max-h-screen { - max-height: 100vh; - } - - .lg\:max-w-xs { - max-width: 20rem; - } - - .lg\:max-w-sm { - max-width: 24rem; - } - - .lg\:max-w-md { - max-width: 28rem; - } - - .lg\:max-w-lg { - max-width: 32rem; - } - - .lg\:max-w-xl { - max-width: 36rem; - } - - .lg\:max-w-2xl { - max-width: 42rem; - } - - .lg\:max-w-3xl { - max-width: 48rem; - } - - .lg\:max-w-4xl { - max-width: 56rem; - } - - .lg\:max-w-5xl { - max-width: 64rem; - } - - .lg\:max-w-6xl { - max-width: 72rem; - } - - .lg\:max-w-full { - max-width: 100%; - } - - .lg\:min-h-0 { - min-height: 0; - } - - .lg\:min-h-full { - min-height: 100%; - } - - .lg\:min-h-screen { - min-height: 100vh; - } - - .lg\:min-w-0 { - min-width: 0; - } - - .lg\:min-w-full { - min-width: 100%; - } - - .lg\:object-contain { - -o-object-fit: contain; - object-fit: contain; - } - - .lg\:object-cover { - -o-object-fit: cover; - object-fit: cover; - } - - .lg\:object-fill { - -o-object-fit: fill; - object-fit: fill; - } - - .lg\:object-none { - -o-object-fit: none; - object-fit: none; - } - - .lg\:object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; - } - - .lg\:object-bottom { - -o-object-position: bottom; - object-position: bottom; - } - - .lg\:object-center { - -o-object-position: center; - object-position: center; - } - - .lg\:object-left { - -o-object-position: left; - object-position: left; - } - - .lg\:object-left-bottom { - -o-object-position: left bottom; - object-position: left bottom; - } - - .lg\:object-left-top { - -o-object-position: left top; - object-position: left top; - } - - .lg\:object-right { - -o-object-position: right; - object-position: right; - } - - .lg\:object-right-bottom { - -o-object-position: right bottom; - object-position: right bottom; - } - - .lg\:object-right-top { - -o-object-position: right top; - object-position: right top; - } - - .lg\:object-top { - -o-object-position: top; - object-position: top; - } - - .lg\:opacity-0 { - opacity: 0; - } - - .lg\:opacity-25 { - opacity: 0.25; - } - - .lg\:opacity-50 { - opacity: 0.5; - } - - .lg\:opacity-75 { - opacity: 0.75; - } - - .lg\:opacity-100 { - opacity: 1; - } - - .lg\:outline-none { - outline: 0; - } - - .lg\:focus\:outline-none:focus { - outline: 0; - } - - .lg\:overflow-auto { - overflow: auto; - } - - .lg\:overflow-hidden { - overflow: hidden; - } - - .lg\:overflow-visible { - overflow: visible; - } - - .lg\:overflow-scroll { - overflow: scroll; - } - - .lg\:overflow-x-auto { - overflow-x: auto; - } - - .lg\:overflow-y-auto { - overflow-y: auto; - } - - .lg\:overflow-x-hidden { - overflow-x: hidden; - } - - .lg\:overflow-y-hidden { - overflow-y: hidden; - } - - .lg\:overflow-x-visible { - overflow-x: visible; - } - - .lg\:overflow-y-visible { - overflow-y: visible; - } - - .lg\:overflow-x-scroll { - overflow-x: scroll; - } - - .lg\:overflow-y-scroll { - overflow-y: scroll; - } - - .lg\:scrolling-touch { - -webkit-overflow-scrolling: touch; - } - - .lg\:scrolling-auto { - -webkit-overflow-scrolling: auto; - } - - .lg\:p-0 { - padding: 0; - } - - .lg\:p-1 { - padding: 0.25rem; - } - - .lg\:p-2 { - padding: 0.5rem; - } - - .lg\:p-3 { - padding: 0.75rem; - } - - .lg\:p-4 { - padding: 1rem; - } - - .lg\:p-5 { - padding: 1.25rem; - } - - .lg\:p-6 { - padding: 1.5rem; - } - - .lg\:p-8 { - padding: 2rem; - } - - .lg\:p-10 { - padding: 2.5rem; - } - - .lg\:p-12 { - padding: 3rem; - } - - .lg\:p-16 { - padding: 4rem; - } - - .lg\:p-20 { - padding: 5rem; - } - - .lg\:p-24 { - padding: 6rem; - } - - .lg\:p-32 { - padding: 8rem; - } - - .lg\:p-40 { - padding: 10rem; - } - - .lg\:p-48 { - padding: 12rem; - } - - .lg\:p-56 { - padding: 14rem; - } - - .lg\:p-64 { - padding: 16rem; - } - - .lg\:p-px { - padding: 1px; - } - - .lg\:py-0 { - padding-top: 0; - padding-bottom: 0; - } - - .lg\:px-0 { - padding-left: 0; - padding-right: 0; - } - - .lg\:py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .lg\:px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; - } - - .lg\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .lg\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - - .lg\:py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - } - - .lg\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .lg\:py-4 { - padding-top: 1rem; - padding-bottom: 1rem; - } - - .lg\:px-4 { - padding-left: 1rem; - padding-right: 1rem; - } - - .lg\:py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; - } - - .lg\:px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; - } - - .lg\:py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - - .lg\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .lg\:py-8 { - padding-top: 2rem; - padding-bottom: 2rem; - } - - .lg\:px-8 { - padding-left: 2rem; - padding-right: 2rem; - } - - .lg\:py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; - } - - .lg\:px-10 { - padding-left: 2.5rem; - padding-right: 2.5rem; - } - - .lg\:py-12 { - padding-top: 3rem; - padding-bottom: 3rem; - } - - .lg\:px-12 { - padding-left: 3rem; - padding-right: 3rem; - } - - .lg\:py-16 { - padding-top: 4rem; - padding-bottom: 4rem; - } - - .lg\:px-16 { - padding-left: 4rem; - padding-right: 4rem; - } - - .lg\:py-20 { - padding-top: 5rem; - padding-bottom: 5rem; - } - - .lg\:px-20 { - padding-left: 5rem; - padding-right: 5rem; - } - - .lg\:py-24 { - padding-top: 6rem; - padding-bottom: 6rem; - } - - .lg\:px-24 { - padding-left: 6rem; - padding-right: 6rem; - } - - .lg\:py-32 { - padding-top: 8rem; - padding-bottom: 8rem; - } - - .lg\:px-32 { - padding-left: 8rem; - padding-right: 8rem; - } - - .lg\:py-40 { - padding-top: 10rem; - padding-bottom: 10rem; - } - - .lg\:px-40 { - padding-left: 10rem; - padding-right: 10rem; - } - - .lg\:py-48 { - padding-top: 12rem; - padding-bottom: 12rem; - } - - .lg\:px-48 { - padding-left: 12rem; - padding-right: 12rem; - } - - .lg\:py-56 { - padding-top: 14rem; - padding-bottom: 14rem; - } - - .lg\:px-56 { - padding-left: 14rem; - padding-right: 14rem; - } - - .lg\:py-64 { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .lg\:px-64 { - padding-left: 16rem; - padding-right: 16rem; - } - - .lg\:py-px { - padding-top: 1px; - padding-bottom: 1px; - } - - .lg\:px-px { - padding-left: 1px; - padding-right: 1px; - } - - .lg\:pt-0 { - padding-top: 0; - } - - .lg\:pr-0 { - padding-right: 0; - } - - .lg\:pb-0 { - padding-bottom: 0; - } - - .lg\:pl-0 { - padding-left: 0; - } - - .lg\:pt-1 { - padding-top: 0.25rem; - } - - .lg\:pr-1 { - padding-right: 0.25rem; - } - - .lg\:pb-1 { - padding-bottom: 0.25rem; - } - - .lg\:pl-1 { - padding-left: 0.25rem; - } - - .lg\:pt-2 { - padding-top: 0.5rem; - } - - .lg\:pr-2 { - padding-right: 0.5rem; - } - - .lg\:pb-2 { - padding-bottom: 0.5rem; - } - - .lg\:pl-2 { - padding-left: 0.5rem; - } - - .lg\:pt-3 { - padding-top: 0.75rem; - } - - .lg\:pr-3 { - padding-right: 0.75rem; - } - - .lg\:pb-3 { - padding-bottom: 0.75rem; - } - - .lg\:pl-3 { - padding-left: 0.75rem; - } - - .lg\:pt-4 { - padding-top: 1rem; - } - - .lg\:pr-4 { - padding-right: 1rem; - } - - .lg\:pb-4 { - padding-bottom: 1rem; - } - - .lg\:pl-4 { - padding-left: 1rem; - } - - .lg\:pt-5 { - padding-top: 1.25rem; - } - - .lg\:pr-5 { - padding-right: 1.25rem; - } - - .lg\:pb-5 { - padding-bottom: 1.25rem; - } - - .lg\:pl-5 { - padding-left: 1.25rem; - } - - .lg\:pt-6 { - padding-top: 1.5rem; - } - - .lg\:pr-6 { - padding-right: 1.5rem; - } - - .lg\:pb-6 { - padding-bottom: 1.5rem; - } - - .lg\:pl-6 { - padding-left: 1.5rem; - } - - .lg\:pt-8 { - padding-top: 2rem; - } - - .lg\:pr-8 { - padding-right: 2rem; - } - - .lg\:pb-8 { - padding-bottom: 2rem; - } - - .lg\:pl-8 { - padding-left: 2rem; - } - - .lg\:pt-10 { - padding-top: 2.5rem; - } - - .lg\:pr-10 { - padding-right: 2.5rem; - } - - .lg\:pb-10 { - padding-bottom: 2.5rem; - } - - .lg\:pl-10 { - padding-left: 2.5rem; - } - - .lg\:pt-12 { - padding-top: 3rem; - } - - .lg\:pr-12 { - padding-right: 3rem; - } - - .lg\:pb-12 { - padding-bottom: 3rem; - } - - .lg\:pl-12 { - padding-left: 3rem; - } - - .lg\:pt-16 { - padding-top: 4rem; - } - - .lg\:pr-16 { - padding-right: 4rem; - } - - .lg\:pb-16 { - padding-bottom: 4rem; - } - - .lg\:pl-16 { - padding-left: 4rem; - } - - .lg\:pt-20 { - padding-top: 5rem; - } - - .lg\:pr-20 { - padding-right: 5rem; - } - - .lg\:pb-20 { - padding-bottom: 5rem; - } - - .lg\:pl-20 { - padding-left: 5rem; - } - - .lg\:pt-24 { - padding-top: 6rem; - } - - .lg\:pr-24 { - padding-right: 6rem; - } - - .lg\:pb-24 { - padding-bottom: 6rem; - } - - .lg\:pl-24 { - padding-left: 6rem; - } - - .lg\:pt-32 { - padding-top: 8rem; - } - - .lg\:pr-32 { - padding-right: 8rem; - } - - .lg\:pb-32 { - padding-bottom: 8rem; - } - - .lg\:pl-32 { - padding-left: 8rem; - } - - .lg\:pt-40 { - padding-top: 10rem; - } - - .lg\:pr-40 { - padding-right: 10rem; - } - - .lg\:pb-40 { - padding-bottom: 10rem; - } - - .lg\:pl-40 { - padding-left: 10rem; - } - - .lg\:pt-48 { - padding-top: 12rem; - } - - .lg\:pr-48 { - padding-right: 12rem; - } - - .lg\:pb-48 { - padding-bottom: 12rem; - } - - .lg\:pl-48 { - padding-left: 12rem; - } - - .lg\:pt-56 { - padding-top: 14rem; - } - - .lg\:pr-56 { - padding-right: 14rem; - } - - .lg\:pb-56 { - padding-bottom: 14rem; - } - - .lg\:pl-56 { - padding-left: 14rem; - } - - .lg\:pt-64 { - padding-top: 16rem; - } - - .lg\:pr-64 { - padding-right: 16rem; - } - - .lg\:pb-64 { - padding-bottom: 16rem; - } - - .lg\:pl-64 { - padding-left: 16rem; - } - - .lg\:pt-px { - padding-top: 1px; - } - - .lg\:pr-px { - padding-right: 1px; - } - - .lg\:pb-px { - padding-bottom: 1px; - } - - .lg\:pl-px { - padding-left: 1px; - } - - .lg\:pointer-events-none { - pointer-events: none; - } - - .lg\:pointer-events-auto { - pointer-events: auto; - } - - .lg\:static { - position: static; - } - - .lg\:fixed { - position: fixed; - } - - .lg\:absolute { - position: absolute; - } - - .lg\:relative { - position: relative; - } - - .lg\:sticky { - position: -webkit-sticky; - position: sticky; - } - - .lg\:inset-0 { - top: 0; - right: 0; - bottom: 0; - left: 0; - } - - .lg\:inset-auto { - top: auto; - right: auto; - bottom: auto; - left: auto; - } - - .lg\:inset-y-0 { - top: 0; - bottom: 0; - } - - .lg\:inset-x-0 { - right: 0; - left: 0; - } - - .lg\:inset-y-auto { - top: auto; - bottom: auto; - } - - .lg\:inset-x-auto { - right: auto; - left: auto; - } - - .lg\:top-0 { - top: 0; - } - - .lg\:right-0 { - right: 0; - } - - .lg\:bottom-0 { - bottom: 0; - } - - .lg\:left-0 { - left: 0; - } - - .lg\:top-auto { - top: auto; - } - - .lg\:right-auto { - right: auto; - } - - .lg\:bottom-auto { - bottom: auto; - } - - .lg\:left-auto { - left: auto; - } - - .lg\:resize-none { - resize: none; - } - - .lg\:resize-y { - resize: vertical; - } - - .lg\:resize-x { - resize: horizontal; - } - - .lg\:resize { - resize: both; - } - - .lg\:shadow { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:shadow-md { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .lg\:shadow-lg { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .lg\:shadow-xl { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .lg\:shadow-2xl { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .lg\:shadow-inner { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:shadow-outline { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .lg\:shadow-none { - box-shadow: none; - } - - .lg\:hover\:shadow:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:hover\:shadow-md:hover { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .lg\:hover\:shadow-lg:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .lg\:hover\:shadow-xl:hover { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .lg\:hover\:shadow-2xl:hover { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .lg\:hover\:shadow-inner:hover { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:hover\:shadow-outline:hover { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .lg\:hover\:shadow-none:hover { - box-shadow: none; - } - - .lg\:focus\:shadow:focus { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:focus\:shadow-md:focus { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .lg\:focus\:shadow-lg:focus { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .lg\:focus\:shadow-xl:focus { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .lg\:focus\:shadow-2xl:focus { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .lg\:focus\:shadow-inner:focus { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .lg\:focus\:shadow-outline:focus { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .lg\:focus\:shadow-none:focus { - box-shadow: none; - } - - .lg\:fill-current { - fill: currentColor; - } - - .lg\:stroke-current { - stroke: currentColor; - } - - .lg\:table-auto { - table-layout: auto; - } - - .lg\:table-fixed { - table-layout: fixed; - } - - .lg\:text-left { - text-align: left; - } - - .lg\:text-center { - text-align: center; - } - - .lg\:text-right { - text-align: right; - } - - .lg\:text-justify { - text-align: justify; - } - - .lg\:text-transparent { - color: transparent; - } - - .lg\:text-black { - color: #000; - } - - .lg\:text-grey-darkest { - color: #3d4852; - } - - .lg\:text-grey-darker { - color: #606f7b; - } - - .lg\:text-grey-dark { - color: #8795a1; - } - - .lg\:text-grey { - color: #b8c2cc; - } - - .lg\:text-grey-light { - color: #dae1e7; - } - - .lg\:text-grey-lighter { - color: #f1f5f8; - } - - .lg\:text-grey-lightest { - color: #f8fafc; - } - - .lg\:text-white { - color: #fff; - } - - .lg\:text-snipline-green-darker { - color: #333510; - } - - .lg\:text-snipline-green-dark { - color: #94AB0D; - } - - .lg\:text-snipline-lime-light { - color: #e1f471; - } - - .lg\:text-snipline-lime { - color: #CDED15; - } - - .lg\:text-snipline-lime-dark { - color: #94AB0D; - } - - .lg\:text-snipline-green { - color: #15ED78; - } - - .lg\:text-snipline-yellow { - color: #EDE415; - } - - .lg\:text-snipline-grey-dark { - color: rgba(51, 53, 16, 0.8); - } - - .lg\:text-snipline-grey { - color: #EBF1EF; - } - - .lg\:text-snipline-grey-light { - color: #DAE1E7; - } - - .lg\:text-snipline-grey-lighter { - color: #E0E8EE; - } - - .lg\:text-success-100 { - color: #ECFBD7; - } - - .lg\:text-success-200 { - color: #D5F8B0; - } - - .lg\:text-success-300 { - color: #B3EC84; - } - - .lg\:text-success-400 { - color: #90D962; - } - - .lg\:text-success-500 { - color: #61C134; - } - - .lg\:text-success-600 { - color: #46A526; - } - - .lg\:text-success-700 { - color: #2F8A1A; - } - - .lg\:text-success-800 { - color: #1C6F10; - } - - .lg\:text-success-900 { - color: #0E5C09; - } - - .lg\:text-info-100 { - color: #DFF6FE; - } - - .lg\:text-info-200 { - color: #BFE9FE; - } - - .lg\:text-info-300 { - color: #9FD9FE; - } - - .lg\:text-info-400 { - color: #86CAFD; - } - - .lg\:text-info-500 { - color: #5FB0FC; - } - - .lg\:text-info-600 { - color: #4589D8; - } - - .lg\:text-info-700 { - color: #2F67B5; - } - - .lg\:text-info-800 { - color: #1E4892; - } - - .lg\:text-info-900 { - color: #123278; - } - - .lg\:text-danger-100 { - color: #FFEAD7; - } - - .lg\:text-danger-200 { - color: #FFD0B0; - } - - .lg\:text-danger-300 { - color: #FFB088; - } - - .lg\:text-danger-400 { - color: #FF916B; - } - - .lg\:text-danger-500 { - color: #FF5E3A; - } - - .lg\:text-danger-600 { - color: #DB3D2A; - } - - .lg\:text-danger-700 { - color: #B7221D; - } - - .lg\:text-danger-800 { - color: #931218; - } - - .lg\:text-danger-900 { - color: #7A0B18; - } - - .lg\:hover\:text-transparent:hover { - color: transparent; - } - - .lg\:hover\:text-black:hover { - color: #000; - } - - .lg\:hover\:text-grey-darkest:hover { - color: #3d4852; - } - - .lg\:hover\:text-grey-darker:hover { - color: #606f7b; - } - - .lg\:hover\:text-grey-dark:hover { - color: #8795a1; - } - - .lg\:hover\:text-grey:hover { - color: #b8c2cc; - } - - .lg\:hover\:text-grey-light:hover { - color: #dae1e7; - } - - .lg\:hover\:text-grey-lighter:hover { - color: #f1f5f8; - } - - .lg\:hover\:text-grey-lightest:hover { - color: #f8fafc; - } - - .lg\:hover\:text-white:hover { - color: #fff; - } - - .lg\:hover\:text-snipline-green-darker:hover { - color: #333510; - } - - .lg\:hover\:text-snipline-green-dark:hover { - color: #94AB0D; - } - - .lg\:hover\:text-snipline-lime-light:hover { - color: #e1f471; - } - - .lg\:hover\:text-snipline-lime:hover { - color: #CDED15; - } - - .lg\:hover\:text-snipline-lime-dark:hover { - color: #94AB0D; - } - - .lg\:hover\:text-snipline-green:hover { - color: #15ED78; - } - - .lg\:hover\:text-snipline-yellow:hover { - color: #EDE415; - } - - .lg\:hover\:text-snipline-grey-dark:hover { - color: rgba(51, 53, 16, 0.8); - } - - .lg\:hover\:text-snipline-grey:hover { - color: #EBF1EF; - } - - .lg\:hover\:text-snipline-grey-light:hover { - color: #DAE1E7; - } - - .lg\:hover\:text-snipline-grey-lighter:hover { - color: #E0E8EE; - } - - .lg\:hover\:text-success-100:hover { - color: #ECFBD7; - } - - .lg\:hover\:text-success-200:hover { - color: #D5F8B0; - } - - .lg\:hover\:text-success-300:hover { - color: #B3EC84; - } - - .lg\:hover\:text-success-400:hover { - color: #90D962; - } - - .lg\:hover\:text-success-500:hover { - color: #61C134; - } - - .lg\:hover\:text-success-600:hover { - color: #46A526; - } - - .lg\:hover\:text-success-700:hover { - color: #2F8A1A; - } - - .lg\:hover\:text-success-800:hover { - color: #1C6F10; - } - - .lg\:hover\:text-success-900:hover { - color: #0E5C09; - } - - .lg\:hover\:text-info-100:hover { - color: #DFF6FE; - } - - .lg\:hover\:text-info-200:hover { - color: #BFE9FE; - } - - .lg\:hover\:text-info-300:hover { - color: #9FD9FE; - } - - .lg\:hover\:text-info-400:hover { - color: #86CAFD; - } - - .lg\:hover\:text-info-500:hover { - color: #5FB0FC; - } - - .lg\:hover\:text-info-600:hover { - color: #4589D8; - } - - .lg\:hover\:text-info-700:hover { - color: #2F67B5; - } - - .lg\:hover\:text-info-800:hover { - color: #1E4892; - } - - .lg\:hover\:text-info-900:hover { - color: #123278; - } - - .lg\:hover\:text-danger-100:hover { - color: #FFEAD7; - } - - .lg\:hover\:text-danger-200:hover { - color: #FFD0B0; - } - - .lg\:hover\:text-danger-300:hover { - color: #FFB088; - } - - .lg\:hover\:text-danger-400:hover { - color: #FF916B; - } - - .lg\:hover\:text-danger-500:hover { - color: #FF5E3A; - } - - .lg\:hover\:text-danger-600:hover { - color: #DB3D2A; - } - - .lg\:hover\:text-danger-700:hover { - color: #B7221D; - } - - .lg\:hover\:text-danger-800:hover { - color: #931218; - } - - .lg\:hover\:text-danger-900:hover { - color: #7A0B18; - } - - .lg\:focus\:text-transparent:focus { - color: transparent; - } - - .lg\:focus\:text-black:focus { - color: #000; - } - - .lg\:focus\:text-grey-darkest:focus { - color: #3d4852; - } - - .lg\:focus\:text-grey-darker:focus { - color: #606f7b; - } - - .lg\:focus\:text-grey-dark:focus { - color: #8795a1; - } - - .lg\:focus\:text-grey:focus { - color: #b8c2cc; - } - - .lg\:focus\:text-grey-light:focus { - color: #dae1e7; - } - - .lg\:focus\:text-grey-lighter:focus { - color: #f1f5f8; - } - - .lg\:focus\:text-grey-lightest:focus { - color: #f8fafc; - } - - .lg\:focus\:text-white:focus { - color: #fff; - } - - .lg\:focus\:text-snipline-green-darker:focus { - color: #333510; - } - - .lg\:focus\:text-snipline-green-dark:focus { - color: #94AB0D; - } - - .lg\:focus\:text-snipline-lime-light:focus { - color: #e1f471; - } - - .lg\:focus\:text-snipline-lime:focus { - color: #CDED15; - } - - .lg\:focus\:text-snipline-lime-dark:focus { - color: #94AB0D; - } - - .lg\:focus\:text-snipline-green:focus { - color: #15ED78; - } - - .lg\:focus\:text-snipline-yellow:focus { - color: #EDE415; - } - - .lg\:focus\:text-snipline-grey-dark:focus { - color: rgba(51, 53, 16, 0.8); - } - - .lg\:focus\:text-snipline-grey:focus { - color: #EBF1EF; - } - - .lg\:focus\:text-snipline-grey-light:focus { - color: #DAE1E7; - } - - .lg\:focus\:text-snipline-grey-lighter:focus { - color: #E0E8EE; - } - - .lg\:focus\:text-success-100:focus { - color: #ECFBD7; - } - - .lg\:focus\:text-success-200:focus { - color: #D5F8B0; - } - - .lg\:focus\:text-success-300:focus { - color: #B3EC84; - } - - .lg\:focus\:text-success-400:focus { - color: #90D962; - } - - .lg\:focus\:text-success-500:focus { - color: #61C134; - } - - .lg\:focus\:text-success-600:focus { - color: #46A526; - } - - .lg\:focus\:text-success-700:focus { - color: #2F8A1A; - } - - .lg\:focus\:text-success-800:focus { - color: #1C6F10; - } - - .lg\:focus\:text-success-900:focus { - color: #0E5C09; - } - - .lg\:focus\:text-info-100:focus { - color: #DFF6FE; - } - - .lg\:focus\:text-info-200:focus { - color: #BFE9FE; - } - - .lg\:focus\:text-info-300:focus { - color: #9FD9FE; - } - - .lg\:focus\:text-info-400:focus { - color: #86CAFD; - } - - .lg\:focus\:text-info-500:focus { - color: #5FB0FC; - } - - .lg\:focus\:text-info-600:focus { - color: #4589D8; - } - - .lg\:focus\:text-info-700:focus { - color: #2F67B5; - } - - .lg\:focus\:text-info-800:focus { - color: #1E4892; - } - - .lg\:focus\:text-info-900:focus { - color: #123278; - } - - .lg\:focus\:text-danger-100:focus { - color: #FFEAD7; - } - - .lg\:focus\:text-danger-200:focus { - color: #FFD0B0; - } - - .lg\:focus\:text-danger-300:focus { - color: #FFB088; - } - - .lg\:focus\:text-danger-400:focus { - color: #FF916B; - } - - .lg\:focus\:text-danger-500:focus { - color: #FF5E3A; - } - - .lg\:focus\:text-danger-600:focus { - color: #DB3D2A; - } - - .lg\:focus\:text-danger-700:focus { - color: #B7221D; - } - - .lg\:focus\:text-danger-800:focus { - color: #931218; - } - - .lg\:focus\:text-danger-900:focus { - color: #7A0B18; - } - - .lg\:text-xs { - font-size: 0.75rem; - } - - .lg\:text-sm { - font-size: 0.875rem; - } - - .lg\:text-base { - font-size: 1rem; - } - - .lg\:text-lg { - font-size: 1.125rem; - } - - .lg\:text-xl { - font-size: 1.25rem; - } - - .lg\:text-2xl { - font-size: 1.5rem; - } - - .lg\:text-3xl { - font-size: 1.875rem; - } - - .lg\:text-4xl { - font-size: 2.25rem; - } - - .lg\:text-5xl { - font-size: 3rem; - } - - .lg\:text-6xl { - font-size: 4rem; - } - - .lg\:italic { - font-style: italic; - } - - .lg\:not-italic { - font-style: normal; - } - - .lg\:uppercase { - text-transform: uppercase; - } - - .lg\:lowercase { - text-transform: lowercase; - } - - .lg\:capitalize { - text-transform: capitalize; - } - - .lg\:normal-case { - text-transform: none; - } - - .lg\:underline { - text-decoration: underline; - } - - .lg\:line-through { - text-decoration: line-through; - } - - .lg\:no-underline { - text-decoration: none; - } - - .lg\:hover\:underline:hover { - text-decoration: underline; - } - - .lg\:hover\:line-through:hover { - text-decoration: line-through; - } - - .lg\:hover\:no-underline:hover { - text-decoration: none; - } - - .lg\:focus\:underline:focus { - text-decoration: underline; - } - - .lg\:focus\:line-through:focus { - text-decoration: line-through; - } - - .lg\:focus\:no-underline:focus { - text-decoration: none; - } - - .lg\:antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .lg\:subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; - } - - .lg\:tracking-tighter { - letter-spacing: -0.05em; - } - - .lg\:tracking-tight { - letter-spacing: -0.025em; - } - - .lg\:tracking-normal { - letter-spacing: 0; - } - - .lg\:tracking-wide { - letter-spacing: 0.025em; - } - - .lg\:tracking-wider { - letter-spacing: 0.05em; - } - - .lg\:tracking-widest { - letter-spacing: 0.1em; - } - - .lg\:select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - .lg\:select-text { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - .lg\:select-all { - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; - } - - .lg\:select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; - } - - .lg\:align-baseline { - vertical-align: baseline; - } - - .lg\:align-top { - vertical-align: top; - } - - .lg\:align-middle { - vertical-align: middle; - } - - .lg\:align-bottom { - vertical-align: bottom; - } - - .lg\:align-text-top { - vertical-align: text-top; - } - - .lg\:align-text-bottom { - vertical-align: text-bottom; - } - - .lg\:visible { - visibility: visible; - } - - .lg\:invisible { - visibility: hidden; - } - - .lg\:whitespace-normal { - white-space: normal; - } - - .lg\:whitespace-no-wrap { - white-space: nowrap; - } - - .lg\:whitespace-pre { - white-space: pre; - } - - .lg\:whitespace-pre-line { - white-space: pre-line; - } - - .lg\:whitespace-pre-wrap { - white-space: pre-wrap; - } - - .lg\:break-normal { - overflow-wrap: normal; - word-break: normal; - } - - .lg\:break-words { - overflow-wrap: break-word; - } - - .lg\:break-all { - word-break: break-all; - } - - .lg\:truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .lg\:w-0 { - width: 0; - } - - .lg\:w-1 { - width: 0.25rem; - } - - .lg\:w-2 { - width: 0.5rem; - } - - .lg\:w-3 { - width: 0.75rem; - } - - .lg\:w-4 { - width: 1rem; - } - - .lg\:w-5 { - width: 1.25rem; - } - - .lg\:w-6 { - width: 1.5rem; - } - - .lg\:w-8 { - width: 2rem; - } - - .lg\:w-10 { - width: 2.5rem; - } - - .lg\:w-12 { - width: 3rem; - } - - .lg\:w-16 { - width: 4rem; - } - - .lg\:w-20 { - width: 5rem; - } - - .lg\:w-24 { - width: 6rem; - } - - .lg\:w-32 { - width: 8rem; - } - - .lg\:w-40 { - width: 10rem; - } - - .lg\:w-48 { - width: 12rem; - } - - .lg\:w-56 { - width: 14rem; - } - - .lg\:w-64 { - width: 16rem; - } - - .lg\:w-auto { - width: auto; - } - - .lg\:w-px { - width: 1px; - } - - .lg\:w-1\/2 { - width: 50%; - } - - .lg\:w-1\/3 { - width: 33.33333%; - } - - .lg\:w-2\/3 { - width: 66.66667%; - } - - .lg\:w-1\/4 { - width: 25%; - } - - .lg\:w-2\/4 { - width: 50%; - } - - .lg\:w-3\/4 { - width: 75%; - } - - .lg\:w-1\/5 { - width: 20%; - } - - .lg\:w-2\/5 { - width: 40%; - } - - .lg\:w-3\/5 { - width: 60%; - } - - .lg\:w-4\/5 { - width: 80%; - } - - .lg\:w-1\/6 { - width: 16.66667%; - } - - .lg\:w-2\/6 { - width: 33.33333%; - } - - .lg\:w-3\/6 { - width: 50%; - } - - .lg\:w-4\/6 { - width: 66.66667%; - } - - .lg\:w-5\/6 { - width: 83.33333%; - } - - .lg\:w-1\/12 { - width: 8.33333%; - } - - .lg\:w-2\/12 { - width: 16.66667%; - } - - .lg\:w-3\/12 { - width: 25%; - } - - .lg\:w-4\/12 { - width: 33.33333%; - } - - .lg\:w-5\/12 { - width: 41.66667%; - } - - .lg\:w-6\/12 { - width: 50%; - } - - .lg\:w-7\/12 { - width: 58.33333%; - } - - .lg\:w-8\/12 { - width: 66.66667%; - } - - .lg\:w-9\/12 { - width: 75%; - } - - .lg\:w-10\/12 { - width: 83.33333%; - } - - .lg\:w-11\/12 { - width: 91.66667%; - } - - .lg\:w-full { - width: 100%; - } - - .lg\:w-screen { - width: 100vw; - } - - .lg\:z-0 { - z-index: 0; - } - - .lg\:z-10 { - z-index: 10; - } - - .lg\:z-20 { - z-index: 20; - } - - .lg\:z-30 { - z-index: 30; - } - - .lg\:z-40 { - z-index: 40; - } - - .lg\:z-50 { - z-index: 50; - } - - .lg\:z-auto { - z-index: auto; - } -} - -@media (min-width: 1280px) { - .xl\:appearance-none { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - } - - .xl\:bg-fixed { - background-attachment: fixed; - } - - .xl\:bg-local { - background-attachment: local; - } - - .xl\:bg-scroll { - background-attachment: scroll; - } - - .xl\:bg-transparent { - background-color: transparent; - } - - .xl\:bg-black { - background-color: #000; - } - - .xl\:bg-grey-darkest { - background-color: #3d4852; - } - - .xl\:bg-grey-darker { - background-color: #606f7b; - } - - .xl\:bg-grey-dark { - background-color: #8795a1; - } - - .xl\:bg-grey { - background-color: #b8c2cc; - } - - .xl\:bg-grey-light { - background-color: #dae1e7; - } - - .xl\:bg-grey-lighter { - background-color: #f1f5f8; - } - - .xl\:bg-grey-lightest { - background-color: #f8fafc; - } - - .xl\:bg-white { - background-color: #fff; - } - - .xl\:bg-snipline-green-darker { - background-color: #333510; - } - - .xl\:bg-snipline-green-dark { - background-color: #94AB0D; - } - - .xl\:bg-snipline-lime-light { - background-color: #e1f471; - } - - .xl\:bg-snipline-lime { - background-color: #CDED15; - } - - .xl\:bg-snipline-lime-dark { - background-color: #94AB0D; - } - - .xl\:bg-snipline-green { - background-color: #15ED78; - } - - .xl\:bg-snipline-yellow { - background-color: #EDE415; - } - - .xl\:bg-snipline-grey-dark { - background-color: rgba(51, 53, 16, 0.8); - } - - .xl\:bg-snipline-grey { - background-color: #EBF1EF; - } - - .xl\:bg-snipline-grey-light { - background-color: #DAE1E7; - } - - .xl\:bg-snipline-grey-lighter { - background-color: #E0E8EE; - } - - .xl\:bg-success-100 { - background-color: #ECFBD7; - } - - .xl\:bg-success-200 { - background-color: #D5F8B0; - } - - .xl\:bg-success-300 { - background-color: #B3EC84; - } - - .xl\:bg-success-400 { - background-color: #90D962; - } - - .xl\:bg-success-500 { - background-color: #61C134; - } - - .xl\:bg-success-600 { - background-color: #46A526; - } - - .xl\:bg-success-700 { - background-color: #2F8A1A; - } - - .xl\:bg-success-800 { - background-color: #1C6F10; - } - - .xl\:bg-success-900 { - background-color: #0E5C09; - } - - .xl\:bg-info-100 { - background-color: #DFF6FE; - } - - .xl\:bg-info-200 { - background-color: #BFE9FE; - } - - .xl\:bg-info-300 { - background-color: #9FD9FE; - } - - .xl\:bg-info-400 { - background-color: #86CAFD; - } - - .xl\:bg-info-500 { - background-color: #5FB0FC; - } - - .xl\:bg-info-600 { - background-color: #4589D8; - } - - .xl\:bg-info-700 { - background-color: #2F67B5; - } - - .xl\:bg-info-800 { - background-color: #1E4892; - } - - .xl\:bg-info-900 { - background-color: #123278; - } - - .xl\:bg-danger-100 { - background-color: #FFEAD7; - } - - .xl\:bg-danger-200 { - background-color: #FFD0B0; - } - - .xl\:bg-danger-300 { - background-color: #FFB088; - } - - .xl\:bg-danger-400 { - background-color: #FF916B; - } - - .xl\:bg-danger-500 { - background-color: #FF5E3A; - } - - .xl\:bg-danger-600 { - background-color: #DB3D2A; - } - - .xl\:bg-danger-700 { - background-color: #B7221D; - } - - .xl\:bg-danger-800 { - background-color: #931218; - } - - .xl\:bg-danger-900 { - background-color: #7A0B18; - } - - .xl\:hover\:bg-transparent:hover { - background-color: transparent; - } - - .xl\:hover\:bg-black:hover { - background-color: #000; - } - - .xl\:hover\:bg-grey-darkest:hover { - background-color: #3d4852; - } - - .xl\:hover\:bg-grey-darker:hover { - background-color: #606f7b; - } - - .xl\:hover\:bg-grey-dark:hover { - background-color: #8795a1; - } - - .xl\:hover\:bg-grey:hover { - background-color: #b8c2cc; - } - - .xl\:hover\:bg-grey-light:hover { - background-color: #dae1e7; - } - - .xl\:hover\:bg-grey-lighter:hover { - background-color: #f1f5f8; - } - - .xl\:hover\:bg-grey-lightest:hover { - background-color: #f8fafc; - } - - .xl\:hover\:bg-white:hover { - background-color: #fff; - } - - .xl\:hover\:bg-snipline-green-darker:hover { - background-color: #333510; - } - - .xl\:hover\:bg-snipline-green-dark:hover { - background-color: #94AB0D; - } - - .xl\:hover\:bg-snipline-lime-light:hover { - background-color: #e1f471; - } - - .xl\:hover\:bg-snipline-lime:hover { - background-color: #CDED15; - } - - .xl\:hover\:bg-snipline-lime-dark:hover { - background-color: #94AB0D; - } - - .xl\:hover\:bg-snipline-green:hover { - background-color: #15ED78; - } - - .xl\:hover\:bg-snipline-yellow:hover { - background-color: #EDE415; - } - - .xl\:hover\:bg-snipline-grey-dark:hover { - background-color: rgba(51, 53, 16, 0.8); - } - - .xl\:hover\:bg-snipline-grey:hover { - background-color: #EBF1EF; - } - - .xl\:hover\:bg-snipline-grey-light:hover { - background-color: #DAE1E7; - } - - .xl\:hover\:bg-snipline-grey-lighter:hover { - background-color: #E0E8EE; - } - - .xl\:hover\:bg-success-100:hover { - background-color: #ECFBD7; - } - - .xl\:hover\:bg-success-200:hover { - background-color: #D5F8B0; - } - - .xl\:hover\:bg-success-300:hover { - background-color: #B3EC84; - } - - .xl\:hover\:bg-success-400:hover { - background-color: #90D962; - } - - .xl\:hover\:bg-success-500:hover { - background-color: #61C134; - } - - .xl\:hover\:bg-success-600:hover { - background-color: #46A526; - } - - .xl\:hover\:bg-success-700:hover { - background-color: #2F8A1A; - } - - .xl\:hover\:bg-success-800:hover { - background-color: #1C6F10; - } - - .xl\:hover\:bg-success-900:hover { - background-color: #0E5C09; - } - - .xl\:hover\:bg-info-100:hover { - background-color: #DFF6FE; - } - - .xl\:hover\:bg-info-200:hover { - background-color: #BFE9FE; - } - - .xl\:hover\:bg-info-300:hover { - background-color: #9FD9FE; - } - - .xl\:hover\:bg-info-400:hover { - background-color: #86CAFD; - } - - .xl\:hover\:bg-info-500:hover { - background-color: #5FB0FC; - } - - .xl\:hover\:bg-info-600:hover { - background-color: #4589D8; - } - - .xl\:hover\:bg-info-700:hover { - background-color: #2F67B5; - } - - .xl\:hover\:bg-info-800:hover { - background-color: #1E4892; - } - - .xl\:hover\:bg-info-900:hover { - background-color: #123278; - } - - .xl\:hover\:bg-danger-100:hover { - background-color: #FFEAD7; - } - - .xl\:hover\:bg-danger-200:hover { - background-color: #FFD0B0; - } - - .xl\:hover\:bg-danger-300:hover { - background-color: #FFB088; - } - - .xl\:hover\:bg-danger-400:hover { - background-color: #FF916B; - } - - .xl\:hover\:bg-danger-500:hover { - background-color: #FF5E3A; - } - - .xl\:hover\:bg-danger-600:hover { - background-color: #DB3D2A; - } - - .xl\:hover\:bg-danger-700:hover { - background-color: #B7221D; - } - - .xl\:hover\:bg-danger-800:hover { - background-color: #931218; - } - - .xl\:hover\:bg-danger-900:hover { - background-color: #7A0B18; - } - - .xl\:focus\:bg-transparent:focus { - background-color: transparent; - } - - .xl\:focus\:bg-black:focus { - background-color: #000; - } - - .xl\:focus\:bg-grey-darkest:focus { - background-color: #3d4852; - } - - .xl\:focus\:bg-grey-darker:focus { - background-color: #606f7b; - } - - .xl\:focus\:bg-grey-dark:focus { - background-color: #8795a1; - } - - .xl\:focus\:bg-grey:focus { - background-color: #b8c2cc; - } - - .xl\:focus\:bg-grey-light:focus { - background-color: #dae1e7; - } - - .xl\:focus\:bg-grey-lighter:focus { - background-color: #f1f5f8; - } - - .xl\:focus\:bg-grey-lightest:focus { - background-color: #f8fafc; - } - - .xl\:focus\:bg-white:focus { - background-color: #fff; - } - - .xl\:focus\:bg-snipline-green-darker:focus { - background-color: #333510; - } - - .xl\:focus\:bg-snipline-green-dark:focus { - background-color: #94AB0D; - } - - .xl\:focus\:bg-snipline-lime-light:focus { - background-color: #e1f471; - } - - .xl\:focus\:bg-snipline-lime:focus { - background-color: #CDED15; - } - - .xl\:focus\:bg-snipline-lime-dark:focus { - background-color: #94AB0D; - } - - .xl\:focus\:bg-snipline-green:focus { - background-color: #15ED78; - } - - .xl\:focus\:bg-snipline-yellow:focus { - background-color: #EDE415; - } - - .xl\:focus\:bg-snipline-grey-dark:focus { - background-color: rgba(51, 53, 16, 0.8); - } - - .xl\:focus\:bg-snipline-grey:focus { - background-color: #EBF1EF; - } - - .xl\:focus\:bg-snipline-grey-light:focus { - background-color: #DAE1E7; - } - - .xl\:focus\:bg-snipline-grey-lighter:focus { - background-color: #E0E8EE; - } - - .xl\:focus\:bg-success-100:focus { - background-color: #ECFBD7; - } - - .xl\:focus\:bg-success-200:focus { - background-color: #D5F8B0; - } - - .xl\:focus\:bg-success-300:focus { - background-color: #B3EC84; - } - - .xl\:focus\:bg-success-400:focus { - background-color: #90D962; - } - - .xl\:focus\:bg-success-500:focus { - background-color: #61C134; - } - - .xl\:focus\:bg-success-600:focus { - background-color: #46A526; - } - - .xl\:focus\:bg-success-700:focus { - background-color: #2F8A1A; - } - - .xl\:focus\:bg-success-800:focus { - background-color: #1C6F10; - } - - .xl\:focus\:bg-success-900:focus { - background-color: #0E5C09; - } - - .xl\:focus\:bg-info-100:focus { - background-color: #DFF6FE; - } - - .xl\:focus\:bg-info-200:focus { - background-color: #BFE9FE; - } - - .xl\:focus\:bg-info-300:focus { - background-color: #9FD9FE; - } - - .xl\:focus\:bg-info-400:focus { - background-color: #86CAFD; - } - - .xl\:focus\:bg-info-500:focus { - background-color: #5FB0FC; - } - - .xl\:focus\:bg-info-600:focus { - background-color: #4589D8; - } - - .xl\:focus\:bg-info-700:focus { - background-color: #2F67B5; - } - - .xl\:focus\:bg-info-800:focus { - background-color: #1E4892; - } - - .xl\:focus\:bg-info-900:focus { - background-color: #123278; - } - - .xl\:focus\:bg-danger-100:focus { - background-color: #FFEAD7; - } - - .xl\:focus\:bg-danger-200:focus { - background-color: #FFD0B0; - } - - .xl\:focus\:bg-danger-300:focus { - background-color: #FFB088; - } - - .xl\:focus\:bg-danger-400:focus { - background-color: #FF916B; - } - - .xl\:focus\:bg-danger-500:focus { - background-color: #FF5E3A; - } - - .xl\:focus\:bg-danger-600:focus { - background-color: #DB3D2A; - } - - .xl\:focus\:bg-danger-700:focus { - background-color: #B7221D; - } - - .xl\:focus\:bg-danger-800:focus { - background-color: #931218; - } - - .xl\:focus\:bg-danger-900:focus { - background-color: #7A0B18; - } - - .xl\:bg-bottom { - background-position: bottom; - } - - .xl\:bg-center { - background-position: center; - } - - .xl\:bg-left { - background-position: left; - } - - .xl\:bg-left-bottom { - background-position: left bottom; - } - - .xl\:bg-left-top { - background-position: left top; - } - - .xl\:bg-right { - background-position: right; - } - - .xl\:bg-right-bottom { - background-position: right bottom; - } - - .xl\:bg-right-top { - background-position: right top; - } - - .xl\:bg-top { - background-position: top; - } - - .xl\:bg-repeat { - background-repeat: repeat; - } - - .xl\:bg-no-repeat { - background-repeat: no-repeat; - } - - .xl\:bg-repeat-x { - background-repeat: repeat-x; - } - - .xl\:bg-repeat-y { - background-repeat: repeat-y; - } - - .xl\:bg-repeat-round { - background-repeat: round; - } - - .xl\:bg-repeat-space { - background-repeat: space; - } - - .xl\:bg-auto { - background-size: auto; - } - - .xl\:bg-cover { - background-size: cover; - } - - .xl\:bg-contain { - background-size: contain; - } - - .xl\:border-collapse { - border-collapse: collapse; - } - - .xl\:border-separate { - border-collapse: separate; - } - - .xl\:border-transparent { - border-color: transparent; - } - - .xl\:border-black { - border-color: #000; - } - - .xl\:border-grey-darkest { - border-color: #3d4852; - } - - .xl\:border-grey-darker { - border-color: #606f7b; - } - - .xl\:border-grey-dark { - border-color: #8795a1; - } - - .xl\:border-grey { - border-color: #b8c2cc; - } - - .xl\:border-grey-light { - border-color: #dae1e7; - } - - .xl\:border-grey-lighter { - border-color: #f1f5f8; - } - - .xl\:border-grey-lightest { - border-color: #f8fafc; - } - - .xl\:border-white { - border-color: #fff; - } - - .xl\:border-snipline-green-darker { - border-color: #333510; - } - - .xl\:border-snipline-green-dark { - border-color: #94AB0D; - } - - .xl\:border-snipline-lime-light { - border-color: #e1f471; - } - - .xl\:border-snipline-lime { - border-color: #CDED15; - } - - .xl\:border-snipline-lime-dark { - border-color: #94AB0D; - } - - .xl\:border-snipline-green { - border-color: #15ED78; - } - - .xl\:border-snipline-yellow { - border-color: #EDE415; - } - - .xl\:border-snipline-grey-dark { - border-color: rgba(51, 53, 16, 0.8); - } - - .xl\:border-snipline-grey { - border-color: #EBF1EF; - } - - .xl\:border-snipline-grey-light { - border-color: #DAE1E7; - } - - .xl\:border-snipline-grey-lighter { - border-color: #E0E8EE; - } - - .xl\:border-success-100 { - border-color: #ECFBD7; - } - - .xl\:border-success-200 { - border-color: #D5F8B0; - } - - .xl\:border-success-300 { - border-color: #B3EC84; - } - - .xl\:border-success-400 { - border-color: #90D962; - } - - .xl\:border-success-500 { - border-color: #61C134; - } - - .xl\:border-success-600 { - border-color: #46A526; - } - - .xl\:border-success-700 { - border-color: #2F8A1A; - } - - .xl\:border-success-800 { - border-color: #1C6F10; - } - - .xl\:border-success-900 { - border-color: #0E5C09; - } - - .xl\:border-info-100 { - border-color: #DFF6FE; - } - - .xl\:border-info-200 { - border-color: #BFE9FE; - } - - .xl\:border-info-300 { - border-color: #9FD9FE; - } - - .xl\:border-info-400 { - border-color: #86CAFD; - } - - .xl\:border-info-500 { - border-color: #5FB0FC; - } - - .xl\:border-info-600 { - border-color: #4589D8; - } - - .xl\:border-info-700 { - border-color: #2F67B5; - } - - .xl\:border-info-800 { - border-color: #1E4892; - } - - .xl\:border-info-900 { - border-color: #123278; - } - - .xl\:border-danger-100 { - border-color: #FFEAD7; - } - - .xl\:border-danger-200 { - border-color: #FFD0B0; - } - - .xl\:border-danger-300 { - border-color: #FFB088; - } - - .xl\:border-danger-400 { - border-color: #FF916B; - } - - .xl\:border-danger-500 { - border-color: #FF5E3A; - } - - .xl\:border-danger-600 { - border-color: #DB3D2A; - } - - .xl\:border-danger-700 { - border-color: #B7221D; - } - - .xl\:border-danger-800 { - border-color: #931218; - } - - .xl\:border-danger-900 { - border-color: #7A0B18; - } - - .xl\:hover\:border-transparent:hover { - border-color: transparent; - } - - .xl\:hover\:border-black:hover { - border-color: #000; - } - - .xl\:hover\:border-grey-darkest:hover { - border-color: #3d4852; - } - - .xl\:hover\:border-grey-darker:hover { - border-color: #606f7b; - } - - .xl\:hover\:border-grey-dark:hover { - border-color: #8795a1; - } - - .xl\:hover\:border-grey:hover { - border-color: #b8c2cc; - } - - .xl\:hover\:border-grey-light:hover { - border-color: #dae1e7; - } - - .xl\:hover\:border-grey-lighter:hover { - border-color: #f1f5f8; - } - - .xl\:hover\:border-grey-lightest:hover { - border-color: #f8fafc; - } - - .xl\:hover\:border-white:hover { - border-color: #fff; - } - - .xl\:hover\:border-snipline-green-darker:hover { - border-color: #333510; - } - - .xl\:hover\:border-snipline-green-dark:hover { - border-color: #94AB0D; - } - - .xl\:hover\:border-snipline-lime-light:hover { - border-color: #e1f471; - } - - .xl\:hover\:border-snipline-lime:hover { - border-color: #CDED15; - } - - .xl\:hover\:border-snipline-lime-dark:hover { - border-color: #94AB0D; - } - - .xl\:hover\:border-snipline-green:hover { - border-color: #15ED78; - } - - .xl\:hover\:border-snipline-yellow:hover { - border-color: #EDE415; - } - - .xl\:hover\:border-snipline-grey-dark:hover { - border-color: rgba(51, 53, 16, 0.8); - } - - .xl\:hover\:border-snipline-grey:hover { - border-color: #EBF1EF; - } - - .xl\:hover\:border-snipline-grey-light:hover { - border-color: #DAE1E7; - } - - .xl\:hover\:border-snipline-grey-lighter:hover { - border-color: #E0E8EE; - } - - .xl\:hover\:border-success-100:hover { - border-color: #ECFBD7; - } - - .xl\:hover\:border-success-200:hover { - border-color: #D5F8B0; - } - - .xl\:hover\:border-success-300:hover { - border-color: #B3EC84; - } - - .xl\:hover\:border-success-400:hover { - border-color: #90D962; - } - - .xl\:hover\:border-success-500:hover { - border-color: #61C134; - } - - .xl\:hover\:border-success-600:hover { - border-color: #46A526; - } - - .xl\:hover\:border-success-700:hover { - border-color: #2F8A1A; - } - - .xl\:hover\:border-success-800:hover { - border-color: #1C6F10; - } - - .xl\:hover\:border-success-900:hover { - border-color: #0E5C09; - } - - .xl\:hover\:border-info-100:hover { - border-color: #DFF6FE; - } - - .xl\:hover\:border-info-200:hover { - border-color: #BFE9FE; - } - - .xl\:hover\:border-info-300:hover { - border-color: #9FD9FE; - } - - .xl\:hover\:border-info-400:hover { - border-color: #86CAFD; - } - - .xl\:hover\:border-info-500:hover { - border-color: #5FB0FC; - } - - .xl\:hover\:border-info-600:hover { - border-color: #4589D8; - } - - .xl\:hover\:border-info-700:hover { - border-color: #2F67B5; - } - - .xl\:hover\:border-info-800:hover { - border-color: #1E4892; - } - - .xl\:hover\:border-info-900:hover { - border-color: #123278; - } - - .xl\:hover\:border-danger-100:hover { - border-color: #FFEAD7; - } - - .xl\:hover\:border-danger-200:hover { - border-color: #FFD0B0; - } - - .xl\:hover\:border-danger-300:hover { - border-color: #FFB088; - } - - .xl\:hover\:border-danger-400:hover { - border-color: #FF916B; - } - - .xl\:hover\:border-danger-500:hover { - border-color: #FF5E3A; - } - - .xl\:hover\:border-danger-600:hover { - border-color: #DB3D2A; - } - - .xl\:hover\:border-danger-700:hover { - border-color: #B7221D; - } - - .xl\:hover\:border-danger-800:hover { - border-color: #931218; - } - - .xl\:hover\:border-danger-900:hover { - border-color: #7A0B18; - } - - .xl\:focus\:border-transparent:focus { - border-color: transparent; - } - - .xl\:focus\:border-black:focus { - border-color: #000; - } - - .xl\:focus\:border-grey-darkest:focus { - border-color: #3d4852; - } - - .xl\:focus\:border-grey-darker:focus { - border-color: #606f7b; - } - - .xl\:focus\:border-grey-dark:focus { - border-color: #8795a1; - } - - .xl\:focus\:border-grey:focus { - border-color: #b8c2cc; - } - - .xl\:focus\:border-grey-light:focus { - border-color: #dae1e7; - } - - .xl\:focus\:border-grey-lighter:focus { - border-color: #f1f5f8; - } - - .xl\:focus\:border-grey-lightest:focus { - border-color: #f8fafc; - } - - .xl\:focus\:border-white:focus { - border-color: #fff; - } - - .xl\:focus\:border-snipline-green-darker:focus { - border-color: #333510; - } - - .xl\:focus\:border-snipline-green-dark:focus { - border-color: #94AB0D; - } - - .xl\:focus\:border-snipline-lime-light:focus { - border-color: #e1f471; - } - - .xl\:focus\:border-snipline-lime:focus { - border-color: #CDED15; - } - - .xl\:focus\:border-snipline-lime-dark:focus { - border-color: #94AB0D; - } - - .xl\:focus\:border-snipline-green:focus { - border-color: #15ED78; - } - - .xl\:focus\:border-snipline-yellow:focus { - border-color: #EDE415; - } - - .xl\:focus\:border-snipline-grey-dark:focus { - border-color: rgba(51, 53, 16, 0.8); - } - - .xl\:focus\:border-snipline-grey:focus { - border-color: #EBF1EF; - } - - .xl\:focus\:border-snipline-grey-light:focus { - border-color: #DAE1E7; - } - - .xl\:focus\:border-snipline-grey-lighter:focus { - border-color: #E0E8EE; - } - - .xl\:focus\:border-success-100:focus { - border-color: #ECFBD7; - } - - .xl\:focus\:border-success-200:focus { - border-color: #D5F8B0; - } - - .xl\:focus\:border-success-300:focus { - border-color: #B3EC84; - } - - .xl\:focus\:border-success-400:focus { - border-color: #90D962; - } - - .xl\:focus\:border-success-500:focus { - border-color: #61C134; - } - - .xl\:focus\:border-success-600:focus { - border-color: #46A526; - } - - .xl\:focus\:border-success-700:focus { - border-color: #2F8A1A; - } - - .xl\:focus\:border-success-800:focus { - border-color: #1C6F10; - } - - .xl\:focus\:border-success-900:focus { - border-color: #0E5C09; - } - - .xl\:focus\:border-info-100:focus { - border-color: #DFF6FE; - } - - .xl\:focus\:border-info-200:focus { - border-color: #BFE9FE; - } - - .xl\:focus\:border-info-300:focus { - border-color: #9FD9FE; - } - - .xl\:focus\:border-info-400:focus { - border-color: #86CAFD; - } - - .xl\:focus\:border-info-500:focus { - border-color: #5FB0FC; - } - - .xl\:focus\:border-info-600:focus { - border-color: #4589D8; - } - - .xl\:focus\:border-info-700:focus { - border-color: #2F67B5; - } - - .xl\:focus\:border-info-800:focus { - border-color: #1E4892; - } - - .xl\:focus\:border-info-900:focus { - border-color: #123278; - } - - .xl\:focus\:border-danger-100:focus { - border-color: #FFEAD7; - } - - .xl\:focus\:border-danger-200:focus { - border-color: #FFD0B0; - } - - .xl\:focus\:border-danger-300:focus { - border-color: #FFB088; - } - - .xl\:focus\:border-danger-400:focus { - border-color: #FF916B; - } - - .xl\:focus\:border-danger-500:focus { - border-color: #FF5E3A; - } - - .xl\:focus\:border-danger-600:focus { - border-color: #DB3D2A; - } - - .xl\:focus\:border-danger-700:focus { - border-color: #B7221D; - } - - .xl\:focus\:border-danger-800:focus { - border-color: #931218; - } - - .xl\:focus\:border-danger-900:focus { - border-color: #7A0B18; - } - - .xl\:rounded-none { - border-radius: 0; - } - - .xl\:rounded-sm { - border-radius: 0.125rem; - } - - .xl\:rounded { - border-radius: 0.25rem; - } - - .xl\:rounded-lg { - border-radius: 0.5rem; - } - - .xl\:rounded-full { - border-radius: 9999px; - } - - .xl\:rounded-t-none { - border-top-left-radius: 0; - border-top-right-radius: 0; - } - - .xl\:rounded-r-none { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - .xl\:rounded-b-none { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - .xl\:rounded-l-none { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - .xl\:rounded-t-sm { - border-top-left-radius: 0.125rem; - border-top-right-radius: 0.125rem; - } - - .xl\:rounded-r-sm { - border-top-right-radius: 0.125rem; - border-bottom-right-radius: 0.125rem; - } - - .xl\:rounded-b-sm { - border-bottom-right-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .xl\:rounded-l-sm { - border-top-left-radius: 0.125rem; - border-bottom-left-radius: 0.125rem; - } - - .xl\:rounded-t { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; - } - - .xl\:rounded-r { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; - } - - .xl\:rounded-b { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .xl\:rounded-l { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; - } - - .xl\:rounded-t-lg { - border-top-left-radius: 0.5rem; - border-top-right-radius: 0.5rem; - } - - .xl\:rounded-r-lg { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; - } - - .xl\:rounded-b-lg { - border-bottom-right-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .xl\:rounded-l-lg { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - - .xl\:rounded-t-full { - border-top-left-radius: 9999px; - border-top-right-radius: 9999px; - } - - .xl\:rounded-r-full { - border-top-right-radius: 9999px; - border-bottom-right-radius: 9999px; - } - - .xl\:rounded-b-full { - border-bottom-right-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .xl\:rounded-l-full { - border-top-left-radius: 9999px; - border-bottom-left-radius: 9999px; - } - - .xl\:rounded-tl-none { - border-top-left-radius: 0; - } - - .xl\:rounded-tr-none { - border-top-right-radius: 0; - } - - .xl\:rounded-br-none { - border-bottom-right-radius: 0; - } - - .xl\:rounded-bl-none { - border-bottom-left-radius: 0; - } - - .xl\:rounded-tl-sm { - border-top-left-radius: 0.125rem; - } - - .xl\:rounded-tr-sm { - border-top-right-radius: 0.125rem; - } - - .xl\:rounded-br-sm { - border-bottom-right-radius: 0.125rem; - } - - .xl\:rounded-bl-sm { - border-bottom-left-radius: 0.125rem; - } - - .xl\:rounded-tl { - border-top-left-radius: 0.25rem; - } - - .xl\:rounded-tr { - border-top-right-radius: 0.25rem; - } - - .xl\:rounded-br { - border-bottom-right-radius: 0.25rem; - } - - .xl\:rounded-bl { - border-bottom-left-radius: 0.25rem; - } - - .xl\:rounded-tl-lg { - border-top-left-radius: 0.5rem; - } - - .xl\:rounded-tr-lg { - border-top-right-radius: 0.5rem; - } - - .xl\:rounded-br-lg { - border-bottom-right-radius: 0.5rem; - } - - .xl\:rounded-bl-lg { - border-bottom-left-radius: 0.5rem; - } - - .xl\:rounded-tl-full { - border-top-left-radius: 9999px; - } - - .xl\:rounded-tr-full { - border-top-right-radius: 9999px; - } - - .xl\:rounded-br-full { - border-bottom-right-radius: 9999px; - } - - .xl\:rounded-bl-full { - border-bottom-left-radius: 9999px; - } - - .xl\:border-solid { - border-style: solid; - } - - .xl\:border-dashed { - border-style: dashed; - } - - .xl\:border-dotted { - border-style: dotted; - } - - .xl\:border-none { - border-style: none; - } - - .xl\:border-0 { - border-width: 0; - } - - .xl\:border-2 { - border-width: 2px; - } - - .xl\:border-4 { - border-width: 4px; - } - - .xl\:border-8 { - border-width: 8px; - } - - .xl\:border { - border-width: 1px; - } - - .xl\:border-t-0 { - border-top-width: 0; - } - - .xl\:border-r-0 { - border-right-width: 0; - } - - .xl\:border-b-0 { - border-bottom-width: 0; - } - - .xl\:border-l-0 { - border-left-width: 0; - } - - .xl\:border-t-2 { - border-top-width: 2px; - } - - .xl\:border-r-2 { - border-right-width: 2px; - } - - .xl\:border-b-2 { - border-bottom-width: 2px; - } - - .xl\:border-l-2 { - border-left-width: 2px; - } - - .xl\:border-t-4 { - border-top-width: 4px; - } - - .xl\:border-r-4 { - border-right-width: 4px; - } - - .xl\:border-b-4 { - border-bottom-width: 4px; - } - - .xl\:border-l-4 { - border-left-width: 4px; - } - - .xl\:border-t-8 { - border-top-width: 8px; - } - - .xl\:border-r-8 { - border-right-width: 8px; - } - - .xl\:border-b-8 { - border-bottom-width: 8px; - } - - .xl\:border-l-8 { - border-left-width: 8px; - } - - .xl\:border-t { - border-top-width: 1px; - } - - .xl\:border-r { - border-right-width: 1px; - } - - .xl\:border-b { - border-bottom-width: 1px; - } - - .xl\:border-l { - border-left-width: 1px; - } - - .xl\:cursor-auto { - cursor: auto; - } - - .xl\:cursor-default { - cursor: default; - } - - .xl\:cursor-pointer { - cursor: pointer; - } - - .xl\:cursor-wait { - cursor: wait; - } - - .xl\:cursor-text { - cursor: text; - } - - .xl\:cursor-move { - cursor: move; - } - - .xl\:cursor-not-allowed { - cursor: not-allowed; - } - - .xl\:block { - display: block; - } - - .xl\:inline-block { - display: inline-block; - } - - .xl\:inline { - display: inline; - } - - .xl\:flex { - display: flex; - } - - .xl\:inline-flex { - display: inline-flex; - } - - .xl\:table { - display: table; - } - - .xl\:table-row { - display: table-row; - } - - .xl\:table-cell { - display: table-cell; - } - - .xl\:hidden { - display: none; - } - - .xl\:flex-row { - flex-direction: row; - } - - .xl\:flex-row-reverse { - flex-direction: row-reverse; - } - - .xl\:flex-col { - flex-direction: column; - } - - .xl\:flex-col-reverse { - flex-direction: column-reverse; - } - - .xl\:flex-wrap { - flex-wrap: wrap; - } - - .xl\:flex-wrap-reverse { - flex-wrap: wrap-reverse; - } - - .xl\:flex-no-wrap { - flex-wrap: nowrap; - } - - .xl\:items-start { - align-items: flex-start; - } - - .xl\:items-end { - align-items: flex-end; - } - - .xl\:items-center { - align-items: center; - } - - .xl\:items-baseline { - align-items: baseline; - } - - .xl\:items-stretch { - align-items: stretch; - } - - .xl\:self-auto { - align-self: auto; - } - - .xl\:self-start { - align-self: flex-start; - } - - .xl\:self-end { - align-self: flex-end; - } - - .xl\:self-center { - align-self: center; - } - - .xl\:self-stretch { - align-self: stretch; - } - - .xl\:justify-start { - justify-content: flex-start; - } - - .xl\:justify-end { - justify-content: flex-end; - } - - .xl\:justify-center { - justify-content: center; - } - - .xl\:justify-between { - justify-content: space-between; - } - - .xl\:justify-around { - justify-content: space-around; - } - - .xl\:content-center { - align-content: center; - } - - .xl\:content-start { - align-content: flex-start; - } - - .xl\:content-end { - align-content: flex-end; - } - - .xl\:content-between { - align-content: space-between; - } - - .xl\:content-around { - align-content: space-around; - } - - .xl\:flex-1 { - flex: 1 1 0%; - } - - .xl\:flex-auto { - flex: 1 1 auto; - } - - .xl\:flex-initial { - flex: 0 1 auto; - } - - .xl\:flex-none { - flex: none; - } - - .xl\:flex-grow-0 { - flex-grow: 0; - } - - .xl\:flex-grow { - flex-grow: 1; - } - - .xl\:flex-shrink-0 { - flex-shrink: 0; - } - - .xl\:flex-shrink { - flex-shrink: 1; - } - - .xl\:order-1 { - order: 1; - } - - .xl\:order-2 { - order: 2; - } - - .xl\:order-3 { - order: 3; - } - - .xl\:order-4 { - order: 4; - } - - .xl\:order-5 { - order: 5; - } - - .xl\:order-6 { - order: 6; - } - - .xl\:order-7 { - order: 7; - } - - .xl\:order-8 { - order: 8; - } - - .xl\:order-9 { - order: 9; - } - - .xl\:order-10 { - order: 10; - } - - .xl\:order-11 { - order: 11; - } - - .xl\:order-12 { - order: 12; - } - - .xl\:order-first { - order: -9999; - } - - .xl\:order-last { - order: 9999; - } - - .xl\:order-none { - order: 0; - } - - .xl\:float-right { - float: right; - } - - .xl\:float-left { - float: left; - } - - .xl\:float-none { - float: none; - } - - .xl\:clearfix:after { - content: ""; - display: table; - clear: both; - } - - .xl\:font-sans { - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } - - .xl\:font-serif { - font-family: Georgia, Cambria, "Times New Roman", Times, serif; - } - - .xl\:font-mono { - font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - } - - .xl\:font-hairline { - font-weight: 100; - } - - .xl\:font-thin { - font-weight: 200; - } - - .xl\:font-light { - font-weight: 300; - } - - .xl\:font-normal { - font-weight: 400; - } - - .xl\:font-medium { - font-weight: 500; - } - - .xl\:font-semibold { - font-weight: 600; - } - - .xl\:font-bold { - font-weight: 700; - } - - .xl\:font-extrabold { - font-weight: 800; - } - - .xl\:font-black { - font-weight: 900; - } - - .xl\:hover\:font-hairline:hover { - font-weight: 100; - } - - .xl\:hover\:font-thin:hover { - font-weight: 200; - } - - .xl\:hover\:font-light:hover { - font-weight: 300; - } - - .xl\:hover\:font-normal:hover { - font-weight: 400; - } - - .xl\:hover\:font-medium:hover { - font-weight: 500; - } - - .xl\:hover\:font-semibold:hover { - font-weight: 600; - } - - .xl\:hover\:font-bold:hover { - font-weight: 700; - } - - .xl\:hover\:font-extrabold:hover { - font-weight: 800; - } - - .xl\:hover\:font-black:hover { - font-weight: 900; - } - - .xl\:focus\:font-hairline:focus { - font-weight: 100; - } - - .xl\:focus\:font-thin:focus { - font-weight: 200; - } - - .xl\:focus\:font-light:focus { - font-weight: 300; - } - - .xl\:focus\:font-normal:focus { - font-weight: 400; - } - - .xl\:focus\:font-medium:focus { - font-weight: 500; - } - - .xl\:focus\:font-semibold:focus { - font-weight: 600; - } - - .xl\:focus\:font-bold:focus { - font-weight: 700; - } - - .xl\:focus\:font-extrabold:focus { - font-weight: 800; - } - - .xl\:focus\:font-black:focus { - font-weight: 900; - } - - .xl\:h-0 { - height: 0; - } - - .xl\:h-1 { - height: 0.25rem; - } - - .xl\:h-2 { - height: 0.5rem; - } - - .xl\:h-3 { - height: 0.75rem; - } - - .xl\:h-4 { - height: 1rem; - } - - .xl\:h-5 { - height: 1.25rem; - } - - .xl\:h-6 { - height: 1.5rem; - } - - .xl\:h-8 { - height: 2rem; - } - - .xl\:h-10 { - height: 2.5rem; - } - - .xl\:h-12 { - height: 3rem; - } - - .xl\:h-16 { - height: 4rem; - } - - .xl\:h-20 { - height: 5rem; - } - - .xl\:h-24 { - height: 6rem; - } - - .xl\:h-32 { - height: 8rem; - } - - .xl\:h-40 { - height: 10rem; - } - - .xl\:h-48 { - height: 12rem; - } - - .xl\:h-56 { - height: 14rem; - } - - .xl\:h-64 { - height: 16rem; - } - - .xl\:h-auto { - height: auto; - } - - .xl\:h-px { - height: 1px; - } - - .xl\:h-full { - height: 100%; - } - - .xl\:h-screen { - height: 100vh; - } - - .xl\:leading-none { - line-height: 1; - } - - .xl\:leading-tight { - line-height: 1.25; - } - - .xl\:leading-snug { - line-height: 1.375; - } - - .xl\:leading-normal { - line-height: 1.5; - } - - .xl\:leading-relaxed { - line-height: 1.625; - } - - .xl\:leading-loose { - line-height: 2; - } - - .xl\:list-inside { - list-style-position: inside; - } - - .xl\:list-outside { - list-style-position: outside; - } - - .xl\:list-none { - list-style-type: none; - } - - .xl\:list-disc { - list-style-type: disc; - } - - .xl\:list-decimal { - list-style-type: decimal; - } - - .xl\:m-0 { - margin: 0; - } - - .xl\:m-1 { - margin: 0.25rem; - } - - .xl\:m-2 { - margin: 0.5rem; - } - - .xl\:m-3 { - margin: 0.75rem; - } - - .xl\:m-4 { - margin: 1rem; - } - - .xl\:m-5 { - margin: 1.25rem; - } - - .xl\:m-6 { - margin: 1.5rem; - } - - .xl\:m-8 { - margin: 2rem; - } - - .xl\:m-10 { - margin: 2.5rem; - } - - .xl\:m-12 { - margin: 3rem; - } - - .xl\:m-16 { - margin: 4rem; - } - - .xl\:m-20 { - margin: 5rem; - } - - .xl\:m-24 { - margin: 6rem; - } - - .xl\:m-32 { - margin: 8rem; - } - - .xl\:m-40 { - margin: 10rem; - } - - .xl\:m-48 { - margin: 12rem; - } - - .xl\:m-56 { - margin: 14rem; - } - - .xl\:m-64 { - margin: 16rem; - } - - .xl\:m-auto { - margin: auto; - } - - .xl\:m-px { - margin: 1px; - } - - .xl\:-m-1 { - margin: -0.25rem; - } - - .xl\:-m-2 { - margin: -0.5rem; - } - - .xl\:-m-3 { - margin: -0.75rem; - } - - .xl\:-m-4 { - margin: -1rem; - } - - .xl\:-m-5 { - margin: -1.25rem; - } - - .xl\:-m-6 { - margin: -1.5rem; - } - - .xl\:-m-8 { - margin: -2rem; - } - - .xl\:-m-10 { - margin: -2.5rem; - } - - .xl\:-m-12 { - margin: -3rem; - } - - .xl\:-m-16 { - margin: -4rem; - } - - .xl\:-m-20 { - margin: -5rem; - } - - .xl\:-m-24 { - margin: -6rem; - } - - .xl\:-m-32 { - margin: -8rem; - } - - .xl\:-m-40 { - margin: -10rem; - } - - .xl\:-m-48 { - margin: -12rem; - } - - .xl\:-m-56 { - margin: -14rem; - } - - .xl\:-m-64 { - margin: -16rem; - } - - .xl\:-m-px { - margin: -1px; - } - - .xl\:my-0 { - margin-top: 0; - margin-bottom: 0; - } - - .xl\:mx-0 { - margin-left: 0; - margin-right: 0; - } - - .xl\:my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; - } - - .xl\:mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; - } - - .xl\:my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; - } - - .xl\:mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - - .xl\:my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; - } - - .xl\:mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; - } - - .xl\:my-4 { - margin-top: 1rem; - margin-bottom: 1rem; - } - - .xl\:mx-4 { - margin-left: 1rem; - margin-right: 1rem; - } - - .xl\:my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; - } - - .xl\:mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; - } - - .xl\:my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; - } - - .xl\:mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - - .xl\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .xl\:mx-8 { - margin-left: 2rem; - margin-right: 2rem; - } - - .xl\:my-10 { - margin-top: 2.5rem; - margin-bottom: 2.5rem; - } - - .xl\:mx-10 { - margin-left: 2.5rem; - margin-right: 2.5rem; - } - - .xl\:my-12 { - margin-top: 3rem; - margin-bottom: 3rem; - } - - .xl\:mx-12 { - margin-left: 3rem; - margin-right: 3rem; - } - - .xl\:my-16 { - margin-top: 4rem; - margin-bottom: 4rem; - } - - .xl\:mx-16 { - margin-left: 4rem; - margin-right: 4rem; - } - - .xl\:my-20 { - margin-top: 5rem; - margin-bottom: 5rem; - } - - .xl\:mx-20 { - margin-left: 5rem; - margin-right: 5rem; - } - - .xl\:my-24 { - margin-top: 6rem; - margin-bottom: 6rem; - } - - .xl\:mx-24 { - margin-left: 6rem; - margin-right: 6rem; - } - - .xl\:my-32 { - margin-top: 8rem; - margin-bottom: 8rem; - } - - .xl\:mx-32 { - margin-left: 8rem; - margin-right: 8rem; - } - - .xl\:my-40 { - margin-top: 10rem; - margin-bottom: 10rem; - } - - .xl\:mx-40 { - margin-left: 10rem; - margin-right: 10rem; - } - - .xl\:my-48 { - margin-top: 12rem; - margin-bottom: 12rem; - } - - .xl\:mx-48 { - margin-left: 12rem; - margin-right: 12rem; - } - - .xl\:my-56 { - margin-top: 14rem; - margin-bottom: 14rem; - } - - .xl\:mx-56 { - margin-left: 14rem; - margin-right: 14rem; - } - - .xl\:my-64 { - margin-top: 16rem; - margin-bottom: 16rem; - } - - .xl\:mx-64 { - margin-left: 16rem; - margin-right: 16rem; - } - - .xl\:my-auto { - margin-top: auto; - margin-bottom: auto; - } - - .xl\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .xl\:my-px { - margin-top: 1px; - margin-bottom: 1px; - } - - .xl\:mx-px { - margin-left: 1px; - margin-right: 1px; - } - - .xl\:-my-1 { - margin-top: -0.25rem; - margin-bottom: -0.25rem; - } - - .xl\:-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; - } - - .xl\:-my-2 { - margin-top: -0.5rem; - margin-bottom: -0.5rem; - } - - .xl\:-mx-2 { - margin-left: -0.5rem; - margin-right: -0.5rem; - } - - .xl\:-my-3 { - margin-top: -0.75rem; - margin-bottom: -0.75rem; - } - - .xl\:-mx-3 { - margin-left: -0.75rem; - margin-right: -0.75rem; - } - - .xl\:-my-4 { - margin-top: -1rem; - margin-bottom: -1rem; - } - - .xl\:-mx-4 { - margin-left: -1rem; - margin-right: -1rem; - } - - .xl\:-my-5 { - margin-top: -1.25rem; - margin-bottom: -1.25rem; - } - - .xl\:-mx-5 { - margin-left: -1.25rem; - margin-right: -1.25rem; - } - - .xl\:-my-6 { - margin-top: -1.5rem; - margin-bottom: -1.5rem; - } - - .xl\:-mx-6 { - margin-left: -1.5rem; - margin-right: -1.5rem; - } - - .xl\:-my-8 { - margin-top: -2rem; - margin-bottom: -2rem; - } - - .xl\:-mx-8 { - margin-left: -2rem; - margin-right: -2rem; - } - - .xl\:-my-10 { - margin-top: -2.5rem; - margin-bottom: -2.5rem; - } - - .xl\:-mx-10 { - margin-left: -2.5rem; - margin-right: -2.5rem; - } - - .xl\:-my-12 { - margin-top: -3rem; - margin-bottom: -3rem; - } - - .xl\:-mx-12 { - margin-left: -3rem; - margin-right: -3rem; - } - - .xl\:-my-16 { - margin-top: -4rem; - margin-bottom: -4rem; - } - - .xl\:-mx-16 { - margin-left: -4rem; - margin-right: -4rem; - } - - .xl\:-my-20 { - margin-top: -5rem; - margin-bottom: -5rem; - } - - .xl\:-mx-20 { - margin-left: -5rem; - margin-right: -5rem; - } - - .xl\:-my-24 { - margin-top: -6rem; - margin-bottom: -6rem; - } - - .xl\:-mx-24 { - margin-left: -6rem; - margin-right: -6rem; - } - - .xl\:-my-32 { - margin-top: -8rem; - margin-bottom: -8rem; - } - - .xl\:-mx-32 { - margin-left: -8rem; - margin-right: -8rem; - } - - .xl\:-my-40 { - margin-top: -10rem; - margin-bottom: -10rem; - } - - .xl\:-mx-40 { - margin-left: -10rem; - margin-right: -10rem; - } - - .xl\:-my-48 { - margin-top: -12rem; - margin-bottom: -12rem; - } - - .xl\:-mx-48 { - margin-left: -12rem; - margin-right: -12rem; - } - - .xl\:-my-56 { - margin-top: -14rem; - margin-bottom: -14rem; - } - - .xl\:-mx-56 { - margin-left: -14rem; - margin-right: -14rem; - } - - .xl\:-my-64 { - margin-top: -16rem; - margin-bottom: -16rem; - } - - .xl\:-mx-64 { - margin-left: -16rem; - margin-right: -16rem; - } - - .xl\:-my-px { - margin-top: -1px; - margin-bottom: -1px; - } - - .xl\:-mx-px { - margin-left: -1px; - margin-right: -1px; - } - - .xl\:mt-0 { - margin-top: 0; - } - - .xl\:mr-0 { - margin-right: 0; - } - - .xl\:mb-0 { - margin-bottom: 0; - } - - .xl\:ml-0 { - margin-left: 0; - } - - .xl\:mt-1 { - margin-top: 0.25rem; - } - - .xl\:mr-1 { - margin-right: 0.25rem; - } - - .xl\:mb-1 { - margin-bottom: 0.25rem; - } - - .xl\:ml-1 { - margin-left: 0.25rem; - } - - .xl\:mt-2 { - margin-top: 0.5rem; - } - - .xl\:mr-2 { - margin-right: 0.5rem; - } - - .xl\:mb-2 { - margin-bottom: 0.5rem; - } - - .xl\:ml-2 { - margin-left: 0.5rem; - } - - .xl\:mt-3 { - margin-top: 0.75rem; - } - - .xl\:mr-3 { - margin-right: 0.75rem; - } - - .xl\:mb-3 { - margin-bottom: 0.75rem; - } - - .xl\:ml-3 { - margin-left: 0.75rem; - } - - .xl\:mt-4 { - margin-top: 1rem; - } - - .xl\:mr-4 { - margin-right: 1rem; - } - - .xl\:mb-4 { - margin-bottom: 1rem; - } - - .xl\:ml-4 { - margin-left: 1rem; - } - - .xl\:mt-5 { - margin-top: 1.25rem; - } - - .xl\:mr-5 { - margin-right: 1.25rem; - } - - .xl\:mb-5 { - margin-bottom: 1.25rem; - } - - .xl\:ml-5 { - margin-left: 1.25rem; - } - - .xl\:mt-6 { - margin-top: 1.5rem; - } - - .xl\:mr-6 { - margin-right: 1.5rem; - } - - .xl\:mb-6 { - margin-bottom: 1.5rem; - } - - .xl\:ml-6 { - margin-left: 1.5rem; - } - - .xl\:mt-8 { - margin-top: 2rem; - } - - .xl\:mr-8 { - margin-right: 2rem; - } - - .xl\:mb-8 { - margin-bottom: 2rem; - } - - .xl\:ml-8 { - margin-left: 2rem; - } - - .xl\:mt-10 { - margin-top: 2.5rem; - } - - .xl\:mr-10 { - margin-right: 2.5rem; - } - - .xl\:mb-10 { - margin-bottom: 2.5rem; - } - - .xl\:ml-10 { - margin-left: 2.5rem; - } - - .xl\:mt-12 { - margin-top: 3rem; - } - - .xl\:mr-12 { - margin-right: 3rem; - } - - .xl\:mb-12 { - margin-bottom: 3rem; - } - - .xl\:ml-12 { - margin-left: 3rem; - } - - .xl\:mt-16 { - margin-top: 4rem; - } - - .xl\:mr-16 { - margin-right: 4rem; - } - - .xl\:mb-16 { - margin-bottom: 4rem; - } - - .xl\:ml-16 { - margin-left: 4rem; - } - - .xl\:mt-20 { - margin-top: 5rem; - } - - .xl\:mr-20 { - margin-right: 5rem; - } - - .xl\:mb-20 { - margin-bottom: 5rem; - } - - .xl\:ml-20 { - margin-left: 5rem; - } - - .xl\:mt-24 { - margin-top: 6rem; - } - - .xl\:mr-24 { - margin-right: 6rem; - } - - .xl\:mb-24 { - margin-bottom: 6rem; - } - - .xl\:ml-24 { - margin-left: 6rem; - } - - .xl\:mt-32 { - margin-top: 8rem; - } - - .xl\:mr-32 { - margin-right: 8rem; - } - - .xl\:mb-32 { - margin-bottom: 8rem; - } - - .xl\:ml-32 { - margin-left: 8rem; - } - - .xl\:mt-40 { - margin-top: 10rem; - } - - .xl\:mr-40 { - margin-right: 10rem; - } - - .xl\:mb-40 { - margin-bottom: 10rem; - } - - .xl\:ml-40 { - margin-left: 10rem; - } - - .xl\:mt-48 { - margin-top: 12rem; - } - - .xl\:mr-48 { - margin-right: 12rem; - } - - .xl\:mb-48 { - margin-bottom: 12rem; - } - - .xl\:ml-48 { - margin-left: 12rem; - } - - .xl\:mt-56 { - margin-top: 14rem; - } - - .xl\:mr-56 { - margin-right: 14rem; - } - - .xl\:mb-56 { - margin-bottom: 14rem; - } - - .xl\:ml-56 { - margin-left: 14rem; - } - - .xl\:mt-64 { - margin-top: 16rem; - } - - .xl\:mr-64 { - margin-right: 16rem; - } - - .xl\:mb-64 { - margin-bottom: 16rem; - } - - .xl\:ml-64 { - margin-left: 16rem; - } - - .xl\:mt-auto { - margin-top: auto; - } - - .xl\:mr-auto { - margin-right: auto; - } - - .xl\:mb-auto { - margin-bottom: auto; - } - - .xl\:ml-auto { - margin-left: auto; - } - - .xl\:mt-px { - margin-top: 1px; - } - - .xl\:mr-px { - margin-right: 1px; - } - - .xl\:mb-px { - margin-bottom: 1px; - } - - .xl\:ml-px { - margin-left: 1px; - } - - .xl\:-mt-1 { - margin-top: -0.25rem; - } - - .xl\:-mr-1 { - margin-right: -0.25rem; - } - - .xl\:-mb-1 { - margin-bottom: -0.25rem; - } - - .xl\:-ml-1 { - margin-left: -0.25rem; - } - - .xl\:-mt-2 { - margin-top: -0.5rem; - } - - .xl\:-mr-2 { - margin-right: -0.5rem; - } - - .xl\:-mb-2 { - margin-bottom: -0.5rem; - } - - .xl\:-ml-2 { - margin-left: -0.5rem; - } - - .xl\:-mt-3 { - margin-top: -0.75rem; - } - - .xl\:-mr-3 { - margin-right: -0.75rem; - } - - .xl\:-mb-3 { - margin-bottom: -0.75rem; - } - - .xl\:-ml-3 { - margin-left: -0.75rem; - } - - .xl\:-mt-4 { - margin-top: -1rem; - } - - .xl\:-mr-4 { - margin-right: -1rem; - } - - .xl\:-mb-4 { - margin-bottom: -1rem; - } - - .xl\:-ml-4 { - margin-left: -1rem; - } - - .xl\:-mt-5 { - margin-top: -1.25rem; - } - - .xl\:-mr-5 { - margin-right: -1.25rem; - } - - .xl\:-mb-5 { - margin-bottom: -1.25rem; - } - - .xl\:-ml-5 { - margin-left: -1.25rem; - } - - .xl\:-mt-6 { - margin-top: -1.5rem; - } - - .xl\:-mr-6 { - margin-right: -1.5rem; - } - - .xl\:-mb-6 { - margin-bottom: -1.5rem; - } - - .xl\:-ml-6 { - margin-left: -1.5rem; - } - - .xl\:-mt-8 { - margin-top: -2rem; - } - - .xl\:-mr-8 { - margin-right: -2rem; - } - - .xl\:-mb-8 { - margin-bottom: -2rem; - } - - .xl\:-ml-8 { - margin-left: -2rem; - } - - .xl\:-mt-10 { - margin-top: -2.5rem; - } - - .xl\:-mr-10 { - margin-right: -2.5rem; - } - - .xl\:-mb-10 { - margin-bottom: -2.5rem; - } - - .xl\:-ml-10 { - margin-left: -2.5rem; - } - - .xl\:-mt-12 { - margin-top: -3rem; - } - - .xl\:-mr-12 { - margin-right: -3rem; - } - - .xl\:-mb-12 { - margin-bottom: -3rem; - } - - .xl\:-ml-12 { - margin-left: -3rem; - } - - .xl\:-mt-16 { - margin-top: -4rem; - } - - .xl\:-mr-16 { - margin-right: -4rem; - } - - .xl\:-mb-16 { - margin-bottom: -4rem; - } - - .xl\:-ml-16 { - margin-left: -4rem; - } - - .xl\:-mt-20 { - margin-top: -5rem; - } - - .xl\:-mr-20 { - margin-right: -5rem; - } - - .xl\:-mb-20 { - margin-bottom: -5rem; - } - - .xl\:-ml-20 { - margin-left: -5rem; - } - - .xl\:-mt-24 { - margin-top: -6rem; - } - - .xl\:-mr-24 { - margin-right: -6rem; - } - - .xl\:-mb-24 { - margin-bottom: -6rem; - } - - .xl\:-ml-24 { - margin-left: -6rem; - } - - .xl\:-mt-32 { - margin-top: -8rem; - } - - .xl\:-mr-32 { - margin-right: -8rem; - } - - .xl\:-mb-32 { - margin-bottom: -8rem; - } - - .xl\:-ml-32 { - margin-left: -8rem; - } - - .xl\:-mt-40 { - margin-top: -10rem; - } - - .xl\:-mr-40 { - margin-right: -10rem; - } - - .xl\:-mb-40 { - margin-bottom: -10rem; - } - - .xl\:-ml-40 { - margin-left: -10rem; - } - - .xl\:-mt-48 { - margin-top: -12rem; - } - - .xl\:-mr-48 { - margin-right: -12rem; - } - - .xl\:-mb-48 { - margin-bottom: -12rem; - } - - .xl\:-ml-48 { - margin-left: -12rem; - } - - .xl\:-mt-56 { - margin-top: -14rem; - } - - .xl\:-mr-56 { - margin-right: -14rem; - } - - .xl\:-mb-56 { - margin-bottom: -14rem; - } - - .xl\:-ml-56 { - margin-left: -14rem; - } - - .xl\:-mt-64 { - margin-top: -16rem; - } - - .xl\:-mr-64 { - margin-right: -16rem; - } - - .xl\:-mb-64 { - margin-bottom: -16rem; - } - - .xl\:-ml-64 { - margin-left: -16rem; - } - - .xl\:-mt-px { - margin-top: -1px; - } - - .xl\:-mr-px { - margin-right: -1px; - } - - .xl\:-mb-px { - margin-bottom: -1px; - } - - .xl\:-ml-px { - margin-left: -1px; - } - - .xl\:max-h-full { - max-height: 100%; - } - - .xl\:max-h-screen { - max-height: 100vh; - } - - .xl\:max-w-xs { - max-width: 20rem; - } - - .xl\:max-w-sm { - max-width: 24rem; - } - - .xl\:max-w-md { - max-width: 28rem; - } - - .xl\:max-w-lg { - max-width: 32rem; - } - - .xl\:max-w-xl { - max-width: 36rem; - } - - .xl\:max-w-2xl { - max-width: 42rem; - } - - .xl\:max-w-3xl { - max-width: 48rem; - } - - .xl\:max-w-4xl { - max-width: 56rem; - } - - .xl\:max-w-5xl { - max-width: 64rem; - } - - .xl\:max-w-6xl { - max-width: 72rem; - } - - .xl\:max-w-full { - max-width: 100%; - } - - .xl\:min-h-0 { - min-height: 0; - } - - .xl\:min-h-full { - min-height: 100%; - } - - .xl\:min-h-screen { - min-height: 100vh; - } - - .xl\:min-w-0 { - min-width: 0; - } - - .xl\:min-w-full { - min-width: 100%; - } - - .xl\:object-contain { - -o-object-fit: contain; - object-fit: contain; - } - - .xl\:object-cover { - -o-object-fit: cover; - object-fit: cover; - } - - .xl\:object-fill { - -o-object-fit: fill; - object-fit: fill; - } - - .xl\:object-none { - -o-object-fit: none; - object-fit: none; - } - - .xl\:object-scale-down { - -o-object-fit: scale-down; - object-fit: scale-down; - } - - .xl\:object-bottom { - -o-object-position: bottom; - object-position: bottom; - } - - .xl\:object-center { - -o-object-position: center; - object-position: center; - } - - .xl\:object-left { - -o-object-position: left; - object-position: left; - } - - .xl\:object-left-bottom { - -o-object-position: left bottom; - object-position: left bottom; - } - - .xl\:object-left-top { - -o-object-position: left top; - object-position: left top; - } - - .xl\:object-right { - -o-object-position: right; - object-position: right; - } - - .xl\:object-right-bottom { - -o-object-position: right bottom; - object-position: right bottom; - } - - .xl\:object-right-top { - -o-object-position: right top; - object-position: right top; - } - - .xl\:object-top { - -o-object-position: top; - object-position: top; - } - - .xl\:opacity-0 { - opacity: 0; - } - - .xl\:opacity-25 { - opacity: 0.25; - } - - .xl\:opacity-50 { - opacity: 0.5; - } - - .xl\:opacity-75 { - opacity: 0.75; - } - - .xl\:opacity-100 { - opacity: 1; - } - - .xl\:outline-none { - outline: 0; - } - - .xl\:focus\:outline-none:focus { - outline: 0; - } - - .xl\:overflow-auto { - overflow: auto; - } - - .xl\:overflow-hidden { - overflow: hidden; - } - - .xl\:overflow-visible { - overflow: visible; - } - - .xl\:overflow-scroll { - overflow: scroll; - } - - .xl\:overflow-x-auto { - overflow-x: auto; - } - - .xl\:overflow-y-auto { - overflow-y: auto; - } - - .xl\:overflow-x-hidden { - overflow-x: hidden; - } - - .xl\:overflow-y-hidden { - overflow-y: hidden; - } - - .xl\:overflow-x-visible { - overflow-x: visible; - } - - .xl\:overflow-y-visible { - overflow-y: visible; - } - - .xl\:overflow-x-scroll { - overflow-x: scroll; - } - - .xl\:overflow-y-scroll { - overflow-y: scroll; - } - - .xl\:scrolling-touch { - -webkit-overflow-scrolling: touch; - } - - .xl\:scrolling-auto { - -webkit-overflow-scrolling: auto; - } - - .xl\:p-0 { - padding: 0; - } - - .xl\:p-1 { - padding: 0.25rem; - } - - .xl\:p-2 { - padding: 0.5rem; - } - - .xl\:p-3 { - padding: 0.75rem; - } - - .xl\:p-4 { - padding: 1rem; - } - - .xl\:p-5 { - padding: 1.25rem; - } - - .xl\:p-6 { - padding: 1.5rem; - } - - .xl\:p-8 { - padding: 2rem; - } - - .xl\:p-10 { - padding: 2.5rem; - } - - .xl\:p-12 { - padding: 3rem; - } - - .xl\:p-16 { - padding: 4rem; - } - - .xl\:p-20 { - padding: 5rem; - } - - .xl\:p-24 { - padding: 6rem; - } - - .xl\:p-32 { - padding: 8rem; - } - - .xl\:p-40 { - padding: 10rem; - } - - .xl\:p-48 { - padding: 12rem; - } - - .xl\:p-56 { - padding: 14rem; - } - - .xl\:p-64 { - padding: 16rem; - } - - .xl\:p-px { - padding: 1px; - } - - .xl\:py-0 { - padding-top: 0; - padding-bottom: 0; - } - - .xl\:px-0 { - padding-left: 0; - padding-right: 0; - } - - .xl\:py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - - .xl\:px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; - } - - .xl\:py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - } - - .xl\:px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - - .xl\:py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; - } - - .xl\:px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; - } - - .xl\:py-4 { - padding-top: 1rem; - padding-bottom: 1rem; - } - - .xl\:px-4 { - padding-left: 1rem; - padding-right: 1rem; - } - - .xl\:py-5 { - padding-top: 1.25rem; - padding-bottom: 1.25rem; - } - - .xl\:px-5 { - padding-left: 1.25rem; - padding-right: 1.25rem; - } - - .xl\:py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; - } - - .xl\:px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; - } - - .xl\:py-8 { - padding-top: 2rem; - padding-bottom: 2rem; - } - - .xl\:px-8 { - padding-left: 2rem; - padding-right: 2rem; - } - - .xl\:py-10 { - padding-top: 2.5rem; - padding-bottom: 2.5rem; - } - - .xl\:px-10 { - padding-left: 2.5rem; - padding-right: 2.5rem; - } - - .xl\:py-12 { - padding-top: 3rem; - padding-bottom: 3rem; - } - - .xl\:px-12 { - padding-left: 3rem; - padding-right: 3rem; - } - - .xl\:py-16 { - padding-top: 4rem; - padding-bottom: 4rem; - } - - .xl\:px-16 { - padding-left: 4rem; - padding-right: 4rem; - } - - .xl\:py-20 { - padding-top: 5rem; - padding-bottom: 5rem; - } - - .xl\:px-20 { - padding-left: 5rem; - padding-right: 5rem; - } - - .xl\:py-24 { - padding-top: 6rem; - padding-bottom: 6rem; - } - - .xl\:px-24 { - padding-left: 6rem; - padding-right: 6rem; - } - - .xl\:py-32 { - padding-top: 8rem; - padding-bottom: 8rem; - } - - .xl\:px-32 { - padding-left: 8rem; - padding-right: 8rem; - } - - .xl\:py-40 { - padding-top: 10rem; - padding-bottom: 10rem; - } - - .xl\:px-40 { - padding-left: 10rem; - padding-right: 10rem; - } - - .xl\:py-48 { - padding-top: 12rem; - padding-bottom: 12rem; - } - - .xl\:px-48 { - padding-left: 12rem; - padding-right: 12rem; - } - - .xl\:py-56 { - padding-top: 14rem; - padding-bottom: 14rem; - } - - .xl\:px-56 { - padding-left: 14rem; - padding-right: 14rem; - } - - .xl\:py-64 { - padding-top: 16rem; - padding-bottom: 16rem; - } - - .xl\:px-64 { - padding-left: 16rem; - padding-right: 16rem; - } - - .xl\:py-px { - padding-top: 1px; - padding-bottom: 1px; - } - - .xl\:px-px { - padding-left: 1px; - padding-right: 1px; - } - - .xl\:pt-0 { - padding-top: 0; - } - - .xl\:pr-0 { - padding-right: 0; - } - - .xl\:pb-0 { - padding-bottom: 0; - } - - .xl\:pl-0 { - padding-left: 0; - } - - .xl\:pt-1 { - padding-top: 0.25rem; - } - - .xl\:pr-1 { - padding-right: 0.25rem; - } - - .xl\:pb-1 { - padding-bottom: 0.25rem; - } - - .xl\:pl-1 { - padding-left: 0.25rem; - } - - .xl\:pt-2 { - padding-top: 0.5rem; - } - - .xl\:pr-2 { - padding-right: 0.5rem; - } - - .xl\:pb-2 { - padding-bottom: 0.5rem; - } - - .xl\:pl-2 { - padding-left: 0.5rem; - } - - .xl\:pt-3 { - padding-top: 0.75rem; - } - - .xl\:pr-3 { - padding-right: 0.75rem; - } - - .xl\:pb-3 { - padding-bottom: 0.75rem; - } - - .xl\:pl-3 { - padding-left: 0.75rem; - } - - .xl\:pt-4 { - padding-top: 1rem; - } - - .xl\:pr-4 { - padding-right: 1rem; - } - - .xl\:pb-4 { - padding-bottom: 1rem; - } - - .xl\:pl-4 { - padding-left: 1rem; - } - - .xl\:pt-5 { - padding-top: 1.25rem; - } - - .xl\:pr-5 { - padding-right: 1.25rem; - } - - .xl\:pb-5 { - padding-bottom: 1.25rem; - } - - .xl\:pl-5 { - padding-left: 1.25rem; - } - - .xl\:pt-6 { - padding-top: 1.5rem; - } - - .xl\:pr-6 { - padding-right: 1.5rem; - } - - .xl\:pb-6 { - padding-bottom: 1.5rem; - } - - .xl\:pl-6 { - padding-left: 1.5rem; - } - - .xl\:pt-8 { - padding-top: 2rem; - } - - .xl\:pr-8 { - padding-right: 2rem; - } - - .xl\:pb-8 { - padding-bottom: 2rem; - } - - .xl\:pl-8 { - padding-left: 2rem; - } - - .xl\:pt-10 { - padding-top: 2.5rem; - } - - .xl\:pr-10 { - padding-right: 2.5rem; - } - - .xl\:pb-10 { - padding-bottom: 2.5rem; - } - - .xl\:pl-10 { - padding-left: 2.5rem; - } - - .xl\:pt-12 { - padding-top: 3rem; - } - - .xl\:pr-12 { - padding-right: 3rem; - } - - .xl\:pb-12 { - padding-bottom: 3rem; - } - - .xl\:pl-12 { - padding-left: 3rem; - } - - .xl\:pt-16 { - padding-top: 4rem; - } - - .xl\:pr-16 { - padding-right: 4rem; - } - - .xl\:pb-16 { - padding-bottom: 4rem; - } - - .xl\:pl-16 { - padding-left: 4rem; - } - - .xl\:pt-20 { - padding-top: 5rem; - } - - .xl\:pr-20 { - padding-right: 5rem; - } - - .xl\:pb-20 { - padding-bottom: 5rem; - } - - .xl\:pl-20 { - padding-left: 5rem; - } - - .xl\:pt-24 { - padding-top: 6rem; - } - - .xl\:pr-24 { - padding-right: 6rem; - } - - .xl\:pb-24 { - padding-bottom: 6rem; - } - - .xl\:pl-24 { - padding-left: 6rem; - } - - .xl\:pt-32 { - padding-top: 8rem; - } - - .xl\:pr-32 { - padding-right: 8rem; - } - - .xl\:pb-32 { - padding-bottom: 8rem; - } - - .xl\:pl-32 { - padding-left: 8rem; - } - - .xl\:pt-40 { - padding-top: 10rem; - } - - .xl\:pr-40 { - padding-right: 10rem; - } - - .xl\:pb-40 { - padding-bottom: 10rem; - } - - .xl\:pl-40 { - padding-left: 10rem; - } - - .xl\:pt-48 { - padding-top: 12rem; - } - - .xl\:pr-48 { - padding-right: 12rem; - } - - .xl\:pb-48 { - padding-bottom: 12rem; - } - - .xl\:pl-48 { - padding-left: 12rem; - } - - .xl\:pt-56 { - padding-top: 14rem; - } - - .xl\:pr-56 { - padding-right: 14rem; - } - - .xl\:pb-56 { - padding-bottom: 14rem; - } - - .xl\:pl-56 { - padding-left: 14rem; - } - - .xl\:pt-64 { - padding-top: 16rem; - } - - .xl\:pr-64 { - padding-right: 16rem; - } - - .xl\:pb-64 { - padding-bottom: 16rem; - } - - .xl\:pl-64 { - padding-left: 16rem; - } - - .xl\:pt-px { - padding-top: 1px; - } - - .xl\:pr-px { - padding-right: 1px; - } - - .xl\:pb-px { - padding-bottom: 1px; - } - - .xl\:pl-px { - padding-left: 1px; - } - - .xl\:pointer-events-none { - pointer-events: none; - } - - .xl\:pointer-events-auto { - pointer-events: auto; - } - - .xl\:static { - position: static; - } - - .xl\:fixed { - position: fixed; - } - - .xl\:absolute { - position: absolute; - } - - .xl\:relative { - position: relative; - } - - .xl\:sticky { - position: -webkit-sticky; - position: sticky; - } - - .xl\:inset-0 { - top: 0; - right: 0; - bottom: 0; - left: 0; - } - - .xl\:inset-auto { - top: auto; - right: auto; - bottom: auto; - left: auto; - } - - .xl\:inset-y-0 { - top: 0; - bottom: 0; - } - - .xl\:inset-x-0 { - right: 0; - left: 0; - } - - .xl\:inset-y-auto { - top: auto; - bottom: auto; - } - - .xl\:inset-x-auto { - right: auto; - left: auto; - } - - .xl\:top-0 { - top: 0; - } - - .xl\:right-0 { - right: 0; - } - - .xl\:bottom-0 { - bottom: 0; - } - - .xl\:left-0 { - left: 0; - } - - .xl\:top-auto { - top: auto; - } - - .xl\:right-auto { - right: auto; - } - - .xl\:bottom-auto { - bottom: auto; - } - - .xl\:left-auto { - left: auto; - } - - .xl\:resize-none { - resize: none; - } - - .xl\:resize-y { - resize: vertical; - } - - .xl\:resize-x { - resize: horizontal; - } - - .xl\:resize { - resize: both; - } - - .xl\:shadow { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:shadow-md { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .xl\:shadow-lg { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .xl\:shadow-xl { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .xl\:shadow-2xl { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .xl\:shadow-inner { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:shadow-outline { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .xl\:shadow-none { - box-shadow: none; - } - - .xl\:hover\:shadow:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:hover\:shadow-md:hover { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .xl\:hover\:shadow-lg:hover { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .xl\:hover\:shadow-xl:hover { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .xl\:hover\:shadow-2xl:hover { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .xl\:hover\:shadow-inner:hover { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:hover\:shadow-outline:hover { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .xl\:hover\:shadow-none:hover { - box-shadow: none; - } - - .xl\:focus\:shadow:focus { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:focus\:shadow-md:focus { - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); - } - - .xl\:focus\:shadow-lg:focus { - box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); - } - - .xl\:focus\:shadow-xl:focus { - box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); - } - - .xl\:focus\:shadow-2xl:focus { - box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); - } - - .xl\:focus\:shadow-inner:focus { - box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); - } - - .xl\:focus\:shadow-outline:focus { - box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.5); - } - - .xl\:focus\:shadow-none:focus { - box-shadow: none; - } - - .xl\:fill-current { - fill: currentColor; - } - - .xl\:stroke-current { - stroke: currentColor; - } - - .xl\:table-auto { - table-layout: auto; - } - - .xl\:table-fixed { - table-layout: fixed; - } - - .xl\:text-left { - text-align: left; - } - - .xl\:text-center { - text-align: center; - } - - .xl\:text-right { - text-align: right; - } - - .xl\:text-justify { - text-align: justify; - } - - .xl\:text-transparent { - color: transparent; - } - - .xl\:text-black { - color: #000; - } - - .xl\:text-grey-darkest { - color: #3d4852; - } - - .xl\:text-grey-darker { - color: #606f7b; - } - - .xl\:text-grey-dark { - color: #8795a1; - } - - .xl\:text-grey { - color: #b8c2cc; - } - - .xl\:text-grey-light { - color: #dae1e7; - } - - .xl\:text-grey-lighter { - color: #f1f5f8; - } - - .xl\:text-grey-lightest { - color: #f8fafc; - } - - .xl\:text-white { - color: #fff; - } - - .xl\:text-snipline-green-darker { - color: #333510; - } - - .xl\:text-snipline-green-dark { - color: #94AB0D; - } - - .xl\:text-snipline-lime-light { - color: #e1f471; - } - - .xl\:text-snipline-lime { - color: #CDED15; - } - - .xl\:text-snipline-lime-dark { - color: #94AB0D; - } - - .xl\:text-snipline-green { - color: #15ED78; - } - - .xl\:text-snipline-yellow { - color: #EDE415; - } - - .xl\:text-snipline-grey-dark { - color: rgba(51, 53, 16, 0.8); - } - - .xl\:text-snipline-grey { - color: #EBF1EF; - } - - .xl\:text-snipline-grey-light { - color: #DAE1E7; - } - - .xl\:text-snipline-grey-lighter { - color: #E0E8EE; - } - - .xl\:text-success-100 { - color: #ECFBD7; - } - - .xl\:text-success-200 { - color: #D5F8B0; - } - - .xl\:text-success-300 { - color: #B3EC84; - } - - .xl\:text-success-400 { - color: #90D962; - } - - .xl\:text-success-500 { - color: #61C134; - } - - .xl\:text-success-600 { - color: #46A526; - } - - .xl\:text-success-700 { - color: #2F8A1A; - } - - .xl\:text-success-800 { - color: #1C6F10; - } - - .xl\:text-success-900 { - color: #0E5C09; - } - - .xl\:text-info-100 { - color: #DFF6FE; - } - - .xl\:text-info-200 { - color: #BFE9FE; - } - - .xl\:text-info-300 { - color: #9FD9FE; - } - - .xl\:text-info-400 { - color: #86CAFD; - } - - .xl\:text-info-500 { - color: #5FB0FC; - } - - .xl\:text-info-600 { - color: #4589D8; - } - - .xl\:text-info-700 { - color: #2F67B5; - } - - .xl\:text-info-800 { - color: #1E4892; - } - - .xl\:text-info-900 { - color: #123278; - } - - .xl\:text-danger-100 { - color: #FFEAD7; - } - - .xl\:text-danger-200 { - color: #FFD0B0; - } - - .xl\:text-danger-300 { - color: #FFB088; - } - - .xl\:text-danger-400 { - color: #FF916B; - } - - .xl\:text-danger-500 { - color: #FF5E3A; - } - - .xl\:text-danger-600 { - color: #DB3D2A; - } - - .xl\:text-danger-700 { - color: #B7221D; - } - - .xl\:text-danger-800 { - color: #931218; - } - - .xl\:text-danger-900 { - color: #7A0B18; - } - - .xl\:hover\:text-transparent:hover { - color: transparent; - } - - .xl\:hover\:text-black:hover { - color: #000; - } - - .xl\:hover\:text-grey-darkest:hover { - color: #3d4852; - } - - .xl\:hover\:text-grey-darker:hover { - color: #606f7b; - } - - .xl\:hover\:text-grey-dark:hover { - color: #8795a1; - } - - .xl\:hover\:text-grey:hover { - color: #b8c2cc; - } - - .xl\:hover\:text-grey-light:hover { - color: #dae1e7; - } - - .xl\:hover\:text-grey-lighter:hover { - color: #f1f5f8; - } - - .xl\:hover\:text-grey-lightest:hover { - color: #f8fafc; - } - - .xl\:hover\:text-white:hover { - color: #fff; - } - - .xl\:hover\:text-snipline-green-darker:hover { - color: #333510; - } - - .xl\:hover\:text-snipline-green-dark:hover { - color: #94AB0D; - } - - .xl\:hover\:text-snipline-lime-light:hover { - color: #e1f471; - } - - .xl\:hover\:text-snipline-lime:hover { - color: #CDED15; - } - - .xl\:hover\:text-snipline-lime-dark:hover { - color: #94AB0D; - } - - .xl\:hover\:text-snipline-green:hover { - color: #15ED78; - } - - .xl\:hover\:text-snipline-yellow:hover { - color: #EDE415; - } - - .xl\:hover\:text-snipline-grey-dark:hover { - color: rgba(51, 53, 16, 0.8); - } - - .xl\:hover\:text-snipline-grey:hover { - color: #EBF1EF; - } - - .xl\:hover\:text-snipline-grey-light:hover { - color: #DAE1E7; - } - - .xl\:hover\:text-snipline-grey-lighter:hover { - color: #E0E8EE; - } - - .xl\:hover\:text-success-100:hover { - color: #ECFBD7; - } - - .xl\:hover\:text-success-200:hover { - color: #D5F8B0; - } - - .xl\:hover\:text-success-300:hover { - color: #B3EC84; - } - - .xl\:hover\:text-success-400:hover { - color: #90D962; - } - - .xl\:hover\:text-success-500:hover { - color: #61C134; - } - - .xl\:hover\:text-success-600:hover { - color: #46A526; - } - - .xl\:hover\:text-success-700:hover { - color: #2F8A1A; - } - - .xl\:hover\:text-success-800:hover { - color: #1C6F10; - } - - .xl\:hover\:text-success-900:hover { - color: #0E5C09; - } - - .xl\:hover\:text-info-100:hover { - color: #DFF6FE; - } - - .xl\:hover\:text-info-200:hover { - color: #BFE9FE; - } - - .xl\:hover\:text-info-300:hover { - color: #9FD9FE; - } - - .xl\:hover\:text-info-400:hover { - color: #86CAFD; - } - - .xl\:hover\:text-info-500:hover { - color: #5FB0FC; - } - - .xl\:hover\:text-info-600:hover { - color: #4589D8; - } - - .xl\:hover\:text-info-700:hover { - color: #2F67B5; - } - - .xl\:hover\:text-info-800:hover { - color: #1E4892; - } - - .xl\:hover\:text-info-900:hover { - color: #123278; - } - - .xl\:hover\:text-danger-100:hover { - color: #FFEAD7; - } - - .xl\:hover\:text-danger-200:hover { - color: #FFD0B0; - } - - .xl\:hover\:text-danger-300:hover { - color: #FFB088; - } - - .xl\:hover\:text-danger-400:hover { - color: #FF916B; - } - - .xl\:hover\:text-danger-500:hover { - color: #FF5E3A; - } - - .xl\:hover\:text-danger-600:hover { - color: #DB3D2A; - } - - .xl\:hover\:text-danger-700:hover { - color: #B7221D; - } - - .xl\:hover\:text-danger-800:hover { - color: #931218; - } - - .xl\:hover\:text-danger-900:hover { - color: #7A0B18; - } - - .xl\:focus\:text-transparent:focus { - color: transparent; - } - - .xl\:focus\:text-black:focus { - color: #000; - } - - .xl\:focus\:text-grey-darkest:focus { - color: #3d4852; - } - - .xl\:focus\:text-grey-darker:focus { - color: #606f7b; - } - - .xl\:focus\:text-grey-dark:focus { - color: #8795a1; - } - - .xl\:focus\:text-grey:focus { - color: #b8c2cc; - } - - .xl\:focus\:text-grey-light:focus { - color: #dae1e7; - } - - .xl\:focus\:text-grey-lighter:focus { - color: #f1f5f8; - } - - .xl\:focus\:text-grey-lightest:focus { - color: #f8fafc; - } - - .xl\:focus\:text-white:focus { - color: #fff; - } - - .xl\:focus\:text-snipline-green-darker:focus { - color: #333510; - } - - .xl\:focus\:text-snipline-green-dark:focus { - color: #94AB0D; - } - - .xl\:focus\:text-snipline-lime-light:focus { - color: #e1f471; - } - - .xl\:focus\:text-snipline-lime:focus { - color: #CDED15; - } - - .xl\:focus\:text-snipline-lime-dark:focus { - color: #94AB0D; - } - - .xl\:focus\:text-snipline-green:focus { - color: #15ED78; - } - - .xl\:focus\:text-snipline-yellow:focus { - color: #EDE415; - } - - .xl\:focus\:text-snipline-grey-dark:focus { - color: rgba(51, 53, 16, 0.8); - } - - .xl\:focus\:text-snipline-grey:focus { - color: #EBF1EF; - } - - .xl\:focus\:text-snipline-grey-light:focus { - color: #DAE1E7; - } - - .xl\:focus\:text-snipline-grey-lighter:focus { - color: #E0E8EE; - } - - .xl\:focus\:text-success-100:focus { - color: #ECFBD7; - } - - .xl\:focus\:text-success-200:focus { - color: #D5F8B0; - } - - .xl\:focus\:text-success-300:focus { - color: #B3EC84; - } - - .xl\:focus\:text-success-400:focus { - color: #90D962; - } - - .xl\:focus\:text-success-500:focus { - color: #61C134; - } - - .xl\:focus\:text-success-600:focus { - color: #46A526; - } - - .xl\:focus\:text-success-700:focus { - color: #2F8A1A; - } - - .xl\:focus\:text-success-800:focus { - color: #1C6F10; - } - - .xl\:focus\:text-success-900:focus { - color: #0E5C09; - } - - .xl\:focus\:text-info-100:focus { - color: #DFF6FE; - } - - .xl\:focus\:text-info-200:focus { - color: #BFE9FE; - } - - .xl\:focus\:text-info-300:focus { - color: #9FD9FE; - } - - .xl\:focus\:text-info-400:focus { - color: #86CAFD; - } - - .xl\:focus\:text-info-500:focus { - color: #5FB0FC; - } - - .xl\:focus\:text-info-600:focus { - color: #4589D8; - } - - .xl\:focus\:text-info-700:focus { - color: #2F67B5; - } - - .xl\:focus\:text-info-800:focus { - color: #1E4892; - } - - .xl\:focus\:text-info-900:focus { - color: #123278; - } - - .xl\:focus\:text-danger-100:focus { - color: #FFEAD7; - } - - .xl\:focus\:text-danger-200:focus { - color: #FFD0B0; - } - - .xl\:focus\:text-danger-300:focus { - color: #FFB088; - } - - .xl\:focus\:text-danger-400:focus { - color: #FF916B; - } - - .xl\:focus\:text-danger-500:focus { - color: #FF5E3A; - } - - .xl\:focus\:text-danger-600:focus { - color: #DB3D2A; - } - - .xl\:focus\:text-danger-700:focus { - color: #B7221D; - } - - .xl\:focus\:text-danger-800:focus { - color: #931218; - } - - .xl\:focus\:text-danger-900:focus { - color: #7A0B18; - } - - .xl\:text-xs { - font-size: 0.75rem; - } - - .xl\:text-sm { - font-size: 0.875rem; - } - - .xl\:text-base { - font-size: 1rem; - } - - .xl\:text-lg { - font-size: 1.125rem; - } - - .xl\:text-xl { - font-size: 1.25rem; - } - - .xl\:text-2xl { - font-size: 1.5rem; - } - - .xl\:text-3xl { - font-size: 1.875rem; - } - - .xl\:text-4xl { - font-size: 2.25rem; - } - - .xl\:text-5xl { - font-size: 3rem; - } - - .xl\:text-6xl { - font-size: 4rem; - } - - .xl\:italic { - font-style: italic; - } - - .xl\:not-italic { - font-style: normal; - } - - .xl\:uppercase { - text-transform: uppercase; - } - - .xl\:lowercase { - text-transform: lowercase; - } - - .xl\:capitalize { - text-transform: capitalize; - } - - .xl\:normal-case { - text-transform: none; - } - - .xl\:underline { - text-decoration: underline; - } - - .xl\:line-through { - text-decoration: line-through; - } - - .xl\:no-underline { - text-decoration: none; - } - - .xl\:hover\:underline:hover { - text-decoration: underline; - } - - .xl\:hover\:line-through:hover { - text-decoration: line-through; - } - - .xl\:hover\:no-underline:hover { - text-decoration: none; - } - - .xl\:focus\:underline:focus { - text-decoration: underline; - } - - .xl\:focus\:line-through:focus { - text-decoration: line-through; - } - - .xl\:focus\:no-underline:focus { - text-decoration: none; - } - - .xl\:antialiased { - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .xl\:subpixel-antialiased { - -webkit-font-smoothing: auto; - -moz-osx-font-smoothing: auto; - } - - .xl\:tracking-tighter { - letter-spacing: -0.05em; - } - - .xl\:tracking-tight { - letter-spacing: -0.025em; - } - - .xl\:tracking-normal { - letter-spacing: 0; - } - - .xl\:tracking-wide { - letter-spacing: 0.025em; - } - - .xl\:tracking-wider { - letter-spacing: 0.05em; - } - - .xl\:tracking-widest { - letter-spacing: 0.1em; - } - - .xl\:select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - .xl\:select-text { - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; - } - - .xl\:select-all { - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; - } - - .xl\:select-auto { - -webkit-user-select: auto; - -moz-user-select: auto; - -ms-user-select: auto; - user-select: auto; - } - - .xl\:align-baseline { - vertical-align: baseline; - } - - .xl\:align-top { - vertical-align: top; - } - - .xl\:align-middle { - vertical-align: middle; - } - - .xl\:align-bottom { - vertical-align: bottom; - } - - .xl\:align-text-top { - vertical-align: text-top; - } - - .xl\:align-text-bottom { - vertical-align: text-bottom; - } - - .xl\:visible { - visibility: visible; - } - - .xl\:invisible { - visibility: hidden; - } - - .xl\:whitespace-normal { - white-space: normal; - } - - .xl\:whitespace-no-wrap { - white-space: nowrap; - } - - .xl\:whitespace-pre { - white-space: pre; - } - - .xl\:whitespace-pre-line { - white-space: pre-line; - } - - .xl\:whitespace-pre-wrap { - white-space: pre-wrap; - } - - .xl\:break-normal { - overflow-wrap: normal; - word-break: normal; - } - - .xl\:break-words { - overflow-wrap: break-word; - } - - .xl\:break-all { - word-break: break-all; - } - - .xl\:truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .xl\:w-0 { - width: 0; - } - - .xl\:w-1 { - width: 0.25rem; - } - - .xl\:w-2 { - width: 0.5rem; - } - - .xl\:w-3 { - width: 0.75rem; - } - - .xl\:w-4 { - width: 1rem; - } - - .xl\:w-5 { - width: 1.25rem; - } - - .xl\:w-6 { - width: 1.5rem; - } - - .xl\:w-8 { - width: 2rem; - } - - .xl\:w-10 { - width: 2.5rem; - } - - .xl\:w-12 { - width: 3rem; - } - - .xl\:w-16 { - width: 4rem; - } - - .xl\:w-20 { - width: 5rem; - } - - .xl\:w-24 { - width: 6rem; - } - - .xl\:w-32 { - width: 8rem; - } - - .xl\:w-40 { - width: 10rem; - } - - .xl\:w-48 { - width: 12rem; - } - - .xl\:w-56 { - width: 14rem; - } - - .xl\:w-64 { - width: 16rem; - } - - .xl\:w-auto { - width: auto; - } - - .xl\:w-px { - width: 1px; - } - - .xl\:w-1\/2 { - width: 50%; - } - - .xl\:w-1\/3 { - width: 33.33333%; - } - - .xl\:w-2\/3 { - width: 66.66667%; - } - - .xl\:w-1\/4 { - width: 25%; - } - - .xl\:w-2\/4 { - width: 50%; - } - - .xl\:w-3\/4 { - width: 75%; - } - - .xl\:w-1\/5 { - width: 20%; - } - - .xl\:w-2\/5 { - width: 40%; - } - - .xl\:w-3\/5 { - width: 60%; - } - - .xl\:w-4\/5 { - width: 80%; - } - - .xl\:w-1\/6 { - width: 16.66667%; - } - - .xl\:w-2\/6 { - width: 33.33333%; - } - - .xl\:w-3\/6 { - width: 50%; - } - - .xl\:w-4\/6 { - width: 66.66667%; - } - - .xl\:w-5\/6 { - width: 83.33333%; - } - - .xl\:w-1\/12 { - width: 8.33333%; - } - - .xl\:w-2\/12 { - width: 16.66667%; - } - - .xl\:w-3\/12 { - width: 25%; - } - - .xl\:w-4\/12 { - width: 33.33333%; - } - - .xl\:w-5\/12 { - width: 41.66667%; - } - - .xl\:w-6\/12 { - width: 50%; - } - - .xl\:w-7\/12 { - width: 58.33333%; - } - - .xl\:w-8\/12 { - width: 66.66667%; - } - - .xl\:w-9\/12 { - width: 75%; - } - - .xl\:w-10\/12 { - width: 83.33333%; - } - - .xl\:w-11\/12 { - width: 91.66667%; - } - - .xl\:w-full { - width: 100%; - } - - .xl\:w-screen { - width: 100vw; - } - - .xl\:z-0 { - z-index: 0; - } - - .xl\:z-10 { - z-index: 10; - } - - .xl\:z-20 { - z-index: 20; - } - - .xl\:z-30 { - z-index: 30; - } - - .xl\:z-40 { - z-index: 40; - } - - .xl\:z-50 { - z-index: 50; - } - - .xl\:z-auto { - z-index: auto; - } -} diff --git a/public/js/app.js b/public/js/app.js deleted file mode 100644 index dc1eb18..0000000 --- a/public/js/app.js +++ /dev/null @@ -1,124 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = "/"; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./assets/css/app.css": -/*!****************************!*\ - !*** ./assets/css/app.css ***! - \****************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -// removed by extract-text-webpack-plugin - -/***/ }), - -/***/ "./assets/js/app.js": -/*!**************************!*\ - !*** ./assets/js/app.js ***! - \**************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - - - -/***/ }), - -/***/ 0: -/*!*****************************************************!*\ - !*** multi ./assets/js/app.js ./assets/css/app.css ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -__webpack_require__(/*! /Users/mitchellstanley/Code/projects/snipline/cli/assets/js/app.js */"./assets/js/app.js"); -module.exports = __webpack_require__(/*! /Users/mitchellstanley/Code/projects/snipline/cli/assets/css/app.css */"./assets/css/app.css"); - - -/***/ }) - -/******/ }); \ No newline at end of file diff --git a/shard.lock b/shard.lock index 2ba12db..508efc7 100644 --- a/shard.lock +++ b/shard.lock @@ -6,35 +6,19 @@ shards: ameba: github: veelenga/ameba - version: 0.10.0 - - baked_file_system: - github: schovi/baked_file_system - version: 0.9.8 + version: 0.10.1 crest: github: mamantoha/crest - version: 0.21.1 - - exception_page: - github: crystal-loot/exception_page - version: 0.1.2 - - kemal: - github: kemalcr/kemal - version: 0.26.0 - - kilt: - github: jeromegn/kilt - version: 0.4.0 + version: 0.22.0 - radix: - github: luislavena/radix - version: 0.3.9 + http-client-digest_auth: + github: mamantoha/http-client-digest_auth + version: 0.2.0 - spec-kemal: - github: kemalcr/spec-kemal - commit: 64b89c719234ceb92c0a14762dce3afc6257fffc + ncurses: + github: JohnDowson/ncurses + commit: d0e46f673b6a443255269ce610d598a0fdc7d159 toml: github: crystal-community/toml.cr diff --git a/shard.yml b/shard.yml index ce5c243..a82c952 100644 --- a/shard.yml +++ b/shard.yml @@ -1,12 +1,12 @@ -name: snipline_cli -version: 0.2.0 +name: cli +version: 0.3.0 authors: - Mitchell Stanley targets: - snipline_cli: - main: src/snipline_cli.cr + cli2: + main: src/cli.cr crystal: 0.30.1 @@ -20,16 +20,12 @@ dependencies: toml: github: crystal-community/toml.cr branch: master - kemal: - github: kemalcr/kemal - baked_file_system: - github: schovi/baked_file_system - version: 0.9.8 - spec-kemal: - github: kemalcr/spec-kemal - branch: master + ncurses: + github: JohnDowson/ncurses + branch: borders_and_lines + development_dependencies: ameba: github: veelenga/ameba - version: ~> 0.10.0 \ No newline at end of file + version: ~> 0.10.0 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index 25e66f1..0000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: snipcli -version: 0.2.0 -summary: Shell Snippet organiser -description: > - Snipcli is a commandline interface for managing shell commands. Sync commands with your Snipline account or use in guest mode. Snipline lets you dynamically change command parameters easily so you never have to remember how to build a command. - -confinement: classic -grade: devel - -architectures: - - amd64 - - i386 - -parts: - snipcli: - plugin: dump - source: https://github.com/snipline/snipcli/releases/download/$SNAPCRAFT_PROJECT_VERSION/snipcli-$SNAPCRAFT_PROJECT_VERSION_linux_x86_64.tar.gz - -apps: - snipcli: - command: snipcli diff --git a/spec/models/snippet_attribute_spec.cr b/spec/models/snippet_attribute_spec.cr index 6ab4c57..565b3b2 100644 --- a/spec/models/snippet_attribute_spec.cr +++ b/spec/models/snippet_attribute_spec.cr @@ -1,6 +1,6 @@ -describe SniplineCli::SnippetAttribute do +describe SniplineCli::Models::SnippetAttribute do it "correctly parses snippets attributes" do - attributes = SniplineCli::SnippetAttribute.from_json( + attributes = SniplineCli::Models::SnippetAttribute.from_json( %( { "is-pinned": true, diff --git a/spec/models/snippet_param_spec.cr b/spec/models/snippet_param_spec.cr index f86d7ba..d40a773 100644 --- a/spec/models/snippet_param_spec.cr +++ b/spec/models/snippet_param_spec.cr @@ -1,6 +1,6 @@ -describe SniplineCli::SnippetParam do +describe SniplineCli::Models::SnippetParam do it "correctly parses snippets params" do - param = SniplineCli::SnippetParam.new("Test Snippet", "default", "Test Snippet=default", "variable", [] of String) + param = SniplineCli::Models::SnippetParam.new("Test Snippet", "default", "Test Snippet=default", "variable", [] of String) param.name.should eq "Test Snippet" param.default_value.should eq "default" param.full.should eq "Test Snippet=default" diff --git a/spec/models/snippet_password_param_spec.cr b/spec/models/snippet_password_param_spec.cr index 4cae115..d5642f9 100644 --- a/spec/models/snippet_password_param_spec.cr +++ b/spec/models/snippet_password_param_spec.cr @@ -1,6 +1,6 @@ -describe SniplineCli::SnippetPasswordParam do +describe SniplineCli::Models::SnippetPasswordParam do it "correctly parses password params" do - param = SniplineCli::SnippetPasswordParam.new("PWName", 12.to_u32, "PWName,12") + param = SniplineCli::Models::SnippetPasswordParam.new("PWName", 12.to_u32, "PWName,12") param.id.should eq "PWName" param.length.should eq 12 param.full.should eq "PWName,12" diff --git a/spec/models/snippet_spec.cr b/spec/models/snippet_spec.cr index 6d81110..3039da1 100644 --- a/spec/models/snippet_spec.cr +++ b/spec/models/snippet_spec.cr @@ -2,13 +2,13 @@ require "file" def create_test_object(attributes : String | Nil) attributes = attributes || %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - SniplineCli::Snippet.from_json(attributes) + SniplineCli::Models::Snippet.from_json(attributes) end -describe SniplineCli::Snippet do +describe SniplineCli::Models::Snippet do it "correctly parses snippets from JSON" do content = File.read(File.expand_path("./spec/fixtures/snippets.json")) - snippets = Array(SniplineCli::Snippet).from_json(content) + snippets = Array(SniplineCli::Models::Snippet).from_json(content) snippets.size.should eq(2) snippets.first.id.should eq("0f4846c0-3194-40bb-be77-8c4b136565f4") end @@ -20,11 +20,10 @@ describe SniplineCli::Snippet do snippet.is_pinned.should eq(false) snippet.real_command.should eq("git log --oneline --decorate --graph --all") snippet.preview_command.should eq("git log --oneline --decorate --graph --all") - snippet.preview_command_in_html.should eq("git log --oneline --decorate --graph --all") snippet.tags.should eq(["git"]) snippet.has_params.should eq(false) - snippet.interactive_params.should eq([] of SniplineCli::SnippetParam) - snippet.uninteractive_params.should eq([] of SniplineCli::SnippetPasswordParam) + snippet.interactive_params.should eq([] of SniplineCli::Models::SnippetParam) + snippet.uninteractive_params.should eq([] of SniplineCli::Models::SnippetPasswordParam) end it "#value_for_attribute" do @@ -85,8 +84,7 @@ describe SniplineCli::Snippet do snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"magento user:create #password{[Name,8]} #password{[Default]}","tags":[]}})) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(0) - snippet.preview_command.should eq("magento user:create \e[32m\e[0m \e[32m\e[0m") - snippet.preview_command_in_html.should eq("magento user:create <PW:Name> <PW:Default>") + snippet.preview_command.should eq("magento user:create ") end end end diff --git a/spec/models/token_spec.cr b/spec/models/token_spec.cr index f918a3b..3e0cc0e 100644 --- a/spec/models/token_spec.cr +++ b/spec/models/token_spec.cr @@ -1,7 +1,7 @@ -describe SniplineCli::Token do +describe SniplineCli::Models::Token do it "correctly parses JWT tokens" do content = %({"jwt": "test_token_here", "token": "test_token_here"}) - token = SniplineCli::Token.from_json(content) + token = SniplineCli::Models::Token.from_json(content) token.jwt.should eq("test_token_here") end end diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr index 24797d7..42d69d2 100644 --- a/spec/services/command_builder_spec.cr +++ b/spec/services/command_builder_spec.cr @@ -1,7 +1,7 @@ describe SniplineCli::Services::CommandBuilder do it "correctly parses snippets with no params" do attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - snippet = SniplineCli::Snippet.from_json(attributes) + snippet = SniplineCli::Models::Snippet.from_json(attributes) File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) response.should eq("git log --oneline --decorate --graph --all") @@ -10,7 +10,7 @@ describe SniplineCli::Services::CommandBuilder do it "should generate random passwords" do attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}}) - snippet = SniplineCli::Snippet.from_json(attributes) + snippet = SniplineCli::Models::Snippet.from_json(attributes) File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) response.size.should eq(29) @@ -22,23 +22,23 @@ describe SniplineCli::Services::CommandBuilder do end end - it "should parse variables input by user" do - attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"echo '\#{[Hello=world]}'","tags":["git"]}}) - # params = SniplineCli::SnippetParam.new( - # "", @default_value : String, @full : String, @type : String, @options : Array(String)) - - # property name : String - # property default_value : String - # property full : String - # property type : String - # property options : Array(String) - File.tempfile("test") do |io| - snippet = SniplineCli::Snippet.from_json(attributes) - response = SniplineCli::Services::CommandBuilder.run(snippet, io, io, ["world2"] of String) - # TODO: Figure out how to pass input to tests - response.should eq("echo 'world2'") - io.rewind - io.gets_to_end.should eq "Enter Hello:\nLeave blank for default (world)\n" - end - end + # it "should parse variables input by user" do + # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"echo '\#{[Hello=world]}'","tags":["git"]}}) + # # params = SniplineCli::SnippetParam.new( + # # "", @default_value : String, @full : String, @type : String, @options : Array(String)) + # + # # property name : String + # # property default_value : String + # # property full : String + # # property type : String + # # property options : Array(String) + # File.tempfile("test") do |io| + # snippet = SniplineCli::Models::Snippet.from_json(attributes) + # response = SniplineCli::Services::CommandBuilder.run(snippet, io, io, ["world2"] of String) + # # TODO: Figure out how to pass input to tests + # response.should eq("echo 'world2'") + # io.rewind + # io.gets_to_end.should eq "Enter Hello:\nLeave blank for default (world)\n" + # end + # end end diff --git a/spec/services/documentation_formatter_spec.cr b/spec/services/documentation_formatter_spec.cr new file mode 100644 index 0000000..8acf05b --- /dev/null +++ b/spec/services/documentation_formatter_spec.cr @@ -0,0 +1,23 @@ +describe SniplineCli::Services::DocumentationFormatter do + it "returns empty when nil is passed" do + formatter = setup_formatter() + formatter.to_ncurses(nil).should eq("No documentation found") + end + + it "puts lines over its width onto new lines" do + formatter = setup_formatter(width: 20) + formatter.format_documentation("This sentence is longer than 20 characters", 20).should eq(["This sentence is", "longer than 20", "characters"]) + end + + it "splits words over the character limit onto new lines" do + formatter = setup_formatter(width: 20) + formatter.format_documentation("pneumonoultramicroscopicsilicovolcanoconiosis", 20).should eq(["pneumonoultramicrosc", "opicsilicovolcanocon", "iosis"]) + end + + it "works with a realistic example" do + formatter = setup_formatter() + formatter.format_documentation("Find files that contain the `searchterm`.\n\nUsing `l` will show filenames for results. Not using `l` will show contents.", 500).should eq(["Find files that contain the `searchterm`.\n", "\n", "Using `l` will show filenames for results. Not using `l` will show contents."]) + end + +end + diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr index cba68fa..792edf7 100644 --- a/spec/spec_helper.cr +++ b/spec/spec_helper.cr @@ -1,14 +1,8 @@ require "spec" -require "kemal" -# require "spec-kemal" require "../src/snipline_cli" -# Spec.before_each do -# config = Kemal.config -# config.env = "test" -# config.setup -# end - -# Spec.after_each do -# Kemal.config.clear -# end +def setup_formatter(width : Int32 = 500) + window = SniplineCli::NCursesWindows::MockWindow.new + window.width = width + SniplineCli::Services::DocumentationFormatter.new(window) +end diff --git a/src/cli.cr b/src/cli.cr new file mode 100644 index 0000000..78b3140 --- /dev/null +++ b/src/cli.cr @@ -0,0 +1,6 @@ +# TODO: Write documentation for `Cli2` +module Cli + VERSION = "0.1.0" + + # TODO: Put your code here +end diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 6825c65..f8bcd94 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -1,16 +1,18 @@ -# TODO: Write documentation for `SniplineCli` require "admiral" require "crest" -# require "./snipline_cli/*" -require "./snipline_cli/config/config" -require "./snipline_cli/models/*" +require "toml" +require "json" +require "ncurses" + +require "./snipline_cli/config" require "./snipline_cli/exceptions/*" +require "./snipline_cli/models/*" +require "./snipline_cli/ncurses_windows/*" require "./snipline_cli/services/*" require "./snipline_cli/commands/*" -require "toml" module SniplineCli - VERSION = "0.2.0" + VERSION = "0.3.0" def self.config SniplineCli::Config.config diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr index e1f1b4e..1b2a213 100644 --- a/src/snipline_cli/commands/login.cr +++ b/src/snipline_cli/commands/login.cr @@ -7,6 +7,7 @@ module SniplineCli # This command generates a config file in the requested location. # By default this location is ~/.config/snipline/config.toml class Login < Admiral::Command + include SniplineCli::Models define_help description: "Log-in into your Snipline account" def run diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index e77b533..2e7927b 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -7,15 +7,16 @@ module SniplineCli # This command generates a config file in the requested location. # By default this location is ~/.config/snipline/config.toml class New < Admiral::Command + include SniplineCli::Models define_help description: "Create a new Snippet" def run config = SniplineCli.config unless File.exists?(File.expand_path("#{config.get("general.file")}")) - abort("Config file does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) + abort("Config file does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end unless ENV.has_key?("EDITOR") - abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) + abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) end temp_file = SniplineCli::Services::TempSnippetEditorFile.new temp_file.create diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 48b8bf2..b57663e 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -24,10 +24,7 @@ module SniplineCli description: "The term to search for", default: nil, required: false - define_flag limit : UInt32, default: 5_u32, long: limit - define_flag run : Bool, default: false, long: run, - description: "Run the result" - + define_flag limit : UInt32, default: 500_u32, long: limit define_flag field : String, description: "The field to search (alias|documentation|name|tags)", default: nil, @@ -59,18 +56,10 @@ module SniplineCli unless results.size > 0 puts "No results found." - return + exit(0) end - results.each_with_index { |snippet, index| - puts "#{(index + 1).to_s.rjust(4)} #{snippet.name.colorize(:green)} #{snippet.is_pinned ? "⭐️" : ""}#{snippet.id.nil? ? "⚡️" : ""} #{(snippet.tags.size > 0) ? "[" + snippet.tags.join(",") + "]" : ""}".colorize.mode(:bold) - puts " #{snippet.preview_command}" - } - - puts "\nChoose a snippet" - chosen_snippet_index = gets - - handle_chosen_snippet(chosen_snippet_index, results) + Services::DisplayResults.new(results) end def sort_results(snippets, limit) @@ -86,56 +75,6 @@ module SniplineCli end }.first(limit) end - - def handle_chosen_snippet(chosen_snippet_index, results) - if chosen_snippet_index - if chosen_snippet_index.to_i? - chosen_snippet_index = (chosen_snippet_index.to_u32 - 1) - - if results.size > chosen_snippet_index && chosen_snippet_index >= 0 - output = SniplineCli::Services::CommandBuilder.run(results[chosen_snippet_index], STDIN, STDOUT) - copy_snippet(output) - if flags.run - run_snippet(output) - end - else - puts "Snippet does not exist" - end - else - puts "You did not select a snippet." - end - end - end - - def copy_snippet(output) - puts "Do you want to copy '#{output.chomp.colorize(:green)}' to clipboard? (Y/n)" - if answer = gets - unless answer == "n" || answer == "no" || answer == "N" - system "echo \"#{output}\" | tr -d '\n' | tr -d '\r' | #{copy_to_clipboard}" - end - end - end - - def run_snippet(output) - puts "Are you sure you want to run '#{output.chomp.colorize(:green)}' in #{FileUtils.pwd.colorize(:green)}? (Y/n)" - if answer = gets - unless answer == "n" || answer == "no" || answer == "N" - # print "\"#{output.gsub("\"", "\\\"")}\"" - system("#{output}") - # system %(pbcopy < "#{output}") - end - end - end - - def copy_to_clipboard - output = IO::Memory.new - Process.run("/bin/sh", {"-c", "uname -s"}, output: output) - if output.to_s.chomp == "Darwin" - "pbcopy" - else - "xclip -selection c" - end - end end register_sub_command :search, Search diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 48a8a3c..ea11e8f 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -20,7 +20,7 @@ module SniplineCli puts "Syncing snippets..." @snipline_api.fetch do |body| # Save the response JSON into a file without the data wrapper - snippets = SnippetDataWrapper.from_json(body).data.to_json + snippets = Models::SnippetDataWrapper.from_json(body).data.to_json begin @file.store(snippets) rescue ex diff --git a/src/snipline_cli/commands/web.cr b/src/snipline_cli/commands/web.cr deleted file mode 100644 index 0936e14..0000000 --- a/src/snipline_cli/commands/web.cr +++ /dev/null @@ -1,128 +0,0 @@ -require "toml" -require "kemal" -require "file" - -module SniplineCli - class Command < Admiral::Command - # The command to start the web version of Snipline CLI - # - # ```bash - # snipcli web -b 0.0.0.0 -p 3000 - # ``` - # - # The web version allows you to view snippets in a friendly GUI. - # - # In the future this command will allow you to create, edit, and delete snippets. - class Web < Admiral::Command - define_help description: "Serve a web based interface for managing nippets" - define_flag port : Int32, default: 9876_i32, long: port, short: p, required: true - define_flag bind : String, default: "localhost", long: bind, short: b, required: true - - def run - # add_context_storage_type([] of SniplineCli::Snippet) - get "/" do - # env.set "snippets", snippets - render "src/snipline_cli/templates/index.ecr", "src/snipline_cli/templates/layout.ecr" - end - - get "/snippets/new" do - # ameba:disable Lint/UselessAssign - sync_to_cloud = false - # ameba:disable Lint/UselessAssign - snippet_attributes = SnippetAttribute.new( - name: "", - real_command: "", - documentation: "", - is_pinned: false, - snippet_alias: "", - tags: [] of String - ) - error : String? = nil - success : String? = nil - snippet_errors : SnippetErrorResponse? = nil - render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" - end - - post "/snippets" do |env| - snippet_params = env.params.body - sync_to_cloud = snippet_params.fetch_all("sync").includes?("true") - snippet_attributes = SnippetAttribute.new( - name: snippet_params["name"], - real_command: snippet_params["real_command"], - documentation: snippet_params["documentation"], - is_pinned: (snippet_params.fetch_all("is_pinned").includes?("true")) ? true : false, - snippet_alias: snippet_params["alias"], - tags: [] of String - ) - - error : String? = nil - success : String? = nil - snippet_errors : SnippetErrorResponse? = nil - - begin - snippet = if sync_to_cloud - SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes) - else - Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) - end - if snippet.is_a?(Snippet) - SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) - end - # ameba:disable Lint/UselessAssign - success = "Snippet saved to Snipline" - # ameba:disable Lint/UselessAssign - snippet_attributes = SnippetAttribute.new( - name: "", - real_command: "", - documentation: "", - is_pinned: false, - snippet_alias: "", - tags: [] of String - ) - rescue ex : Crest::UnprocessableEntity - # ameba:disable Lint/UselessAssign - error = "Invalid data" - # ameba:disable Lint/UselessAssign - snippet_errors = SnippetErrorResponse.from_json(ex.response.body) - # ameba:disable Lint/UselessAssign - success = nil - rescue ex : Crest::NotFound - # ameba:disable Lint/UselessAssign - error = "404 API URL not found" - # ameba:disable Lint/UselessAssign - success = nil - rescue ex : Crest::InternalServerError - # ameba:disable Lint/UselessAssign - error = "API Internal Server Error" - # ameba:disable Lint/UselessAssign - success = nil - rescue - # ameba:disable Lint/UselessAssign - error = "Connection Refused" - # ameba:disable Lint/UselessAssign - success = nil - end - # env.set "snippets", snippets - render "src/snipline_cli/templates/snippets/new.ecr", "src/snipline_cli/templates/layout.ecr" - end - - get "/app.css" do |env| - env.response.content_type = "text/css" - file = Services::FileStorage.get("css/app.css") - file.gets_to_end - end - get "/app.js" do |env| - env.response.content_type = "text/javascript" - file = Services::FileStorage.get("js/app.js") - file.gets_to_end - end - Kemal.config.env = ENV["LOG_LEVEL"] == "WARN" ? "production" : "development" - Kemal.config.host_binding = flags.bind - Kemal.config.port = flags.port - Kemal.run - end - end - - register_sub_command :web, Web - end -end diff --git a/src/snipline_cli/config/config.cr b/src/snipline_cli/config.cr similarity index 100% rename from src/snipline_cli/config/config.cr rename to src/snipline_cli/config.cr diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index b8896ed..8548b42 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -1,6 +1,6 @@ require "json" -module SniplineCli +module SniplineCli::Models class Snippet JSON.mapping({ id: String | Nil, @@ -98,29 +98,6 @@ module SniplineCli interactive_params.size > 0 || uninteractive_params.size > 0 end - def preview_command_in_html - unless has_params() - return real_command - end - - temp_command = real_command - interactive_params.each do |param| - if param.type == "select" - temp_command = temp_command.gsub("#select{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.gsub("#select{[#{param.name}]}") { "<#{param.name}>" } - else - temp_command = temp_command.gsub("\#{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.gsub("\#{[#{param.name}]}") { "<#{param.name}>" } - end - end - - uninteractive_params.each do |param| - temp_command = temp_command.gsub("#password{[#{param.full}]}") { "<PW:#{param.id}>" } - temp_command = temp_command.gsub("#password{[#{param.id}]}") { "<PW:#{param.id}>" } - end - temp_command - end - def preview_command unless has_params() return real_command @@ -129,17 +106,17 @@ module SniplineCli temp_command = real_command interactive_params.each do |param| if param.type == "select" - temp_command = temp_command.gsub("#select{[#{param.full}]}") { "<#{param.name}>".colorize(:green) } - temp_command = temp_command.gsub("#select{[#{param.name}]}") { "<#{param.name}>".colorize(:green) } + temp_command = temp_command.gsub("#select{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.gsub("#select{[#{param.name}]}") { "<#{param.name}>" } else - temp_command = temp_command.gsub("\#{[#{param.full}]}") { "<#{param.name}>".colorize(:green) } - temp_command = temp_command.gsub("\#{[#{param.name}]}") { "<#{param.name}>".colorize(:green) } + temp_command = temp_command.gsub("\#{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.gsub("\#{[#{param.name}]}") { "<#{param.name}>" } end end uninteractive_params.each do |param| - temp_command = temp_command.gsub("#password{[#{param.full}]}") { "".colorize(:green) } - temp_command = temp_command.gsub("#password{[#{param.id}]}") { "".colorize(:green) } + temp_command = temp_command.gsub("#password{[#{param.full}]}") { "" } + temp_command = temp_command.gsub("#password{[#{param.id}]}") { "" } end temp_command end diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr index 326827c..21d717c 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/models/snippet_attribute.cr @@ -1,6 +1,6 @@ require "json" -module SniplineCli +module SniplineCli::Models class SnippetAttribute include JSON::Serializable diff --git a/src/snipline_cli/models/snippet_data_wrapper.cr b/src/snipline_cli/models/snippet_data_wrapper.cr index ecf3e84..b648c5f 100644 --- a/src/snipline_cli/models/snippet_data_wrapper.cr +++ b/src/snipline_cli/models/snippet_data_wrapper.cr @@ -1,6 +1,4 @@ -require "json" - -module SniplineCli +module SniplineCli::Models class SnippetDataWrapper JSON.mapping({ data: Array(Snippet), diff --git a/src/snipline_cli/models/snippet_param.cr b/src/snipline_cli/models/snippet_param.cr index 09f8cb7..4f798fb 100644 --- a/src/snipline_cli/models/snippet_param.cr +++ b/src/snipline_cli/models/snippet_param.cr @@ -1,6 +1,4 @@ -require "json" - -module SniplineCli +module SniplineCli::Models struct SnippetParam property name : String property default_value : String diff --git a/src/snipline_cli/models/snippet_password_param.cr b/src/snipline_cli/models/snippet_password_param.cr index 6cefc56..4d6d25e 100644 --- a/src/snipline_cli/models/snippet_password_param.cr +++ b/src/snipline_cli/models/snippet_password_param.cr @@ -1,6 +1,4 @@ -require "json" - -module SniplineCli +module SniplineCli::Models struct SnippetPasswordParam property id : String property length : UInt32 | UInt8 diff --git a/src/snipline_cli/models/token.cr b/src/snipline_cli/models/token.cr index 3575993..6da1769 100644 --- a/src/snipline_cli/models/token.cr +++ b/src/snipline_cli/models/token.cr @@ -1,6 +1,6 @@ require "json" -module SniplineCli +module SniplineCli::Models class Token include JSON::Serializable diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr new file mode 100644 index 0000000..d8a6788 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/footer.cr @@ -0,0 +1,18 @@ +module SniplineCli::NCursesWindows + class Footer + property window + + def initialize(header_footer_height) + @window = NCurses::Window.new( + header_footer_height, + NCurses.width, + NCurses.height - header_footer_height, + 0 + ) + @window.set_color 1 + LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run\n") + LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil) + @window.refresh + end + end +end diff --git a/src/snipline_cli/ncurses_windows/header.cr b/src/snipline_cli/ncurses_windows/header.cr new file mode 100644 index 0000000..86dc098 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/header.cr @@ -0,0 +1,18 @@ +module SniplineCli::NCursesWindows + class Header + property window + + def initialize(header_footer_height) + @window = NCurses::Window.new( + header_footer_height, + NCurses.width, + 0, + 0 + ) + @window.set_color 1 + LibNCurses.wprintw(@window, "%s", " Snipline CLI\n") + LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil) + @window.refresh + end + end +end diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr new file mode 100644 index 0000000..12eb954 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -0,0 +1,90 @@ +module SniplineCli::NCursesWindows + class LeftPane + property window + property border + property left + property right + property selected_index = 0 + property searcher : SniplineCli::Services::SearchSnippets + property results : Array(SniplineCli::Models::Snippet) + property snippets : Array(SniplineCli::Models::Snippet) + + def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::Snippet) + @results = @snippets + @searcher = SniplineCli::Services::SearchSnippets.new(@snippets) + + @border = NCurses::Window.new( + NCurses.height - (header_footer_height * 2), + @right, + header_footer_height, + @left + ) + # @window = NCurses::Window.new( + # NCurses.height - (header_footer_height * 2) - 2, + # @right - 4, + # header_footer_height + 1, + # @left + 2 + # ) + # @border.refresh + @window = NCurses::Window.new( + @border.height - 2, + @right - 3, + 3, + @left + 2 + ) + @window.set_color 2 + @border.set_color 2 + LibNCurses.box(@border, 0, 0) + # @window.print("Hello\n") + # @window.print(@right.to_s + "\n") + # @window.print(NCurses.width.to_s + "\n") + @border.refresh + @window.refresh + @window + end + + def filter(search_text : String) + @window.clear + search_text = search_text.downcase + + @results = searcher.search(search_text) + @results = @results[0..(@window.height - 1)] + if @selected_index > (@results.size - 1) + @selected_index = [@results.size - 1, 0].max + end + @results.each_with_index do |result, index| + if index == @selected_index + @window.set_color 4 + else + @window.set_color 2 + end + show_snippet_row(result) + end + @window.refresh + end + + def show_snippet_row(result) + if result.is_pinned + @window.print("* ") + end + + if result.snippet_alias.is_a?(String) + @window.print("[#{result.snippet_alias}] ") + end + + @window.print(result.name + "\n") + end + + def select_higher + unless @selected_index == 0 + @selected_index = @selected_index - 1 + end + end + + def select_lower + unless @selected_index == (@results.size - 1) + @selected_index = @selected_index + 1 + end + end + end +end diff --git a/src/snipline_cli/ncurses_windows/mock_window.cr b/src/snipline_cli/ncurses_windows/mock_window.cr new file mode 100644 index 0000000..cdab9f5 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/mock_window.cr @@ -0,0 +1,6 @@ +class SniplineCli::NCursesWindows::MockWindow + property width = 500 + def print(output) + output + end +end diff --git a/src/snipline_cli/ncurses_windows/multi_param.cr b/src/snipline_cli/ncurses_windows/multi_param.cr new file mode 100644 index 0000000..e7f0e0f --- /dev/null +++ b/src/snipline_cli/ncurses_windows/multi_param.cr @@ -0,0 +1,95 @@ +module SniplineCli::NCursesWindows + class MultiParamPane + property window + property border + property command_builder + property param + property entered_text : String = "" + property selected_index : UInt32 = 0 + + def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam) + @border = NCurses::Window.new( + NCurses.height, + NCurses.width, + 0, + 0 + ) + # @window = NCurses::Window.new( + # NCurses.height - (header_footer_height * 2) - 2, + # @right - 4, + # header_footer_height + 1, + # @left + 2 + # ) + # @border.refresh + @window = NCurses::Window.new( + NCurses.height - 2, + NCurses.width - 2, + 1, + 1 + ) + @window.set_color 2 + @border.set_color 2 + LibNCurses.box(@border, 0, 0) + # @window.print(@right.to_s + "\n") + # @window.print(NCurses.width.to_s + "\n") + @border.refresh + @window.refresh + @window + end + + def run + @selected_index = 0 + LibNCurses.curs_set(0) + display_options + + # LibNCurses.wmove(@window, 1, @entered_text.size) + @window.get_char do |ch| + break unless ch.is_a?(Char) + codepoint = ch.ord + if codepoint == 10 + # choose param + break + elsif codepoint == 75 # S+k - up + select_higher + elsif codepoint == 74 + select_lower + else # # write(ch.ord.to_s) + # write(ch) + end + end + @window.refresh + @command_builder = @command_builder.gsub("\#select{[#{param.full}]}") { @param.options[@selected_index] } + @command_builder = @command_builder.gsub("\#{[#select{param.name}]}") { @param.options[@selected_index] } + @command_builder + end + + def select_higher + unless @selected_index == 0 + @selected_index = @selected_index - 1 + display_options + end + end + + def select_lower + unless @selected_index == (@param.options.size - 1) + @selected_index = @selected_index + 1 + display_options + end + end + + def display_options + @window.clear + @window.set_color 2 + @window.print("Choose #{param.name}:\n") + param.options.each_with_index do |option, index| + if index == @selected_index + @window.set_color 4 + else + @window.set_color 2 + end + @window.print("#{option}\n") + end + @window.refresh + end + end +end diff --git a/src/snipline_cli/ncurses_windows/param.cr b/src/snipline_cli/ncurses_windows/param.cr new file mode 100644 index 0000000..6c48169 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/param.cr @@ -0,0 +1,83 @@ +module SniplineCli::NCursesWindows + class ParamPane + property window + property border + property command_builder + property param + property entered_text : String = "" + + def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam) + @border = NCurses::Window.new( + NCurses.height, + NCurses.width, + 0, + 0 + ) + # @window = NCurses::Window.new( + # NCurses.height - (header_footer_height * 2) - 2, + # @right - 4, + # header_footer_height + 1, + # @left + 2 + # ) + # @border.refresh + @window = NCurses::Window.new( + NCurses.height - 2, + NCurses.width - 2, + 1, + 1 + ) + @window.set_color 2 + @border.set_color 2 + LibNCurses.box(@border, 0, 0) + # @window.print(@right.to_s + "\n") + # @window.print(NCurses.width.to_s + "\n") + @border.refresh + @window.refresh + @window + end + + def run + @entered_text = param.default_value + LibNCurses.curs_set(1) + @window.print("Enter #{param.name}:\n#{entered_text}") + LibNCurses.wmove(@window, 1, @entered_text.size) + @window.get_char do |ch| + break unless ch.is_a?(Char) + codepoint = ch.ord + if codepoint == 127 # backspace + delete + elsif codepoint == 10 # enter + break + else # # write(ch.ord.to_s) + write(ch) + end + end + @window.refresh + @command_builder = @command_builder.gsub("\#{[#{param.full}]}") { @entered_text } + @command_builder = @command_builder.gsub("\#{[#{param.name}]}") { @entered_text } + @command_builder + end + + def write(char) + # @window.set_color 2 + @entered_text = String.build do |str| + str << @entered_text + str << char.to_s + end + @window.clear + @window.print("Enter #{param.name}:\n#{@entered_text}") + # LibNCurses.wprintw(@window, "%s", " Search: #{@entered_text}") + LibNCurses.wmove(@window, 1, @entered_text.size) + @window.refresh + end + + def delete + @entered_text = @entered_text.rchop + LibNCurses.wmove(@window, 1, @entered_text.size) + @window.clear + LibNCurses.wprintw(@window, "%s", "Enter #{param.name}:\n#{@entered_text}") + LibNCurses.wmove(@window, 1, @entered_text.size) + @window.refresh + end + end +end diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr new file mode 100644 index 0000000..792cd7f --- /dev/null +++ b/src/snipline_cli/ncurses_windows/right_pane.cr @@ -0,0 +1,62 @@ +module SniplineCli::NCursesWindows + class RightPane + property window + property border + property left + property right + property documentation_formatter : SniplineCli::Services::DocumentationFormatter + + def initialize(header_footer_height, @left : Int32, @right : Int32) + @border = NCurses::Window.new( + NCurses.height - (header_footer_height * 2), + @right, + header_footer_height, + @left + ) + @window = NCurses::Window.new( + @border.height - 2, + @right - 3, + 3, + @left + 2 + ) + @documentation_formatter = SniplineCli::Services::DocumentationFormatter.new(@window) + @window.set_color 2 + @border.set_color 2 + LibNCurses.box(@border, 0, 0) + @border.refresh + @window.refresh + @window + end + + def display(snippet : SniplineCli::Models::Snippet | Nil) + @window.clear + if snippet + LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) + LibNCurses.wattr_on(@window, NCurses::Attribute::Bold, nil) + LibNCurses.wprintw(@window, "%s", "Command\n") + LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) + print_snippet(snippet.preview_command, @window.width) + LibNCurses.wprintw(@window, "%s", "\n\n") + LibNCurses.wattr_on(@window, NCurses::Attribute::Bold, nil) + LibNCurses.wprintw(@window, "%s", "Documentation\n") + LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) + @documentation_formatter.to_ncurses(snippet.documentation) + else + @window.print("No results found") + end + @window.refresh + end + + def print_snippet(command, width) + number_of_extra_lines = command.each_line(true).size - 3 + command.each_line(true).first(3).each do |line| + LibNCurses.wprintw(@window, "%s\n", line) + end + if number_of_extra_lines > 0 + LibNCurses.wattr_on(@window, NCurses::Attribute::Underline, nil) + LibNCurses.wprintw(@window, "%s", "#{number_of_extra_lines} more lines") + LibNCurses.wattr_off(@window, NCurses::Attribute::Underline, nil) + end + end + end +end diff --git a/src/snipline_cli/ncurses_windows/search.cr b/src/snipline_cli/ncurses_windows/search.cr new file mode 100644 index 0000000..708f104 --- /dev/null +++ b/src/snipline_cli/ncurses_windows/search.cr @@ -0,0 +1,41 @@ +module SniplineCli::NCursesWindows + class Search + property window + property search_text : String = "" + + def initialize(header_footer_height) + @window = NCurses::Window.new( + header_footer_height, + NCurses.width, + 1, + 0 + ) + @window.set_color 2 + LibNCurses.wprintw(@window, "%s", " Search:") + LibNCurses.wmove(@window, 0, 9 + search_text.size) + @window.refresh + end + + def write(char) + @window.set_color 2 + @search_text = String.build do |str| + str << @search_text + str << char.to_s + end + LibNCurses.wmove(@window, 0, 9 + @search_text.size) + @window.clear + LibNCurses.wprintw(@window, "%s", " Search: #{@search_text}") + LibNCurses.wmove(@window, 0, 9 + @search_text.size) + @window.refresh + end + + def delete + @search_text = @search_text.rchop + LibNCurses.wmove(@window, 0, 9 + @search_text.size) + @window.clear + LibNCurses.wprintw(@window, "%s", " Search: #{@search_text}") + LibNCurses.wmove(@window, 0, 9 + @search_text.size) + @window.refresh + end + end +end diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr index 8404780..868b449 100644 --- a/src/snipline_cli/services/append_snippet_to_local_storage.cr +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -1,8 +1,8 @@ -require "json" - module SniplineCli::Services # For saving Snippets locally. class AppendSnippetToLocalStorage + include SniplineCli::Models + # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) snippets = SniplineCli::Services::LoadSnippets.run diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index a6835b2..4eca3a2 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -14,43 +14,24 @@ module SniplineCli # end # ``` class CommandBuilder + include SniplineCli::Models + def self.run(snippet : Snippet, input, output, user_input = [] of String) : String unless snippet.has_params return snippet.real_command end - command_builder = snippet.real_command + command_builder : String = snippet.real_command + Setup.new snippet.interactive_params.each do |param| + NCurses.clear case param.type when "select" - print("Choose number for #{param.name}:", output) - param.options.each_with_index do |option, option_index| - print(" ##{option_index + 1} - #{option}", output) - end - # todo: list options and let user select via number - current_user_input, user_input = shift_input(user_input) - if user_param_input = gets(output, current_user_input) - if user_param_input = user_param_input.to_u32 - user_param_input = user_param_input - 1 - if param.options.size > user_param_input - command_builder = command_builder.gsub("#select{[#{param.full}]}") { param.options[user_param_input] } - command_builder = command_builder.gsub("#select{[#{param.name}]}") { param.options[user_param_input] } - end - end - end + multi_param_pane = SniplineCli::NCursesWindows::MultiParamPane.new(command_builder, param) + command_builder = multi_param_pane.run else - print("Enter #{param.name}:\n", output) - if param.default_value != "" - print("Leave blank for default (#{param.default_value})\n", output) - end - current_user_input, user_input = shift_input(user_input) - if user_param_input = gets(output, current_user_input) - if user_param_input == "" - user_param_input = param.default_value - end - command_builder = command_builder.gsub("\#{[#{param.full}]}") { user_param_input } - command_builder = command_builder.gsub("\#{[#{param.name}]}") { user_param_input } - end + param_pane = SniplineCli::NCursesWindows::ParamPane.new(command_builder, param) + command_builder = param_pane.run end end diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr new file mode 100644 index 0000000..97d420e --- /dev/null +++ b/src/snipline_cli/services/display_results.cr @@ -0,0 +1,105 @@ +module SniplineCli::Services + # For saving Snippets locally. + class DisplayResults + include SniplineCli::Models + property header + property search + property left_pane + property right_pane + property footer + + # propery main_left + # propery main_left_border + # @@footer = NCurses::Window.new + + def initialize(results) + Setup.new + header_footer_height = 1 + @header = SniplineCli::NCursesWindows::Header.new(header_footer_height) + @footer = SniplineCli::NCursesWindows::Footer.new(header_footer_height) + @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2), snippets: results) + @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2), right: (NCurses.width / 2.0).ceil.to_i32) + @search = SniplineCli::NCursesWindows::Search.new(header_footer_height) + @left_pane.filter("") + refresh_right_pane + @search.window.refresh + + @search.window.get_char do |ch| + break unless ch.is_a?(Char) + # @search.write(ch.ord.to_s) + codepoint = ch.ord + break if codepoint == 17 # C+q - quit + + if codepoint == 127 + @search.delete + @left_pane.filter(@search.search_text) + refresh_right_pane + elsif codepoint == 75 # S+k - up + @left_pane.select_higher + refresh_right_pane + elsif codepoint == 74 # C+j / S+j - down + @left_pane.select_lower + refresh_right_pane + elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy + output = build_snippet + copy_snippet(output) + break + elsif codepoint == 82 # Shift+r - run + output = build_snippet + run_snippet(output) + break + else + @search.write(ch) + @left_pane.filter(@search.search_text) + refresh_right_pane + end + @left_pane.filter(@search.search_text) + @search.window.refresh + end + NCurses.clear + NCurses.end + end + + def refresh_right_pane + if @left_pane.selected_index < @left_pane.results.size + @right_pane.display(@left_pane.results[@left_pane.selected_index]) + else + @right_pane.display(nil) + end + end + + def copy_to_clipboard + output = IO::Memory.new + Process.run("/bin/sh", {"-c", "uname -s"}, output: output) + if output.to_s.chomp == "Darwin" + "pbcopy" + else + "xclip -selection c" + end + end + + def copy_snippet(output) + NCurses.clear + NCurses.end + system "echo \"#{output}\" | tr -d '\n' | tr -d '\r' | #{copy_to_clipboard}" + puts "'#{output.chomp.colorize(:green)}' has been copied to your clipboard" + end + + def run_snippet(output) + NCurses.clear + NCurses.end + puts "Are you sure you want to run '#{output.chomp.colorize(:green)}' in #{FileUtils.pwd.colorize(:green)}? (Y/n)" + if answer = gets + unless ["n", "N", "no"].includes?(answer) + system("#{output}") + end + end + end + + def build_snippet + NCurses.clear + NCurses.end + SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) + end + end +end diff --git a/src/snipline_cli/services/documentation_formatter.cr b/src/snipline_cli/services/documentation_formatter.cr new file mode 100644 index 0000000..ba210fa --- /dev/null +++ b/src/snipline_cli/services/documentation_formatter.cr @@ -0,0 +1,69 @@ +module SniplineCli::Services + class DocumentationFormatter + property window + + def initialize(@window : NCurses::Window | SniplineCli::NCursesWindows::MockWindow) + end + + def to_ncurses(documentation : Nil) + @window.print("No documentation found") + end + + def to_ncurses(documentation : String) + format_documentation(documentation, @window.width).each do |line| + @window.print("#{line}") + end + end + + def format_documentation(documentation, width) + formatted_line = String::Builder.new + formatted_lines = [] of String + documentation.lines(chomp: false).each do |line| + # Ignore blank lines - we'll add these later + if ["\r", "\n\n", "\n\r"].includes?(line) + formatted_lines.push "\n" + elsif line.empty? + # break + # formatted_lines.push "\n" + end + # if line is less that screen width just add it - no questions asked! + if line.size < width + formatted_lines.push line + # break + end + + if line.size >= width + words = line.split(' ') + words = words.flat_map { |word| + # for words that are longer than the width + if word.size >= width + word.chars.to_a.each_slice(width).to_a.map{ |w| w.join } + else + word + end + } + formatted_line = String::Builder.new + words.each do |word| + if formatted_line.empty? + formatted_line << word + else + formatted_line << " " << word + end + # temp_string = Object.new.copy formatted_line + if formatted_line.bytesize > width + # delete the extra word and add to next line + formatted_line.back(word.size + 1) + formatted_lines.push formatted_line.to_s.lstrip.chomp + formatted_line = String::Builder.new(word.lstrip) + end + end + end + end + # if we reach the end of the words, check if formatted_line is empty and append + unless formatted_line.empty? + formatted_lines.push formatted_line.to_s.lstrip.chomp + end + formatted_lines + end + end +end diff --git a/src/snipline_cli/services/file_storage.cr b/src/snipline_cli/services/file_storage.cr deleted file mode 100644 index 3a43bfa..0000000 --- a/src/snipline_cli/services/file_storage.cr +++ /dev/null @@ -1,12 +0,0 @@ -require "baked_file_system" - -module SniplineCli - module Services - # FileStorage is used for baking in web assets into the final executable. - class FileStorage - extend BakedFileSystem - - bake_folder "../../../public" - end - end -end diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index d6efce7..141119d 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -6,6 +6,8 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run # ``` class LoadSnippets + include SniplineCli::Models + def self.run : Array(Snippet) config = SniplineCli.config log = SniplineCli.log diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr new file mode 100644 index 0000000..8bb99db --- /dev/null +++ b/src/snipline_cli/services/search_snippets.cr @@ -0,0 +1,40 @@ +require "json" + +module SniplineCli::Services + # For saving Snippets locally. + class SearchSnippets + property snippets + + # Takes an array of snippets and saves them to the `snippet.json` file. + def initialize(@snippets = [] of SniplineCli::Models::Snippet) + end + + def search(search_term) + results = @snippets.select { |i| + i.name != "" + } + unless search_term.empty? + lowered_search_term = search_term.downcase + results = results.select do |i| + i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + end + end + + sort_results(results) + end + + def sort_results(snippets) + snippets.sort { |snippet_a, snippet_b| + if snippet_a.is_pinned && snippet_b.is_pinned + snippet_a.name <=> snippet_b.name + elsif snippet_a.is_pinned + -1 + elsif snippet_b.is_pinned + 1 + else + snippet_a.name <=> snippet_b.name + end + } + end + end +end diff --git a/src/snipline_cli/services/setup_ncurses.cr b/src/snipline_cli/services/setup_ncurses.cr new file mode 100644 index 0000000..282bd6c --- /dev/null +++ b/src/snipline_cli/services/setup_ncurses.cr @@ -0,0 +1,24 @@ +module SniplineCli::Services + class Setup + def initialize + NCurses.start + NCurses.cbreak + NCurses.no_echo + NCurses.keypad true + + unless NCurses.has_colors? + NCurses.end + exit(1) + end + NCurses.start_color + + NCurses.init_color_pair(1, NCurses::Color::White, NCurses::Color::Green) + NCurses.init_color_pair(2, NCurses::Color::Green, NCurses::Color::Black) + NCurses.init_color_pair(3, NCurses::Color::Green, NCurses::Color::Black) + NCurses.init_color_pair(4, NCurses::Color::Black, NCurses::Color::Green) + + # This turns off the blinking cursor + LibNCurses.curs_set(1) + end + end +end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index a64d494..6981191 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -3,6 +3,8 @@ require "json" module SniplineCli::Services # For talking to the Snipline API. class SniplineApi + include SniplineCli::Models + # Fetches the user's Snippets. def fetch(&block) config = SniplineCli.config diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 2d09f82..beaf938 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -3,6 +3,8 @@ require "json" module SniplineCli::Services # For saving Snippets locally. class SyncSnippetToSnipline + include SniplineCli::Models + # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet_attributes) snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index 8573647..007646a 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -3,6 +3,7 @@ require "toml" module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile + include SniplineCli::Models TEMPLATE = %<# Welcome to the terminal-based snippet editor # This file uses TOML syntax and will be processed after the file is closed # Fill in the below options and save+quit to continue diff --git a/src/snipline_cli/templates/index.ecr b/src/snipline_cli/templates/index.ecr deleted file mode 100644 index b0cac5f..0000000 --- a/src/snipline_cli/templates/index.ecr +++ /dev/null @@ -1,24 +0,0 @@ -
-

Snipline

- New Snippet -
-

Your Snippets

-
    - <% snippets = SniplineCli::Services::LoadSnippets.run %> - <% snippets.each do |snippet| %> -
  • -
    - <% if snippet.snippet_alias %> - [<%= snippet.snippet_alias %>] - <% end %> - <%= snippet.name %> -
    -
    -
    <%= snippet.preview_command_in_html %>
    -
    -
  • - <% end %> -
- \ No newline at end of file diff --git a/src/snipline_cli/templates/layout.ecr b/src/snipline_cli/templates/layout.ecr deleted file mode 100644 index 2d83558..0000000 --- a/src/snipline_cli/templates/layout.ecr +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Snipline CLI - - - - - <%= content %> - - - \ No newline at end of file diff --git a/src/snipline_cli/templates/snippets/new.ecr b/src/snipline_cli/templates/snippets/new.ecr deleted file mode 100644 index 3146b6e..0000000 --- a/src/snipline_cli/templates/snippets/new.ecr +++ /dev/null @@ -1,56 +0,0 @@ -
-

Snipline

- Cancel -
-

New Snippet

-
- <% if success %> -
- <%= success %> -
- <% end %> - <% if error %> -
- <%= error %> -
- <% end %> -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- -
diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index b67f97c..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,63 +0,0 @@ -module.exports = { - theme: { - extend: {}, - colors: { - transparent: 'transparent', - black: '#000', - 'grey-darkest': '#3d4852', - 'grey-darker': '#606f7b', - 'grey-dark': '#8795a1', - grey: '#b8c2cc', - 'grey-light': '#dae1e7', - 'grey-lighter': '#f1f5f8', - 'grey-lightest': '#f8fafc', - white: '#fff', - 'snipline-green-darker': '#333510', - 'snipline-green-dark': '#94AB0D', - 'snipline-lime-light': '#e1f471', - 'snipline-lime': '#CDED15', - 'snipline-lime-dark': '#94AB0D', - 'snipline-green': '#15ED78', - 'snipline-yellow': '#EDE415', - 'snipline-grey-dark': 'rgba(51, 53, 16, 0.8)', - 'snipline-grey': '#EBF1EF', - 'snipline-grey-light': '#DAE1E7', - 'snipline-grey-lighter': '#E0E8EE', - success: { - 100: '#ECFBD7', - 200: '#D5F8B0', - 300: '#B3EC84', - 400: '#90D962', - 500: '#61C134', - 600: '#46A526', - 700: '#2F8A1A', - 800: '#1C6F10', - 900: '#0E5C09', - }, - info: { - 100: '#DFF6FE', - 200: '#BFE9FE', - 300: '#9FD9FE', - 400: '#86CAFD', - 500: '#5FB0FC', - 600: '#4589D8', - 700: '#2F67B5', - 800: '#1E4892', - 900: '#123278', - }, - danger: { - 100: '#FFEAD7', - 200: '#FFD0B0', - 300: '#FFB088', - 400: '#FF916B', - 500: '#FF5E3A', - 600: '#DB3D2A', - 700: '#B7221D', - 800: '#931218', - 900: '#7A0B18', - } - } - }, - variants: {}, - plugins: [] -} diff --git a/webpack.mix.js b/webpack.mix.js deleted file mode 100644 index 29c90b5..0000000 --- a/webpack.mix.js +++ /dev/null @@ -1,53 +0,0 @@ -let mix = require('laravel-mix'); - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for your application, as well as bundling up your JS files. - | - */ - -mix.js('assets/js/app.js', 'public/js/').postCss('assets/css/app.css', 'public/css/', [ - require('tailwindcss'), -]); - -// Full API -// mix.js(src, output); -// mix.react(src, output); <-- Identical to mix.js(), but registers React Babel compilation. -// mix.preact(src, output); <-- Identical to mix.js(), but registers Preact compilation. -// mix.coffee(src, output); <-- Identical to mix.js(), but registers CoffeeScript compilation. -// mix.ts(src, output); <-- TypeScript support. Requires tsconfig.json to exist in the same folder as webpack.mix.js -// mix.extract(vendorLibs); -// mix.sass(src, output); -// mix.less(src, output); -// mix.stylus(src, output); -// mix.postCss(src, output, [require('postcss-some-plugin')()]); -// mix.browserSync('my-site.test'); -// mix.combine(files, destination); -// mix.babel(files, destination); <-- Identical to mix.combine(), but also includes Babel compilation. -// mix.copy(from, to); -// mix.copyDirectory(fromDir, toDir); -// mix.minify(file); -// mix.sourceMaps(); // Enable sourcemaps -// mix.version(); // Enable versioning. -// mix.disableNotifications(); -// mix.setPublicPath('path/to/public'); -// mix.setResourceRoot('prefix/for/resource/locators'); -// mix.autoload({}); <-- Will be passed to Webpack's ProvidePlugin. -// mix.webpackConfig({}); <-- Override webpack.config.js, without editing the file directly. -// mix.babelConfig({}); <-- Merge extra Babel configuration (plugins, etc.) with Mix's default. -// mix.then(function () {}) <-- Will be triggered each time Webpack finishes building. -// mix.dump(); <-- Dump the generated webpack config object t the console. -// mix.extend(name, handler) <-- Extend Mix's API with your own components. -// mix.options({ -// extractVueStyles: false, // Extract .vue component styling to file, rather than inline. -// globalVueStyles: file, // Variables file to be imported in every component. -// processCssUrls: true, // Process/optimize relative stylesheet url()'s. Set to false, if you don't want them touched. -// purifyCss: false, // Remove unused CSS selectors. -// terser: {}, // Terser-specific options. https://github.com/webpack-contrib/terser-webpack-plugin#options -// postCss: [] // Post-CSS options: https://github.com/postcss/postcss/blob/master/docs/plugins.md -// }); diff --git a/yarn-error.log b/yarn-error.log deleted file mode 100644 index 98a2029..0000000 --- a/yarn-error.log +++ /dev/null @@ -1,6456 +0,0 @@ -Arguments: - /Users/mitchellstanley/.nvm/versions/node/v10.15.2/bin/node /usr/local/Cellar/yarn/1.16.0/libexec/bin/yarn.js - -PATH: - /usr/local/opt/valet-php@7.1/sbin:/usr/local/opt/valet-php@7.1/bin:/usr/local/opt/valet-php@7.2/sbin:/usr/local/opt/valet-php@7.2/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.kiex/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.kiex/bin:/Users/mitchellstanley/.asdf/shims:/Applications/Postgres.app/Contents/Versions/latest/bin:/Users/mitchellstanley/spark-installer:/Users/mitchellstanley/Downloads/exercism-mac-64bit:/Users/mitchellstanley/.composer/vendor/bin:/Users/mitchellstanley/.rbenv/shims:/Users/mitchellstanley/.nvm/versions/node/v10.15.2/bin:/Users/mitchellstanley/.kiex/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands - -Yarn version: - 1.16.0 - -Node version: - 10.15.2 - -Platform: - darwin x64 - -Trace: - SyntaxError: /Users/mitchellstanley/Code/projects/snipline/cli/package.json: Unexpected token } in JSON at position 283 - at JSON.parse () - at /usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:1625:59 - at Generator.next () - at step (/usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:304:30) - at /usr/local/Cellar/yarn/1.16.0/libexec/lib/cli.js:315:13 - -npm manifest: - { - "name": "snipcli", - "version": "0.1.5", - "main": "index.js", - "author": "Mitchell Stanley ", - "license": "MIT", - "dependencies": { - "cross-env": "^5.2.0", - "laravel-mix": "^4.0.15", - "tailwindcss": "^1.0.1", - "lodash": "^4.17.13", - }, - "scripts": { - "dev": "yarn run development", - "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch": "yarn run development -- --watch", - "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", - "prod": "yarn run production", - "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" - }, - "devDependencies": { - "vue-template-compiler": "^2.6.10" - } - } - -yarn manifest: - No manifest - -Lockfile: - # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. - # yarn lockfile v1 - - - "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - - "@babel/core@^7.0.0-beta.49", "@babel/core@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" - integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - - "@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== - dependencies: - "@babel/types" "^7.4.4" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - - "@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== - dependencies: - "@babel/types" "^7.0.0" - - "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" - - "@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - - "@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - - "@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - - "@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - - "@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - - "@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== - dependencies: - "@babel/types" "^7.4.4" - - "@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== - dependencies: - "@babel/types" "^7.0.0" - - "@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== - dependencies: - "@babel/types" "^7.0.0" - - "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - - "@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - - "@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - - "@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" - integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== - dependencies: - lodash "^4.17.11" - - "@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - - "@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - - "@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - - "@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - dependencies: - "@babel/types" "^7.4.4" - - "@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" - - "@babel/helpers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" - integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== - dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - - "@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - - "@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== - - "@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - - "@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - - "@babel/plugin-proposal-object-rest-spread@^7.2.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - - "@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - - "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - - "@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - - "@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" - - "@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - - "@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - - "@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - - "@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== - dependencies: - regexp-tree "^0.1.0" - - "@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - - "@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== - dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-regenerator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" - integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== - dependencies: - regenerator-transform "^0.13.4" - - "@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-runtime@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" - integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - - "@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - - "@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - - "@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - - "@babel/preset-env@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" - integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.4" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.5.2" - core-js-compat "^3.0.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - - "@babel/runtime@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" - integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== - dependencies: - regenerator-runtime "^0.13.2" - - "@babel/template@^7.1.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - - "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - - "@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== - dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - - "@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - - "@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - - "@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - - "@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - - "@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - - "@types/node@*": - version "12.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40" - integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA== - - "@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== - - "@vue/component-compiler-utils@^2.5.1": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" - integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.14" - postcss-selector-parser "^5.0.0" - prettier "1.16.3" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - - "@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - - "@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - - "@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - - "@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - - "@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - - "@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - - "@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - - "@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - - "@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - - "@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - - "@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - - "@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - - "@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - - "@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - - "@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - - "@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - - "@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - - "@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - - "@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - - "@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - - abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - - accepts@~1.3.4, accepts@~1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - - acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - - acorn@^6.0.5: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== - - ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - - ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== - - ajv@^6.1.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - - alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - - ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - - ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - - ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - - ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - - ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - - ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - - anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - - aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - - are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - - argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - - arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - - arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - - arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - - array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - - array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - - array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - - array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - - array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - - arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - - asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - - assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - - assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - - ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= - - async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - - async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - - async@^2.4.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - - atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - - autoprefixer@^9.4.2, autoprefixer@^9.4.5: - version "9.5.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" - integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== - dependencies: - browserslist "^4.5.4" - caniuse-lite "^1.0.30000957" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.14" - postcss-value-parser "^3.3.1" - - babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - - babel-loader@^8.0.4: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== - dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" - - babel-merge@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/babel-merge/-/babel-merge-2.0.1.tgz#6b2dfad78a655df66e3418eb37b1c3c5e676ad1a" - integrity sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA== - dependencies: - "@babel/core" "^7.0.0-beta.49" - deepmerge "^2.1.0" - object.omit "^3.0.0" - - balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - - base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== - - base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - - batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - - big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - - binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - - bluebird@^3.1.1, bluebird@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== - - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - - body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - - bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - - boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - - brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - - braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - - brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - - browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - - browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - - browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - - browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - - browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - - browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - - browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.5.4: - version "4.6.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff" - integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg== - dependencies: - caniuse-lite "^1.0.30000967" - electron-to-chromium "^1.3.133" - node-releases "^1.1.19" - - buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - - buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - - buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - - buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - - builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - - bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - - bytes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - - cacache@^11.3.2: - version "11.3.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" - integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== - dependencies: - bluebird "^3.5.3" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.3" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - - cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - - call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - - caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - - caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - - callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - - camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - - camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - - camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - - caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - - caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000967: - version "1.0.30000967" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73" - integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ== - - chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - - chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - - charenc@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= - - chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - - chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== - - chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== - dependencies: - tslib "^1.9.0" - - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - - class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - - clean-css@4.2.x, clean-css@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== - dependencies: - source-map "~0.6.0" - - cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - - coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - - code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - - collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - - color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - - color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - - color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - - color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - - color@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61" - integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - - commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - - commander@^2.19.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - - commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - - commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - - component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - - compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== - dependencies: - mime-db ">= 1.40.0 < 2" - - compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - - concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - - concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - - concatenate@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/concatenate/-/concatenate-0.0.2.tgz#0b49d6e8c41047d7728cdc8d62a086623397b49f" - integrity sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8= - dependencies: - globs "^0.1.2" - - connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - - console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" - - console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - - consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - - constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - - content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - - content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - - convert-source-map@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - - cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - - cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - - copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - - copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - - core-js-compat@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" - integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== - dependencies: - browserslist "^4.5.4" - core-js "3.0.1" - core-js-pure "3.0.1" - semver "^6.0.0" - - core-js-pure@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" - integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== - - core-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" - integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== - - core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - - cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - - cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - - create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - - create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - - create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - - cross-env@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" - integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== - dependencies: - cross-spawn "^6.0.5" - is-windows "^1.0.0" - - cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - - crypt@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - - crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - - css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - - css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - - css-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" - integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - - css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - - css-select@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" - integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== - dependencies: - boolbase "^1.0.0" - css-what "^2.1.2" - domutils "^1.7.0" - nth-check "^1.0.2" - - css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - - css-tree@1.0.0-alpha.28: - version "1.0.0-alpha.28" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" - integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - - css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" - integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - - css-unit-converter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" - integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= - - css-url-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" - integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= - - css-what@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - - cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - - cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - - cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - - cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - - cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - - cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - - cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - - cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - - cssnano@^4.1.0: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - - csso@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" - integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== - dependencies: - css-tree "1.0.0-alpha.29" - - cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= - - date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - - de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - - debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - - debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - - debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - - decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - - decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - - deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= - - deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - - deepmerge@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - - default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - - define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - - define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - - define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - - define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - - del@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - - delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - - depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - - des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - - destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - - detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - - detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - - detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - - diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - - dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - - dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - - dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - - dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - - dom-serializer@0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - - domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - - domelementtype@1, domelementtype@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - - domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - - dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - - dotenv-expand@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= - - dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - - duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - - ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - - electron-to-chromium@^1.3.133: - version "1.3.134" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.134.tgz#550222bddac43c6bd6c445c3543a0fe8a615021d" - integrity sha512-C3uK2SrtWg/gSWaluLHWSHjyebVZCe4ZC0NVgTAoTq8tCR9FareRK5T7R7AS/nPZShtlEcjVMX1kQ8wi4nU68w== - - elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - - emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - - encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - - end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - - enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - - entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - - errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - - error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - - error-stack-parser@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" - integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== - dependencies: - stackframe "^1.0.4" - - es-abstract@^1.12.0, es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - - es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - - es6-templates@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= - dependencies: - recast "~0.11.12" - through "~2.3.6" - - escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - - escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - - eslint-scope@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - - esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - - esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - - esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - - estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - - esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - - etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - - eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - - events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - - eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - - evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - - execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - - expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - - expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - - express@^4.16.4: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" - safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - - extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - - extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - - extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - - extract-text-webpack-plugin@v4.0.0-beta.0: - version "4.0.0-beta.0" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42" - integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.4.5" - webpack-sources "^1.1.0" - - fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - - fast-glob@^2.0.2: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - - fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= - - fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - - faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - - faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= - dependencies: - websocket-driver ">=0.5.1" - - figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== - - file-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - - file-type@^10.7.0: - version "10.11.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" - integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== - - fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - - finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - - find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - - find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - - findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - - flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - - follow-redirects@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" - integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== - dependencies: - debug "^3.2.6" - - for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - - forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - - fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - - fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - - friendly-errors-webpack-plugin@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136" - integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== - dependencies: - chalk "^1.1.3" - error-stack-parser "^2.0.0" - string-width "^2.0.0" - - from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - - fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - - fs-extra@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b" - integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - - fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - dependencies: - minipass "^2.2.1" - - fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - - fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - - fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - - function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - - gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - - get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - - get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - - get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - - glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - - glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - - glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - - global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - - global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - - globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - - globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - - globby@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - - globs@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" - integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== - dependencies: - glob "^7.1.1" - - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - - growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - - handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== - - has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - - has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - - has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - - has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - - has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - - has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - - has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - - has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - - has@^1.0.0, has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - - hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - - hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - - hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - - he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - - hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - - hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - - homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - - hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - - hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - - hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - - html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - - html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - - html-loader@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" - integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== - dependencies: - es6-templates "^0.2.3" - fastparse "^1.1.1" - html-minifier "^3.5.8" - loader-utils "^1.1.0" - object-assign "^4.1.1" - - html-minifier@^3.5.8: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - - http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - - http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - - http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== - - http-proxy-middleware@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - - http-proxy@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - - https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - - iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - - iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - - icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - - icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" - - ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - - iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - - ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - - ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - - imagemin@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.1.0.tgz#62508b465728fea36c03cdc07d915fe2d8cf9e13" - integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A== - dependencies: - file-type "^10.7.0" - globby "^8.0.1" - make-dir "^1.0.0" - p-pipe "^1.1.0" - pify "^4.0.1" - replace-ext "^1.0.0" - - img-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/img-loader/-/img-loader-3.0.1.tgz#c279691c0a9e6b94fa7d8318d2a6596d98bcee78" - integrity sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA== - dependencies: - loader-utils "^1.1.0" - - import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - - import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - - import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - - import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - - imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - - indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - - indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - - inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - - inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - - inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - - ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - - internal-ip@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - - interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - - invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - - invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - - ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - - ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - - ipaddr.js@1.9.0, ipaddr.js@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - - is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - - is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - - is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - - is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - - is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - - is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - - is-buffer@^1.1.5, is-buffer@~1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - - is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - - is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - - is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - - is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - - is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - - is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - - is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - - is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - - is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - - is-extendable@^1.0.0, is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - - is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - - is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - - is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - - is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - - is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - - is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - - is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - - is-path-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" - integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== - - is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - - is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - - is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - - is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - - is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - - is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - - is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - - is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" - - is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - - is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - - isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - - isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - - isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - - js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - - js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - - js-yaml@^3.13.1, js-yaml@^3.9.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - - jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - - jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - - json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - - json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= - - json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - - json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - - jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - - killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - - kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - - kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - - kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - - laravel-mix@^4.0.15: - version "4.0.15" - resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-4.0.15.tgz#b8f1e07770d72b3206a6726cdb14142ae0ea5d50" - integrity sha512-i1o1HLeBkM/QVe4OhW+aBy0xcQuGq7moQadgSV4kcwiHYjbfpcb1FpcDZByU2HKkkPtwK5uy+O77nVQe24wGPw== - dependencies: - "@babel/core" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.2.0" - "@babel/plugin-transform-runtime" "^7.2.0" - "@babel/preset-env" "^7.2.0" - "@babel/runtime" "^7.2.0" - autoprefixer "^9.4.2" - babel-loader "^8.0.4" - babel-merge "^2.0.1" - chokidar "^2.0.3" - clean-css "^4.1.3" - concatenate "0.0.2" - css-loader "^1.0.1" - dotenv "^6.2.0" - dotenv-expand "^4.2.0" - extract-text-webpack-plugin v4.0.0-beta.0 - file-loader "^2.0.0" - friendly-errors-webpack-plugin "^1.6.1" - fs-extra "^7.0.1" - glob "^7.1.2" - html-loader "^0.5.5" - imagemin "^6.0.0" - img-loader "^3.0.0" - lodash "^4.17.5" - md5 "^2.2.1" - optimize-css-assets-webpack-plugin "^5.0.1" - postcss-loader "^3.0.0" - style-loader "^0.23.1" - terser "^3.11.0" - terser-webpack-plugin "^1.1.0" - vue-loader "^15.4.2" - webpack "^4.27.1" - webpack-cli "^3.1.2" - webpack-dev-server "^3.1.14" - webpack-merge "^4.1.0" - webpack-notifier "^1.5.1" - yargs "^12.0.5" - - last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - - lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - - loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - - loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - - locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - - lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - - lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - - lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - - lodash@^4.17.11, lodash@^4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - - loglevel@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= - - loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - - lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - - lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - - lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - - make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - - make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - - mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - - map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - - map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - - map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - - md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - - md5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= - dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" - - mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" - integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== - - media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - - mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - - memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - - merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - - merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - - merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== - - methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - - micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - - miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - - mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - - mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== - dependencies: - mime-db "1.40.0" - - mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - - mime@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== - - mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - - minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - - minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - - minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - - minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - - minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - - minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - dependencies: - minipass "^2.2.1" - - mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - - mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - - mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - - move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - - ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - - ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - - multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - - multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - - nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - - nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - - needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - - negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - - neo-async@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - - nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - - no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - - node-emoji@^1.8.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - - node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== - - node-libs-browser@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "0.0.4" - - node-notifier@^5.1.2: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - - node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - - node-releases@^1.1.19: - version "1.1.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.19.tgz#c492d1e381fea0350b338b646c27867e88e91b3d" - integrity sha512-SH/B4WwovHbulIALsQllAVwqZZD1kPmKCqrhGfR29dXjLAVZMHvBjD3S6nL9D/J9QkmZ1R92/0wCMDKXUUvyyA== - dependencies: - semver "^5.3.0" - - nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - - normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - - normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - - normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - - normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - - normalize.css@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" - integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== - - npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - - npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - - npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - - npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - - nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - - num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - - number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - - object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - - object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - - object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - - object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - - object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - - object.omit@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" - integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ== - dependencies: - is-extendable "^1.0.0" - - object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - - object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" - - obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - - on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - - on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - - once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - - opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - - optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" - integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== - dependencies: - cssnano "^4.1.0" - last-call-webpack-plugin "^3.0.0" - - original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - - os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - - os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - - os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - - os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - - osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - - p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - - p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - - p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - - p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - dependencies: - p-try "^2.0.0" - - p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - - p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - - p-pipe@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" - integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= - - p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - - pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== - - parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - - param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - - parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - - parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - - parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - - parseurl@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - - pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - - path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - - path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - - path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - - path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - - path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - - path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - - path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - - path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - - path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - - pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - - pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - - pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - - pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - - pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - - pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - - pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - - portfinder@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" - integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - - posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - - postcss-calc@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" - integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== - dependencies: - css-unit-converter "^1.1.1" - postcss "^7.0.5" - postcss-selector-parser "^5.0.0-rc.4" - postcss-value-parser "^3.3.1" - - postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - - postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - - postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - - postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - - postcss-functions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" - integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= - dependencies: - glob "^7.1.2" - object-assign "^4.1.1" - postcss "^6.0.9" - postcss-value-parser "^3.3.0" - - postcss-js@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.1.tgz#4154e906ff410930afab63a24210be1b831e89a9" - integrity sha512-8XQGohCbj6+kq8e3w6WlexkGaSjb5S8zoXnH49eB8JC6+qN2kQW+ib6fTjRgCpRRN9eeFOhMlD0NDjThW1DCBg== - dependencies: - camelcase-css "^2.0.1" - postcss "^7.0.14" - - postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== - dependencies: - cosmiconfig "^4.0.0" - import-cwd "^2.0.0" - - postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - - postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - - postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - - postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - - postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - - postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== - dependencies: - postcss "^6.0.1" - - postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - - postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - - postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - - postcss-nested@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.1.2.tgz#8e0570f736bfb4be5136e31901bf2380b819a561" - integrity sha512-9bQFr2TezohU3KRSu9f6sfecXmf/x6RXDedl8CHF6fyuyVW7UqgNMRdWMHZQWuFY6Xqs2NYk+Fj4Z4vSOf7PQg== - dependencies: - postcss "^7.0.14" - postcss-selector-parser "^5.0.0" - - postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - - postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - - postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - - postcss-selector-parser@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" - integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= - dependencies: - dot-prop "^4.1.1" - indexes-of "^1.0.1" - uniq "^1.0.1" - - postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - - postcss-selector-parser@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - - postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - - postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - - postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - - postcss@^6.0.1, postcss@^6.0.23, postcss@^6.0.9: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - - postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.5: - version "7.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" - integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - - prettier@1.16.3: - version "1.16.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" - integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== - - pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - - private@^0.1.6, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - - process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - - process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - - promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - - proxy-addr@~2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - - prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - - pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - - public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - - pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - - pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - - pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - - punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - - punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - - punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - - q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - - qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - - querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - - querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - - querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - - randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - - range-parser@^1.2.1, range-parser@~1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - - raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - - rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - - readable-stream@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" - integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - - readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - - recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - - regenerate-unicode-properties@^8.0.2: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== - dependencies: - regenerate "^1.4.0" - - regenerate@^1.2.1, regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - - regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - - regenerator-transform@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" - integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== - dependencies: - private "^0.1.6" - - regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - - regexp-tree@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" - integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== - - regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - - regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - - regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - - regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== - - regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - - regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== - dependencies: - jsesc "~0.5.0" - - relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - - remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - - repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - - repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - - replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - - require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - - require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - - require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - - requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - - resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - - resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - - resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - - resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - - resolve@^1.3.2, resolve@^1.8.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" - integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== - dependencies: - path-parse "^1.0.6" - - ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - - rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - - rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - - rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - - ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - - run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - - safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - - safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - - "safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - - sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - - schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - - schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - - select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - - selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== - dependencies: - node-forge "0.7.5" - - semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - - semver@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== - - send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - - serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - - serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - - serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - - set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - - set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - - set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - - setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - - setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - - sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - - shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - - shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - - shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - - signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - - simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - - slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - - snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - - snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - - snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - - sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - - sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - - source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - - source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - - source-map-support@~0.5.10: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - - source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - - source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - - source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - - spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - - spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - - split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - - sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - - ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - - stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - - stackframe@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== - - static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - - "statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - - statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - - stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - - stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - - stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - - stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - - string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - - "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - - string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== - dependencies: - safe-buffer "~5.1.0" - - string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - - strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - - strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - - strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - - strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - - style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - - stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - - supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - - supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - - supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - - svgo@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" - integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.28" - css-url-regex "^1.1.0" - csso "^3.5.1" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - - tailwindcss@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.0.1.tgz#3116e989c64540f1c11214e8b4c08b6aea548be5" - integrity sha512-tNyvmizhIY9ydXX8m84S/69851QROZzbH6RB/Q4w0K27OssupGcyXeD8zumzb9Yuzq6PifBH2A6ehjuBPklnYA== - dependencies: - autoprefixer "^9.4.5" - bytes "^3.0.0" - chalk "^2.4.1" - fs-extra "^8.0.0" - lodash "^4.17.11" - node-emoji "^1.8.1" - normalize.css "^8.0.1" - postcss "^7.0.11" - postcss-functions "^3.0.0" - postcss-js "^2.0.0" - postcss-nested "^4.1.1" - postcss-selector-parser "^6.0.0" - pretty-hrtime "^1.0.3" - - tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - - tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - - terser-webpack-plugin@^1.1.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz#56f87540c28dd5265753431009388f473b5abba3" - integrity sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q== - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - terser "^3.17.0" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" - - terser@^3.11.0, terser@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - dependencies: - commander "^2.19.0" - source-map "~0.6.1" - source-map-support "~0.5.10" - - through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - - through@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - - thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== - - timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== - dependencies: - setimmediate "^1.0.4" - - timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - - to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - - to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - - to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - - to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - - to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - - trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - - tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - - tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - - type-is@~1.6.16: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - - typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - - uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - - unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - - unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - - unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== - - unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== - - union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - - uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - - uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - - unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - - unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== - dependencies: - imurmurhash "^0.1.4" - - universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - - unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - - unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - - unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - - upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== - - upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - - uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - - urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - - url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - - url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - - use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - - util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - - util.promisify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - - util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - - util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - - utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - - uuid@^3.0.1, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - - v8-compile-cache@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - - vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - - vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== - - vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" - - vue-hot-reload-api@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" - integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g== - - vue-loader@^15.4.2: - version "15.7.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3" - integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA== - dependencies: - "@vue/component-compiler-utils" "^2.5.1" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - - vue-style-loader@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" - integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - - vue-template-compiler@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" - integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - - vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - - watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - - wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - - webpack-cli@^3.1.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91" - integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA== - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.0" - findup-sync "^2.0.0" - global-modules "^1.0.0" - import-local "^2.0.0" - interpret "^1.1.0" - loader-utils "^1.1.0" - supports-color "^5.5.0" - v8-compile-cache "^2.0.2" - yargs "^12.0.5" - - webpack-dev-middleware@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.2" - range-parser "^1.2.1" - webpack-log "^2.0.0" - - webpack-dev-server@^3.1.14: - version "3.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d" - integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.5" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.0" - express "^4.16.4" - html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" - import-local "^2.0.0" - internal-ip "^4.2.0" - ip "^1.1.5" - killable "^1.0.1" - loglevel "^1.6.1" - opn "^5.5.0" - portfinder "^1.0.20" - schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.0.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.6.2" - webpack-log "^2.0.0" - yargs "12.0.5" - - webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - - webpack-merge@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" - integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== - dependencies: - lodash "^4.17.5" - - webpack-notifier@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/webpack-notifier/-/webpack-notifier-1.7.0.tgz#4e03ea3ba1c0588d863935363f145d067815068a" - integrity sha512-L3UKrl500xk0VDYKkwQxy5/BPhBWsZ2xHsAx2Qe3dVKYUEk9+y690RcNTMIUcVOK2fRgK7KK3PA4ccOq1h+fTg== - dependencies: - node-notifier "^5.1.2" - object-assign "^4.1.0" - strip-ansi "^3.0.1" - - webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - - webpack@^4.27.1: - version "4.31.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.31.0.tgz#ae201d45f0571336e42d1c2b5c8ab56c4d3b0c63" - integrity sha512-n6RVO3X0LbbipoE62akME9K/JI7qYrwwufs20VvgNNpqUoH4860KkaxJTbGq5bgkVZF9FqyyTG/0WPLH3PVNJA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" - - websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - - websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - - which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - - which@^1.2.14, which@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - - wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - - worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - - wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - - wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - - xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= - - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - - yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - - yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - - yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - - yargs@12.0.5, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index e932145..0000000 --- a/yarn.lock +++ /dev/null @@ -1,6408 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/core@^7.0.0-beta.49", "@babel/core@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" - integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== - dependencies: - "@babel/types" "^7.4.4" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== - dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== - dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.0" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" - integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== - dependencies: - lodash "^4.17.11" - -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== - dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - dependencies: - "@babel/types" "^7.4.4" - -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" - -"@babel/helpers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" - integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== - dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== - -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - -"@babel/plugin-proposal-object-rest-spread@^7.2.0", "@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" - -"@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== - dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== - dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.4.tgz#5611d96d987dfc4a3a81c4383bb173361037d68d" - integrity sha512-Ki+Y9nXBlKfhD+LXaRS7v95TtTGYRAf9Y1rTDiE75zf8YQz4GDaWRXosMfJBXxnk88mGFjWdCRIeqDbon7spYA== - dependencies: - regexp-tree "^0.1.0" - -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" - -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== - dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-regenerator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.4.tgz#5b4da4df79391895fca9e28f99e87e22cfc02072" - integrity sha512-Zz3w+pX1SI0KMIiqshFZkwnVGUhDZzpX2vtPzfJBKQQq8WsP/Xy9DNdELWivxcKOCX/Pywge4SiEaPaLtoDT4g== - dependencies: - regenerator-transform "^0.13.4" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-runtime@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" - integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" - -"@babel/preset-env@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.4.tgz#b6f6825bfb27b3e1394ca3de4f926482722c1d6f" - integrity sha512-FU1H+ACWqZZqfw1x2G1tgtSSYSfxJLkpaUQL37CenULFARDo+h4xJoVHzRoHbK+85ViLciuI7ME4WTIhFRBBlw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.4" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.4" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.5.2" - core-js-compat "^3.0.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/runtime@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" - integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.1.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== - dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "12.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.2.tgz#3452a24edf9fea138b48fad4a0a028a683da1e40" - integrity sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA== - -"@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== - -"@vue/component-compiler-utils@^2.5.1": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" - integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw== - dependencies: - consolidate "^0.15.1" - hash-sum "^1.0.2" - lru-cache "^4.1.2" - merge-source-map "^1.1.0" - postcss "^7.0.14" - postcss-selector-parser "^5.0.0" - prettier "1.16.3" - source-map "~0.6.1" - vue-template-es2015-compiler "^1.9.0" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.4, accepts@~1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - -acorn@^6.0.5: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" - integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== - -ajv@^6.1.0: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.4.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.4.2, autoprefixer@^9.4.5: - version "9.5.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357" - integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ== - dependencies: - browserslist "^4.5.4" - caniuse-lite "^1.0.30000957" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.14" - postcss-value-parser "^3.3.1" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-loader@^8.0.4: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== - dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" - -babel-merge@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/babel-merge/-/babel-merge-2.0.1.tgz#6b2dfad78a655df66e3418eb37b1c3c5e676ad1a" - integrity sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA== - dependencies: - "@babel/core" "^7.0.0-beta.49" - deepmerge "^2.1.0" - object.omit "^3.0.0" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -bluebird@^3.1.1, bluebird@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^4.0.0, browserslist@^4.5.2, browserslist@^4.5.4: - version "4.6.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff" - integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg== - dependencies: - caniuse-lite "^1.0.30000967" - electron-to-chromium "^1.3.133" - node-releases "^1.1.19" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^11.3.2: - version "11.3.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" - integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== - dependencies: - bluebird "^3.5.3" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.3" - graceful-fs "^4.1.15" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.30000967: - version "1.0.30000967" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz#a5039577806fccee80a04aaafb2c0890b1ee2f73" - integrity sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ== - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -charenc@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= - -chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== - -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== - dependencies: - tslib "^1.9.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x, clean-css@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== - dependencies: - source-map "~0.6.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.1.tgz#7abf5c0d38e89378284e873c207ae2172dcc8a61" - integrity sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.19.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== - dependencies: - mime-db ">= 1.40.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concatenate@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/concatenate/-/concatenate-0.0.2.tgz#0b49d6e8c41047d7728cdc8d62a086623397b49f" - integrity sha1-C0nW6MQQR9dyjNyNYqCGYjOXtJ8= - dependencies: - globs "^0.1.2" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -consolidate@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" - integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== - dependencies: - bluebird "^3.1.1" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.0.1.tgz#bff73ba31ca8687431b9c88f78d3362646fb76f0" - integrity sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g== - dependencies: - browserslist "^4.5.4" - core-js "3.0.1" - core-js-pure "3.0.1" - semver "^6.0.0" - -core-js-pure@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.0.1.tgz#37358fb0d024e6b86d443d794f4e37e949098cbe" - integrity sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g== - -core-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" - integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-env@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" - integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== - dependencies: - cross-spawn "^6.0.5" - is-windows "^1.0.0" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypt@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" - integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" - integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== - dependencies: - boolbase "^1.0.0" - css-what "^2.1.2" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-tree@1.0.0-alpha.28: - version "1.0.0-alpha.28" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" - integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-tree@1.0.0-alpha.29: - version "1.0.0-alpha.29" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" - integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== - dependencies: - mdn-data "~1.1.0" - source-map "^0.5.3" - -css-unit-converter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" - integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= - -css-url-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" - integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= - -css-what@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.0: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" - integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== - dependencies: - css-tree "1.0.0-alpha.29" - -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.5, debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deepmerge@^2.1.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -dom-serializer@0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - -dotenv-expand@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= - -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.3.133: - version "1.3.134" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.134.tgz#550222bddac43c6bd6c445c3543a0fe8a615021d" - integrity sha512-C3uK2SrtWg/gSWaluLHWSHjyebVZCe4ZC0NVgTAoTq8tCR9FareRK5T7R7AS/nPZShtlEcjVMX1kQ8wi4nU68w== - -elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" - integrity sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw== - dependencies: - stackframe "^1.0.4" - -es-abstract@^1.12.0, es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-templates@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= - dependencies: - recast "~0.11.12" - through "~2.3.6" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.16.4: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" - safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-text-webpack-plugin@v4.0.0-beta.0: - version "4.0.0-beta.0" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz#f7361d7ff430b42961f8d1321ba8c1757b5d4c42" - integrity sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA== - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.4.5" - webpack-sources "^1.1.0" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-glob@^2.0.2: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= - -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== - -file-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== - dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" - -file-type@^10.7.0: - version "10.11.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" - integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" - integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== - dependencies: - debug "^3.2.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -friendly-errors-webpack-plugin@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136" - integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw== - dependencies: - chalk "^1.1.3" - error-stack-parser "^2.0.0" - string-width "^2.0.0" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.0.1.tgz#90294081f978b1f182f347a440a209154344285b" - integrity sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - dependencies: - minipass "^2.2.1" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globs@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/globs/-/globs-0.1.4.tgz#1d13639f6174e4ae73a7f936da7d9a079f657c1c" - integrity sha512-D23dWbOq48vlOraoSigbcQV4tWrnhwk+E/Um2cMuDS3/5dwGmdFeA7L/vAvDhLFlQOTDqHcXh35m/71g2A2WzQ== - dependencies: - glob "^7.1.1" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash-sum@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" - integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x, he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-loader@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" - integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== - dependencies: - es6-templates "^0.2.3" - fastparse "^1.1.1" - html-minifier "^3.5.8" - loader-utils "^1.1.0" - object-assign "^4.1.1" - -html-minifier@^3.5.8: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== - -http-proxy-middleware@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -imagemin@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-6.1.0.tgz#62508b465728fea36c03cdc07d915fe2d8cf9e13" - integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A== - dependencies: - file-type "^10.7.0" - globby "^8.0.1" - make-dir "^1.0.0" - p-pipe "^1.1.0" - pify "^4.0.1" - replace-ext "^1.0.0" - -img-loader@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/img-loader/-/img-loader-3.0.1.tgz#c279691c0a9e6b94fa7d8318d2a6596d98bcee78" - integrity sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA== - dependencies: - loader-utils "^1.1.0" - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -internal-ip@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.0, ipaddr.js@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5, is-buffer@~1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.0, is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-path-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" - integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" - -is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1, js-yaml@^3.9.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== - dependencies: - minimist "^1.2.0" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -laravel-mix@^4.0.15: - version "4.0.15" - resolved "https://registry.yarnpkg.com/laravel-mix/-/laravel-mix-4.0.15.tgz#b8f1e07770d72b3206a6726cdb14142ae0ea5d50" - integrity sha512-i1o1HLeBkM/QVe4OhW+aBy0xcQuGq7moQadgSV4kcwiHYjbfpcb1FpcDZByU2HKkkPtwK5uy+O77nVQe24wGPw== - dependencies: - "@babel/core" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.2.0" - "@babel/plugin-transform-runtime" "^7.2.0" - "@babel/preset-env" "^7.2.0" - "@babel/runtime" "^7.2.0" - autoprefixer "^9.4.2" - babel-loader "^8.0.4" - babel-merge "^2.0.1" - chokidar "^2.0.3" - clean-css "^4.1.3" - concatenate "0.0.2" - css-loader "^1.0.1" - dotenv "^6.2.0" - dotenv-expand "^4.2.0" - extract-text-webpack-plugin v4.0.0-beta.0 - file-loader "^2.0.0" - friendly-errors-webpack-plugin "^1.6.1" - fs-extra "^7.0.1" - glob "^7.1.2" - html-loader "^0.5.5" - imagemin "^6.0.0" - img-loader "^3.0.0" - lodash "^4.17.5" - md5 "^2.2.1" - optimize-css-assets-webpack-plugin "^5.0.1" - postcss-loader "^3.0.0" - style-loader "^0.23.1" - terser "^3.11.0" - terser-webpack-plugin "^1.1.0" - vue-loader "^15.4.2" - webpack "^4.27.1" - webpack-cli "^3.1.2" - webpack-dev-server "^3.1.14" - webpack-merge "^4.1.0" - webpack-notifier "^1.5.1" - yargs "^12.0.5" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -lodash@^4.17.13: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -loglevel@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^4.1.2: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -md5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= - dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" - -mdn-data@~1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" - integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== - dependencies: - mime-db "1.40.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - -mime@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - dependencies: - minipass "^2.2.1" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-emoji@^1.8.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== - -node-libs-browser@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "0.0.4" - -node-notifier@^5.1.2: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.19: - version "1.1.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.19.tgz#c492d1e381fea0350b338b646c27867e88e91b3d" - integrity sha512-SH/B4WwovHbulIALsQllAVwqZZD1kPmKCqrhGfR29dXjLAVZMHvBjD3S6nL9D/J9QkmZ1R92/0wCMDKXUUvyyA== - dependencies: - semver "^5.3.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize.css@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" - integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== - -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -object.omit@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af" - integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ== - dependencies: - is-extendable "^1.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimize-css-assets-webpack-plugin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#9eb500711d35165b45e7fd60ba2df40cb3eb9159" - integrity sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A== - dependencies: - cssnano "^4.1.0" - last-call-webpack-plugin "^3.0.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-pipe@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" - integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== - -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.4" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" - integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -portfinder@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" - integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" - integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== - dependencies: - css-unit-converter "^1.1.1" - postcss "^7.0.5" - postcss-selector-parser "^5.0.0-rc.4" - postcss-value-parser "^3.3.1" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-functions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" - integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= - dependencies: - glob "^7.1.2" - object-assign "^4.1.1" - postcss "^6.0.9" - postcss-value-parser "^3.3.0" - -postcss-js@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.1.tgz#4154e906ff410930afab63a24210be1b831e89a9" - integrity sha512-8XQGohCbj6+kq8e3w6WlexkGaSjb5S8zoXnH49eB8JC6+qN2kQW+ib6fTjRgCpRRN9eeFOhMlD0NDjThW1DCBg== - dependencies: - camelcase-css "^2.0.1" - postcss "^7.0.14" - -postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== - dependencies: - cosmiconfig "^4.0.0" - import-cwd "^2.0.0" - -postcss-loader@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-nested@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.1.2.tgz#8e0570f736bfb4be5136e31901bf2380b819a561" - integrity sha512-9bQFr2TezohU3KRSu9f6sfecXmf/x6RXDedl8CHF6fyuyVW7UqgNMRdWMHZQWuFY6Xqs2NYk+Fj4Z4vSOf7PQg== - dependencies: - postcss "^7.0.14" - postcss-selector-parser "^5.0.0" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-selector-parser@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" - integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= - dependencies: - dot-prop "^4.1.1" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss@^6.0.1, postcss@^6.0.23, postcss@^6.0.9: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.5: - version "7.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" - integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prettier@1.16.3: - version "1.16.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" - integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -private@^0.1.6, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -proxy-addr@~2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" - integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - -regenerate-unicode-properties@^8.0.2: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - -regenerator-transform@^0.13.4: - version "0.13.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.4.tgz#18f6763cf1382c69c36df76c6ce122cc694284fb" - integrity sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A== - dependencies: - private "^0.1.6" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp-tree@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.6.tgz#84900fa12fdf428a2ac25f04300382a7c0148479" - integrity sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w== - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.3.2, resolve@^1.8.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" - integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== - dependencies: - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== - dependencies: - node-forge "0.7.5" - -semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -semver@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.10: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stackframe@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== - dependencies: - safe-buffer "~5.1.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -svgo@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" - integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.28" - css-url-regex "^1.1.0" - csso "^3.5.1" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -tailwindcss@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.0.1.tgz#3116e989c64540f1c11214e8b4c08b6aea548be5" - integrity sha512-tNyvmizhIY9ydXX8m84S/69851QROZzbH6RB/Q4w0K27OssupGcyXeD8zumzb9Yuzq6PifBH2A6ehjuBPklnYA== - dependencies: - autoprefixer "^9.4.5" - bytes "^3.0.0" - chalk "^2.4.1" - fs-extra "^8.0.0" - lodash "^4.17.11" - node-emoji "^1.8.1" - normalize.css "^8.0.1" - postcss "^7.0.11" - postcss-functions "^3.0.0" - postcss-js "^2.0.0" - postcss-nested "^4.1.1" - postcss-selector-parser "^6.0.0" - pretty-hrtime "^1.0.3" - -tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -terser-webpack-plugin@^1.1.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.4.tgz#56f87540c28dd5265753431009388f473b5abba3" - integrity sha512-64IiILNQlACWZLzFlpzNaG0bpQ4ytaB7fwOsbpsdIV70AfLUmIGGeuKL0YV2WmtcrURjE2aOvHD4/lrFV3Rg+Q== - dependencies: - cacache "^11.3.2" - find-cache-dir "^2.0.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - source-map "^0.6.1" - terser "^3.17.0" - webpack-sources "^1.3.0" - worker-farm "^1.7.0" - -terser@^3.11.0, terser@^3.17.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== - dependencies: - commander "^2.19.0" - source-map "~0.6.1" - source-map-support "~0.5.10" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" - integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== - -timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -type-is@~1.6.16: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -v8-compile-cache@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" - -vue-hot-reload-api@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" - integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g== - -vue-loader@^15.4.2: - version "15.7.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3" - integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA== - dependencies: - "@vue/component-compiler-utils" "^2.5.1" - hash-sum "^1.0.2" - loader-utils "^1.1.0" - vue-hot-reload-api "^2.3.0" - vue-style-loader "^4.1.0" - -vue-style-loader@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" - integrity sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ== - dependencies: - hash-sum "^1.0.2" - loader-utils "^1.0.2" - -vue-template-compiler@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" - integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - -vue-template-es2015-compiler@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" - integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== - -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@^3.1.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.2.tgz#aed2437b0db0a7faa2ad28484e166a5360014a91" - integrity sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA== - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.0" - findup-sync "^2.0.0" - global-modules "^1.0.0" - import-local "^2.0.0" - interpret "^1.1.0" - loader-utils "^1.1.0" - supports-color "^5.5.0" - v8-compile-cache "^2.0.2" - yargs "^12.0.5" - -webpack-dev-middleware@^3.6.2: - version "3.7.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" - integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.2" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.1.14: - version "3.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d" - integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.5" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.0" - express "^4.16.4" - html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" - import-local "^2.0.0" - internal-ip "^4.2.0" - ip "^1.1.5" - killable "^1.0.1" - loglevel "^1.6.1" - opn "^5.5.0" - portfinder "^1.0.20" - schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.0.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.6.2" - webpack-log "^2.0.0" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" - integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw== - dependencies: - lodash "^4.17.5" - -webpack-notifier@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/webpack-notifier/-/webpack-notifier-1.7.0.tgz#4e03ea3ba1c0588d863935363f145d067815068a" - integrity sha512-L3UKrl500xk0VDYKkwQxy5/BPhBWsZ2xHsAx2Qe3dVKYUEk9+y690RcNTMIUcVOK2fRgK7KK3PA4ccOq1h+fTg== - dependencies: - node-notifier "^5.1.2" - object-assign "^4.1.0" - strip-ansi "^3.0.1" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.27.1: - version "4.31.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.31.0.tgz#ae201d45f0571336e42d1c2b5c8ab56c4d3b0c63" - integrity sha512-n6RVO3X0LbbipoE62akME9K/JI7qYrwwufs20VvgNNpqUoH4860KkaxJTbGq5bgkVZF9FqyyTG/0WPLH3PVNJA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" From 11b209424440caa8ebf6e82fd7c3ff696fc9fe43 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 16 Oct 2019 13:40:11 +0100 Subject: [PATCH 02/47] Add missing files --- CHANGELOG.md | 19 ++++++ Makefile | 42 ++++++++++++ README.md | 157 ++++++++++++++++++++++++++++++++++++++++---- snap/snapcraft.yaml | 21 ++++++ 4 files changed, 228 insertions(+), 11 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 Makefile create mode 100644 snap/snapcraft.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..db6ea21 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +## 0.2.0 + +### Features + +* Added `new` command to create new snippets from command line. +* new `--run` flag for `search` command to run the selected snippet +* Added ability to create snippets from the `web` interface. + +### Changes + +* `search` command now copies the selected snippet instead of running. +* Updated Crystal to `0.30.1` +* Updated `lodash` dependency for `web` interface. + +### Bugfixes + +None! diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..45a7ca0 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +PREFIX=/usr/local +INSTALL_DIR=$(PREFIX)/bin +SNIPCLI_SYSTEM=$(INSTALL_DIR)/snipcli + +OUT_DIR=./bin +SNIPCLI=$(OUT_DIR)/snipcli +SNIPCLI_SOURCES=$(shell find src/ -type f -name '*.cr') + +all: build + +build: lib $(SNIPCLI) + +lib: + @shards install --production + +$(SNIPCLI): $(SNIPCLI_SOURCES) | $(OUT_DIR) + @echo "Building snipcli in $@" + @crystal build -o $@ src/snipline_cli.cr -p --no-debug --release + +$(OUT_DIR) $(INSTALL_DIR): + @mkdir -p $@ + +run: + $(SNIPCLI) + +install: build | $(INSTALL_DIR) + @rm -f $(SNIPCLI_SYSTEM) + @cp $(SNIPCLI) $(SNIPCLI_SYSTEM) + +link: build | $(INSTALL_DIR) + @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)" + @ln -s $(SNIPCLI) $(SNIPCLI_SYSTEM) + +force_link: build | $(INSTALL_DIR) + @echo "Symlinking $(SNIPCLI) to $(SNIPCLI_SYSTEM)" + @ln -sf $(SNIPCLI) $(SNIPCLI_SYSTEM) + +clean: + rm -rf $(SNIPCLI) + +distclean: + rm -rf $(SNIPCLI) .crystal .shards libs lib \ No newline at end of file diff --git a/README.md b/README.md index 84c04f3..c2e929d 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,162 @@ -# cli2 +# Snipline CLI -TODO: Write a description here +Snipline CLI is the command-line tool for [Snipline](https://snipline.io). + +![SnipCLI Preview](https://f002.backblazeb2.com/file/ms-uploads/snipline/2019-07-10%2010.41.26.gif) + +Snipline CLI allows you to search and run commands from your Snipline account directly through the command-line. It is also possible to use this for free without a Snipline account (See the documentation on using without a Snipline Account). ## Installation -TODO: Write installation instructions here +### Homebrew (MacOS and Linux) + +Snipline CLI is available through Homebrew for MacOS and Linux. + +```bash +brew install snipline/snipline/snipcli +``` + +### Snapcraft (Linux) + +Linux users can download via Snapcraft + +``` +sudo snap install snipcli --beta +``` + +### From source + +Snipline CLI requires Crystal 0.29.0 to be installed to install from source + +```bash +# Install dependencies +shards +# Build app +crystal build src/snipline_cli.cr -o snipcli --release +``` ## Usage -TODO: Write usage instructions here +### Syncing to Snipline + +Log-in to your Snipline account and sync your snippets. + +Follow login instructions (Enter email and token) + +```bash +snipcli login +``` + +Download snippets from your account + +```bash +snipcli sync +``` + +This will create two files on your system: `~/.config/snipline/config.toml` and `~/.config/snipline/snippets.json`. + +### Searching snippets + +A basic search can be done with the `search` command. + +```bash +snipcli search +``` + +By default search will ask if you wish to copy the result to clipboard, to run the result in the current terminal, use the `run` flag. + +```bash +snipline search --run +``` + +Search options include `field`, `limit`, `run`. See `snipcli search --help` for more information + +Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Select `no` when prompted to copy to clipboard to continue and use the `--run` flag to run the command instead. + +### Creating a new snippet + +You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to Snipline Cloud. + +```bash +snipline new +``` + +### Web interface + +Snipline CLI comes with a lightweight web interface. To use it run + +``` +snipcli web +``` + +You can then view and edit snippets through a web browser. By default this works locally on port 9876, however, you can specify it to be accessible remotely with the following arguments. + +```bash +snipcli web -p 3000 -b 0.0.0.0 +``` + +### Using Snipline CLI without a Snipline Account + +Snipline CLI can be used without an active Snipline account. But requires either manually entering data in the `~/.config/snipline/snippets.json` file or using the `web` interface. + +To generate the initial configuration files use the `init` command. + +```bash +snipcli init +``` + +At this moment the web interface does not support CRUD commands and manual entry is required. + +Here is an example ~/.config/snipline/snipets.json` file to get started. + +Note that `id` of `null` means that it has not been synced to a Snipline account. It will be lost if `snipcli sync` is ever run to fetch snippets from Snipline. + +```json +[ + { + "id":null, + "type":"snippets", + "attributes": + { + "is-pinned":false, + "name":"Symlink directory", + "real-command":"ln -s #{[Source]} #{[Destination]}", + "tags":["file", "linux"] + } + } +] +``` ## Development -TODO: Write development instructions here +See the Installation section on building from source. + +Set log levels for additional development output. + +```bash +crystal build src/snipline_cli.cr -o snipcli +env LOG_LEVEL=DEBUG ./snipcli search git +``` + +To change the config file location (For testing) use the `CONFIG_FILE` environment variable. + +```bash +env CONFIG_FILE=./spec/fixtures/config.toml ./snipcli search git +``` ## Contributing -1. Fork it () -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Commit your changes (`git commit -am 'Add some feature'`) -4. Push to the branch (`git push origin my-new-feature`) -5. Create a new Pull Request +See the [Contributing guide](CONTRIBUTING.md) for details. + +## TODO + +* More tests. +* Create snippets through web interface. +* Edit snippets through web interface. +* Delete snippets through web interface. +* More documentation (Including usage without a Snipline account). +* Table formatting for search results. ## Contributors -- [Mitchell Stanley](https://github.com/your-github-user) - creator and maintainer +- [Mitchell Stanley](https://github.com/acoustep) - creator and maintainer diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..25e66f1 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,21 @@ +name: snipcli +version: 0.2.0 +summary: Shell Snippet organiser +description: > + Snipcli is a commandline interface for managing shell commands. Sync commands with your Snipline account or use in guest mode. Snipline lets you dynamically change command parameters easily so you never have to remember how to build a command. + +confinement: classic +grade: devel + +architectures: + - amd64 + - i386 + +parts: + snipcli: + plugin: dump + source: https://github.com/snipline/snipcli/releases/download/$SNAPCRAFT_PROJECT_VERSION/snipcli-$SNAPCRAFT_PROJECT_VERSION_linux_x86_64.tar.gz + +apps: + snipcli: + command: snipcli From ef958f6b14fc83e1d6e24188651051948a239f69 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 16 Oct 2019 14:05:54 +0100 Subject: [PATCH 03/47] Update instructions for 0.3.0 --- README.md | 85 ++++++++++++++++++------------------------------------- 1 file changed, 27 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index c2e929d..6471307 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ Snipline CLI is the command-line tool for [Snipline](https://snipline.io). -![SnipCLI Preview](https://f002.backblazeb2.com/file/ms-uploads/snipline/2019-07-10%2010.41.26.gif) +![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif) -Snipline CLI allows you to search and run commands from your Snipline account directly through the command-line. It is also possible to use this for free without a Snipline account (See the documentation on using without a Snipline Account). +Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to [Snipline](https://snipline.io) account. ## Installation @@ -26,7 +26,7 @@ sudo snap install snipcli --beta ### From source -Snipline CLI requires Crystal 0.29.0 to be installed to install from source +Snipline CLI requires Crystal 0.30.1 to be installed to install from source ```bash # Install dependencies @@ -37,6 +37,18 @@ crystal build src/snipline_cli.cr -o snipcli --release ## Usage +### Using Snipline CLI for free + +Snipline CLI can be used without an active Snipline account. + +To generate the initial configuration files use the `init` command. + +```bash +snipcli init +``` + +The above command will generate a `config.toml` file and a `snippets.json` file in your `~/.config/snipline` directory. + ### Syncing to Snipline Log-in to your Snipline account and sync your snippets. @@ -49,33 +61,33 @@ snipcli login Download snippets from your account +**Note:: At the time of writing this will clear any unsynced snippets on your machine. This will be changed with a future update** + ```bash snipcli sync ``` -This will create two files on your system: `~/.config/snipline/config.toml` and `~/.config/snipline/snippets.json`. - ### Searching snippets A basic search can be done with the `search` command. ```bash -snipcli search +snipcli search ``` -By default search will ask if you wish to copy the result to clipboard, to run the result in the current terminal, use the `run` flag. +If you wish to pre-filter the results you can do so by adding a searchterm and specify the field to search on. ```bash -snipline search --run +snipline search --field=tags ``` -Search options include `field`, `limit`, `run`. See `snipcli search --help` for more information +Search options include `field` and `limit`. See `snipcli search --help` for more information -Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Select `no` when prompted to copy to clipboard to continue and use the `--run` flag to run the command instead. +Note that as of 0.2.0 it's not possible to search and copy to clipboard from a Linux VM/SSH session. Use `run` to run the command directly from your terminal session. ### Creating a new snippet -You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to Snipline Cloud. +You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to your Snipline Account. ```bash snipline new @@ -83,49 +95,7 @@ snipline new ### Web interface -Snipline CLI comes with a lightweight web interface. To use it run - -``` -snipcli web -``` - -You can then view and edit snippets through a web browser. By default this works locally on port 9876, however, you can specify it to be accessible remotely with the following arguments. - -```bash -snipcli web -p 3000 -b 0.0.0.0 -``` - -### Using Snipline CLI without a Snipline Account - -Snipline CLI can be used without an active Snipline account. But requires either manually entering data in the `~/.config/snipline/snippets.json` file or using the `web` interface. - -To generate the initial configuration files use the `init` command. - -```bash -snipcli init -``` - -At this moment the web interface does not support CRUD commands and manual entry is required. - -Here is an example ~/.config/snipline/snipets.json` file to get started. - -Note that `id` of `null` means that it has not been synced to a Snipline account. It will be lost if `snipcli sync` is ever run to fetch snippets from Snipline. - -```json -[ - { - "id":null, - "type":"snippets", - "attributes": - { - "is-pinned":false, - "name":"Symlink directory", - "real-command":"ln -s #{[Source]} #{[Destination]}", - "tags":["file", "linux"] - } - } -] -``` +As of 0.3.0 the web interface has been removed infavour of the new TUI. ## Development @@ -151,11 +121,10 @@ See the [Contributing guide](CONTRIBUTING.md) for details. ## TODO * More tests. -* Create snippets through web interface. -* Edit snippets through web interface. -* Delete snippets through web interface. * More documentation (Including usage without a Snipline account). -* Table formatting for search results. +* Syncing local snippets via `snipcli sync`. +* Editing snippets. +* Compact search mode. ## Contributors From 9f60e3f983c8a9d604f4a6597d457726cf485e20 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 16 Oct 2019 14:09:01 +0100 Subject: [PATCH 04/47] Fix some typos --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6471307..3495842 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Snipline CLI is the command-line tool for [Snipline](https://snipline.io). ![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif) -Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to [Snipline](https://snipline.io) account. +Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account. ## Installation @@ -59,7 +59,7 @@ Follow login instructions (Enter email and token) snipcli login ``` -Download snippets from your account +### Download snippets from your Snipline account **Note:: At the time of writing this will clear any unsynced snippets on your machine. This will be changed with a future update** @@ -75,10 +75,10 @@ A basic search can be done with the `search` command. snipcli search ``` -If you wish to pre-filter the results you can do so by adding a searchterm and specify the field to search on. +If you wish to pre-filter the results you can do so by adding a search term and specify the field to search on. ```bash -snipline search --field=tags +snipcli search --field=tags ``` Search options include `field` and `limit`. See `snipcli search --help` for more information @@ -90,7 +90,7 @@ Note that as of 0.2.0 it's not possible to search and copy to clipboard from a L You can create a new snippet by using the `new` command. This will open a TOML file in the text editor of your preference. Once closed it will attempt to add it to your `snippets.json` file and sync to your Snipline Account. ```bash -snipline new +snipcli new ``` ### Web interface From 585b9f26e9c18aedb0ec9f2327b3b4d6443aa63a Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 24 Oct 2019 15:12:29 +0100 Subject: [PATCH 05/47] Better flow for snipcli init command --- src/snipline_cli/commands/init.cr | 15 ++++++++++----- src/snipline_cli/commands/sync.cr | 6 ++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 7420747..3030b37 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -15,7 +15,7 @@ module SniplineCli title = "Snipline" [api] - url = "" + url = "#{config.get("api.url")}" token = "" [general] @@ -25,13 +25,18 @@ module SniplineCli SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file) File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") + puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" unless File.exists?(File.expand_path(config.get("general.file"))) File.write(File.expand_path(config.get("general.file")), "[]", mode: "w") - puts "Created #{config.get("general.file").colorize.mode(:bold)}" + puts "Created JSON file in #{File.expand_path(config.get("general.file")).colorize.mode(:bold)}" end - puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" - puts "Add your snippets to #{File.expand_path(config.get("general.file"))}" - puts "See documentation for more information https://github.com/snipline/snipcli#using-snipline-cli-without-a-snipline-account" + puts "" + puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" + puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}" + puts "" + puts "See documentation for more information #{"https://github.com/snipline/snipcli".colorize.mode(:bold)}" + puts "" + puts "Happy Coding!" end end diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index ea11e8f..8e3e60b 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -18,6 +18,12 @@ module SniplineCli def run puts "Syncing snippets..." + config = SniplineCli.config + puts config.get("api.token") + if config.get("api.token") == "" + puts "#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}" + exit(1) + end @snipline_api.fetch do |body| # Save the response JSON into a file without the data wrapper snippets = Models::SnippetDataWrapper.from_json(body).data.to_json From cdfb4f403b397ff8b3384cf457ec3ef43ee22974 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 24 Oct 2019 15:13:42 +0100 Subject: [PATCH 06/47] Change sync failure to abort --- src/snipline_cli/commands/sync.cr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 8e3e60b..a9de355 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -21,8 +21,7 @@ module SniplineCli config = SniplineCli.config puts config.get("api.token") if config.get("api.token") == "" - puts "#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}" - exit(1) + abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") end @snipline_api.fetch do |body| # Save the response JSON into a file without the data wrapper From c56b3eaa34b6501aad9b7d0c84723c6be175440a Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 24 Oct 2019 15:25:05 +0100 Subject: [PATCH 07/47] update new snippet command to adhere to cloud sync options --- .../services/temp_snippet_editor_file.cr | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index 007646a..a659b48 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -16,7 +16,7 @@ This section supports **Markdown** """ is_pinned = true snippet_alias = "" -sync_to_cloud = true +sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} > def create @@ -34,11 +34,20 @@ sync_to_cloud = true real_command: toml["real_command"].as(String), documentation: toml["documentation"].as(String), is_pinned: toml["is_pinned"].as(Bool), - snippet_alias: toml["snippet_alias"].as(String), + snippet_alias: parse_snippet_alias(toml["snippet_alias"]), tags: [] of String ) end + def parse_snippet_alias(snippet_alias) + str = snippet_alias.as(String) + if str == "" + nil + else + str + end + end + def sync_to_cloud? config = SniplineCli.config toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) From 2735c1921d7842229b28acd8df9c52980594eb90 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 24 Oct 2019 16:38:41 +0100 Subject: [PATCH 08/47] Saving new snippets to snipline on sync --- src/snipline_cli/commands/search.cr | 6 +++- src/snipline_cli/commands/sync.cr | 36 +++++++++++++++----- src/snipline_cli/models/snippet.cr | 6 +++- src/snipline_cli/models/snippet_attribute.cr | 2 +- src/snipline_cli/services/search_snippets.cr | 6 +++- src/snipline_cli/services/snipline_api.cr | 3 ++ 6 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index b57663e..0cc086f 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -47,7 +47,11 @@ module SniplineCli if field = flags.field i.value_for_attribute(field).downcase.includes?(lowered_search_term) else - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.includes?(lowered_search_term) + if !i.tags.nil? + i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) + else + i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) + end end } end diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index a9de355..3d2b4ec 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -23,16 +23,34 @@ module SniplineCli if config.get("api.token") == "" abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") end - @snipline_api.fetch do |body| - # Save the response JSON into a file without the data wrapper - snippets = Models::SnippetDataWrapper.from_json(body).data.to_json - begin - @file.store(snippets) - rescue ex - puts ex.message - end - end + + sync_unsaved_snippets + + # @snipline_api.fetch do |body| + # # Save the response JSON into a file without the data wrapper + # snippets = Models::SnippetDataWrapper.from_json(body).data.to_json + # begin + # @file.store(snippets) + # rescue ex + # puts ex.message + # end + # end end + + def sync_unsaved_snippets + SniplineCli::Services::LoadSnippets.run.select { |s| s.id.nil? }.each do |snippet| + puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." + begin + cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes) + puts "Success!" + rescue ex : Crest::UnprocessableEntity + resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) + puts "Failed #{resp.errors.first.source["pointer"]}: #{resp.errors.first.detail}".colorize(:red) + rescue ex + abort ex.message + end + end + end end register_sub_command :sync, Sync diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 8548b42..f6403e6 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -130,7 +130,11 @@ module SniplineCli::Models when "name" name || "" when "tags" - tags.join(",") || "" + if !tags.nil? + tags.as(Array(String)).join(",") || "" + else + "" + end else "" end diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr index 21d717c..441562e 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/models/snippet_attribute.cr @@ -20,7 +20,7 @@ module SniplineCli::Models property real_command : String @[JSON::Field(key: "tags")] - property tags : Array(String) + property tags : Array(String) | Nil def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String)) end diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 8bb99db..5661d9c 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -16,7 +16,11 @@ module SniplineCli::Services unless search_term.empty? lowered_search_term = search_term.downcase results = results.select do |i| - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + if !i.tags.nil? + i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + else + i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + end end end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index 6981191..fb1014c 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -60,5 +60,8 @@ module SniplineCli::Services def fetch(&block) yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}" end + + def create(snippet : SniplineCli::Models::Snippet) + end end end From 94df723723f3c180bf2024c868bb8c8bea1be904 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 25 Oct 2019 13:00:46 +0100 Subject: [PATCH 09/47] Syncing local snippets to snipline --- src/snipline_cli/commands/sync.cr | 60 ++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 3d2b4ec..3be2210 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -19,38 +19,72 @@ module SniplineCli def run puts "Syncing snippets..." config = SniplineCli.config - puts config.get("api.token") if config.get("api.token") == "" abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") end sync_unsaved_snippets + download_snipline_snippets - # @snipline_api.fetch do |body| - # # Save the response JSON into a file without the data wrapper - # snippets = Models::SnippetDataWrapper.from_json(body).data.to_json - # begin - # @file.store(snippets) - # rescue ex - # puts ex.message - # end - # end end + + def download_snipline_snippets + @snipline_api.fetch do |body| + # Save the response JSON into a file without the data wrapper + cloud_snippets = Models::SnippetDataWrapper.from_json(body).data + local_snippets = SniplineCli::Services::LoadSnippets.run + begin + # Only snippets that are in the cloud but not stored locally + difference = [] of SniplineCli::Models::Snippet + local_snippet_ids = local_snippets.map { |s| s.id } + cloud_snippets.each do |cs| + difference << cs unless local_snippet_exists?(cs, local_snippet_ids) + end + difference.each do |s| + puts "Storing #{s.attributes.name} from Snipline".colorize(:green) + local_snippets << s + end + @file.store(local_snippets.to_json) unless difference.size == 0 + rescue ex + puts ex.message.colorize(:red) + end + end + end + + def local_snippet_exists?(cs, local_snippet_ids) + unless cs.id.nil? + return local_snippet_ids.includes?(cs.id.not_nil!) + end + return false + end + def sync_unsaved_snippets - SniplineCli::Services::LoadSnippets.run.select { |s| s.id.nil? }.each do |snippet| + local_snippets = SniplineCli::Services::LoadSnippets.run + local_snippets.select { |s| s.id.nil? }.each do |snippet| puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." begin cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes) - puts "Success!" + update_local_snippet_id(cloud_snippet, local_snippets) + puts "Success!".colorize(:green) rescue ex : Crest::UnprocessableEntity resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) - puts "Failed #{resp.errors.first.source["pointer"]}: #{resp.errors.first.detail}".colorize(:red) + puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) rescue ex abort ex.message end end end + + def update_local_snippet_id(cloud_snippet, local_snippets) + local_snippets = local_snippets.map do |snippet| + if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name + snippet.id = cloud_snippet.id + end + snippet + end + @file.store(local_snippets.to_json) + end end register_sub_command :sync, Sync From fb353b3e7bbd92a11737108c113b0c91b5cff7ff Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 31 Oct 2019 13:34:50 +0000 Subject: [PATCH 10/47] Add timestamps to snippets --- src/snipline_cli/commands/new.cr | 1 + src/snipline_cli/commands/sync.cr | 2 ++ src/snipline_cli/models/snippet.cr | 8 ++++++++ src/snipline_cli/models/snippet_attribute.cr | 14 ++++++++++++++ 4 files changed, 25 insertions(+) diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 2e7927b..4d2d888 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -27,6 +27,7 @@ module SniplineCli snippet = if temp_file.sync_to_cloud? SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes) else + snippet_attributes.set_timestamps() Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) end if snippet.is_a?(Snippet) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 3be2210..8ca5a0f 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -80,6 +80,8 @@ module SniplineCli local_snippets = local_snippets.map do |snippet| if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name snippet.id = cloud_snippet.id + snippet.attributes.inserted_at = cloud_snippet.attributes.inserted_at + snippet.attributes.updated_at = cloud_snippet.attributes.updated_at end snippet end diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index f6403e6..b3b611f 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -39,6 +39,14 @@ module SniplineCli::Models attributes.is_synced end + def inserted_at + attributes.inserted_at + end + + def updated_at + attributes.updated_at + end + # # Params such as variables or select that require input from the user # diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr index 441562e..e85bc58 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/models/snippet_attribute.cr @@ -21,8 +21,22 @@ module SniplineCli::Models @[JSON::Field(key: "tags")] property tags : Array(String) | Nil + + @[JSON::Field(key: "updated-at")] + property updated_at : String | Nil + + @[JSON::Field(key: "inserted-at")] + property inserted_at : String | Nil + + def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String), @inserted_at : String | Nil, @updated_at : String | Nil) + end def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String)) end + + def set_timestamps() + self.inserted_at = Time.utc.to_s + self.updated_at = Time.utc.to_s + end end end From 53f03468944057acd1de247a7e05c1ac0f62d67d Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 31 Oct 2019 14:21:07 +0000 Subject: [PATCH 11/47] Initial Sqlite migration --- shard.lock | 12 +++++++++++ shard.yml | 4 ++++ src/snipline_cli/commands/sync.cr | 2 ++ src/snipline_cli/services/migrator.cr | 31 +++++++++++++++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 src/snipline_cli/services/migrator.cr diff --git a/shard.lock b/shard.lock index 508efc7..b9630d6 100644 --- a/shard.lock +++ b/shard.lock @@ -8,14 +8,26 @@ shards: github: veelenga/ameba version: 0.10.1 + crecto: + github: Crecto/crecto + version: 0.11.1 + crest: github: mamantoha/crest version: 0.22.0 + db: + github: crystal-lang/crystal-db + version: 0.7.0 + http-client-digest_auth: github: mamantoha/http-client-digest_auth version: 0.2.0 + micrate: + github: juanedi/micrate + version: 0.4.1 + ncurses: github: JohnDowson/ncurses commit: d0e46f673b6a443255269ce610d598a0fdc7d159 diff --git a/shard.yml b/shard.yml index a82c952..713dc20 100644 --- a/shard.yml +++ b/shard.yml @@ -23,6 +23,10 @@ dependencies: ncurses: github: JohnDowson/ncurses branch: borders_and_lines + crecto: + github: Crecto/crecto + sqlite3: + github: crystal-lang/crystal-sqlite3 development_dependencies: diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 8ca5a0f..994bb05 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -17,6 +17,8 @@ module SniplineCli property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new def run + puts "Migrating Database..." + SniplineCli::Services::Migrator.run puts "Syncing snippets..." config = SniplineCli.config if config.get("api.token") == "" diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr new file mode 100644 index 0000000..deb22d4 --- /dev/null +++ b/src/snipline_cli/services/migrator.cr @@ -0,0 +1,31 @@ +require "db" +require "sqlite3" + +module SniplineCli::Services + class Migrator + def self.run + File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db")) + DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db| + db.exec "create table if not exists snippets ( + local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + cloud_id TEXT NULL, + name TEXT NOT NULL, + snippet_alias TEXT NULL UNIQUE, + documentation TEXT NULL, + real_command TEXT NOT NULL, + tags TEXT NULL, + is_synced BOOLEAN DEFAULT 0, + is_pinned BOOLEAN DEFAULT 0, + inserted_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + )" + db.exec "create table if not exists schema (version)" + begin + db.query_one "select version from schema", &.read(Int) + rescue ex : DB::Error + db.exec "insert into schema (version) values (?)", 1 + end + end + end + end +end From 3b0aa1f6d82d0badb7af5086805842278939c02c Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 31 Oct 2019 16:14:58 +0000 Subject: [PATCH 12/47] Adding new snippets now inserts into sqlite --- src/snipline_cli.cr | 11 +++++++ src/snipline_cli/commands/init.cr | 8 ++--- src/snipline_cli/commands/login.cr | 2 +- src/snipline_cli/commands/new.cr | 33 +++++++++++++------ src/snipline_cli/config.cr | 6 ++-- src/snipline_cli/models/snippet_schema.cr | 21 ++++++++++++ src/snipline_cli/services/snipline_api.cr | 6 ++-- .../services/sync_snippet_to_snipline.cr | 12 +++++-- 8 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 src/snipline_cli/models/snippet_schema.cr diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index f8bcd94..967fbf4 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -3,6 +3,8 @@ require "crest" require "toml" require "json" require "ncurses" +require "sqlite3" +require "crecto" require "./snipline_cli/config" require "./snipline_cli/exceptions/*" @@ -11,6 +13,15 @@ require "./snipline_cli/ncurses_windows/*" require "./snipline_cli/services/*" require "./snipline_cli/commands/*" +module Repo + extend Crecto::Repo + + config do |conf| + conf.adapter = Crecto::Adapters::SQLite3 + conf.database = File.expand_path("~/.config/snipline/snipline.db") + end +end + module SniplineCli VERSION = "0.3.0" diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 3030b37..035191d 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -19,16 +19,16 @@ module SniplineCli token = "" [general] - file = "#{config.get("general.file")}" + db = "#{config.get("general.db")}" temp_dir = "#{config.get("general.temp_dir")}" TOML SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file) File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" - unless File.exists?(File.expand_path(config.get("general.file"))) - File.write(File.expand_path(config.get("general.file")), "[]", mode: "w") - puts "Created JSON file in #{File.expand_path(config.get("general.file")).colorize.mode(:bold)}" + unless File.exists?(File.expand_path(config.get("general.db"))) + File.write(File.expand_path(config.get("general.db")), "", mode: "w") + puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}" end puts "" puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr index 1b2a213..8ffbbd9 100644 --- a/src/snipline_cli/commands/login.cr +++ b/src/snipline_cli/commands/login.cr @@ -56,7 +56,7 @@ module SniplineCli token = "#{token.jwt}" [general] - file = "#{config.get("general.file")}" + db = "#{config.get("general.db")}" TOML SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file) diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 4d2d888..df5cacf 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -12,8 +12,8 @@ module SniplineCli def run config = SniplineCli.config - unless File.exists?(File.expand_path("#{config.get("general.file")}")) - abort("Config file does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) + unless File.exists?(File.expand_path("#{config.get("general.db")}")) + abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end unless ENV.has_key?("EDITOR") abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) @@ -23,16 +23,28 @@ module SniplineCli loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read + snippet = SniplineCli::Models::SnippetSchema.new + + snippet.name = snippet_attributes.name + snippet.real_command = snippet_attributes.real_command + snippet.documentation = snippet_attributes.documentation + snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") + snippet.snippet_alias = snippet_attributes.snippet_alias + snippet.is_pinned = snippet_attributes.is_pinned + snippet.is_synced = false + changeset = SnippetSchema.changeset(snippet) + abort("Invalid") unless changeset.valid? + result = Repo.insert(changeset) begin snippet = if temp_file.sync_to_cloud? - SniplineCli::Services::SyncSnippetToSnipline.handle(snippet_attributes) - else - snippet_attributes.set_timestamps() - Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance) + # else + # snippet_attributes.set_timestamps() + # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) end - if snippet.is_a?(Snippet) - SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) - end + # if snippet.is_a?(Snippet) + # SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) + # end puts "Snippet created!" temp_file.delete break @@ -49,7 +61,8 @@ module SniplineCli abort("404 API URL not found".colorize.back(:red).on(:red)) rescue ex : Crest::InternalServerError abort("API Internal Server Error".colorize.back(:red).on(:red)) - rescue + rescue ex + puts "#{ex.message}" abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) end end diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index 5a2bedc..3e63d53 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -24,7 +24,7 @@ module SniplineCli else @api = {"url" => "https://api.snipline.io/api", "token" => ""} @general = { - "file" => "~/.config/snipline/snippets.json", + "db" => "~/.config/snipline/snipline.db", "temp_dir" => "~/.config/snipline", } end @@ -37,8 +37,8 @@ module SniplineCli @api["url"].as(String) when "api.token" @api["token"].as(String) - when "general.file" - @general["file"].as(String) + when "general.db" + @general["db"].as(String) when "general.temp_dir" @general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline" else diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr new file mode 100644 index 0000000..b5dd88f --- /dev/null +++ b/src/snipline_cli/models/snippet_schema.cr @@ -0,0 +1,21 @@ +module SniplineCli::Models + class SnippetSchema < Crecto::Model + set_created_at_field :inserted_at + + schema "snippets" do + field :local_id, Int32, primary_key: true + field :cloud_id, String + field :name, String + field :real_command, String + field :documentation, String + field :tags, String + field :snippet_alias, String + field :is_pinned, Bool + field :is_synced, Bool + end + + validate_required [:name, :real_command] + unique_constraint :snippet_alias + unique_constraint :name + end +end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index fb1014c..4a1af8a 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -18,7 +18,7 @@ module SniplineCli::Services yield resp.body end - def create(snippet : Snippet) + def create(snippet : SnippetAttribute | SnippetSchema) config = SniplineCli.config # begin resp = Crest.post( @@ -29,8 +29,8 @@ module SniplineCli::Services }, form: { # data: { - :name => snippet.name.chomp, - :real_command => snippet.real_command.chomp, + :name => snippet.name.not_nil!.chomp, + :real_command => snippet.real_command.not_nil!.chomp, :documentation => snippet.documentation, :alias => snippet.snippet_alias, :is_pinned => snippet.is_pinned.to_s, diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index beaf938..1ad0e79 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -6,9 +6,15 @@ module SniplineCli::Services include SniplineCli::Models # Takes an array of snippets and saves them to the `snippet.json` file. - def self.handle(snippet_attributes) - snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) - SniplineApi.new.create(snippet) + def self.handle(snippet) + # snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + response = SniplineApi.new.create(snippet) + if snippet.is_a?(SnippetSchema) + snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id) + snippet.cloud_id = response.id + after = Repo.update(snippet) + end + response end end end From ff0ade3bf5ab40d1e770b7cff44ba5cdfafb0214 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 6 Nov 2019 14:32:56 +0000 Subject: [PATCH 13/47] Start of migration to SQLite --- src/snipline_cli/commands/search.cr | 49 +++++---- src/snipline_cli/commands/sync.cr | 40 +++---- src/snipline_cli/models/snippet_schema.cr | 101 ++++++++++++++++++ src/snipline_cli/ncurses_windows/left_pane.cr | 8 +- .../ncurses_windows/right_pane.cr | 6 +- src/snipline_cli/services/command_builder.cr | 10 +- src/snipline_cli/services/load_snippets.cr | 21 ++-- src/snipline_cli/services/search_snippets.cr | 10 +- 8 files changed, 179 insertions(+), 66 deletions(-) diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 0cc086f..b45cf16 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -35,35 +35,46 @@ module SniplineCli def run search_term : String = arguments.search_term || "" - snippets = SniplineCli::Services::LoadSnippets.run + # snippets = SniplineCli::Services::LoadSnippets.run - unless search_term.empty? + snippets = if search_term.empty? + query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) + Repo.all(SniplineCli::Models::SnippetSchema, query) + else lowered_search_term = search_term.downcase if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) puts "The search field entered does not exist." return end - snippets.select! { |i| - if field = flags.field - i.value_for_attribute(field).downcase.includes?(lowered_search_term) - else - if !i.tags.nil? - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) - else - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) - end - end - } + query = Crecto::Repo::Query.new + if flags.field + query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + else + query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) + end + query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) + Repo.all(SniplineCli::Models::SnippetSchema, query) + # snippets.select! { |i| + # if field = flags.field + # i.value_for_attribute(field).downcase.includes?(lowered_search_term) + # else + # if !i.tags.nil? + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) + # else + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) + # end + # end + # } end - results = sort_results(snippets, flags.limit) + # results = sort_results(snippets, flags.limit) - unless results.size > 0 - puts "No results found." - exit(0) - end + # unless results.size > 0 + # puts "No results found." + # exit(0) + # end - Services::DisplayResults.new(results) + Services::DisplayResults.new(snippets) end def sort_results(snippets, limit) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 994bb05..b3170a3 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -25,7 +25,7 @@ module SniplineCli abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") end - sync_unsaved_snippets + sync_unsynced_snippets download_snipline_snippets end @@ -39,15 +39,25 @@ module SniplineCli begin # Only snippets that are in the cloud but not stored locally difference = [] of SniplineCli::Models::Snippet - local_snippet_ids = local_snippets.map { |s| s.id } + local_snippet_ids = local_snippets.map { |s| s.local_id } cloud_snippets.each do |cs| difference << cs unless local_snippet_exists?(cs, local_snippet_ids) end difference.each do |s| puts "Storing #{s.attributes.name} from Snipline".colorize(:green) - local_snippets << s + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = s.name + snippet.real_command = s.real_command + snippet.documentation = s.documentation + snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",") + snippet.snippet_alias = s.snippet_alias + snippet.is_pinned = s.is_pinned + snippet.is_synced = true + changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) + result = Repo.insert(changeset) + # local_snippets << s end - @file.store(local_snippets.to_json) unless difference.size == 0 + # @file.store(local_snippets.to_json) unless difference.size == 0 rescue ex puts ex.message.colorize(:red) end @@ -61,13 +71,13 @@ module SniplineCli return false end - def sync_unsaved_snippets + def sync_unsynced_snippets local_snippets = SniplineCli::Services::LoadSnippets.run - local_snippets.select { |s| s.id.nil? }.each do |snippet| + local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." begin - cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet.attributes) - update_local_snippet_id(cloud_snippet, local_snippets) + cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet) + update_local_snippet_id(cloud_snippet, snippet) puts "Success!".colorize(:green) rescue ex : Crest::UnprocessableEntity resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) @@ -78,16 +88,10 @@ module SniplineCli end end - def update_local_snippet_id(cloud_snippet, local_snippets) - local_snippets = local_snippets.map do |snippet| - if snippet.id.nil? && snippet.attributes.snippet_alias == cloud_snippet.attributes.snippet_alias && snippet.name == cloud_snippet.name - snippet.id = cloud_snippet.id - snippet.attributes.inserted_at = cloud_snippet.attributes.inserted_at - snippet.attributes.updated_at = cloud_snippet.attributes.updated_at - end - snippet - end - @file.store(local_snippets.to_json) + def update_local_snippet_id(cloud_snippet, local_snippet) + local_snippet.cloud_id = cloud_snippet.id + local_snippet.is_synced = true + changeset = Repo.update(local_snippet) end end diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr index b5dd88f..81f0b8d 100644 --- a/src/snipline_cli/models/snippet_schema.cr +++ b/src/snipline_cli/models/snippet_schema.cr @@ -17,5 +17,106 @@ module SniplineCli::Models validate_required [:name, :real_command] unique_constraint :snippet_alias unique_constraint :name + # + # Params such as variables or select that require input from the user + # + def interactive_params : Array(SnippetParam) + temp_array = [] of SnippetParam + + real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m| + param_type = (m[1]?) ? m[1] : "variable" + if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0 + if param_type == "select" + split_equals = m[2].split("=").map { |substring| substring } + param_name = split_equals.shift + unparsed_params = split_equals.join("=") + if unparsed_params.is_a?(String) + options = unparsed_params.as(String).split(",").map(&.strip) + # todo + if options.is_a?(Array(String)) + options = options.as(Array(String)) + end + else + options = Array(String).new + end + # default_option = options.first || "" + temp_array << SnippetParam.new(param_name, "", m[2], "select", options) + elsif m[2].includes?("=") + split_equals = m[2].split("=").map { |substring| substring } + param_name = split_equals.shift + default_value = split_equals.join("=") + temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new) + else + temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new) + end + end + end + temp_array + end + + # + # E.g. Passwords + # + def uninteractive_params : Array(SnippetPasswordParam) + temp_array = [] of SnippetPasswordParam + real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| + full = m[1].as(String) + options = full.split(",") + id = options.shift + length = UInt8.new(16) + if options.size > 0 + length = options.shift.to_u32 || UInt8.new(16) + end + temp_array << SnippetPasswordParam.new(id, length, full) + end + temp_array + end + + def has_params + interactive_params.size > 0 || uninteractive_params.size > 0 + end + + def preview_command + unless has_params() + return real_command + end + + temp_command = real_command + interactive_params.each do |param| + if param.type == "select" + temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" } + else + temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" } + end + end + + uninteractive_params.each do |param| + temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" } + temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" } + end + temp_command + end + + def value_for_attribute(attribute : String) + case attribute + when "alias" + snippet_alias || "" + when "documentation" + documentation || "" + when "name" + name || "" + when "tags" + if !tags.nil? + tags.as(Array(String)).join(",") || "" + else + "" + end + else + "" + end + end end + end diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr index 12eb954..4aac91c 100644 --- a/src/snipline_cli/ncurses_windows/left_pane.cr +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -6,10 +6,10 @@ module SniplineCli::NCursesWindows property right property selected_index = 0 property searcher : SniplineCli::Services::SearchSnippets - property results : Array(SniplineCli::Models::Snippet) - property snippets : Array(SniplineCli::Models::Snippet) + property results : Array(SniplineCli::Models::SnippetSchema) + property snippets : Array(SniplineCli::Models::SnippetSchema) - def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::Snippet) + def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::SnippetSchema) @results = @snippets @searcher = SniplineCli::Services::SearchSnippets.new(@snippets) @@ -72,7 +72,7 @@ module SniplineCli::NCursesWindows @window.print("[#{result.snippet_alias}] ") end - @window.print(result.name + "\n") + @window.print(result.name.as(String) + "\n") end def select_higher diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr index 792cd7f..06188fc 100644 --- a/src/snipline_cli/ncurses_windows/right_pane.cr +++ b/src/snipline_cli/ncurses_windows/right_pane.cr @@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows @window end - def display(snippet : SniplineCli::Models::Snippet | Nil) + def display(snippet : SniplineCli::Models::SnippetSchema | Nil) @window.clear if snippet LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) @@ -48,8 +48,8 @@ module SniplineCli::NCursesWindows end def print_snippet(command, width) - number_of_extra_lines = command.each_line(true).size - 3 - command.each_line(true).first(3).each do |line| + number_of_extra_lines = command.as(String).each_line(true).size - 3 + command.as(String).each_line(true).first(3).each do |line| LibNCurses.wprintw(@window, "%s\n", line) end if number_of_extra_lines > 0 diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index 4eca3a2..36a26db 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -16,12 +16,12 @@ module SniplineCli class CommandBuilder include SniplineCli::Models - def self.run(snippet : Snippet, input, output, user_input = [] of String) : String + def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String unless snippet.has_params - return snippet.real_command + return snippet.real_command || "" end - command_builder : String = snippet.real_command + command_builder : String = snippet.real_command || "" Setup.new snippet.interactive_params.each do |param| NCurses.clear @@ -40,8 +40,8 @@ module SniplineCli p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 - 9 0 £ * ^ ] [ : ; | ? > < , . - ` ~ / @} + 9 0 £ * ^ ] [ : ; | ? , . + ` ~ / } snippet.uninteractive_params.each do |param| # todo: use string builder instead generated_password = "" diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index 141119d..a68f3de 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -8,21 +8,18 @@ module SniplineCli class LoadSnippets include SniplineCli::Models - def self.run : Array(Snippet) + def self.run : Array(SnippetSchema) config = SniplineCli.config log = SniplineCli.log - log.info("Looking through file #{config.get("general.file")}") - snippets = [] of Snippet - unless File.readable?(File.expand_path(config.get("general.file"))) - log.warn("Could not read #{config.get("general.file")}") - log.info("Run #{"snipline-cli sync".colorize(:green)} first") - return snippets + log.info("Looking through file #{config.get("general.db")}") + unless File.readable?(File.expand_path(config.get("general.db"))) + log.warn("Could not read #{config.get("general.db")}") + abort("Run #{"snipline-cli sync".colorize(:green)} first") end - File.open(File.expand_path(config.get("general.file"))) do |file| - snippets = Array(Snippet).from_json(file) - end - - snippets + # File.open(File.expand_path(config.get("general.db"))) do |file| + # snippets = Array(Snippet).from_json(file) + # end + Repo.all(SnippetSchema) end end end diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 5661d9c..205d3b5 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -6,7 +6,7 @@ module SniplineCli::Services property snippets # Takes an array of snippets and saves them to the `snippet.json` file. - def initialize(@snippets = [] of SniplineCli::Models::Snippet) + def initialize(@snippets = [] of SniplineCli::Models::SnippetSchema) end def search(search_term) @@ -17,9 +17,9 @@ module SniplineCli::Services lowered_search_term = search_term.downcase results = results.select do |i| if !i.tags.nil? - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) else - i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) end end end @@ -30,13 +30,13 @@ module SniplineCli::Services def sort_results(snippets) snippets.sort { |snippet_a, snippet_b| if snippet_a.is_pinned && snippet_b.is_pinned - snippet_a.name <=> snippet_b.name + snippet_a.name.as(String) <=> snippet_b.name.as(String) elsif snippet_a.is_pinned -1 elsif snippet_b.is_pinned 1 else - snippet_a.name <=> snippet_b.name + snippet_a.name.as(String) <=> snippet_b.name.as(String) end } end From 951cd13eba4d3aaf626cc89c7d9b0a4f2d6506ea Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 6 Nov 2019 15:33:18 +0000 Subject: [PATCH 14/47] Fix bug that was duplicating snippets on sync --- src/snipline_cli/commands/sync.cr | 87 +++++++++++++++++++------------ 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index b3170a3..5c08a93 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -26,42 +26,63 @@ module SniplineCli end sync_unsynced_snippets - download_snipline_snippets - + @snipline_api.fetch do |body| + cloud_snippets = Models::SnippetDataWrapper.from_json(body).data + save_new_snipline_cloud_snippets(cloud_snippets) + delete_orphan_snippets(cloud_snippets) + end end + def delete_orphan_snippets(cloud_snippets) + # if snippet cloud_id exists locally but not in cloud + puts "Cleaning up snippets that are no longer in Snipline Cloud..." + local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } + orphans = [] of SniplineCli::Models::SnippetSchema + cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } + local_snippets.each do |ls| + orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids) + end + orphans.each do |ls| + # delete snippets + puts "Deleting #{ls.name}".colorize(:green) + Repo.delete(ls) + end + end - def download_snipline_snippets - @snipline_api.fetch do |body| - # Save the response JSON into a file without the data wrapper - cloud_snippets = Models::SnippetDataWrapper.from_json(body).data - local_snippets = SniplineCli::Services::LoadSnippets.run - begin - # Only snippets that are in the cloud but not stored locally - difference = [] of SniplineCli::Models::Snippet - local_snippet_ids = local_snippets.map { |s| s.local_id } - cloud_snippets.each do |cs| - difference << cs unless local_snippet_exists?(cs, local_snippet_ids) - end - difference.each do |s| - puts "Storing #{s.attributes.name} from Snipline".colorize(:green) - snippet = SniplineCli::Models::SnippetSchema.new - snippet.name = s.name - snippet.real_command = s.real_command - snippet.documentation = s.documentation - snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",") - snippet.snippet_alias = s.snippet_alias - snippet.is_pinned = s.is_pinned - snippet.is_synced = true - changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) - result = Repo.insert(changeset) - # local_snippets << s - end - # @file.store(local_snippets.to_json) unless difference.size == 0 - rescue ex - puts ex.message.colorize(:red) - end - end + def cloud_snippet_exists?(local_snippet, cloud_snippet_ids) + cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!) + end + + + def save_new_snipline_cloud_snippets(cloud_snippets) + # Save the response JSON into a file without the data wrapper + local_snippets = SniplineCli::Services::LoadSnippets.run + begin + # Only snippets that are in the cloud but not stored locally + difference = [] of SniplineCli::Models::Snippet + local_snippet_cloud_ids = local_snippets.select{ |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! } + cloud_snippets.each do |cs| + difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) + end + difference.each do |s| + puts "Storing #{s.attributes.name} from Snipline".colorize(:green) + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = s.name + snippet.cloud_id = s.id + snippet.real_command = s.real_command + snippet.documentation = s.documentation + snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",") + snippet.snippet_alias = s.snippet_alias + snippet.is_pinned = s.is_pinned + snippet.is_synced = true + changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) + result = Repo.insert(changeset) + # local_snippets << s + end + # @file.store(local_snippets.to_json) unless difference.size == 0 + rescue ex + puts ex.message.colorize(:red) + end end def local_snippet_exists?(cs, local_snippet_ids) From b74625e75bbef378703ea7760cf9deeb581e402c Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 6 Nov 2019 15:37:18 +0000 Subject: [PATCH 15/47] Add some todo methods for syncing --- src/snipline_cli/commands/sync.cr | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 5c08a93..b008691 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -30,9 +30,19 @@ module SniplineCli cloud_snippets = Models::SnippetDataWrapper.from_json(body).data save_new_snipline_cloud_snippets(cloud_snippets) delete_orphan_snippets(cloud_snippets) + update_locally_out_of_date_snippets(cloud_snippets) + update_cloud_out_of_date_snippets(cloud_snippets) end end + def update_locally_out_of_date_snippets(cloud_snippets) + # TODO: this method is for local snippets whose updated_at is behind the cloud + end + + def update_cloud_out_of_date_snippets(cloud_snippets) + # TODO: this method is for cloud snippets whose updated_at is behind the local version + end + def delete_orphan_snippets(cloud_snippets) # if snippet cloud_id exists locally but not in cloud puts "Cleaning up snippets that are no longer in Snipline Cloud..." From 9a3e53abb183ea894c847a3eb0ea540fb9e26963 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 8 Nov 2019 11:09:19 +0000 Subject: [PATCH 16/47] Syncing locally out of date snippets --- src/snipline_cli/commands/sync.cr | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index b008691..d6c50e2 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -37,6 +37,46 @@ module SniplineCli def update_locally_out_of_date_snippets(cloud_snippets) # TODO: this method is for local snippets whose updated_at is behind the cloud + puts "local" + cloud_snippets.each { |cs| + local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) + puts "#{local_snippet.inspect}" + if local_snippet + # cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC) + cloud_updated_at = Time.parse( + cs.not_nil!.updated_at.not_nil!, + "%F %T", + Time::Location::UTC + ) + # cloud_updated_at.year, + # cloud_updated_at.month, + # cloud_updated_at.day, + # cloud_updated_at.hour, + # cloud_updated_at.minute, + # cloud_updated_at.second + # ) + local_updated_at = local_snippet.not_nil!.updated_at.not_nil! + puts "ls #{local_updated_at.inspect} #{cloud_updated_at.inspect}" + if (local_updated_at - cloud_updated_at).minutes > 1 + puts "Updating local snippet from cloud" + local_snippet.name = cs.not_nil!.name.not_nil! + local_snippet.real_command = cs.not_nil!.real_command.not_nil! + local_snippet.documentation = cs.not_nil!.documentation + local_snippet.snippet_alias = cs.not_nil!.snippet_alias + local_snippet.snippet_alias = cs.not_nil!.snippet_alias + local_snippet.is_synced = true + local_snippet.is_pinned = cs.not_nil!.is_pinned + Repo.update(local_snippet) + elsif (local_updated_at - cloud_updated_at).minutes < 1 + puts "Sending local update to snipline" + # TODO + else + # DO NOTHING + end + # if local_snippet.updated_at < cs.not_nil!.updated_at + # end + end + } end def update_cloud_out_of_date_snippets(cloud_snippets) From c2f8af8065fea6398f96f3e41267369c9e7dec99 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 28 Nov 2019 10:21:58 +0000 Subject: [PATCH 17/47] Editing snippets --- src/snipline_cli/commands/sync.cr | 26 ++------ src/snipline_cli/ncurses_windows/footer.cr | 2 +- src/snipline_cli/services/display_results.cr | 9 +++ src/snipline_cli/services/edit_snippet.cr | 65 +++++++++++++++++++ src/snipline_cli/services/snipline_api.cr | 60 +++++++++++++---- .../services/temp_snippet_editor_file.cr | 32 +++++++-- 6 files changed, 155 insertions(+), 39 deletions(-) create mode 100644 src/snipline_cli/services/edit_snippet.cr diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index d6c50e2..d070494 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -31,16 +31,13 @@ module SniplineCli save_new_snipline_cloud_snippets(cloud_snippets) delete_orphan_snippets(cloud_snippets) update_locally_out_of_date_snippets(cloud_snippets) - update_cloud_out_of_date_snippets(cloud_snippets) end end def update_locally_out_of_date_snippets(cloud_snippets) # TODO: this method is for local snippets whose updated_at is behind the cloud - puts "local" cloud_snippets.each { |cs| local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) - puts "#{local_snippet.inspect}" if local_snippet # cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC) cloud_updated_at = Time.parse( @@ -48,41 +45,28 @@ module SniplineCli "%F %T", Time::Location::UTC ) - # cloud_updated_at.year, - # cloud_updated_at.month, - # cloud_updated_at.day, - # cloud_updated_at.hour, - # cloud_updated_at.minute, - # cloud_updated_at.second - # ) local_updated_at = local_snippet.not_nil!.updated_at.not_nil! - puts "ls #{local_updated_at.inspect} #{cloud_updated_at.inspect}" if (local_updated_at - cloud_updated_at).minutes > 1 - puts "Updating local snippet from cloud" + puts "Updating local snippet #{local_snippet.name} from cloud" local_snippet.name = cs.not_nil!.name.not_nil! local_snippet.real_command = cs.not_nil!.real_command.not_nil! local_snippet.documentation = cs.not_nil!.documentation local_snippet.snippet_alias = cs.not_nil!.snippet_alias - local_snippet.snippet_alias = cs.not_nil!.snippet_alias local_snippet.is_synced = true local_snippet.is_pinned = cs.not_nil!.is_pinned Repo.update(local_snippet) + q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, cs.id) + puts q.inspect elsif (local_updated_at - cloud_updated_at).minutes < 1 - puts "Sending local update to snipline" - # TODO + puts "Updating local #{local_snippet.name} to Snipline Cloud" + @snipline_api.update(local_snippet) else # DO NOTHING end - # if local_snippet.updated_at < cs.not_nil!.updated_at - # end end } end - def update_cloud_out_of_date_snippets(cloud_snippets) - # TODO: this method is for cloud snippets whose updated_at is behind the local version - end - def delete_orphan_snippets(cloud_snippets) # if snippet cloud_id exists locally but not in cloud puts "Cleaning up snippets that are no longer in Snipline Cloud..." diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr index d8a6788..86ecbcf 100644 --- a/src/snipline_cli/ncurses_windows/footer.cr +++ b/src/snipline_cli/ncurses_windows/footer.cr @@ -10,7 +10,7 @@ module SniplineCli::NCursesWindows 0 ) @window.set_color 1 - LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run\n") + LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit\n") LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil) @window.refresh end diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index 97d420e..75ef8db 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -44,6 +44,9 @@ module SniplineCli::Services output = build_snippet copy_snippet(output) break + elsif codepoint == 69 # Shift+r - run + edit_snippet + break elsif codepoint == 82 # Shift+r - run output = build_snippet run_snippet(output) @@ -101,5 +104,11 @@ module SniplineCli::Services NCurses.end SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end + + def edit_snippet + NCurses.clear + NCurses.end + SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) + end end end diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr new file mode 100644 index 0000000..1790db1 --- /dev/null +++ b/src/snipline_cli/services/edit_snippet.cr @@ -0,0 +1,65 @@ +module SniplineCli + module Services + # LoadSnippets fetches all the snippets from the `snippet.json` file and parses them. + # + # ```crystal + # snippets = SniplineCli::Services::LoadSnippets.run + # ``` + class EditSnippet + include SniplineCli::Models + + def self.run(snippet : SnippetSchema, input, output) + config = SniplineCli.config + log = SniplineCli.log + log.info("editing snippet #{snippet.name}") + temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet) + temp_file.create + loop do + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") + snippet_attributes = temp_file.read + snippet.name = snippet_attributes.name + snippet.real_command = snippet_attributes.real_command + snippet.documentation = snippet_attributes.documentation + snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") + snippet.snippet_alias = snippet_attributes.snippet_alias + snippet.is_pinned = snippet_attributes.is_pinned + snippet.is_synced = false + changeset = SnippetSchema.changeset(snippet) + abort("Invalid") unless changeset.valid? + + begin + if temp_file.sync_to_cloud? + SniplineCli::Services::SniplineApi.new.update(snippet) + temp_file.delete + puts "Snippet updated!" + break + else + changeset = SnippetSchema.changeset(snippet) + result = Repo.update(changeset) + temp_file.delete + puts "Snippet updated!" + break + end + rescue ex : Crest::UnprocessableEntity + puts "Invalid data:".colorize.mode(:bold) + snippet_errors = SnippetErrorResponse.from_json(ex.response.body) + snippet_errors.errors.each do |error| + puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red) + end + puts "\r\nEdit Snippet? Y/n" + repeat = gets + break if repeat == "n" + rescue ex : Crest::NotFound + abort("404 API URL not found".colorize.back(:red).on(:red)) + rescue ex : Crest::InternalServerError + abort("API Internal Server Error".colorize.back(:red).on(:red)) + rescue ex + puts "#{ex.message}" + abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) + end + end + end + end + end +end + diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index 4a1af8a..4f26c1c 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -39,21 +39,53 @@ module SniplineCli::Services }, logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false ) - # Snippet.from_json(resp.body) SingleSnippetDataWrapper.from_json(resp.body).data - # rescue ex : Crest::UnprocessableEntity - # puts "RAISING" - # puts resp.inspect - # unless resp.nil? - # errors = SnippetErrorResponse.from_json(resp.not_nil!.body) - # raise SniplineCli::Exceptions::InvalidSnippet.new(errors) - # end - # rescue ex - - # puts "OTHER" - # raise ex - # end end + + def update(snippet : SnippetSchema) + config = SniplineCli.config + # begin + resp = Crest.patch( + "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", + headers: { + # "Accept" => "application/vnd.api+json", + "Authorization" => "Bearer #{config.get("api.token")}", + }, + form: { + # data: { + :name => snippet.name.not_nil!.chomp, + :real_command => snippet.real_command.not_nil!.chomp, + :documentation => snippet.documentation, + :alias => snippet.snippet_alias, + :is_pinned => snippet.is_pinned.to_s, + # :tags => snippet.tags + # } + }, + logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false + ) + response = SingleSnippetDataWrapper.from_json(resp.body).data + snippet.name = response.name.not_nil! + snippet.real_command = response.real_command.not_nil! + snippet.documentation = response.documentation + snippet.snippet_alias = response.snippet_alias + snippet.is_synced = true + snippet.is_pinned = response.is_pinned + Repo.update(snippet) + cloud_updated_at = Time.parse( + response.updated_at.not_nil!, + "%F %T", + Time::Location::UTC + ) + puts "cloud #{cloud_updated_at}" + local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!) + if local_snippet + puts "local #{local_snippet.updated_at}" + end + + q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id) + puts q.inspect + end + end class SniplineApiTest @@ -63,5 +95,7 @@ module SniplineCli::Services def create(snippet : SniplineCli::Models::Snippet) end + def update(snippet : SniplineCli::Models::SnippetSchema) + end end end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index a659b48..1ad8476 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -3,9 +3,13 @@ require "toml" module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile + include SniplineCli::Models - TEMPLATE = %<# Welcome to the terminal-based snippet editor -# This file uses TOML syntax and will be processed after the file is closed + + property snippet : SnippetSchema | Nil + + property template = %<# Welcome to the terminal-based snippet editor +# This file uses TOML syntax and will be processed after the file is saved and closed # Fill in the below options and save+quit to continue name = "" real_command = """ @@ -14,15 +18,35 @@ echo 'hello, world' documentation = """ This section supports **Markdown** """ -is_pinned = true +is_pinned = false snippet_alias = "" sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} > + + def initialize(@snippet : SnippetSchema | Nil = nil) + snippet = @snippet + if (snippet = @snippet).is_a?(SnippetSchema) + @template = %<# Welcome to the terminal-based snippet editor +# This file uses TOML syntax and will be processed after the file is saved and closed +# Fill in the below options and save+quit to continue +name = "#{snippet.name}" +real_command = """ +#{snippet.real_command} +""" +documentation = """ +#{snippet.documentation} +""" +is_pinned = #{snippet.is_pinned} +snippet_alias = "#{snippet.snippet_alias}" +sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} +> + end + end def create config = SniplineCli.config unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) - File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), TEMPLATE) + File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template) end end From 9d34344774e340de279eaf7e4261dde89aec67c5 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 29 Nov 2019 15:13:11 +0000 Subject: [PATCH 18/47] Switch to using is_synced for syncing --- src/snipline_cli/commands/sync.cr | 19 ++--- src/snipline_cli/models/snippet_schema.cr | 2 + src/snipline_cli/services/edit_snippet.cr | 70 +++++++++++-------- .../services/temp_snippet_editor_file.cr | 2 +- 4 files changed, 53 insertions(+), 40 deletions(-) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index d070494..a51f3a8 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -36,6 +36,8 @@ module SniplineCli def update_locally_out_of_date_snippets(cloud_snippets) # TODO: this method is for local snippets whose updated_at is behind the cloud + synced_to_local_count = 0 + synced_to_cloud_count = 0 cloud_snippets.each { |cs| local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) if local_snippet @@ -46,8 +48,9 @@ module SniplineCli Time::Location::UTC ) local_updated_at = local_snippet.not_nil!.updated_at.not_nil! - if (local_updated_at - cloud_updated_at).minutes > 1 - puts "Updating local snippet #{local_snippet.name} from cloud" + + if local_snippet.is_synced + # local hasn't changed - redownload from snipline just incase local_snippet.name = cs.not_nil!.name.not_nil! local_snippet.real_command = cs.not_nil!.real_command.not_nil! local_snippet.documentation = cs.not_nil!.documentation @@ -55,16 +58,16 @@ module SniplineCli local_snippet.is_synced = true local_snippet.is_pinned = cs.not_nil!.is_pinned Repo.update(local_snippet) - q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, cs.id) - puts q.inspect - elsif (local_updated_at - cloud_updated_at).minutes < 1 - puts "Updating local #{local_snippet.name} to Snipline Cloud" - @snipline_api.update(local_snippet) + synced_to_local_count = synced_to_local_count + 1 else - # DO NOTHING + # local has updated without sending to snipline cloud - time to update the cloud version + @snipline_api.update(local_snippet) + synced_to_cloud_count = synced_to_cloud_count + 1 end end } + puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) + puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green) end def delete_orphan_snippets(cloud_snippets) diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr index 81f0b8d..0b383d6 100644 --- a/src/snipline_cli/models/snippet_schema.cr +++ b/src/snipline_cli/models/snippet_schema.cr @@ -15,6 +15,8 @@ module SniplineCli::Models end validate_required [:name, :real_command] + validate_length :name, min: 1 + validate_length :real_command, min: 1 unique_constraint :snippet_alias unique_constraint :name # diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index 1790db1..f84e846 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -25,38 +25,46 @@ module SniplineCli snippet.is_pinned = snippet_attributes.is_pinned snippet.is_synced = false changeset = SnippetSchema.changeset(snippet) - abort("Invalid") unless changeset.valid? - - begin - if temp_file.sync_to_cloud? - SniplineCli::Services::SniplineApi.new.update(snippet) - temp_file.delete - puts "Snippet updated!" - break - else - changeset = SnippetSchema.changeset(snippet) - result = Repo.update(changeset) - temp_file.delete - puts "Snippet updated!" - break + if changeset.valid? + begin + if temp_file.sync_to_cloud? + SniplineCli::Services::SniplineApi.new.update(snippet) + temp_file.delete + puts "Snippet updated!" + break + else + changeset = SnippetSchema.changeset(snippet) + result = Repo.update(changeset) + temp_file.delete + puts "Snippet updated!" + break + end + rescue ex : Crest::UnprocessableEntity + puts "Invalid data:".colorize.mode(:bold) + snippet_errors = SnippetErrorResponse.from_json(ex.response.body) + snippet_errors.errors.each do |error| + puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red) + end + puts "\r\nEdit Snippet? Y/n" + repeat = gets + break if repeat == "n" + rescue ex : Crest::NotFound + abort("404 API URL not found".colorize.back(:red).on(:red)) + rescue ex : Crest::InternalServerError + abort("API Internal Server Error".colorize.back(:red).on(:red)) + rescue ex + puts "#{ex.message}" + abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) end - rescue ex : Crest::UnprocessableEntity - puts "Invalid data:".colorize.mode(:bold) - snippet_errors = SnippetErrorResponse.from_json(ex.response.body) - snippet_errors.errors.each do |error| - puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red) - end - puts "\r\nEdit Snippet? Y/n" - repeat = gets - break if repeat == "n" - rescue ex : Crest::NotFound - abort("404 API URL not found".colorize.back(:red).on(:red)) - rescue ex : Crest::InternalServerError - abort("API Internal Server Error".colorize.back(:red).on(:red)) - rescue ex - puts "#{ex.message}" - abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) - end + else + puts "Invalid data:".colorize.mode(:bold) + changeset.errors.each do |error| + puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red) + end + puts "\r\nEdit Snippet? Y/n" + repeat = gets + break if repeat == "n" + end end end end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index 1ad8476..f45c061 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -56,7 +56,7 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} SnippetAttribute.new( name: toml["name"].as(String), real_command: toml["real_command"].as(String), - documentation: toml["documentation"].as(String), + documentation: toml["documentation"].as(String).rstrip, is_pinned: toml["is_pinned"].as(Bool), snippet_alias: parse_snippet_alias(toml["snippet_alias"]), tags: [] of String From 6a6b47f5ac3e3808af3de28ac14bb7455e17f10f Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 29 Nov 2019 15:16:32 +0000 Subject: [PATCH 19/47] Add migrator to new command --- src/snipline_cli/commands/new.cr | 1 + 1 file changed, 1 insertion(+) diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index df5cacf..63489fb 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -15,6 +15,7 @@ module SniplineCli unless File.exists?(File.expand_path("#{config.get("general.db")}")) abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end + SniplineCli::Services::Migrator.run unless ENV.has_key?("EDITOR") abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) end From 9e20e9a22eb405a0d80fad84587bbc8bb5563545 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 29 Nov 2019 15:30:49 +0000 Subject: [PATCH 20/47] Update current tests --- spec/commands/sync_spec.cr | 9 +++++---- spec/services/command_builder_spec.cr | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/spec/commands/sync_spec.cr b/spec/commands/sync_spec.cr index 3923555..f5b1c68 100644 --- a/spec/commands/sync_spec.cr +++ b/spec/commands/sync_spec.cr @@ -9,9 +9,10 @@ end describe SniplineCli::Command::Sync do it "Syncs snippets from server" do - sync_command = SniplineCli::Command::Sync.new - sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new - sync_command.file = SniplineCli::Services::StoreSnippetsTest.new - sync_command.run + # TODO + # sync_command = SniplineCli::Command::Sync.new + # sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new + # sync_command.file = SniplineCli::Services::StoreSnippetsTest.new + # sync_command.run end end diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr index 42d69d2..fb874d7 100644 --- a/spec/services/command_builder_spec.cr +++ b/spec/services/command_builder_spec.cr @@ -1,7 +1,11 @@ describe SniplineCli::Services::CommandBuilder do it "correctly parses snippets with no params" do - attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - snippet = SniplineCli::Models::Snippet.from_json(attributes) + # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = "Git log pretty" + snippet.snippet_alias = "git.sla" + snippet.real_command = "git log --oneline --decorate --graph --all" + # snippet = SniplineCli::Models::Snippet.from_json(attributes) File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) response.should eq("git log --oneline --decorate --graph --all") @@ -9,8 +13,12 @@ describe SniplineCli::Services::CommandBuilder do end it "should generate random passwords" do - attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}}) - snippet = SniplineCli::Models::Snippet.from_json(attributes) + # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}}) + # snippet = SniplineCli::Models::Snippet.from_json(attributes) + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = "Git log pretty" + snippet.snippet_alias = "git.sla" + snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}" File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) response.size.should eq(29) From d7e05d7ae0b7da0b83719f48ba3ace9757847f85 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 29 Nov 2019 15:36:08 +0000 Subject: [PATCH 21/47] Run Ameba and formatter --- spec/commands/sync_spec.cr | 2 +- spec/services/command_builder_spec.cr | 16 +- spec/services/documentation_formatter_spec.cr | 32 ++- spec/spec_helper.cr | 6 +- src/snipline_cli.cr | 12 +- src/snipline_cli/commands/init.cr | 14 +- src/snipline_cli/commands/new.cr | 38 +-- src/snipline_cli/commands/search.cr | 56 ++--- src/snipline_cli/commands/sync.cr | 234 +++++++++--------- src/snipline_cli/config.cr | 2 +- src/snipline_cli/models/snippet.cr | 10 +- src/snipline_cli/models/snippet_attribute.cr | 10 +- src/snipline_cli/models/snippet_schema.cr | 210 ++++++++-------- .../ncurses_windows/mock_window.cr | 9 +- src/snipline_cli/services/command_builder.cr | 2 +- src/snipline_cli/services/display_results.cr | 8 +- .../services/documentation_formatter.cr | 16 +- src/snipline_cli/services/edit_snippet.cr | 101 ++++---- src/snipline_cli/services/load_snippets.cr | 4 +- src/snipline_cli/services/migrator.cr | 32 +-- src/snipline_cli/services/search_snippets.cr | 10 +- src/snipline_cli/services/snipline_api.cr | 54 ++-- .../services/sync_snippet_to_snipline.cr | 12 +- .../services/temp_snippet_editor_file.cr | 35 ++- 24 files changed, 457 insertions(+), 468 deletions(-) diff --git a/spec/commands/sync_spec.cr b/spec/commands/sync_spec.cr index f5b1c68..358d8b6 100644 --- a/spec/commands/sync_spec.cr +++ b/spec/commands/sync_spec.cr @@ -9,7 +9,7 @@ end describe SniplineCli::Command::Sync do it "Syncs snippets from server" do - # TODO + # TODO # sync_command = SniplineCli::Command::Sync.new # sync_command.snipline_api = SniplineCli::Services::SniplineApiTest.new # sync_command.file = SniplineCli::Services::StoreSnippetsTest.new diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr index fb874d7..18b623b 100644 --- a/spec/services/command_builder_spec.cr +++ b/spec/services/command_builder_spec.cr @@ -1,10 +1,10 @@ describe SniplineCli::Services::CommandBuilder do it "correctly parses snippets with no params" do # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - snippet = SniplineCli::Models::SnippetSchema.new - snippet.name = "Git log pretty" - snippet.snippet_alias = "git.sla" - snippet.real_command = "git log --oneline --decorate --graph --all" + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = "Git log pretty" + snippet.snippet_alias = "git.sla" + snippet.real_command = "git log --oneline --decorate --graph --all" # snippet = SniplineCli::Models::Snippet.from_json(attributes) File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) @@ -15,10 +15,10 @@ describe SniplineCli::Services::CommandBuilder do it "should generate random passwords" do # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}}) # snippet = SniplineCli::Models::Snippet.from_json(attributes) - snippet = SniplineCli::Models::SnippetSchema.new - snippet.name = "Git log pretty" - snippet.snippet_alias = "git.sla" - snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}" + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = "Git log pretty" + snippet.snippet_alias = "git.sla" + snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}" File.tempfile("test") do |io| response = SniplineCli::Services::CommandBuilder.run(snippet, io, io) response.size.should eq(29) diff --git a/spec/services/documentation_formatter_spec.cr b/spec/services/documentation_formatter_spec.cr index 8acf05b..43a8f58 100644 --- a/spec/services/documentation_formatter_spec.cr +++ b/spec/services/documentation_formatter_spec.cr @@ -1,23 +1,21 @@ describe SniplineCli::Services::DocumentationFormatter do it "returns empty when nil is passed" do - formatter = setup_formatter() - formatter.to_ncurses(nil).should eq("No documentation found") - end + formatter = setup_formatter() + formatter.to_ncurses(nil).should eq("No documentation found") + end - it "puts lines over its width onto new lines" do - formatter = setup_formatter(width: 20) - formatter.format_documentation("This sentence is longer than 20 characters", 20).should eq(["This sentence is", "longer than 20", "characters"]) - end + it "puts lines over its width onto new lines" do + formatter = setup_formatter(width: 20) + formatter.format_documentation("This sentence is longer than 20 characters", 20).should eq(["This sentence is", "longer than 20", "characters"]) + end - it "splits words over the character limit onto new lines" do - formatter = setup_formatter(width: 20) - formatter.format_documentation("pneumonoultramicroscopicsilicovolcanoconiosis", 20).should eq(["pneumonoultramicrosc", "opicsilicovolcanocon", "iosis"]) - end - - it "works with a realistic example" do - formatter = setup_formatter() - formatter.format_documentation("Find files that contain the `searchterm`.\n\nUsing `l` will show filenames for results. Not using `l` will show contents.", 500).should eq(["Find files that contain the `searchterm`.\n", "\n", "Using `l` will show filenames for results. Not using `l` will show contents."]) - end + it "splits words over the character limit onto new lines" do + formatter = setup_formatter(width: 20) + formatter.format_documentation("pneumonoultramicroscopicsilicovolcanoconiosis", 20).should eq(["pneumonoultramicrosc", "opicsilicovolcanocon", "iosis"]) + end + it "works with a realistic example" do + formatter = setup_formatter() + formatter.format_documentation("Find files that contain the `searchterm`.\n\nUsing `l` will show filenames for results. Not using `l` will show contents.", 500).should eq(["Find files that contain the `searchterm`.\n", "\n", "Using `l` will show filenames for results. Not using `l` will show contents."]) + end end - diff --git a/spec/spec_helper.cr b/spec/spec_helper.cr index 792edf7..0f810bc 100644 --- a/spec/spec_helper.cr +++ b/spec/spec_helper.cr @@ -2,7 +2,7 @@ require "spec" require "../src/snipline_cli" def setup_formatter(width : Int32 = 500) - window = SniplineCli::NCursesWindows::MockWindow.new - window.width = width - SniplineCli::Services::DocumentationFormatter.new(window) + window = SniplineCli::NCursesWindows::MockWindow.new + window.width = width + SniplineCli::Services::DocumentationFormatter.new(window) end diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 967fbf4..480ba76 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -14,12 +14,12 @@ require "./snipline_cli/services/*" require "./snipline_cli/commands/*" module Repo - extend Crecto::Repo - - config do |conf| - conf.adapter = Crecto::Adapters::SQLite3 - conf.database = File.expand_path("~/.config/snipline/snipline.db") - end + extend Crecto::Repo + + config do |conf| + conf.adapter = Crecto::Adapters::SQLite3 + conf.database = File.expand_path("~/.config/snipline/snipline.db") + end end module SniplineCli diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 035191d..0206f8d 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -28,15 +28,15 @@ module SniplineCli puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" unless File.exists?(File.expand_path(config.get("general.db"))) File.write(File.expand_path(config.get("general.db")), "", mode: "w") - puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}" + puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}" end - puts "" - puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" - puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}" - puts "" + puts "" + puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" + puts "Search snippets with #{"snipcli search".colorize.mode(:bold)}" + puts "" puts "See documentation for more information #{"https://github.com/snipline/snipcli".colorize.mode(:bold)}" - puts "" - puts "Happy Coding!" + puts "" + puts "Happy Coding!" end end diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 63489fb..1c9fe29 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -15,7 +15,7 @@ module SniplineCli unless File.exists?(File.expand_path("#{config.get("general.db")}")) abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end - SniplineCli::Services::Migrator.run + SniplineCli::Services::Migrator.run unless ENV.has_key?("EDITOR") abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) end @@ -24,25 +24,25 @@ module SniplineCli loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read - snippet = SniplineCli::Models::SnippetSchema.new + snippet = SniplineCli::Models::SnippetSchema.new - snippet.name = snippet_attributes.name - snippet.real_command = snippet_attributes.real_command - snippet.documentation = snippet_attributes.documentation - snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") - snippet.snippet_alias = snippet_attributes.snippet_alias - snippet.is_pinned = snippet_attributes.is_pinned - snippet.is_synced = false - changeset = SnippetSchema.changeset(snippet) - abort("Invalid") unless changeset.valid? - result = Repo.insert(changeset) + snippet.name = snippet_attributes.name + snippet.real_command = snippet_attributes.real_command + snippet.documentation = snippet_attributes.documentation + snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") + snippet.snippet_alias = snippet_attributes.snippet_alias + snippet.is_pinned = snippet_attributes.is_pinned + snippet.is_synced = false + changeset = SnippetSchema.changeset(snippet) + abort("Invalid") unless changeset.valid? + result = Repo.insert(changeset) begin - snippet = if temp_file.sync_to_cloud? - SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance) - # else - # snippet_attributes.set_timestamps() - # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) - end + if temp_file.sync_to_cloud? + SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance) + # else + # snippet_attributes.set_timestamps() + # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + end # if snippet.is_a?(Snippet) # SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) # end @@ -63,7 +63,7 @@ module SniplineCli rescue ex : Crest::InternalServerError abort("API Internal Server Error".colorize.back(:red).on(:red)) rescue ex - puts "#{ex.message}" + puts "#{ex.message}" abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) end end diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index b45cf16..3432d30 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -38,34 +38,34 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run snippets = if search_term.empty? - query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SniplineCli::Models::SnippetSchema, query) - else - lowered_search_term = search_term.downcase - if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) - puts "The search field entered does not exist." - return - end - query = Crecto::Repo::Query.new - if flags.field - query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) - else - query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) - end - query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SniplineCli::Models::SnippetSchema, query) - # snippets.select! { |i| - # if field = flags.field - # i.value_for_attribute(field).downcase.includes?(lowered_search_term) - # else - # if !i.tags.nil? - # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) - # else - # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) - # end - # end - # } - end + query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) + Repo.all(SniplineCli::Models::SnippetSchema, query) + else + lowered_search_term = search_term.downcase + if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) + puts "The search field entered does not exist." + return + end + query = Crecto::Repo::Query.new + if flags.field + query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + else + query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) + end + query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) + Repo.all(SniplineCli::Models::SnippetSchema, query) + # snippets.select! { |i| + # if field = flags.field + # i.value_for_attribute(field).downcase.includes?(lowered_search_term) + # else + # if !i.tags.nil? + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) + # else + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) + # end + # end + # } + end # results = sort_results(snippets, flags.limit) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index a51f3a8..0ab4c2e 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -17,140 +17,132 @@ module SniplineCli property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new def run - puts "Migrating Database..." - SniplineCli::Services::Migrator.run + puts "Migrating Database..." + SniplineCli::Services::Migrator.run puts "Syncing snippets..." config = SniplineCli.config - if config.get("api.token") == "" - abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") - end + if config.get("api.token") == "" + abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") + end - sync_unsynced_snippets + sync_unsynced_snippets @snipline_api.fetch do |body| cloud_snippets = Models::SnippetDataWrapper.from_json(body).data - save_new_snipline_cloud_snippets(cloud_snippets) - delete_orphan_snippets(cloud_snippets) - update_locally_out_of_date_snippets(cloud_snippets) - end + save_new_snipline_cloud_snippets(cloud_snippets) + delete_orphan_snippets(cloud_snippets) + update_locally_out_of_date_snippets(cloud_snippets) + end end - def update_locally_out_of_date_snippets(cloud_snippets) - # TODO: this method is for local snippets whose updated_at is behind the cloud - synced_to_local_count = 0 - synced_to_cloud_count = 0 - cloud_snippets.each { |cs| - local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) - if local_snippet - # cloud_updated_at = Time::Format.new(cs.not_nil!.updated_at.not_nil!).parse(cs.not_nil!.updated_at.not_nil!, Time::Location::UTC) - cloud_updated_at = Time.parse( - cs.not_nil!.updated_at.not_nil!, - "%F %T", - Time::Location::UTC - ) - local_updated_at = local_snippet.not_nil!.updated_at.not_nil! - - if local_snippet.is_synced - # local hasn't changed - redownload from snipline just incase - local_snippet.name = cs.not_nil!.name.not_nil! - local_snippet.real_command = cs.not_nil!.real_command.not_nil! - local_snippet.documentation = cs.not_nil!.documentation - local_snippet.snippet_alias = cs.not_nil!.snippet_alias - local_snippet.is_synced = true - local_snippet.is_pinned = cs.not_nil!.is_pinned - Repo.update(local_snippet) - synced_to_local_count = synced_to_local_count + 1 - else - # local has updated without sending to snipline cloud - time to update the cloud version - @snipline_api.update(local_snippet) - synced_to_cloud_count = synced_to_cloud_count + 1 - end - end - } - puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) - puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green) - end - - def delete_orphan_snippets(cloud_snippets) - # if snippet cloud_id exists locally but not in cloud - puts "Cleaning up snippets that are no longer in Snipline Cloud..." - local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } - orphans = [] of SniplineCli::Models::SnippetSchema - cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } - local_snippets.each do |ls| - orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids) - end - orphans.each do |ls| - # delete snippets - puts "Deleting #{ls.name}".colorize(:green) - Repo.delete(ls) - end - end + def update_locally_out_of_date_snippets(cloud_snippets) + # TODO: this method is for local snippets whose updated_at is behind the cloud + synced_to_local_count = 0 + synced_to_cloud_count = 0 + cloud_snippets.each { |cs| + local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) + if local_snippet + if local_snippet.is_synced + # local hasn't changed - redownload from snipline just incase + local_snippet.name = cs.not_nil!.name.not_nil! + local_snippet.real_command = cs.not_nil!.real_command.not_nil! + local_snippet.documentation = cs.not_nil!.documentation + local_snippet.snippet_alias = cs.not_nil!.snippet_alias + local_snippet.is_synced = true + local_snippet.is_pinned = cs.not_nil!.is_pinned + Repo.update(local_snippet) + synced_to_local_count = synced_to_local_count + 1 + else + # local has updated without sending to snipline cloud - time to update the cloud version + @snipline_api.update(local_snippet) + synced_to_cloud_count = synced_to_cloud_count + 1 + end + end + } + puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) + puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green) + end - def cloud_snippet_exists?(local_snippet, cloud_snippet_ids) - cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!) - end + def delete_orphan_snippets(cloud_snippets) + # if snippet cloud_id exists locally but not in cloud + puts "Cleaning up snippets that are no longer in Snipline Cloud..." + local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } + orphans = [] of SniplineCli::Models::SnippetSchema + cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } + local_snippets.each do |ls| + orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids) + end + orphans.each do |ls| + # delete snippets + puts "Deleting #{ls.name}".colorize(:green) + Repo.delete(ls) + end + end + def cloud_snippet_exists?(local_snippet, cloud_snippet_ids) + cloud_snippet_ids.includes?(local_snippet.cloud_id.not_nil!) + end - def save_new_snipline_cloud_snippets(cloud_snippets) - # Save the response JSON into a file without the data wrapper - local_snippets = SniplineCli::Services::LoadSnippets.run - begin - # Only snippets that are in the cloud but not stored locally - difference = [] of SniplineCli::Models::Snippet - local_snippet_cloud_ids = local_snippets.select{ |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! } - cloud_snippets.each do |cs| - difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) - end - difference.each do |s| - puts "Storing #{s.attributes.name} from Snipline".colorize(:green) - snippet = SniplineCli::Models::SnippetSchema.new - snippet.name = s.name - snippet.cloud_id = s.id - snippet.real_command = s.real_command - snippet.documentation = s.documentation - snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",") - snippet.snippet_alias = s.snippet_alias - snippet.is_pinned = s.is_pinned - snippet.is_synced = true - changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) - result = Repo.insert(changeset) - # local_snippets << s - end - # @file.store(local_snippets.to_json) unless difference.size == 0 - rescue ex - puts ex.message.colorize(:red) - end - end + def save_new_snipline_cloud_snippets(cloud_snippets) + # Save the response JSON into a file without the data wrapper + local_snippets = SniplineCli::Services::LoadSnippets.run + begin + # Only snippets that are in the cloud but not stored locally + difference = [] of SniplineCli::Models::Snippet + local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! } + cloud_snippets.each do |cs| + difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) + end + difference.each do |s| + puts "Storing #{s.attributes.name} from Snipline".colorize(:green) + snippet = SniplineCli::Models::SnippetSchema.new + snippet.name = s.name + snippet.cloud_id = s.id + snippet.real_command = s.real_command + snippet.documentation = s.documentation + snippet.tags = (s.tags.nil?) ? nil : s.tags.not_nil!.join(",") + snippet.snippet_alias = s.snippet_alias + snippet.is_pinned = s.is_pinned + snippet.is_synced = true + changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) + Repo.insert(changeset) + # local_snippets << s + end + # @file.store(local_snippets.to_json) unless difference.size == 0 + rescue ex + puts ex.message.colorize(:red) + end + end - def local_snippet_exists?(cs, local_snippet_ids) - unless cs.id.nil? - return local_snippet_ids.includes?(cs.id.not_nil!) - end - return false - end + def local_snippet_exists?(cs, local_snippet_ids) + if cs.id.nil? + false + else + local_snippet_ids.includes?(cs.id.not_nil!) + end + end - def sync_unsynced_snippets - local_snippets = SniplineCli::Services::LoadSnippets.run - local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| - puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." - begin - cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet) - update_local_snippet_id(cloud_snippet, snippet) - puts "Success!".colorize(:green) - rescue ex : Crest::UnprocessableEntity - resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) - puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) - rescue ex - abort ex.message - end - end - end + def sync_unsynced_snippets + local_snippets = SniplineCli::Services::LoadSnippets.run + local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| + puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." + begin + cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet) + update_local_snippet_id(cloud_snippet, snippet) + puts "Success!".colorize(:green) + rescue ex : Crest::UnprocessableEntity + resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) + puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) + rescue ex + abort ex.message + end + end + end - def update_local_snippet_id(cloud_snippet, local_snippet) - local_snippet.cloud_id = cloud_snippet.id - local_snippet.is_synced = true - changeset = Repo.update(local_snippet) - end + def update_local_snippet_id(cloud_snippet, local_snippet) + local_snippet.cloud_id = cloud_snippet.id + local_snippet.is_synced = true + Repo.update(local_snippet) + end end register_sub_command :sync, Sync diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index 3e63d53..44d4e54 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -24,7 +24,7 @@ module SniplineCli else @api = {"url" => "https://api.snipline.io/api", "token" => ""} @general = { - "db" => "~/.config/snipline/snipline.db", + "db" => "~/.config/snipline/snipline.db", "temp_dir" => "~/.config/snipline", } end diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index b3b611f..9b130db 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -138,11 +138,11 @@ module SniplineCli::Models when "name" name || "" when "tags" - if !tags.nil? - tags.as(Array(String)).join(",") || "" - else - "" - end + if !tags.nil? + tags.as(Array(String)).join(",") || "" + else + "" + end else "" end diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/models/snippet_attribute.cr index e85bc58..1794a33 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/models/snippet_attribute.cr @@ -21,7 +21,7 @@ module SniplineCli::Models @[JSON::Field(key: "tags")] property tags : Array(String) | Nil - + @[JSON::Field(key: "updated-at")] property updated_at : String | Nil @@ -34,9 +34,9 @@ module SniplineCli::Models def initialize(@name : String, @real_command : String, @documentation : String | Nil, @is_pinned : Bool, @snippet_alias : String | Nil, @tags : Array(String)) end - def set_timestamps() - self.inserted_at = Time.utc.to_s - self.updated_at = Time.utc.to_s - end + def set_timestamps + self.inserted_at = Time.utc.to_s + self.updated_at = Time.utc.to_s + end end end diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr index 0b383d6..b7137e0 100644 --- a/src/snipline_cli/models/snippet_schema.cr +++ b/src/snipline_cli/models/snippet_schema.cr @@ -1,124 +1,124 @@ module SniplineCli::Models - class SnippetSchema < Crecto::Model - set_created_at_field :inserted_at + class SnippetSchema < Crecto::Model + set_created_at_field :inserted_at - schema "snippets" do - field :local_id, Int32, primary_key: true + schema "snippets" do + field :local_id, Int32, primary_key: true field :cloud_id, String - field :name, String + field :name, String field :real_command, String field :documentation, String field :tags, String field :snippet_alias, String field :is_pinned, Bool field :is_synced, Bool - end + end - validate_required [:name, :real_command] - validate_length :name, min: 1 - validate_length :real_command, min: 1 - unique_constraint :snippet_alias - unique_constraint :name - # - # Params such as variables or select that require input from the user - # - def interactive_params : Array(SnippetParam) - temp_array = [] of SnippetParam + validate_required [:name, :real_command] + validate_length :name, min: 1 + validate_length :real_command, min: 1 + unique_constraint :snippet_alias + unique_constraint :name - real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m| - param_type = (m[1]?) ? m[1] : "variable" - if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0 - if param_type == "select" - split_equals = m[2].split("=").map { |substring| substring } - param_name = split_equals.shift - unparsed_params = split_equals.join("=") - if unparsed_params.is_a?(String) - options = unparsed_params.as(String).split(",").map(&.strip) - # todo - if options.is_a?(Array(String)) - options = options.as(Array(String)) - end - else - options = Array(String).new - end - # default_option = options.first || "" - temp_array << SnippetParam.new(param_name, "", m[2], "select", options) - elsif m[2].includes?("=") - split_equals = m[2].split("=").map { |substring| substring } - param_name = split_equals.shift - default_value = split_equals.join("=") - temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new) - else - temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new) - end - end - end - temp_array - end + # + # Params such as variables or select that require input from the user + # + def interactive_params : Array(SnippetParam) + temp_array = [] of SnippetParam - # - # E.g. Passwords - # - def uninteractive_params : Array(SnippetPasswordParam) - temp_array = [] of SnippetPasswordParam - real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| - full = m[1].as(String) - options = full.split(",") - id = options.shift - length = UInt8.new(16) - if options.size > 0 - length = options.shift.to_u32 || UInt8.new(16) - end - temp_array << SnippetPasswordParam.new(id, length, full) - end - temp_array - end + real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m| + param_type = (m[1]?) ? m[1] : "variable" + if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0 + if param_type == "select" + split_equals = m[2].split("=").map { |substring| substring } + param_name = split_equals.shift + unparsed_params = split_equals.join("=") + if unparsed_params.is_a?(String) + options = unparsed_params.as(String).split(",").map(&.strip) + # todo + if options.is_a?(Array(String)) + options = options.as(Array(String)) + end + else + options = Array(String).new + end + # default_option = options.first || "" + temp_array << SnippetParam.new(param_name, "", m[2], "select", options) + elsif m[2].includes?("=") + split_equals = m[2].split("=").map { |substring| substring } + param_name = split_equals.shift + default_value = split_equals.join("=") + temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new) + else + temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new) + end + end + end + temp_array + end - def has_params - interactive_params.size > 0 || uninteractive_params.size > 0 - end + # + # E.g. Passwords + # + def uninteractive_params : Array(SnippetPasswordParam) + temp_array = [] of SnippetPasswordParam + real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| + full = m[1].as(String) + options = full.split(",") + id = options.shift + length = UInt8.new(16) + if options.size > 0 + length = options.shift.to_u32 || UInt8.new(16) + end + temp_array << SnippetPasswordParam.new(id, length, full) + end + temp_array + end - def preview_command - unless has_params() - return real_command - end + def has_params + interactive_params.size > 0 || uninteractive_params.size > 0 + end - temp_command = real_command - interactive_params.each do |param| - if param.type == "select" - temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" } - else - temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" } - end - end + def preview_command + unless has_params() + return real_command + end - uninteractive_params.each do |param| - temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" } - temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" } - end - temp_command - end + temp_command = real_command + interactive_params.each do |param| + if param.type == "select" + temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" } + else + temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" } + end + end - def value_for_attribute(attribute : String) - case attribute - when "alias" - snippet_alias || "" - when "documentation" - documentation || "" - when "name" - name || "" - when "tags" - if !tags.nil? - tags.as(Array(String)).join(",") || "" - else - "" - end - else - "" - end - end - end + uninteractive_params.each do |param| + temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" } + temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" } + end + temp_command + end + def value_for_attribute(attribute : String) + case attribute + when "alias" + snippet_alias || "" + when "documentation" + documentation || "" + when "name" + name || "" + when "tags" + if !tags.nil? + tags.as(Array(String)).join(",") || "" + else + "" + end + else + "" + end + end + end end diff --git a/src/snipline_cli/ncurses_windows/mock_window.cr b/src/snipline_cli/ncurses_windows/mock_window.cr index cdab9f5..6b76065 100644 --- a/src/snipline_cli/ncurses_windows/mock_window.cr +++ b/src/snipline_cli/ncurses_windows/mock_window.cr @@ -1,6 +1,7 @@ class SniplineCli::NCursesWindows::MockWindow - property width = 500 - def print(output) - output - end + property width = 500 + + def print(output) + output + end end diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index 36a26db..f3cc851 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -41,7 +41,7 @@ module SniplineCli E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 £ * ^ ] [ : ; | ? , . - ` ~ / } + ` ~ /} snippet.uninteractive_params.each do |param| # todo: use string builder instead generated_password = "" diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index 75ef8db..e652c97 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -105,10 +105,10 @@ module SniplineCli::Services SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end - def edit_snippet - NCurses.clear - NCurses.end + def edit_snippet + NCurses.clear + NCurses.end SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) - end + end end end diff --git a/src/snipline_cli/services/documentation_formatter.cr b/src/snipline_cli/services/documentation_formatter.cr index ba210fa..21fafb5 100644 --- a/src/snipline_cli/services/documentation_formatter.cr +++ b/src/snipline_cli/services/documentation_formatter.cr @@ -34,14 +34,14 @@ module SniplineCli::Services if line.size >= width words = line.split(' ') - words = words.flat_map { |word| - # for words that are longer than the width - if word.size >= width - word.chars.to_a.each_slice(width).to_a.map{ |w| w.join } - else - word - end - } + words = words.flat_map { |word| + # for words that are longer than the width + if word.size >= width + word.chars.to_a.each_slice(width).to_a.map { |w| w.join } + else + word + end + } formatted_line = String::Builder.new words.each do |word| if formatted_line.empty? diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index f84e846..c2ac6e3 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -11,63 +11,62 @@ module SniplineCli def self.run(snippet : SnippetSchema, input, output) config = SniplineCli.config log = SniplineCli.log - log.info("editing snippet #{snippet.name}") + log.info("editing snippet #{snippet.name}") temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet) temp_file.create loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read - snippet.name = snippet_attributes.name - snippet.real_command = snippet_attributes.real_command - snippet.documentation = snippet_attributes.documentation - snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") - snippet.snippet_alias = snippet_attributes.snippet_alias - snippet.is_pinned = snippet_attributes.is_pinned - snippet.is_synced = false - changeset = SnippetSchema.changeset(snippet) - if changeset.valid? - begin - if temp_file.sync_to_cloud? - SniplineCli::Services::SniplineApi.new.update(snippet) - temp_file.delete - puts "Snippet updated!" - break - else - changeset = SnippetSchema.changeset(snippet) - result = Repo.update(changeset) - temp_file.delete - puts "Snippet updated!" - break - end - rescue ex : Crest::UnprocessableEntity - puts "Invalid data:".colorize.mode(:bold) - snippet_errors = SnippetErrorResponse.from_json(ex.response.body) - snippet_errors.errors.each do |error| - puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red) - end - puts "\r\nEdit Snippet? Y/n" - repeat = gets - break if repeat == "n" - rescue ex : Crest::NotFound - abort("404 API URL not found".colorize.back(:red).on(:red)) - rescue ex : Crest::InternalServerError - abort("API Internal Server Error".colorize.back(:red).on(:red)) - rescue ex - puts "#{ex.message}" - abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) - end - else - puts "Invalid data:".colorize.mode(:bold) - changeset.errors.each do |error| - puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red) - end - puts "\r\nEdit Snippet? Y/n" - repeat = gets - break if repeat == "n" - end - end + snippet.name = snippet_attributes.name + snippet.real_command = snippet_attributes.real_command + snippet.documentation = snippet_attributes.documentation + snippet.tags = (snippet_attributes.tags.nil?) ? nil : snippet_attributes.tags.not_nil!.join(",") + snippet.snippet_alias = snippet_attributes.snippet_alias + snippet.is_pinned = snippet_attributes.is_pinned + snippet.is_synced = false + changeset = SnippetSchema.changeset(snippet) + if changeset.valid? + begin + if temp_file.sync_to_cloud? + SniplineCli::Services::SniplineApi.new.update(snippet) + temp_file.delete + puts "Snippet updated!" + break + else + changeset = SnippetSchema.changeset(snippet) + Repo.update(changeset) + temp_file.delete + puts "Snippet updated!" + break + end + rescue ex : Crest::UnprocessableEntity + puts "Invalid data:".colorize.mode(:bold) + snippet_errors = SnippetErrorResponse.from_json(ex.response.body) + snippet_errors.errors.each do |error| + puts "#{error.source["pointer"].gsub("/data/attributes/", "")}: #{error.title}".colorize.back(:red).on(:red) + end + puts "\r\nEdit Snippet? Y/n" + repeat = gets + break if repeat == "n" + rescue ex : Crest::NotFound + abort("404 API URL not found".colorize.back(:red).on(:red)) + rescue ex : Crest::InternalServerError + abort("API Internal Server Error".colorize.back(:red).on(:red)) + rescue ex + puts "#{ex.message}" + abort("Connection to Snipline Cloud Refused".colorize.back(:red).on(:red)) + end + else + puts "Invalid data:".colorize.mode(:bold) + changeset.errors.each do |error| + puts "#{error[:field]} #{error[:message]}".colorize.back(:red).on(:red) + end + puts "\r\nEdit Snippet? Y/n" + repeat = gets + break if repeat == "n" + end + end end end end end - diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index a68f3de..3022602 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -14,12 +14,12 @@ module SniplineCli log.info("Looking through file #{config.get("general.db")}") unless File.readable?(File.expand_path(config.get("general.db"))) log.warn("Could not read #{config.get("general.db")}") - abort("Run #{"snipline-cli sync".colorize(:green)} first") + abort("Run #{"snipline-cli sync".colorize(:green)} first") end # File.open(File.expand_path(config.get("general.db"))) do |file| # snippets = Array(Snippet).from_json(file) # end - Repo.all(SnippetSchema) + Repo.all(SnippetSchema) end end end diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index deb22d4..312990c 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -2,14 +2,14 @@ require "db" require "sqlite3" module SniplineCli::Services - class Migrator - def self.run - File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db")) - DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db| - db.exec "create table if not exists snippets ( - local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + class Migrator + def self.run + File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db")) + DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db| + db.exec "create table if not exists snippets ( + local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cloud_id TEXT NULL, - name TEXT NOT NULL, + name TEXT NOT NULL, snippet_alias TEXT NULL UNIQUE, documentation TEXT NULL, real_command TEXT NOT NULL, @@ -19,13 +19,13 @@ module SniplineCli::Services inserted_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP )" - db.exec "create table if not exists schema (version)" - begin - db.query_one "select version from schema", &.read(Int) - rescue ex : DB::Error - db.exec "insert into schema (version) values (?)", 1 - end - end - end - end + db.exec "create table if not exists schema (version)" + begin + db.query_one "select version from schema", &.read(Int) + rescue ex : DB::Error + db.exec "insert into schema (version) values (?)", 1 + end + end + end + end end diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 205d3b5..7b6d722 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -16,11 +16,11 @@ module SniplineCli::Services unless search_term.empty? lowered_search_term = search_term.downcase results = results.select do |i| - if !i.tags.nil? - i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) - else - i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) - end + if !i.tags.nil? + i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + else + i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) + end end end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index 4f26c1c..c0beb4e 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -42,11 +42,11 @@ module SniplineCli::Services SingleSnippetDataWrapper.from_json(resp.body).data end - def update(snippet : SnippetSchema) + def update(snippet : SnippetSchema) config = SniplineCli.config # begin resp = Crest.patch( - "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", + "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", headers: { # "Accept" => "application/vnd.api+json", "Authorization" => "Bearer #{config.get("api.token")}", @@ -64,28 +64,27 @@ module SniplineCli::Services logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false ) response = SingleSnippetDataWrapper.from_json(resp.body).data - snippet.name = response.name.not_nil! - snippet.real_command = response.real_command.not_nil! - snippet.documentation = response.documentation - snippet.snippet_alias = response.snippet_alias - snippet.is_synced = true - snippet.is_pinned = response.is_pinned - Repo.update(snippet) - cloud_updated_at = Time.parse( - response.updated_at.not_nil!, - "%F %T", - Time::Location::UTC - ) - puts "cloud #{cloud_updated_at}" - local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!) - if local_snippet - puts "local #{local_snippet.updated_at}" - end - - q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id) - puts q.inspect - end + snippet.name = response.name.not_nil! + snippet.real_command = response.real_command.not_nil! + snippet.documentation = response.documentation + snippet.snippet_alias = response.snippet_alias + snippet.is_synced = true + snippet.is_pinned = response.is_pinned + Repo.update(snippet) + cloud_updated_at = Time.parse( + response.updated_at.not_nil!, + "%F %T", + Time::Location::UTC + ) + puts "cloud #{cloud_updated_at}" + local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!) + if local_snippet + puts "local #{local_snippet.updated_at}" + end + q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id) + puts q.inspect + end end class SniplineApiTest @@ -93,9 +92,10 @@ module SniplineCli::Services yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}" end - def create(snippet : SniplineCli::Models::Snippet) - end - def update(snippet : SniplineCli::Models::SnippetSchema) - end + def create(snippet : SniplineCli::Models::Snippet) + end + + def update(snippet : SniplineCli::Models::SnippetSchema) + end end end diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 1ad0e79..84ea9f1 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -9,12 +9,12 @@ module SniplineCli::Services def self.handle(snippet) # snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) response = SniplineApi.new.create(snippet) - if snippet.is_a?(SnippetSchema) - snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id) - snippet.cloud_id = response.id - after = Repo.update(snippet) - end - response + if snippet.is_a?(SnippetSchema) + snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id) + snippet.cloud_id = response.id + Repo.update(snippet) + end + response end end end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index f45c061..ee6e808 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -3,10 +3,9 @@ require "toml" module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile - include SniplineCli::Models - property snippet : SnippetSchema | Nil + property snippet : SnippetSchema | Nil property template = %<# Welcome to the terminal-based snippet editor # This file uses TOML syntax and will be processed after the file is saved and closed @@ -22,11 +21,11 @@ is_pinned = false snippet_alias = "" sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} > - - def initialize(@snippet : SnippetSchema | Nil = nil) - snippet = @snippet - if (snippet = @snippet).is_a?(SnippetSchema) - @template = %<# Welcome to the terminal-based snippet editor + + def initialize(@snippet : SnippetSchema | Nil = nil) + snippet = @snippet + if (snippet = @snippet).is_a?(SnippetSchema) + @template = %<# Welcome to the terminal-based snippet editor # This file uses TOML syntax and will be processed after the file is saved and closed # Fill in the below options and save+quit to continue name = "#{snippet.name}" @@ -40,8 +39,8 @@ is_pinned = #{snippet.is_pinned} snippet_alias = "#{snippet.snippet_alias}" sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} > - end - end + end + end def create config = SniplineCli.config @@ -56,21 +55,21 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} SnippetAttribute.new( name: toml["name"].as(String), real_command: toml["real_command"].as(String), - documentation: toml["documentation"].as(String).rstrip, + documentation: toml["documentation"].as(String).rstrip, is_pinned: toml["is_pinned"].as(Bool), snippet_alias: parse_snippet_alias(toml["snippet_alias"]), tags: [] of String ) end - def parse_snippet_alias(snippet_alias) - str = snippet_alias.as(String) - if str == "" - nil - else - str - end - end + def parse_snippet_alias(snippet_alias) + str = snippet_alias.as(String) + if str == "" + nil + else + str + end + end def sync_to_cloud? config = SniplineCli.config From 03351a211f61c76b910f4c6ff93d153f3c7b597e Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 4 Dec 2019 11:11:38 +0000 Subject: [PATCH 22/47] Remove redundant namespace calls --- src/snipline_cli.cr | 6 ++-- src/snipline_cli/commands/init.cr | 2 +- src/snipline_cli/commands/login.cr | 2 +- src/snipline_cli/commands/new.cr | 15 +++------- src/snipline_cli/commands/search.cr | 8 ++---- src/snipline_cli/commands/sync.cr | 28 +++++++++---------- src/snipline_cli/ncurses_windows/left_pane.cr | 10 +++---- .../ncurses_windows/multi_param.cr | 2 +- src/snipline_cli/ncurses_windows/param.cr | 2 +- .../ncurses_windows/right_pane.cr | 6 ++-- .../append_snippet_to_local_storage.cr | 5 ++-- src/snipline_cli/services/command_builder.cr | 1 - src/snipline_cli/services/display_results.cr | 5 ++-- src/snipline_cli/services/edit_snippet.cr | 5 ++-- src/snipline_cli/services/load_snippets.cr | 1 - src/snipline_cli/services/search_snippets.cr | 2 +- src/snipline_cli/services/snipline_api.cr | 7 ++--- .../services/sync_snippet_to_snipline.cr | 1 - .../services/temp_snippet_editor_file.cr | 1 - 19 files changed, 47 insertions(+), 62 deletions(-) diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 480ba76..c8f9395 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -13,6 +13,8 @@ require "./snipline_cli/ncurses_windows/*" require "./snipline_cli/services/*" require "./snipline_cli/commands/*" +include SniplineCli::Services + module Repo extend Crecto::Repo @@ -26,7 +28,7 @@ module SniplineCli VERSION = "0.3.0" def self.config - SniplineCli::Config.config + Config.config end def self.config_file @@ -34,7 +36,7 @@ module SniplineCli end def self.log - SniplineCli::Services::Log.log + Log.log end # The base Command Class that inherits from [Admiral](https://github.com/jwaldrip/admiral.cr) diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 0206f8d..922e2b8 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -23,7 +23,7 @@ module SniplineCli temp_dir = "#{config.get("general.temp_dir")}" TOML - SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file) + CreateConfigDirectory.run(SniplineCli.config_file) File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" unless File.exists?(File.expand_path(config.get("general.db"))) diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr index 8ffbbd9..5bdd5d7 100644 --- a/src/snipline_cli/commands/login.cr +++ b/src/snipline_cli/commands/login.cr @@ -59,7 +59,7 @@ module SniplineCli db = "#{config.get("general.db")}" TOML - SniplineCli::Services::CreateConfigDirectory.run(SniplineCli.config_file) + CreateConfigDirectory.run(SniplineCli.config_file) File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}" diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 1c9fe29..9f695e9 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -7,7 +7,6 @@ module SniplineCli # This command generates a config file in the requested location. # By default this location is ~/.config/snipline/config.toml class New < Admiral::Command - include SniplineCli::Models define_help description: "Create a new Snippet" def run @@ -15,16 +14,16 @@ module SniplineCli unless File.exists?(File.expand_path("#{config.get("general.db")}")) abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end - SniplineCli::Services::Migrator.run + Migrator.run unless ENV.has_key?("EDITOR") abort("Please set your environment EDITOR variable. E.g. export EDITOR=vi".colorize.back(:red).on(:red)) end - temp_file = SniplineCli::Services::TempSnippetEditorFile.new + temp_file = TempSnippetEditorFile.new temp_file.create loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read - snippet = SniplineCli::Models::SnippetSchema.new + snippet = SnippetSchema.new snippet.name = snippet_attributes.name snippet.real_command = snippet_attributes.real_command @@ -38,14 +37,8 @@ module SniplineCli result = Repo.insert(changeset) begin if temp_file.sync_to_cloud? - SniplineCli::Services::SyncSnippetToSnipline.handle(result.instance) - # else - # snippet_attributes.set_timestamps() - # Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) + SyncSnippetToSnipline.handle(result.instance) end - # if snippet.is_a?(Snippet) - # SniplineCli::Services::AppendSnippetToLocalStorage.handle(snippet) - # end puts "Snippet created!" temp_file.delete break diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 3432d30..4cc964a 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -35,11 +35,9 @@ module SniplineCli def run search_term : String = arguments.search_term || "" - # snippets = SniplineCli::Services::LoadSnippets.run - snippets = if search_term.empty? query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SniplineCli::Models::SnippetSchema, query) + Repo.all(SnippetSchema, query) else lowered_search_term = search_term.downcase if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) @@ -53,7 +51,7 @@ module SniplineCli query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) end query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SniplineCli::Models::SnippetSchema, query) + Repo.all(SnippetSchema, query) # snippets.select! { |i| # if field = flags.field # i.value_for_attribute(field).downcase.includes?(lowered_search_term) @@ -74,7 +72,7 @@ module SniplineCli # exit(0) # end - Services::DisplayResults.new(snippets) + DisplayResults.new(snippets) end def sort_results(snippets, limit) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 0ab4c2e..60c3837 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -13,12 +13,12 @@ module SniplineCli class Sync < Admiral::Command define_help description: "For syncing snippets from Snipline" - property snipline_api : (SniplineCli::Services::SniplineApi | SniplineCli::Services::SniplineApiTest) = SniplineCli::Services::SniplineApi.new - property file : (SniplineCli::Services::StoreSnippets) = SniplineCli::Services::StoreSnippets.new + property snipline_api : (SniplineApi | SniplineApiTest) = SniplineApi.new + property file : (StoreSnippets) = StoreSnippets.new def run puts "Migrating Database..." - SniplineCli::Services::Migrator.run + Migrator.run puts "Syncing snippets..." config = SniplineCli.config if config.get("api.token") == "" @@ -27,7 +27,7 @@ module SniplineCli sync_unsynced_snippets @snipline_api.fetch do |body| - cloud_snippets = Models::SnippetDataWrapper.from_json(body).data + cloud_snippets = SnippetDataWrapper.from_json(body).data save_new_snipline_cloud_snippets(cloud_snippets) delete_orphan_snippets(cloud_snippets) update_locally_out_of_date_snippets(cloud_snippets) @@ -39,7 +39,7 @@ module SniplineCli synced_to_local_count = 0 synced_to_cloud_count = 0 cloud_snippets.each { |cs| - local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: cs.id.not_nil!) + local_snippet = Repo.get_by(SnippetSchema, cloud_id: cs.id.not_nil!) if local_snippet if local_snippet.is_synced # local hasn't changed - redownload from snipline just incase @@ -65,8 +65,8 @@ module SniplineCli def delete_orphan_snippets(cloud_snippets) # if snippet cloud_id exists locally but not in cloud puts "Cleaning up snippets that are no longer in Snipline Cloud..." - local_snippets = SniplineCli::Services::LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } - orphans = [] of SniplineCli::Models::SnippetSchema + local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } + orphans = [] of SnippetSchema cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } local_snippets.each do |ls| orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids) @@ -84,17 +84,17 @@ module SniplineCli def save_new_snipline_cloud_snippets(cloud_snippets) # Save the response JSON into a file without the data wrapper - local_snippets = SniplineCli::Services::LoadSnippets.run + local_snippets = LoadSnippets.run begin # Only snippets that are in the cloud but not stored locally - difference = [] of SniplineCli::Models::Snippet + difference = [] of Snippet local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! } cloud_snippets.each do |cs| difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) end difference.each do |s| puts "Storing #{s.attributes.name} from Snipline".colorize(:green) - snippet = SniplineCli::Models::SnippetSchema.new + snippet = SnippetSchema.new snippet.name = s.name snippet.cloud_id = s.id snippet.real_command = s.real_command @@ -103,7 +103,7 @@ module SniplineCli snippet.snippet_alias = s.snippet_alias snippet.is_pinned = s.is_pinned snippet.is_synced = true - changeset = SniplineCli::Models::SnippetSchema.changeset(snippet) + changeset = SnippetSchema.changeset(snippet) Repo.insert(changeset) # local_snippets << s end @@ -122,15 +122,15 @@ module SniplineCli end def sync_unsynced_snippets - local_snippets = SniplineCli::Services::LoadSnippets.run + local_snippets = LoadSnippets.run local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." begin - cloud_snippet = SniplineCli::Services::SyncSnippetToSnipline.handle(snippet) + cloud_snippet = SyncSnippetToSnipline.handle(snippet) update_local_snippet_id(cloud_snippet, snippet) puts "Success!".colorize(:green) rescue ex : Crest::UnprocessableEntity - resp = SniplineCli::Models::SnippetErrorResponse.from_json(ex.response.not_nil!.body) + resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body) puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) rescue ex abort ex.message diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr index 4aac91c..2a65c56 100644 --- a/src/snipline_cli/ncurses_windows/left_pane.cr +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -5,13 +5,13 @@ module SniplineCli::NCursesWindows property left property right property selected_index = 0 - property searcher : SniplineCli::Services::SearchSnippets - property results : Array(SniplineCli::Models::SnippetSchema) - property snippets : Array(SniplineCli::Models::SnippetSchema) + property searcher : SearchSnippets + property results : Array(SnippetSchema) + property snippets : Array(SnippetSchema) - def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SniplineCli::Models::SnippetSchema) + def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SnippetSchema) @results = @snippets - @searcher = SniplineCli::Services::SearchSnippets.new(@snippets) + @searcher = SearchSnippets.new(@snippets) @border = NCurses::Window.new( NCurses.height - (header_footer_height * 2), diff --git a/src/snipline_cli/ncurses_windows/multi_param.cr b/src/snipline_cli/ncurses_windows/multi_param.cr index e7f0e0f..5cba19f 100644 --- a/src/snipline_cli/ncurses_windows/multi_param.cr +++ b/src/snipline_cli/ncurses_windows/multi_param.cr @@ -7,7 +7,7 @@ module SniplineCli::NCursesWindows property entered_text : String = "" property selected_index : UInt32 = 0 - def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam) + def initialize(@command_builder : String, @param : SnippetParam) @border = NCurses::Window.new( NCurses.height, NCurses.width, diff --git a/src/snipline_cli/ncurses_windows/param.cr b/src/snipline_cli/ncurses_windows/param.cr index 6c48169..243e259 100644 --- a/src/snipline_cli/ncurses_windows/param.cr +++ b/src/snipline_cli/ncurses_windows/param.cr @@ -6,7 +6,7 @@ module SniplineCli::NCursesWindows property param property entered_text : String = "" - def initialize(@command_builder : String, @param : SniplineCli::Models::SnippetParam) + def initialize(@command_builder : String, @param : SnippetParam) @border = NCurses::Window.new( NCurses.height, NCurses.width, diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr index 06188fc..f1e126a 100644 --- a/src/snipline_cli/ncurses_windows/right_pane.cr +++ b/src/snipline_cli/ncurses_windows/right_pane.cr @@ -4,7 +4,7 @@ module SniplineCli::NCursesWindows property border property left property right - property documentation_formatter : SniplineCli::Services::DocumentationFormatter + property documentation_formatter : DocumentationFormatter def initialize(header_footer_height, @left : Int32, @right : Int32) @border = NCurses::Window.new( @@ -19,7 +19,7 @@ module SniplineCli::NCursesWindows 3, @left + 2 ) - @documentation_formatter = SniplineCli::Services::DocumentationFormatter.new(@window) + @documentation_formatter = DocumentationFormatter.new(@window) @window.set_color 2 @border.set_color 2 LibNCurses.box(@border, 0, 0) @@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows @window end - def display(snippet : SniplineCli::Models::SnippetSchema | Nil) + def display(snippet : SnippetSchema | Nil) @window.clear if snippet LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr index 868b449..f70f9a8 100644 --- a/src/snipline_cli/services/append_snippet_to_local_storage.cr +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -1,15 +1,14 @@ module SniplineCli::Services # For saving Snippets locally. class AppendSnippetToLocalStorage - include SniplineCli::Models # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) - snippets = SniplineCli::Services::LoadSnippets.run + snippets = LoadSnippets.run if snippet.is_a?(Snippet) snippets << snippet.as(Snippet) end - SniplineCli::Services::StoreSnippets.new.store(snippets.to_json) + StoreSnippets.new.store(snippets.to_json) return end end diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index f3cc851..b82e6d9 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -14,7 +14,6 @@ module SniplineCli # end # ``` class CommandBuilder - include SniplineCli::Models def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String unless snippet.has_params diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index e652c97..936836e 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -1,7 +1,6 @@ module SniplineCli::Services # For saving Snippets locally. class DisplayResults - include SniplineCli::Models property header property search property left_pane @@ -102,13 +101,13 @@ module SniplineCli::Services def build_snippet NCurses.clear NCurses.end - SniplineCli::Services::CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) + CommandBuilder.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end def edit_snippet NCurses.clear NCurses.end - SniplineCli::Services::EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) + EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end end end diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index c2ac6e3..df91f5b 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -6,13 +6,12 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run # ``` class EditSnippet - include SniplineCli::Models def self.run(snippet : SnippetSchema, input, output) config = SniplineCli.config log = SniplineCli.log log.info("editing snippet #{snippet.name}") - temp_file = SniplineCli::Services::TempSnippetEditorFile.new(snippet) + temp_file = TempSnippetEditorFile.new(snippet) temp_file.create loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") @@ -28,7 +27,7 @@ module SniplineCli if changeset.valid? begin if temp_file.sync_to_cloud? - SniplineCli::Services::SniplineApi.new.update(snippet) + SniplineApi.new.update(snippet) temp_file.delete puts "Snippet updated!" break diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index 3022602..bf5efc0 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -6,7 +6,6 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run # ``` class LoadSnippets - include SniplineCli::Models def self.run : Array(SnippetSchema) config = SniplineCli.config diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 7b6d722..2a4a8fd 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -6,7 +6,7 @@ module SniplineCli::Services property snippets # Takes an array of snippets and saves them to the `snippet.json` file. - def initialize(@snippets = [] of SniplineCli::Models::SnippetSchema) + def initialize(@snippets = [] of SnippetSchema) end def search(search_term) diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index c0beb4e..735f932 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -3,7 +3,6 @@ require "json" module SniplineCli::Services # For talking to the Snipline API. class SniplineApi - include SniplineCli::Models # Fetches the user's Snippets. def fetch(&block) @@ -77,7 +76,7 @@ module SniplineCli::Services Time::Location::UTC ) puts "cloud #{cloud_updated_at}" - local_snippet = Repo.get_by(SniplineCli::Models::SnippetSchema, cloud_id: response.id.not_nil!) + local_snippet = Repo.get_by(SnippetSchema, cloud_id: response.id.not_nil!) if local_snippet puts "local #{local_snippet.updated_at}" end @@ -92,10 +91,10 @@ module SniplineCli::Services yield "{\"data\":[{\"attributes\":{\"alias\":\"git.sla\",\"documentation\":null,\"is-pinned\":false,\"name\":\"Git log pretty\",\"real-command\":\"git log --oneline --decorate --graph --all\",\"tags\":[]},\"id\":\"0f4846c0-3194-40bb-be77-8c4b136565f4\",\"type\":\"snippets\"}]}" end - def create(snippet : SniplineCli::Models::Snippet) + def create(snippet : Snippet) end - def update(snippet : SniplineCli::Models::SnippetSchema) + def update(snippet : SnippetSchema) end end end diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 84ea9f1..88a2f41 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -3,7 +3,6 @@ require "json" module SniplineCli::Services # For saving Snippets locally. class SyncSnippetToSnipline - include SniplineCli::Models # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index ee6e808..a57f5bd 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -3,7 +3,6 @@ require "toml" module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile - include SniplineCli::Models property snippet : SnippetSchema | Nil From 5703b890b1eddef1278078862a887742ac10c763 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 4 Dec 2019 11:34:25 +0000 Subject: [PATCH 23/47] Move old snippet models to become parsers --- .../snippet_attribute_parser_spec.cr} | 5 +- spec/services/command_builder_spec.cr | 4 +- src/snipline_cli.cr | 1 + src/snipline_cli/commands/new.cr | 4 +- src/snipline_cli/commands/search.cr | 4 +- src/snipline_cli/commands/sync.cr | 12 +- src/snipline_cli/models/snippet.cr | 79 ++++------- src/snipline_cli/models/snippet_schema.cr | 124 ------------------ src/snipline_cli/ncurses_windows/left_pane.cr | 8 +- .../ncurses_windows/right_pane.cr | 2 +- .../snippet_attribute_parser.cr} | 5 +- .../snippet_data_parser.cr} | 11 +- src/snipline_cli/parsers/snippet_parser.cr | 74 +++++++++++ src/snipline_cli/services/command_builder.cr | 2 +- src/snipline_cli/services/edit_snippet.cr | 6 +- src/snipline_cli/services/load_snippets.cr | 4 +- src/snipline_cli/services/search_snippets.cr | 2 +- src/snipline_cli/services/snipline_api.cr | 14 +- .../services/sync_snippet_to_snipline.cr | 4 +- .../services/temp_snippet_editor_file.cr | 8 +- 20 files changed, 152 insertions(+), 221 deletions(-) rename spec/{models/snippet_attribute_spec.cr => parsers/snippet_attribute_parser_spec.cr} (79%) delete mode 100644 src/snipline_cli/models/snippet_schema.cr rename src/snipline_cli/{models/snippet_attribute.cr => parsers/snippet_attribute_parser.cr} (95%) rename src/snipline_cli/{models/snippet_data_wrapper.cr => parsers/snippet_data_parser.cr} (74%) create mode 100644 src/snipline_cli/parsers/snippet_parser.cr diff --git a/spec/models/snippet_attribute_spec.cr b/spec/parsers/snippet_attribute_parser_spec.cr similarity index 79% rename from spec/models/snippet_attribute_spec.cr rename to spec/parsers/snippet_attribute_parser_spec.cr index 565b3b2..859ed79 100644 --- a/spec/models/snippet_attribute_spec.cr +++ b/spec/parsers/snippet_attribute_parser_spec.cr @@ -1,6 +1,6 @@ -describe SniplineCli::Models::SnippetAttribute do +describe SniplineCli::Parsers::SnippetAttributeParser do it "correctly parses snippets attributes" do - attributes = SniplineCli::Models::SnippetAttribute.from_json( + attributes = SniplineCli::Parsers::SnippetAttributeParser.from_json( %( { "is-pinned": true, @@ -18,3 +18,4 @@ describe SniplineCli::Models::SnippetAttribute do attributes.documentation.should eq nil end end + diff --git a/spec/services/command_builder_spec.cr b/spec/services/command_builder_spec.cr index 18b623b..c1468f3 100644 --- a/spec/services/command_builder_spec.cr +++ b/spec/services/command_builder_spec.cr @@ -1,7 +1,7 @@ describe SniplineCli::Services::CommandBuilder do it "correctly parses snippets with no params" do # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - snippet = SniplineCli::Models::SnippetSchema.new + snippet = SniplineCli::Models::Snippet.new snippet.name = "Git log pretty" snippet.snippet_alias = "git.sla" snippet.real_command = "git log --oneline --decorate --graph --all" @@ -15,7 +15,7 @@ describe SniplineCli::Services::CommandBuilder do it "should generate random passwords" do # attributes = %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"random password generator","real-command":"rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}","tags":["git"]}}) # snippet = SniplineCli::Models::Snippet.from_json(attributes) - snippet = SniplineCli::Models::SnippetSchema.new + snippet = SniplineCli::Models::Snippet.new snippet.name = "Git log pretty" snippet.snippet_alias = "git.sla" snippet.real_command = "rand '#password{[Name,8]}' #password{[Name]} #password{[Diff,4]}" diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index c8f9395..1608bdb 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -8,6 +8,7 @@ require "crecto" require "./snipline_cli/config" require "./snipline_cli/exceptions/*" +require "./snipline_cli/parsers/*" require "./snipline_cli/models/*" require "./snipline_cli/ncurses_windows/*" require "./snipline_cli/services/*" diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 9f695e9..91793e3 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -23,7 +23,7 @@ module SniplineCli loop do system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read - snippet = SnippetSchema.new + snippet = Snippet.new snippet.name = snippet_attributes.name snippet.real_command = snippet_attributes.real_command @@ -32,7 +32,7 @@ module SniplineCli snippet.snippet_alias = snippet_attributes.snippet_alias snippet.is_pinned = snippet_attributes.is_pinned snippet.is_synced = false - changeset = SnippetSchema.changeset(snippet) + changeset = Snippet.changeset(snippet) abort("Invalid") unless changeset.valid? result = Repo.insert(changeset) begin diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 4cc964a..6e11294 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -37,7 +37,7 @@ module SniplineCli snippets = if search_term.empty? query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SnippetSchema, query) + Repo.all(Snippet, query) else lowered_search_term = search_term.downcase if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) @@ -51,7 +51,7 @@ module SniplineCli query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) end query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(SnippetSchema, query) + Repo.all(Snippet, query) # snippets.select! { |i| # if field = flags.field # i.value_for_attribute(field).downcase.includes?(lowered_search_term) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 60c3837..e10bcad 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -27,7 +27,7 @@ module SniplineCli sync_unsynced_snippets @snipline_api.fetch do |body| - cloud_snippets = SnippetDataWrapper.from_json(body).data + cloud_snippets = SnippetDataParser.from_json(body).data save_new_snipline_cloud_snippets(cloud_snippets) delete_orphan_snippets(cloud_snippets) update_locally_out_of_date_snippets(cloud_snippets) @@ -39,7 +39,7 @@ module SniplineCli synced_to_local_count = 0 synced_to_cloud_count = 0 cloud_snippets.each { |cs| - local_snippet = Repo.get_by(SnippetSchema, cloud_id: cs.id.not_nil!) + local_snippet = Repo.get_by(Snippet, cloud_id: cs.id.not_nil!) if local_snippet if local_snippet.is_synced # local hasn't changed - redownload from snipline just incase @@ -66,7 +66,7 @@ module SniplineCli # if snippet cloud_id exists locally but not in cloud puts "Cleaning up snippets that are no longer in Snipline Cloud..." local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } - orphans = [] of SnippetSchema + orphans = [] of Snippet cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } local_snippets.each do |ls| orphans << ls unless cloud_snippet_exists?(ls, cloud_snippet_ids) @@ -87,14 +87,14 @@ module SniplineCli local_snippets = LoadSnippets.run begin # Only snippets that are in the cloud but not stored locally - difference = [] of Snippet + difference = [] of SnippetParser local_snippet_cloud_ids = local_snippets.select { |s| !s.cloud_id.nil? }.map { |s| s.cloud_id.not_nil! } cloud_snippets.each do |cs| difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) end difference.each do |s| puts "Storing #{s.attributes.name} from Snipline".colorize(:green) - snippet = SnippetSchema.new + snippet = Snippet.new snippet.name = s.name snippet.cloud_id = s.id snippet.real_command = s.real_command @@ -103,7 +103,7 @@ module SniplineCli snippet.snippet_alias = s.snippet_alias snippet.is_pinned = s.is_pinned snippet.is_synced = true - changeset = SnippetSchema.changeset(snippet) + changeset = Snippet.changeset(snippet) Repo.insert(changeset) # local_snippets << s end diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 9b130db..4be50bf 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -1,51 +1,24 @@ -require "json" - module SniplineCli::Models - class Snippet - JSON.mapping({ - id: String | Nil, - type: String, - attributes: SnippetAttribute, - }) - - def initialize(@id : String | Nil, @type : String, @attributes : SnippetAttribute) - end - - def snippet_alias - attributes.snippet_alias - end - - def name - attributes.name - end - - def documentation - attributes.documentation - end - - def is_pinned - attributes.is_pinned + class Snippet < Crecto::Model + set_created_at_field :inserted_at + + schema "snippets" do + field :local_id, Int32, primary_key: true + field :cloud_id, String + field :name, String + field :real_command, String + field :documentation, String + field :tags, String + field :snippet_alias, String + field :is_pinned, Bool + field :is_synced, Bool end - def real_command - attributes.real_command - end - - def tags - attributes.tags - end - - def is_synced - attributes.is_synced - end - - def inserted_at - attributes.inserted_at - end - - def updated_at - attributes.updated_at - end + validate_required [:name, :real_command] + validate_length :name, min: 1 + validate_length :real_command, min: 1 + unique_constraint :snippet_alias + unique_constraint :name # # Params such as variables or select that require input from the user @@ -53,7 +26,7 @@ module SniplineCli::Models def interactive_params : Array(SnippetParam) temp_array = [] of SnippetParam - real_command.scan(/#(select)?\{\[(.+?)\]\}/) do |m| + real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m| param_type = (m[1]?) ? m[1] : "variable" if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0 if param_type == "select" @@ -89,7 +62,7 @@ module SniplineCli::Models # def uninteractive_params : Array(SnippetPasswordParam) temp_array = [] of SnippetPasswordParam - real_command.scan(/#password\{\[(.+?)\]\}/) do |m| + real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| full = m[1].as(String) options = full.split(",") id = options.shift @@ -114,17 +87,17 @@ module SniplineCli::Models temp_command = real_command interactive_params.each do |param| if param.type == "select" - temp_command = temp_command.gsub("#select{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.gsub("#select{[#{param.name}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" } else - temp_command = temp_command.gsub("\#{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.gsub("\#{[#{param.name}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" } + temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" } end end uninteractive_params.each do |param| - temp_command = temp_command.gsub("#password{[#{param.full}]}") { "" } - temp_command = temp_command.gsub("#password{[#{param.id}]}") { "" } + temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" } + temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" } end temp_command end diff --git a/src/snipline_cli/models/snippet_schema.cr b/src/snipline_cli/models/snippet_schema.cr deleted file mode 100644 index b7137e0..0000000 --- a/src/snipline_cli/models/snippet_schema.cr +++ /dev/null @@ -1,124 +0,0 @@ -module SniplineCli::Models - class SnippetSchema < Crecto::Model - set_created_at_field :inserted_at - - schema "snippets" do - field :local_id, Int32, primary_key: true - field :cloud_id, String - field :name, String - field :real_command, String - field :documentation, String - field :tags, String - field :snippet_alias, String - field :is_pinned, Bool - field :is_synced, Bool - end - - validate_required [:name, :real_command] - validate_length :name, min: 1 - validate_length :real_command, min: 1 - unique_constraint :snippet_alias - unique_constraint :name - - # - # Params such as variables or select that require input from the user - # - def interactive_params : Array(SnippetParam) - temp_array = [] of SnippetParam - - real_command.as(String).scan(/#(select)?\{\[(.+?)\]\}/) do |m| - param_type = (m[1]?) ? m[1] : "variable" - if temp_array.count { |param| param.name == m[2] && param_type == param.type } == 0 - if param_type == "select" - split_equals = m[2].split("=").map { |substring| substring } - param_name = split_equals.shift - unparsed_params = split_equals.join("=") - if unparsed_params.is_a?(String) - options = unparsed_params.as(String).split(",").map(&.strip) - # todo - if options.is_a?(Array(String)) - options = options.as(Array(String)) - end - else - options = Array(String).new - end - # default_option = options.first || "" - temp_array << SnippetParam.new(param_name, "", m[2], "select", options) - elsif m[2].includes?("=") - split_equals = m[2].split("=").map { |substring| substring } - param_name = split_equals.shift - default_value = split_equals.join("=") - temp_array << SnippetParam.new(param_name, default_value, m[2], "variable", Array(String).new) - else - temp_array << SnippetParam.new(m[2], "", m[2], "variable", Array(String).new) - end - end - end - temp_array - end - - # - # E.g. Passwords - # - def uninteractive_params : Array(SnippetPasswordParam) - temp_array = [] of SnippetPasswordParam - real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| - full = m[1].as(String) - options = full.split(",") - id = options.shift - length = UInt8.new(16) - if options.size > 0 - length = options.shift.to_u32 || UInt8.new(16) - end - temp_array << SnippetPasswordParam.new(id, length, full) - end - temp_array - end - - def has_params - interactive_params.size > 0 || uninteractive_params.size > 0 - end - - def preview_command - unless has_params() - return real_command - end - - temp_command = real_command - interactive_params.each do |param| - if param.type == "select" - temp_command = temp_command.as(String).gsub("#select{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.as(String).gsub("#select{[#{param.name}]}") { "<#{param.name}>" } - else - temp_command = temp_command.as(String).gsub("\#{[#{param.full}]}") { "<#{param.name}>" } - temp_command = temp_command.as(String).gsub("\#{[#{param.name}]}") { "<#{param.name}>" } - end - end - - uninteractive_params.each do |param| - temp_command = temp_command.as(String).gsub("#password{[#{param.full}]}") { "" } - temp_command = temp_command.as(String).gsub("#password{[#{param.id}]}") { "" } - end - temp_command - end - - def value_for_attribute(attribute : String) - case attribute - when "alias" - snippet_alias || "" - when "documentation" - documentation || "" - when "name" - name || "" - when "tags" - if !tags.nil? - tags.as(Array(String)).join(",") || "" - else - "" - end - else - "" - end - end - end -end diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr index 2a65c56..49a6318 100644 --- a/src/snipline_cli/ncurses_windows/left_pane.cr +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -1,3 +1,5 @@ +include SniplineCli::Models + module SniplineCli::NCursesWindows class LeftPane property window @@ -6,10 +8,10 @@ module SniplineCli::NCursesWindows property right property selected_index = 0 property searcher : SearchSnippets - property results : Array(SnippetSchema) - property snippets : Array(SnippetSchema) + property results : Array(Snippet) + property snippets : Array(Snippet) - def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of SnippetSchema) + def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of Snippet) @results = @snippets @searcher = SearchSnippets.new(@snippets) diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr index f1e126a..55b1107 100644 --- a/src/snipline_cli/ncurses_windows/right_pane.cr +++ b/src/snipline_cli/ncurses_windows/right_pane.cr @@ -28,7 +28,7 @@ module SniplineCli::NCursesWindows @window end - def display(snippet : SnippetSchema | Nil) + def display(snippet : Snippet | Nil) @window.clear if snippet LibNCurses.wattr_off(@window, NCurses::Attribute::Bold, nil) diff --git a/src/snipline_cli/models/snippet_attribute.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr similarity index 95% rename from src/snipline_cli/models/snippet_attribute.cr rename to src/snipline_cli/parsers/snippet_attribute_parser.cr index 1794a33..30f6d29 100644 --- a/src/snipline_cli/models/snippet_attribute.cr +++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr @@ -1,7 +1,7 @@ require "json" -module SniplineCli::Models - class SnippetAttribute +module SniplineCli::Parsers + class SnippetAttributeParser include JSON::Serializable @[JSON::Field(key: "alias")] @@ -40,3 +40,4 @@ module SniplineCli::Models end end end + diff --git a/src/snipline_cli/models/snippet_data_wrapper.cr b/src/snipline_cli/parsers/snippet_data_parser.cr similarity index 74% rename from src/snipline_cli/models/snippet_data_wrapper.cr rename to src/snipline_cli/parsers/snippet_data_parser.cr index b648c5f..4ee244e 100644 --- a/src/snipline_cli/models/snippet_data_wrapper.cr +++ b/src/snipline_cli/parsers/snippet_data_parser.cr @@ -1,13 +1,13 @@ -module SniplineCli::Models - class SnippetDataWrapper +module SniplineCli::Parsers + class SnippetDataParser JSON.mapping({ - data: Array(Snippet), + data: Array(SnippetParser), }) end - class SingleSnippetDataWrapper + class SingleSnippetDataParser JSON.mapping({ - data: Snippet, + data: SnippetParser, }) end @@ -31,3 +31,4 @@ module SniplineCli::Models end end end + diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr new file mode 100644 index 0000000..04340c3 --- /dev/null +++ b/src/snipline_cli/parsers/snippet_parser.cr @@ -0,0 +1,74 @@ +require "json" + +module SniplineCli::Parsers + class SnippetParser + JSON.mapping({ + id: String | Nil, + type: String, + attributes: SnippetAttributeParser, + }) + + def initialize(@id : String | Nil, @type : String, @attributes : SnippetAttributeParser) + end + + def snippet_alias + attributes.snippet_alias + end + + def name + attributes.name + end + + def documentation + attributes.documentation + end + + def is_pinned + attributes.is_pinned + end + + def real_command + attributes.real_command + end + + def tags + attributes.tags + end + + def is_synced + attributes.is_synced + end + + def inserted_at + attributes.inserted_at + end + + def updated_at + attributes.updated_at + end + + def has_params + interactive_params.size > 0 || uninteractive_params.size > 0 + end + + def value_for_attribute(attribute : String) + case attribute + when "alias" + snippet_alias || "" + when "documentation" + documentation || "" + when "name" + name || "" + when "tags" + if !tags.nil? + tags.as(Array(String)).join(",") || "" + else + "" + end + else + "" + end + end + end +end + diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index b82e6d9..5de31e7 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -15,7 +15,7 @@ module SniplineCli # ``` class CommandBuilder - def self.run(snippet : SnippetSchema, input, output, user_input = [] of String) : String + def self.run(snippet : Snippet, input, output, user_input = [] of String) : String unless snippet.has_params return snippet.real_command || "" end diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index df91f5b..0f2dd7c 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -7,7 +7,7 @@ module SniplineCli # ``` class EditSnippet - def self.run(snippet : SnippetSchema, input, output) + def self.run(snippet : Snippet, input, output) config = SniplineCli.config log = SniplineCli.log log.info("editing snippet #{snippet.name}") @@ -23,7 +23,7 @@ module SniplineCli snippet.snippet_alias = snippet_attributes.snippet_alias snippet.is_pinned = snippet_attributes.is_pinned snippet.is_synced = false - changeset = SnippetSchema.changeset(snippet) + changeset = Snippet.changeset(snippet) if changeset.valid? begin if temp_file.sync_to_cloud? @@ -32,7 +32,7 @@ module SniplineCli puts "Snippet updated!" break else - changeset = SnippetSchema.changeset(snippet) + changeset = Snippet.changeset(snippet) Repo.update(changeset) temp_file.delete puts "Snippet updated!" diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index bf5efc0..6020a8e 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -7,7 +7,7 @@ module SniplineCli # ``` class LoadSnippets - def self.run : Array(SnippetSchema) + def self.run : Array(Snippet) config = SniplineCli.config log = SniplineCli.log log.info("Looking through file #{config.get("general.db")}") @@ -18,7 +18,7 @@ module SniplineCli # File.open(File.expand_path(config.get("general.db"))) do |file| # snippets = Array(Snippet).from_json(file) # end - Repo.all(SnippetSchema) + Repo.all(Snippet) end end end diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 2a4a8fd..dd8e1c5 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -6,7 +6,7 @@ module SniplineCli::Services property snippets # Takes an array of snippets and saves them to the `snippet.json` file. - def initialize(@snippets = [] of SnippetSchema) + def initialize(@snippets = [] of Snippet) end def search(search_term) diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index 735f932..1edb627 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -1,5 +1,7 @@ require "json" +include SniplineCli::Parsers + module SniplineCli::Services # For talking to the Snipline API. class SniplineApi @@ -17,7 +19,7 @@ module SniplineCli::Services yield resp.body end - def create(snippet : SnippetAttribute | SnippetSchema) + def create(snippet : SnippetAttributeParser | Snippet) config = SniplineCli.config # begin resp = Crest.post( @@ -38,10 +40,10 @@ module SniplineCli::Services }, logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false ) - SingleSnippetDataWrapper.from_json(resp.body).data + SingleSnippetDataParser.from_json(resp.body).data end - def update(snippet : SnippetSchema) + def update(snippet : Snippet) config = SniplineCli.config # begin resp = Crest.patch( @@ -62,7 +64,7 @@ module SniplineCli::Services }, logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false ) - response = SingleSnippetDataWrapper.from_json(resp.body).data + response = SingleSnippetDataParser.from_json(resp.body).data snippet.name = response.name.not_nil! snippet.real_command = response.real_command.not_nil! snippet.documentation = response.documentation @@ -76,7 +78,7 @@ module SniplineCli::Services Time::Location::UTC ) puts "cloud #{cloud_updated_at}" - local_snippet = Repo.get_by(SnippetSchema, cloud_id: response.id.not_nil!) + local_snippet = Repo.get_by(Snippet, cloud_id: response.id.not_nil!) if local_snippet puts "local #{local_snippet.updated_at}" end @@ -94,7 +96,7 @@ module SniplineCli::Services def create(snippet : Snippet) end - def update(snippet : SnippetSchema) + def update(snippet : Snippet) end end end diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 88a2f41..52b660b 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -8,8 +8,8 @@ module SniplineCli::Services def self.handle(snippet) # snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) response = SniplineApi.new.create(snippet) - if snippet.is_a?(SnippetSchema) - snippet = Repo.get!(SnippetSchema, snippet.as(SnippetSchema).local_id) + if snippet.is_a?(Snippet) + snippet = Repo.get!(Snippet, snippet.local_id) snippet.cloud_id = response.id Repo.update(snippet) end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index a57f5bd..48b115c 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -4,7 +4,7 @@ module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile - property snippet : SnippetSchema | Nil + property snippet : Snippet | Nil property template = %<# Welcome to the terminal-based snippet editor # This file uses TOML syntax and will be processed after the file is saved and closed @@ -21,9 +21,9 @@ snippet_alias = "" sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} > - def initialize(@snippet : SnippetSchema | Nil = nil) + def initialize(@snippet : Snippet | Nil = nil) snippet = @snippet - if (snippet = @snippet).is_a?(SnippetSchema) + if (snippet = @snippet).is_a?(Snippet) @template = %<# Welcome to the terminal-based snippet editor # This file uses TOML syntax and will be processed after the file is saved and closed # Fill in the below options and save+quit to continue @@ -51,7 +51,7 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} def read config = SniplineCli.config toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) - SnippetAttribute.new( + SnippetAttributeParser.new( name: toml["name"].as(String), real_command: toml["real_command"].as(String), documentation: toml["documentation"].as(String).rstrip, From f2da41e101e18eb25b65cfc82acbb680aba47288 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 4 Dec 2019 11:45:52 +0000 Subject: [PATCH 24/47] refactor some is_a if statements --- src/snipline_cli/models/snippet.cr | 2 +- src/snipline_cli/services/append_snippet_to_local_storage.cr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 4be50bf..5c44674 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -34,7 +34,7 @@ module SniplineCli::Models param_name = split_equals.shift unparsed_params = split_equals.join("=") if unparsed_params.is_a?(String) - options = unparsed_params.as(String).split(",").map(&.strip) + options = unparsed_params.split(",").map(&.strip) # todo if options.is_a?(Array(String)) options = options.as(Array(String)) diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr index f70f9a8..e87c583 100644 --- a/src/snipline_cli/services/append_snippet_to_local_storage.cr +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -6,7 +6,7 @@ module SniplineCli::Services def self.handle(snippet) snippets = LoadSnippets.run if snippet.is_a?(Snippet) - snippets << snippet.as(Snippet) + snippets << snippet end StoreSnippets.new.store(snippets.to_json) return From 454de7ce197a93602c2ed14427e185e2d009fbb7 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 4 Dec 2019 11:46:12 +0000 Subject: [PATCH 25/47] formatting --- spec/parsers/snippet_attribute_parser_spec.cr | 1 - src/snipline_cli/parsers/snippet_attribute_parser.cr | 1 - src/snipline_cli/parsers/snippet_data_parser.cr | 1 - src/snipline_cli/parsers/snippet_parser.cr | 1 - src/snipline_cli/services/append_snippet_to_local_storage.cr | 1 - src/snipline_cli/services/command_builder.cr | 1 - src/snipline_cli/services/edit_snippet.cr | 1 - src/snipline_cli/services/load_snippets.cr | 1 - src/snipline_cli/services/snipline_api.cr | 1 - src/snipline_cli/services/sync_snippet_to_snipline.cr | 1 - src/snipline_cli/services/temp_snippet_editor_file.cr | 1 - 11 files changed, 11 deletions(-) diff --git a/spec/parsers/snippet_attribute_parser_spec.cr b/spec/parsers/snippet_attribute_parser_spec.cr index 859ed79..df2fa69 100644 --- a/spec/parsers/snippet_attribute_parser_spec.cr +++ b/spec/parsers/snippet_attribute_parser_spec.cr @@ -18,4 +18,3 @@ describe SniplineCli::Parsers::SnippetAttributeParser do attributes.documentation.should eq nil end end - diff --git a/src/snipline_cli/parsers/snippet_attribute_parser.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr index 30f6d29..7e539f9 100644 --- a/src/snipline_cli/parsers/snippet_attribute_parser.cr +++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr @@ -40,4 +40,3 @@ module SniplineCli::Parsers end end end - diff --git a/src/snipline_cli/parsers/snippet_data_parser.cr b/src/snipline_cli/parsers/snippet_data_parser.cr index 4ee244e..ade32aa 100644 --- a/src/snipline_cli/parsers/snippet_data_parser.cr +++ b/src/snipline_cli/parsers/snippet_data_parser.cr @@ -31,4 +31,3 @@ module SniplineCli::Parsers end end end - diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr index 04340c3..0221b8b 100644 --- a/src/snipline_cli/parsers/snippet_parser.cr +++ b/src/snipline_cli/parsers/snippet_parser.cr @@ -71,4 +71,3 @@ module SniplineCli::Parsers end end end - diff --git a/src/snipline_cli/services/append_snippet_to_local_storage.cr b/src/snipline_cli/services/append_snippet_to_local_storage.cr index e87c583..dc79097 100644 --- a/src/snipline_cli/services/append_snippet_to_local_storage.cr +++ b/src/snipline_cli/services/append_snippet_to_local_storage.cr @@ -1,7 +1,6 @@ module SniplineCli::Services # For saving Snippets locally. class AppendSnippetToLocalStorage - # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) snippets = LoadSnippets.run diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index 5de31e7..fa171c2 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -14,7 +14,6 @@ module SniplineCli # end # ``` class CommandBuilder - def self.run(snippet : Snippet, input, output, user_input = [] of String) : String unless snippet.has_params return snippet.real_command || "" diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index 0f2dd7c..066c7b3 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -6,7 +6,6 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run # ``` class EditSnippet - def self.run(snippet : Snippet, input, output) config = SniplineCli.config log = SniplineCli.log diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index 6020a8e..91de8d7 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -6,7 +6,6 @@ module SniplineCli # snippets = SniplineCli::Services::LoadSnippets.run # ``` class LoadSnippets - def self.run : Array(Snippet) config = SniplineCli.config log = SniplineCli.log diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index 1edb627..e8045fe 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -5,7 +5,6 @@ include SniplineCli::Parsers module SniplineCli::Services # For talking to the Snipline API. class SniplineApi - # Fetches the user's Snippets. def fetch(&block) config = SniplineCli.config diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index 52b660b..d32c3f1 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -3,7 +3,6 @@ require "json" module SniplineCli::Services # For saving Snippets locally. class SyncSnippetToSnipline - # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) # snippet = Snippet.new(id: nil, type: "snippet", attributes: snippet_attributes) diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index 48b115c..122c979 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -3,7 +3,6 @@ require "toml" module SniplineCli::Services # For saving Snippets locally. class TempSnippetEditorFile - property snippet : Snippet | Nil property template = %<# Welcome to the terminal-based snippet editor From 9bd8c23405fc6c5cf03880af5632c7d185ca98d2 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 4 Dec 2019 12:26:08 +0000 Subject: [PATCH 26/47] refactor tests for new snippet parser/models --- spec/models/snippet_spec.cr | 49 +++++++++++----------- spec/parsers/snippet_parser_spec.cr | 34 +++++++++++++++ src/snipline_cli/models/snippet.cr | 2 +- src/snipline_cli/parsers/snippet_parser.cr | 4 -- 4 files changed, 60 insertions(+), 29 deletions(-) create mode 100644 spec/parsers/snippet_parser_spec.cr diff --git a/spec/models/snippet_spec.cr b/spec/models/snippet_spec.cr index 3039da1..5c00012 100644 --- a/spec/models/snippet_spec.cr +++ b/spec/models/snippet_spec.cr @@ -1,42 +1,44 @@ -require "file" +def set_attribute(attributes, attribute_name, default = nil) + (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default +end + +def create_test_snippet(attributes : NamedTuple | Nil = nil) + snippet = SniplineCli::Models::Snippet.new + snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32) + snippet.cloud_id = set_attribute(attributes, :cloud_id) + snippet.name = set_attribute(attributes, :name, "Git log pretty") + snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla") + snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool) + snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all") + snippet.tags = set_attribute(attributes, :tags, "git") + snippet.documentation = set_attribute(attributes, :documentation, "This is the docs") -def create_test_object(attributes : String | Nil) - attributes = attributes || %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) - SniplineCli::Models::Snippet.from_json(attributes) + snippet end describe SniplineCli::Models::Snippet do - it "correctly parses snippets from JSON" do - content = File.read(File.expand_path("./spec/fixtures/snippets.json")) - snippets = Array(SniplineCli::Models::Snippet).from_json(content) - snippets.size.should eq(2) - snippets.first.id.should eq("0f4846c0-3194-40bb-be77-8c4b136565f4") - end - it "parses with no parameters" do - snippet = create_test_object(nil) + snippet = create_test_snippet() snippet.snippet_alias.should eq("git.sla") snippet.name.should eq("Git log pretty") snippet.is_pinned.should eq(false) snippet.real_command.should eq("git log --oneline --decorate --graph --all") snippet.preview_command.should eq("git log --oneline --decorate --graph --all") - snippet.tags.should eq(["git"]) + snippet.tags.should eq("git") snippet.has_params.should eq(false) snippet.interactive_params.should eq([] of SniplineCli::Models::SnippetParam) snippet.uninteractive_params.should eq([] of SniplineCli::Models::SnippetPasswordParam) end - it "#value_for_attribute" do - snippet = create_test_object(nil) + snippet = create_test_snippet(nil) snippet.value_for_attribute("alias").should eq("git.sla") snippet.value_for_attribute("name").should eq("Git log pretty") snippet.value_for_attribute("tags").should eq("git") - # snippet.value_for_attribute("documentation").should eq("") + snippet.value_for_attribute("documentation").should eq("This is the docs") end - describe "#interactive_params" do it "should be able to parse a variable with a default value" do - snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test=default]} ","tags":[]}})) + snippet = create_test_snippet({name: "Test", real_command: "git log -S \#{[Test=default]}"}) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(1) snippet.interactive_params.first.name.should eq("Test") @@ -44,9 +46,8 @@ describe SniplineCli::Models::Snippet do snippet.interactive_params.first.full.should eq("Test=default") snippet.interactive_params.first.type.should eq("variable") end - it "should be able to parse a variable without a default value" do - snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test]} ","tags":[]}})) + snippet = create_test_snippet({name: "Search Git history", real_command: "git log -S \#{[Test]} "}) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(1) snippet.interactive_params.first.name.should eq("Test") @@ -56,7 +57,7 @@ describe SniplineCli::Models::Snippet do end it "should be able to parse multiple variables" do - snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S \#{[Test]} \#{[Example=test]} ","tags":[]}})) + snippet = create_test_snippet({name: "Test", real_command: "git log -S \#{[Test]} \#{[Example=test]} "}) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(2) snippet.interactive_params.first.name.should eq("Test") @@ -70,7 +71,7 @@ describe SniplineCli::Models::Snippet do end it "should be able to parse multiple choice variables" do - snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"git log -S #select{[Test=option 1, option 2]} ","tags":[]}})) + snippet = create_test_snippet({name: "Search Git history", real_command: "git log -S #select{[Test=option 1, option 2]} "}) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(1) snippet.interactive_params.first.name.should eq("Test") @@ -81,10 +82,10 @@ describe SniplineCli::Models::Snippet do end it "should be able to parse password variables" do - snippet = create_test_object(%({"id":"0b36b3a1-f10f-42f9-857e-0caeb23b36c3","type":"snippets","attributes":{"alias":"git.s","is-pinned":false,"name":"Search Git history","real-command":"magento user:create #password{[Name,8]} #password{[Default]}","tags":[]}})) + snippet = create_test_snippet({name: "Search Git history", real_command: "magento user:create #password{[Name,8]} #password{[Default]}"}) snippet.has_params.should eq(true) snippet.interactive_params.size.should eq(0) snippet.preview_command.should eq("magento user:create ") end - end + end end diff --git a/spec/parsers/snippet_parser_spec.cr b/spec/parsers/snippet_parser_spec.cr new file mode 100644 index 0000000..fc669fc --- /dev/null +++ b/spec/parsers/snippet_parser_spec.cr @@ -0,0 +1,34 @@ +require "file" + +def create_test_object(attributes : String | Nil) + attributes = attributes || %({"id":"0f4846c0-3194-40bb-be77-8c4b136565f4","type":"snippets","attributes":{"alias":"git.sla","is-pinned":false,"name":"Git log pretty","real-command":"git log --oneline --decorate --graph --all","tags":["git"]}}) + SniplineCli::Parsers::SnippetParser.from_json(attributes) +end + +describe SniplineCli::Parsers::SnippetParser do + it "correctly parses snippets from JSON" do + content = File.read(File.expand_path("./spec/fixtures/snippets.json")) + snippets = Array(SniplineCli::Parsers::SnippetParser).from_json(content) + snippets.size.should eq(2) + snippets.first.id.should eq("0f4846c0-3194-40bb-be77-8c4b136565f4") + end + + it "parses with no parameters" do + snippet = create_test_object(nil) + snippet.snippet_alias.should eq("git.sla") + snippet.name.should eq("Git log pretty") + snippet.is_pinned.should eq(false) + snippet.real_command.should eq("git log --oneline --decorate --graph --all") + snippet.tags.should eq(["git"]) + end + + it "#value_for_attribute" do + snippet = create_test_object(nil) + snippet.value_for_attribute("alias").should eq("git.sla") + snippet.value_for_attribute("name").should eq("Git log pretty") + snippet.value_for_attribute("tags").should eq("git") + # snippet.value_for_attribute("documentation").should eq("") + end + +end + diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 5c44674..4cb08a5 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -112,7 +112,7 @@ module SniplineCli::Models name || "" when "tags" if !tags.nil? - tags.as(Array(String)).join(",") || "" + tags else "" end diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr index 0221b8b..e71e623 100644 --- a/src/snipline_cli/parsers/snippet_parser.cr +++ b/src/snipline_cli/parsers/snippet_parser.cr @@ -47,10 +47,6 @@ module SniplineCli::Parsers attributes.updated_at end - def has_params - interactive_params.size > 0 || uninteractive_params.size > 0 - end - def value_for_attribute(attribute : String) case attribute when "alias" From 4c90fa4188a7b88f618d77b5ea582276a89b235b Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 6 Dec 2019 10:42:04 +0000 Subject: [PATCH 27/47] refactor searching --- src/snipline_cli/services/search_snippets.cr | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index dd8e1c5..8a254ef 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -16,17 +16,27 @@ module SniplineCli::Services unless search_term.empty? lowered_search_term = search_term.downcase results = results.select do |i| - if !i.tags.nil? - i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || i.tags.as(String).split(",").includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) - else - i.name.as(String).downcase.includes?(lowered_search_term) || i.real_command.as(String).downcase.includes?(lowered_search_term) || (i.snippet_alias.is_a?(String) ? i.snippet_alias.as(String).downcase.includes?(lowered_search_term) : false) - end + snippet_has_search_term(i, lowered_search_term) end end sort_results(results) end + def snippet_has_search_term(i, lowered_search_term) + if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term) + true + elsif i.name.as(String).downcase.includes?(lowered_search_term) + true + elsif i.real_command.as(String).downcase.includes?(lowered_search_term) + true + elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term) + true + else + false + end + end + def sort_results(snippets) snippets.sort { |snippet_a, snippet_b| if snippet_a.is_pinned && snippet_b.is_pinned From b75278476f8b83b60df69993b09704d1cd532509 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 9 Dec 2019 14:34:51 +0000 Subject: [PATCH 28/47] Fuzzy matching --- shard.lock | 16 ++++++++++------ shard.yml | 2 ++ src/snipline_cli/commands/search.cr | 11 ++++++----- src/snipline_cli/services/search_snippets.cr | 11 ++++++----- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/shard.lock b/shard.lock index b9630d6..bc51b1a 100644 --- a/shard.lock +++ b/shard.lock @@ -10,7 +10,7 @@ shards: crecto: github: Crecto/crecto - version: 0.11.1 + version: 0.11.2 crest: github: mamantoha/crest @@ -20,19 +20,23 @@ shards: github: crystal-lang/crystal-db version: 0.7.0 + fuzzy_match: + github: acoustep/fuzzy_match.cr + commit: 24513474ea58e2ce97a2d34e8668947da8863965 + http-client-digest_auth: github: mamantoha/http-client-digest_auth version: 0.2.0 - micrate: - github: juanedi/micrate - version: 0.4.1 - ncurses: github: JohnDowson/ncurses commit: d0e46f673b6a443255269ce610d598a0fdc7d159 + sqlite3: + github: crystal-lang/crystal-sqlite3 + version: 0.14.0 + toml: github: crystal-community/toml.cr - commit: 5935d7f5afeed8ba126418a9f85691b4067db85c + commit: d02de85eed68a70dc97ab6d6e52831a4d0e890fe diff --git a/shard.yml b/shard.yml index 713dc20..9cc06d1 100644 --- a/shard.yml +++ b/shard.yml @@ -27,6 +27,8 @@ dependencies: github: Crecto/crecto sqlite3: github: crystal-lang/crystal-sqlite3 + fuzzy_match: + github: acoustep/fuzzy_match.cr development_dependencies: diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 6e11294..9b91a76 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -45,13 +45,14 @@ module SniplineCli return end query = Crecto::Repo::Query.new - if flags.field - query = query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + query = if flags.field + # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + query else - query = query.where("snippets.name LIKE '%?%'", lowered_search_term).or_where("snippets.real_command LIKE '%?%'", lowered_search_term).or_where("snippets.snippet_alias LIKE '%?%'", lowered_search_term).or_where("snippets.tags LIKE '%?%'", lowered_search_term) + wildcard_query = "%#{lowered_search_term}%" + query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query) end - query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(Snippet, query) + Repo.all(Snippet, query) # snippets.select! { |i| # if field = flags.field # i.value_for_attribute(field).downcase.includes?(lowered_search_term) diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 8a254ef..d7eced5 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -1,4 +1,5 @@ require "json" +require "fuzzy_match" module SniplineCli::Services # For saving Snippets locally. @@ -20,13 +21,13 @@ module SniplineCli::Services end end - sort_results(results) + sort_results(results, search_term) end def snippet_has_search_term(i, lowered_search_term) if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term) true - elsif i.name.as(String).downcase.includes?(lowered_search_term) + elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches? true elsif i.real_command.as(String).downcase.includes?(lowered_search_term) true @@ -37,16 +38,16 @@ module SniplineCli::Services end end - def sort_results(snippets) + def sort_results(snippets, search_term) snippets.sort { |snippet_a, snippet_b| if snippet_a.is_pinned && snippet_b.is_pinned - snippet_a.name.as(String) <=> snippet_b.name.as(String) + FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score elsif snippet_a.is_pinned -1 elsif snippet_b.is_pinned 1 else - snippet_a.name.as(String) <=> snippet_b.name.as(String) + FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score end } end From 4091e0df2545126b07207e3a1228f88460ffee3b Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 11 Dec 2019 14:18:50 +0000 Subject: [PATCH 29/47] Add dry run and verbose flags for syncing --- src/snipline_cli/commands/sync.cr | 38 +++++---- src/snipline_cli/services/display_results.cr | 89 ++++++++++++-------- 2 files changed, 77 insertions(+), 50 deletions(-) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index e10bcad..635eeed 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -12,14 +12,16 @@ module SniplineCli # ``` class Sync < Admiral::Command define_help description: "For syncing snippets from Snipline" + define_flag verbose : Bool, default: false, long: verbose + define_flag dry_run : Bool, default: false, description: "Output the changes that would be made if the command was run without --dry-run" property snipline_api : (SniplineApi | SniplineApiTest) = SniplineApi.new property file : (StoreSnippets) = StoreSnippets.new def run - puts "Migrating Database..." + puts "Migrating Database..." if flags.verbose Migrator.run - puts "Syncing snippets..." + puts "Syncing snippets..." if flags.verbose config = SniplineCli.config if config.get("api.token") == "" abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") @@ -35,7 +37,6 @@ module SniplineCli end def update_locally_out_of_date_snippets(cloud_snippets) - # TODO: this method is for local snippets whose updated_at is behind the cloud synced_to_local_count = 0 synced_to_cloud_count = 0 cloud_snippets.each { |cs| @@ -49,22 +50,22 @@ module SniplineCli local_snippet.snippet_alias = cs.not_nil!.snippet_alias local_snippet.is_synced = true local_snippet.is_pinned = cs.not_nil!.is_pinned - Repo.update(local_snippet) + Repo.update(local_snippet) unless flags.dry_run synced_to_local_count = synced_to_local_count + 1 else # local has updated without sending to snipline cloud - time to update the cloud version - @snipline_api.update(local_snippet) + @snipline_api.update(local_snippet) unless flags.dry_run synced_to_cloud_count = synced_to_cloud_count + 1 end end } - puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) + puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green) end def delete_orphan_snippets(cloud_snippets) # if snippet cloud_id exists locally but not in cloud - puts "Cleaning up snippets that are no longer in Snipline Cloud..." + puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run) local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } orphans = [] of Snippet cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } @@ -73,8 +74,8 @@ module SniplineCli end orphans.each do |ls| # delete snippets - puts "Deleting #{ls.name}".colorize(:green) - Repo.delete(ls) + puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run) + Repo.delete(ls) unless flags.dry_run end end @@ -93,7 +94,7 @@ module SniplineCli difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) end difference.each do |s| - puts "Storing #{s.attributes.name} from Snipline".colorize(:green) + puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run) snippet = Snippet.new snippet.name = s.name snippet.cloud_id = s.id @@ -104,7 +105,7 @@ module SniplineCli snippet.is_pinned = s.is_pinned snippet.is_synced = true changeset = Snippet.changeset(snippet) - Repo.insert(changeset) + Repo.insert(changeset) unless flags.dry_run # local_snippets << s end # @file.store(local_snippets.to_json) unless difference.size == 0 @@ -124,11 +125,11 @@ module SniplineCli def sync_unsynced_snippets local_snippets = LoadSnippets.run local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| - puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." + puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run) begin - cloud_snippet = SyncSnippetToSnipline.handle(snippet) + cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run update_local_snippet_id(cloud_snippet, snippet) - puts "Success!".colorize(:green) + puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run) rescue ex : Crest::UnprocessableEntity resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body) puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) @@ -139,9 +140,12 @@ module SniplineCli end def update_local_snippet_id(cloud_snippet, local_snippet) - local_snippet.cloud_id = cloud_snippet.id - local_snippet.is_synced = true - Repo.update(local_snippet) + if cloud_snippet + local_snippet.cloud_id = cloud_snippet.id + local_snippet.is_synced = true + Repo.update(local_snippet) unless flags.dry_run + puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run) + end end end diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index 936836e..a4088b9 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -24,44 +24,67 @@ module SniplineCli::Services @search.window.refresh @search.window.get_char do |ch| - break unless ch.is_a?(Char) # @search.write(ch.ord.to_s) - codepoint = ch.ord - break if codepoint == 17 # C+q - quit - - if codepoint == 127 - @search.delete - @left_pane.filter(@search.search_text) - refresh_right_pane - elsif codepoint == 75 # S+k - up - @left_pane.select_higher - refresh_right_pane - elsif codepoint == 74 # C+j / S+j - down - @left_pane.select_lower - refresh_right_pane - elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy - output = build_snippet - copy_snippet(output) - break - elsif codepoint == 69 # Shift+r - run - edit_snippet - break - elsif codepoint == 82 # Shift+r - run - output = build_snippet - run_snippet(output) - break - else - @search.write(ch) - @left_pane.filter(@search.search_text) - refresh_right_pane - end - @left_pane.filter(@search.search_text) - @search.window.refresh - end + # @search.write(ch.inspect) + # break unless ch.is_a?(Char) || ch == NCurses::Key::Up || ch == NCurses::Key::Down + case ch + when LibNCurses::Key + run_command_key(ch) + when Char + codepoint = ch.ord + break if codepoint == 17 # C+q - quit + break if run_character_key(ch, codepoint) == false + @left_pane.filter(@search.search_text) + end + @search.window.refresh + end NCurses.clear NCurses.end end + def run_character_key(ch, codepoint) + if codepoint == 127 + @search.delete + @left_pane.filter(@search.search_text) + refresh_right_pane + elsif codepoint == 75 # S+k - up + @left_pane.select_higher + refresh_right_pane + elsif codepoint == 74 # C+j / S+j - down + @left_pane.select_lower + refresh_right_pane + elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy + output = build_snippet + copy_snippet(output) + return false + elsif codepoint == 69 # Shift+r - run + edit_snippet + return false + elsif codepoint == 82 # Shift+r - run + output = build_snippet + run_snippet(output) + return false + else + @search.write(ch) + @left_pane.filter(@search.search_text) + refresh_right_pane + end + return true + end + + def run_command_key(ch) + case ch.value + when 27 + # @search.write("d") + @left_pane.select_lower + refresh_right_pane + when 28 + @search.write("u") + else + @search.write("unknown #{ch}") + end + end + def refresh_right_pane if @left_pane.selected_index < @left_pane.results.size @right_pane.display(@left_pane.results[@left_pane.selected_index]) From a4396df392ae349bb9e7b05594257071acd91dfd Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 11 Dec 2019 14:49:15 +0000 Subject: [PATCH 30/47] Add deleting functionality --- src/snipline_cli/ncurses_windows/footer.cr | 2 +- src/snipline_cli/services/delete_snippet.cr | 28 ++++++++++++++++++++ src/snipline_cli/services/display_results.cr | 10 ++++++- src/snipline_cli/services/snipline_api.cr | 20 ++++++++++++++ 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/snipline_cli/services/delete_snippet.cr diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr index 86ecbcf..3808e7d 100644 --- a/src/snipline_cli/ncurses_windows/footer.cr +++ b/src/snipline_cli/ncurses_windows/footer.cr @@ -10,7 +10,7 @@ module SniplineCli::NCursesWindows 0 ) @window.set_color 1 - LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit\n") + LibNCurses.wprintw(@window, "%s", " Quit | Down | Up | - Copy | Run | Edit | Delete\n") LibNCurses.mvwchgat(@window, 0, 0, -1, NCurses::Attribute::Reverse, 2, nil) @window.refresh end diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr new file mode 100644 index 0000000..d391e5e --- /dev/null +++ b/src/snipline_cli/services/delete_snippet.cr @@ -0,0 +1,28 @@ +module SniplineCli + module Services + # LoadSnippets fetches all the snippets from the `snippet.json` file and parses them. + # + # ```crystal + # snippets = SniplineCli::Services::LoadSnippets.run + # ``` + class DeleteSnippet + def self.run(snippet : Snippet, input, output) + config = SniplineCli.config + log = SniplineCli.log + puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}" + answer = gets + if ["Y", "y", "yes"].includes?(answer) + delete_snippet(snippet) + end + end + + def self.delete_snippet(snippet) + if snippet.cloud_id + SniplineApi.new.delete(snippet) + end + Repo.delete(snippet) + puts "Deleted #{snippet.name}".colorize(:green) + end + end + end +end diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index a4088b9..a57f250 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -57,7 +57,10 @@ module SniplineCli::Services output = build_snippet copy_snippet(output) return false - elsif codepoint == 69 # Shift+r - run + elsif codepoint == 68 # Shift+d - delete + delete_snippet + return false + elsif codepoint == 69 # Shift+e - edit edit_snippet return false elsif codepoint == 82 # Shift+r - run @@ -132,5 +135,10 @@ module SniplineCli::Services NCurses.end EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end + def delete_snippet + NCurses.clear + NCurses.end + DeleteSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) + end end end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index e8045fe..afdcdc1 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -85,6 +85,23 @@ module SniplineCli::Services q = Repo.raw_exec("UPDATE snippets SET updated_at=? WHERE cloud_id=?", cloud_updated_at, response.id) puts q.inspect end + + def delete(snippet) + config = SniplineCli.config + begin + response = Crest.delete( + "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", + headers: { + # "Accept" => "application/vnd.api+json", + "Authorization" => "Bearer #{config.get("api.token")}", + }, + logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false + ) + true + rescue ex + false + end + end end class SniplineApiTest @@ -97,5 +114,8 @@ module SniplineCli::Services def update(snippet : Snippet) end + + def delete(snippet : Snippet) + end end end From 0442fc0fadf9bb354e6cc8f8e646f3bd4dd150c8 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 11 Dec 2019 14:54:35 +0000 Subject: [PATCH 31/47] Add check for api token before deleting from server --- src/snipline_cli/services/delete_snippet.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr index d391e5e..9095fa5 100644 --- a/src/snipline_cli/services/delete_snippet.cr +++ b/src/snipline_cli/services/delete_snippet.cr @@ -7,7 +7,6 @@ module SniplineCli # ``` class DeleteSnippet def self.run(snippet : Snippet, input, output) - config = SniplineCli.config log = SniplineCli.log puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}" answer = gets @@ -17,7 +16,8 @@ module SniplineCli end def self.delete_snippet(snippet) - if snippet.cloud_id + config = SniplineCli.config + if snippet.cloud_id && config.get("api.token") != "" SniplineApi.new.delete(snippet) end Repo.delete(snippet) From cf4b3ebddcf705924ba1f93c5b5fd5437629ac65 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 12 Dec 2019 11:17:37 +0000 Subject: [PATCH 32/47] formatting --- .tool-versions | 2 +- shard.yml | 3 +- spec/models/snippet_spec.cr | 24 ++-- spec/parsers/snippet_parser_spec.cr | 2 - src/snipline_cli/commands/init.cr | 10 +- src/snipline_cli/commands/login.cr | 4 +- src/snipline_cli/commands/new.cr | 4 +- src/snipline_cli/commands/search.cr | 14 +-- src/snipline_cli/commands/sync.cr | 38 +++--- src/snipline_cli/config.cr | 4 +- src/snipline_cli/models/snippet.cr | 2 +- .../services/create_config_directory.cr | 2 +- src/snipline_cli/services/delete_snippet.cr | 25 ++-- src/snipline_cli/services/display_results.cr | 113 +++++++++--------- src/snipline_cli/services/edit_snippet.cr | 2 +- src/snipline_cli/services/load_snippets.cr | 4 +- src/snipline_cli/services/migrator.cr | 4 +- src/snipline_cli/services/search_snippets.cr | 32 ++--- src/snipline_cli/services/snipline_api.cr | 32 ++--- src/snipline_cli/services/store_snippets.cr | 8 +- .../services/temp_snippet_editor_file.cr | 12 +- 21 files changed, 170 insertions(+), 171 deletions(-) diff --git a/.tool-versions b/.tool-versions index 9668dfd..a2c7d83 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -crystal 0.30.1 +crystal 0.32.0 diff --git a/shard.yml b/shard.yml index 9cc06d1..34e0812 100644 --- a/shard.yml +++ b/shard.yml @@ -29,9 +29,10 @@ dependencies: github: crystal-lang/crystal-sqlite3 fuzzy_match: github: acoustep/fuzzy_match.cr + version: ~> 0.2.0 development_dependencies: ameba: github: veelenga/ameba - version: ~> 0.10.0 + version: ~> 0.11.0 diff --git a/spec/models/snippet_spec.cr b/spec/models/snippet_spec.cr index 5c00012..9a4f02b 100644 --- a/spec/models/snippet_spec.cr +++ b/spec/models/snippet_spec.cr @@ -1,24 +1,24 @@ def set_attribute(attributes, attribute_name, default = nil) - (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default + (!attributes.nil? && attributes.has_key?(attribute_name)) ? attributes[attribute_name] : default end def create_test_snippet(attributes : NamedTuple | Nil = nil) snippet = SniplineCli::Models::Snippet.new - snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32) - snippet.cloud_id = set_attribute(attributes, :cloud_id) - snippet.name = set_attribute(attributes, :name, "Git log pretty") - snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla") - snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool) - snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all") - snippet.tags = set_attribute(attributes, :tags, "git") - snippet.documentation = set_attribute(attributes, :documentation, "This is the docs") + snippet.local_id = set_attribute(attributes, :local_id, 123).as(Int32) + snippet.cloud_id = set_attribute(attributes, :cloud_id) + snippet.name = set_attribute(attributes, :name, "Git log pretty") + snippet.snippet_alias = set_attribute(attributes, :snippet_alias, "git.sla") + snippet.is_pinned = set_attribute(attributes, :is_pinned, false).as(Bool) + snippet.real_command = set_attribute(attributes, :real_command, "git log --oneline --decorate --graph --all") + snippet.tags = set_attribute(attributes, :tags, "git") + snippet.documentation = set_attribute(attributes, :documentation, "This is the docs") - snippet + snippet end describe SniplineCli::Models::Snippet do it "parses with no parameters" do - snippet = create_test_snippet() + snippet = create_test_snippet() snippet.snippet_alias.should eq("git.sla") snippet.name.should eq("Git log pretty") snippet.is_pinned.should eq(false) @@ -87,5 +87,5 @@ describe SniplineCli::Models::Snippet do snippet.interactive_params.size.should eq(0) snippet.preview_command.should eq("magento user:create ") end - end + end end diff --git a/spec/parsers/snippet_parser_spec.cr b/spec/parsers/snippet_parser_spec.cr index fc669fc..4a25e8a 100644 --- a/spec/parsers/snippet_parser_spec.cr +++ b/spec/parsers/snippet_parser_spec.cr @@ -29,6 +29,4 @@ describe SniplineCli::Parsers::SnippetParser do snippet.value_for_attribute("tags").should eq("git") # snippet.value_for_attribute("documentation").should eq("") end - end - diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 922e2b8..e3c5246 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -24,11 +24,11 @@ module SniplineCli TOML CreateConfigDirectory.run(SniplineCli.config_file) - File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") - puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" - unless File.exists?(File.expand_path(config.get("general.db"))) - File.write(File.expand_path(config.get("general.db")), "", mode: "w") - puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}" + File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w") + puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}" + unless File.exists?(File.expand_path(config.get("general.db"), home: true)) + File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") + puts "Created SQLite file in #{File.expand_path(config.get("general.db"), home: true).colorize.mode(:bold)}" end puts "" puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr index 5bdd5d7..04938a1 100644 --- a/src/snipline_cli/commands/login.cr +++ b/src/snipline_cli/commands/login.cr @@ -60,8 +60,8 @@ module SniplineCli TOML CreateConfigDirectory.run(SniplineCli.config_file) - File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") - puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" + File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w") + puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}" puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}" end rescue ex : Crest::NotFound diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 91793e3..0ae04e7 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -11,7 +11,7 @@ module SniplineCli def run config = SniplineCli.config - unless File.exists?(File.expand_path("#{config.get("general.db")}")) + unless File.exists?(File.expand_path("#{config.get("general.db")}", home: true)) abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end Migrator.run @@ -21,7 +21,7 @@ module SniplineCli temp_file = TempSnippetEditorFile.new temp_file.create loop do - system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}", home :true) snippet_attributes = temp_file.read snippet = Snippet.new diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 9b91a76..fa21339 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -46,13 +46,13 @@ module SniplineCli end query = Crecto::Repo::Query.new query = if flags.field - # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) - query - else - wildcard_query = "%#{lowered_search_term}%" - query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query) - end - Repo.all(Snippet, query) + # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + query + else + wildcard_query = "%#{lowered_search_term}%" + query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query) + end + Repo.all(Snippet, query) # snippets.select! { |i| # if field = flags.field # i.value_for_attribute(field).downcase.includes?(lowered_search_term) diff --git a/src/snipline_cli/commands/sync.cr b/src/snipline_cli/commands/sync.cr index 635eeed..7729479 100644 --- a/src/snipline_cli/commands/sync.cr +++ b/src/snipline_cli/commands/sync.cr @@ -19,9 +19,9 @@ module SniplineCli property file : (StoreSnippets) = StoreSnippets.new def run - puts "Migrating Database..." if flags.verbose + puts "Migrating Database..." if flags.verbose Migrator.run - puts "Syncing snippets..." if flags.verbose + puts "Syncing snippets..." if flags.verbose config = SniplineCli.config if config.get("api.token") == "" abort("#{"No API token. Run".colorize(:red)} #{"snipcli login".colorize(:red).mode(:bold)} #{"to login".colorize(:red)}") @@ -50,22 +50,22 @@ module SniplineCli local_snippet.snippet_alias = cs.not_nil!.snippet_alias local_snippet.is_synced = true local_snippet.is_pinned = cs.not_nil!.is_pinned - Repo.update(local_snippet) unless flags.dry_run + Repo.update(local_snippet) unless flags.dry_run synced_to_local_count = synced_to_local_count + 1 else # local has updated without sending to snipline cloud - time to update the cloud version - @snipline_api.update(local_snippet) unless flags.dry_run + @snipline_api.update(local_snippet) unless flags.dry_run synced_to_cloud_count = synced_to_cloud_count + 1 end end } - puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) + puts "Synced #{synced_to_local_count} from Snipline Cloud to local database".colorize(:green) puts "Synced #{synced_to_cloud_count} from local database to Snipline Cloud".colorize(:green) end def delete_orphan_snippets(cloud_snippets) # if snippet cloud_id exists locally but not in cloud - puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run) + puts "Cleaning up snippets that are no longer in Snipline Cloud..." if (flags.verbose || flags.dry_run) local_snippets = LoadSnippets.run.select { |ls| !ls.cloud_id.nil? } orphans = [] of Snippet cloud_snippet_ids = cloud_snippets.map { |s| s.not_nil!.id } @@ -74,8 +74,8 @@ module SniplineCli end orphans.each do |ls| # delete snippets - puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run) - Repo.delete(ls) unless flags.dry_run + puts "Deleting #{ls.name}".colorize(:green) if (flags.verbose || flags.dry_run) + Repo.delete(ls) unless flags.dry_run end end @@ -94,7 +94,7 @@ module SniplineCli difference << cs unless local_snippet_exists?(cs, local_snippet_cloud_ids) end difference.each do |s| - puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run) + puts "Storing #{s.attributes.name} from Snipline Cloud".colorize(:green) if (flags.verbose || flags.dry_run) snippet = Snippet.new snippet.name = s.name snippet.cloud_id = s.id @@ -105,7 +105,7 @@ module SniplineCli snippet.is_pinned = s.is_pinned snippet.is_synced = true changeset = Snippet.changeset(snippet) - Repo.insert(changeset) unless flags.dry_run + Repo.insert(changeset) unless flags.dry_run # local_snippets << s end # @file.store(local_snippets.to_json) unless difference.size == 0 @@ -125,11 +125,11 @@ module SniplineCli def sync_unsynced_snippets local_snippets = LoadSnippets.run local_snippets.select { |s| s.cloud_id.nil? }.each do |snippet| - puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run) + puts "Attempting to store #{snippet.name.colorize.mode(:bold)} in Snipline..." if (flags.verbose || flags.dry_run) begin - cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run + cloud_snippet = SyncSnippetToSnipline.handle(snippet) unless flags.dry_run update_local_snippet_id(cloud_snippet, snippet) - puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run) + puts "#{snippet.name.colorize(:green).mode(:bold)} #{"saved successfully!".colorize(:green)}" if (flags.verbose || flags.dry_run) rescue ex : Crest::UnprocessableEntity resp = SnippetErrorResponse.from_json(ex.response.not_nil!.body) puts "Failed: #{resp.errors.first.source["pointer"].gsub("/data/attributes/", "")} #{resp.errors.first.detail}".colorize(:red) @@ -140,12 +140,12 @@ module SniplineCli end def update_local_snippet_id(cloud_snippet, local_snippet) - if cloud_snippet - local_snippet.cloud_id = cloud_snippet.id - local_snippet.is_synced = true - Repo.update(local_snippet) unless flags.dry_run - puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run) - end + if cloud_snippet + local_snippet.cloud_id = cloud_snippet.id + local_snippet.is_synced = true + Repo.update(local_snippet) unless flags.dry_run + puts "Updated cloud_id of #{local_snippet.name.as(String)} to #{cloud_snippet.id}" if (flags.verbose || flags.dry_run) + end end end diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index 44d4e54..530ad25 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -16,8 +16,8 @@ module SniplineCli # When a new instance is created the config file is read and parsed. def initialize - if File.exists?(File.expand_path(SniplineCli.config_file)) - config_file = File.read(File.expand_path(SniplineCli.config_file)) + if File.exists?(File.expand_path(SniplineCli.config_file, home: true)) + config_file = File.read(File.expand_path(SniplineCli.config_file, home: true)) toml = TOML.parse(config_file) @api = toml["api"].as(Hash(String, TOML::Type)) @general = toml["general"].as(Hash(String, TOML::Type)) diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 4cb08a5..7f2d2aa 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -112,7 +112,7 @@ module SniplineCli::Models name || "" when "tags" if !tags.nil? - tags + tags else "" end diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr index 468339b..10ce3fa 100644 --- a/src/snipline_cli/services/create_config_directory.cr +++ b/src/snipline_cli/services/create_config_directory.cr @@ -2,7 +2,7 @@ module SniplineCli module Services class CreateConfigDirectory def self.run(file) - directory_name = File.expand_path(File.dirname(file)) + directory_name = File.expand_path(File.dirname(file), home: true) unless File.directory?(directory_name) SniplineCli.log.debug("Making config directory #{directory_name}") Dir.mkdir(directory_name) diff --git a/src/snipline_cli/services/delete_snippet.cr b/src/snipline_cli/services/delete_snippet.cr index 9095fa5..ead32f3 100644 --- a/src/snipline_cli/services/delete_snippet.cr +++ b/src/snipline_cli/services/delete_snippet.cr @@ -7,22 +7,21 @@ module SniplineCli # ``` class DeleteSnippet def self.run(snippet : Snippet, input, output) - log = SniplineCli.log - puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}" - answer = gets - if ["Y", "y", "yes"].includes?(answer) - delete_snippet(snippet) - end + puts "#{"Are you sure you want to permanently delete".colorize(:red)} #{snippet.name.colorize(:red).mode(:bold)}#{"? (y/N)".colorize(:red)}" + answer = gets + if ["Y", "y", "yes"].includes?(answer) + delete_snippet(snippet) + end end - def self.delete_snippet(snippet) + def self.delete_snippet(snippet) config = SniplineCli.config - if snippet.cloud_id && config.get("api.token") != "" - SniplineApi.new.delete(snippet) - end - Repo.delete(snippet) - puts "Deleted #{snippet.name}".colorize(:green) - end + if snippet.cloud_id && config.get("api.token") != "" + SniplineApi.new.delete(snippet) + end + Repo.delete(snippet) + puts "Deleted #{snippet.name}".colorize(:green) + end end end end diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index a57f250..2290fb9 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -25,68 +25,68 @@ module SniplineCli::Services @search.window.get_char do |ch| # @search.write(ch.ord.to_s) - # @search.write(ch.inspect) + # @search.write(ch.inspect) # break unless ch.is_a?(Char) || ch == NCurses::Key::Up || ch == NCurses::Key::Down - case ch - when LibNCurses::Key - run_command_key(ch) - when Char - codepoint = ch.ord - break if codepoint == 17 # C+q - quit - break if run_character_key(ch, codepoint) == false - @left_pane.filter(@search.search_text) - end - @search.window.refresh - end + case ch + when LibNCurses::Key + run_command_key(ch) + when Char + codepoint = ch.ord + break if codepoint == 17 # C+q - quit + break if run_character_key(ch, codepoint) == false + @left_pane.filter(@search.search_text) + end + @search.window.refresh + end NCurses.clear NCurses.end end - def run_character_key(ch, codepoint) - if codepoint == 127 - @search.delete - @left_pane.filter(@search.search_text) - refresh_right_pane - elsif codepoint == 75 # S+k - up - @left_pane.select_higher - refresh_right_pane - elsif codepoint == 74 # C+j / S+j - down - @left_pane.select_lower - refresh_right_pane - elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy - output = build_snippet - copy_snippet(output) - return false - elsif codepoint == 68 # Shift+d - delete - delete_snippet - return false - elsif codepoint == 69 # Shift+e - edit - edit_snippet - return false - elsif codepoint == 82 # Shift+r - run - output = build_snippet - run_snippet(output) - return false - else - @search.write(ch) - @left_pane.filter(@search.search_text) - refresh_right_pane - end - return true - end + def run_character_key(ch, codepoint) + if codepoint == 127 + @search.delete + @left_pane.filter(@search.search_text) + refresh_right_pane + elsif codepoint == 75 # S+k - up + @left_pane.select_higher + refresh_right_pane + elsif codepoint == 74 # C+j / S+j - down + @left_pane.select_lower + refresh_right_pane + elsif codepoint == 67 || codepoint == 10 # Shift+c / Enter - copy + output = build_snippet + copy_snippet(output) + return false + elsif codepoint == 68 # Shift+d - delete + delete_snippet + return false + elsif codepoint == 69 # Shift+e - edit + edit_snippet + return false + elsif codepoint == 82 # Shift+r - run + output = build_snippet + run_snippet(output) + return false + else + @search.write(ch) + @left_pane.filter(@search.search_text) + refresh_right_pane + end + true + end - def run_command_key(ch) - case ch.value - when 27 - # @search.write("d") - @left_pane.select_lower - refresh_right_pane - when 28 - @search.write("u") - else - @search.write("unknown #{ch}") - end - end + def run_command_key(ch) + case ch.value + when 27 + # @search.write("d") + @left_pane.select_lower + refresh_right_pane + when 28 + @search.write("u") + else + @search.write("unknown #{ch}") + end + end def refresh_right_pane if @left_pane.selected_index < @left_pane.results.size @@ -135,6 +135,7 @@ module SniplineCli::Services NCurses.end EditSnippet.run(@left_pane.results[@left_pane.selected_index], STDIN, STDOUT) end + def delete_snippet NCurses.clear NCurses.end diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index 066c7b3..0257193 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -13,7 +13,7 @@ module SniplineCli temp_file = TempSnippetEditorFile.new(snippet) temp_file.create loop do - system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}") snippet_attributes = temp_file.read snippet.name = snippet_attributes.name snippet.real_command = snippet_attributes.real_command diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index 91de8d7..b478ba5 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -10,11 +10,11 @@ module SniplineCli config = SniplineCli.config log = SniplineCli.log log.info("Looking through file #{config.get("general.db")}") - unless File.readable?(File.expand_path(config.get("general.db"))) + unless File.readable?(File.expand_path(config.get("general.db"), home: true)) log.warn("Could not read #{config.get("general.db")}") abort("Run #{"snipline-cli sync".colorize(:green)} first") end - # File.open(File.expand_path(config.get("general.db"))) do |file| + # File.open(File.expand_path(config.get("general.db"), home: true)) do |file| # snippets = Array(Snippet).from_json(file) # end Repo.all(Snippet) diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index 312990c..5f3ee52 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -4,8 +4,8 @@ require "sqlite3" module SniplineCli::Services class Migrator def self.run - File.write(File.expand_path("~/.config/snipline/snipline.db"), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db")) - DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db")}" do |db| + File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true)) + DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db", home: true)}" do |db| db.exec "create table if not exists snippets ( local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cloud_id TEXT NULL, diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index d7eced5..2795735 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -17,37 +17,37 @@ module SniplineCli::Services unless search_term.empty? lowered_search_term = search_term.downcase results = results.select do |i| - snippet_has_search_term(i, lowered_search_term) + snippet_has_search_term(i, lowered_search_term) end end sort_results(results, search_term) end - def snippet_has_search_term(i, lowered_search_term) - if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term) - true - elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches? - true - elsif i.real_command.as(String).downcase.includes?(lowered_search_term) - true - elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term) - true - else - false - end - end + def snippet_has_search_term(i, lowered_search_term) + if i.tags.is_a?(String) && i.tags.as(String).split(",").includes?(lowered_search_term) + true + elsif FuzzyMatch::Simple.new(lowered_search_term, i.name.as(String).downcase).matches? + true + elsif i.real_command.as(String).downcase.includes?(lowered_search_term) + true + elsif i.snippet_alias.is_a?(String) && i.snippet_alias.as(String).downcase.includes?(lowered_search_term) + true + else + false + end + end def sort_results(snippets, search_term) snippets.sort { |snippet_a, snippet_b| if snippet_a.is_pinned && snippet_b.is_pinned - FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score + FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score elsif snippet_a.is_pinned -1 elsif snippet_b.is_pinned 1 else - FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score + FuzzyMatch::Full.new(search_term, snippet_a.name.as(String)).score <=> FuzzyMatch::Full.new(search_term, snippet_b.name.as(String)).score end } end diff --git a/src/snipline_cli/services/snipline_api.cr b/src/snipline_cli/services/snipline_api.cr index afdcdc1..f7de554 100644 --- a/src/snipline_cli/services/snipline_api.cr +++ b/src/snipline_cli/services/snipline_api.cr @@ -86,22 +86,22 @@ module SniplineCli::Services puts q.inspect end - def delete(snippet) + def delete(snippet) config = SniplineCli.config begin - response = Crest.delete( - "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", - headers: { - # "Accept" => "application/vnd.api+json", - "Authorization" => "Bearer #{config.get("api.token")}", - }, - logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false - ) - true - rescue ex - false - end - end + Crest.delete( + "#{config.get("api.url")}/snippets/#{snippet.cloud_id}", + headers: { + # "Accept" => "application/vnd.api+json", + "Authorization" => "Bearer #{config.get("api.token")}", + }, + logging: ENV["LOG_LEVEL"] == "DEBUG" ? true : false + ) + true + rescue ex + false + end + end end class SniplineApiTest @@ -115,7 +115,7 @@ module SniplineCli::Services def update(snippet : Snippet) end - def delete(snippet : Snippet) - end + def delete(snippet : Snippet) + end end end diff --git a/src/snipline_cli/services/store_snippets.cr b/src/snipline_cli/services/store_snippets.cr index f31b0ab..88ceb3a 100644 --- a/src/snipline_cli/services/store_snippets.cr +++ b/src/snipline_cli/services/store_snippets.cr @@ -6,13 +6,13 @@ module SniplineCli::Services # Takes an array of snippets and saves them to the `snippet.json` file. def store(snippets) config = SniplineCli.config - directory = File.dirname(File.expand_path(config.get("general.file"))) + directory = File.dirname(File.expand_path(config.get("general.file"), home: true)) unless File.directory?(directory) puts "Creating #{directory} directory" - Dir.mkdir(File.expand_path(directory)) + Dir.mkdir(File.expand_path(directory, home: true)) end - File.write(File.expand_path(config.get("general.file")), snippets, mode: "w") - unless File.writable?(File.expand_path(config.get("general.file"))) + File.write(File.expand_path(config.get("general.file"), home: true), snippets, mode: "w") + unless File.writable?(File.expand_path(config.get("general.file"), home: true)) raise Exception.new("Sync Failed: File not writable (#{config.get("general.file")}") end end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index 122c979..fb5166c 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -42,14 +42,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} def create config = SniplineCli.config - unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) - File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template) + unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) + File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true), @template) end end def read config = SniplineCli.config - toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) + toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))) SnippetAttributeParser.new( name: toml["name"].as(String), real_command: toml["real_command"].as(String), @@ -71,14 +71,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} def sync_to_cloud? config = SniplineCli.config - toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) + toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))) toml["sync_to_cloud"].as(Bool) end def delete config = SniplineCli.config - if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) - File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) + if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) + File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) end end end From e572de941e7cd683e13f1be36a49b671a677c426 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 16 Dec 2019 09:48:34 +0000 Subject: [PATCH 33/47] compatability updates --- shard.lock | 16 ++++++++-------- shard.yml | 9 ++++++--- src/snipline_cli/commands/new.cr | 2 +- src/snipline_cli/ncurses_windows/left_pane.cr | 2 +- src/snipline_cli/services/display_results.cr | 4 ++-- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/shard.lock b/shard.lock index bc51b1a..cbffa29 100644 --- a/shard.lock +++ b/shard.lock @@ -2,27 +2,27 @@ version: 1.0 shards: admiral: github: jwaldrip/admiral.cr - version: 1.8.0 + version: 1.9.0 ameba: github: veelenga/ameba - version: 0.10.1 + version: 0.11.0 crecto: - github: Crecto/crecto - version: 0.11.2 + github: acoustep/crecto + commit: fcae1f96740970ddf33790bd825eaada30378d62 crest: github: mamantoha/crest - version: 0.22.0 + version: 0.23.1 db: github: crystal-lang/crystal-db - version: 0.7.0 + version: 0.8.0 fuzzy_match: github: acoustep/fuzzy_match.cr - commit: 24513474ea58e2ce97a2d34e8668947da8863965 + commit: ce3bff7e29a5062190dcf8618de08072f11cab66 http-client-digest_auth: github: mamantoha/http-client-digest_auth @@ -34,7 +34,7 @@ shards: sqlite3: github: crystal-lang/crystal-sqlite3 - version: 0.14.0 + version: 0.15.0 toml: github: crystal-community/toml.cr diff --git a/shard.yml b/shard.yml index 34e0812..40a3905 100644 --- a/shard.yml +++ b/shard.yml @@ -8,7 +8,7 @@ targets: cli2: main: src/cli.cr -crystal: 0.30.1 +crystal: 0.32.0 license: MIT @@ -24,12 +24,15 @@ dependencies: github: JohnDowson/ncurses branch: borders_and_lines crecto: - github: Crecto/crecto + github: acoustep/crecto + branch: 0320compatability sqlite3: github: crystal-lang/crystal-sqlite3 + version: ~> 0.15.0 fuzzy_match: github: acoustep/fuzzy_match.cr - version: ~> 0.2.0 + branch: master + # version: ~> 0.2.0 development_dependencies: diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 0ae04e7..2f52ef2 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -21,7 +21,7 @@ module SniplineCli temp_file = TempSnippetEditorFile.new temp_file.create loop do - system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}", home :true) + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}") snippet_attributes = temp_file.read snippet = Snippet.new diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr index 49a6318..668c39f 100644 --- a/src/snipline_cli/ncurses_windows/left_pane.cr +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -11,7 +11,7 @@ module SniplineCli::NCursesWindows property results : Array(Snippet) property snippets : Array(Snippet) - def initialize(header_footer_height, @left : Int32, @right : Int32, @snippets = [] of Snippet) + def initialize(header_footer_height : Int32, @left : Int32, @right : Int32, @snippets = [] of Snippet) @results = @snippets @searcher = SearchSnippets.new(@snippets) diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index 2290fb9..baa0ff0 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -16,8 +16,8 @@ module SniplineCli::Services header_footer_height = 1 @header = SniplineCli::NCursesWindows::Header.new(header_footer_height) @footer = SniplineCli::NCursesWindows::Footer.new(header_footer_height) - @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2), snippets: results) - @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2), right: (NCurses.width / 2.0).ceil.to_i32) + @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results) + @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32) @search = SniplineCli::NCursesWindows::Search.new(header_footer_height) @left_pane.filter("") refresh_right_pane From daf47a1bd3b723d7ad20e5f788c7581170eb83ff Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 16 Dec 2019 10:30:38 +0000 Subject: [PATCH 34/47] update shards --- shard.lock | 4 ++-- shard.yml | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/shard.lock b/shard.lock index bc51b1a..b9a5ec5 100644 --- a/shard.lock +++ b/shard.lock @@ -2,7 +2,7 @@ version: 1.0 shards: admiral: github: jwaldrip/admiral.cr - version: 1.8.0 + version: 1.9.0 ameba: github: veelenga/ameba @@ -22,7 +22,7 @@ shards: fuzzy_match: github: acoustep/fuzzy_match.cr - commit: 24513474ea58e2ce97a2d34e8668947da8863965 + commit: ce3bff7e29a5062190dcf8618de08072f11cab66 http-client-digest_auth: github: mamantoha/http-client-digest_auth diff --git a/shard.yml b/shard.yml index 9cc06d1..754d4c0 100644 --- a/shard.yml +++ b/shard.yml @@ -17,6 +17,7 @@ dependencies: github: jwaldrip/admiral.cr crest: github: mamantoha/crest + version: ~> 0.22.0 toml: github: crystal-community/toml.cr branch: master @@ -25,10 +26,13 @@ dependencies: branch: borders_and_lines crecto: github: Crecto/crecto + version: ~> 0.11.0 sqlite3: github: crystal-lang/crystal-sqlite3 + version: ~> 0.14.0 fuzzy_match: github: acoustep/fuzzy_match.cr + branch: master development_dependencies: From b5d33416ecb2d1067c32c1771b7d5801e2c6ea9b Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 18 Dec 2019 16:37:23 +0000 Subject: [PATCH 35/47] Update documentation --- shard.yml | 2 +- src/snipline_cli.cr | 2 +- src/snipline_cli/commands/search.cr | 73 ++++++++++--------- src/snipline_cli/models/snippet.cr | 10 ++- src/snipline_cli/models/snippet_param.cr | 3 + .../models/snippet_password_param.cr | 3 + src/snipline_cli/models/token.cr | 1 + src/snipline_cli/ncurses_windows/footer.cr | 3 + src/snipline_cli/ncurses_windows/header.cr | 1 + src/snipline_cli/ncurses_windows/left_pane.cr | 3 + .../ncurses_windows/multi_param.cr | 3 + src/snipline_cli/ncurses_windows/param.cr | 3 + .../ncurses_windows/right_pane.cr | 1 + src/snipline_cli/ncurses_windows/search.cr | 1 + .../parsers/snippet_attribute_parser.cr | 3 + src/snipline_cli/parsers/snippet_parser.cr | 3 + .../services/create_config_directory.cr | 1 + src/snipline_cli/services/display_results.cr | 4 +- .../services/documentation_formatter.cr | 4 + src/snipline_cli/services/migrator.cr | 1 + src/snipline_cli/services/search_snippets.cr | 2 +- src/snipline_cli/services/setup_ncurses.cr | 1 + .../services/sync_snippet_to_snipline.cr | 2 +- .../services/temp_snippet_editor_file.cr | 2 +- 24 files changed, 87 insertions(+), 45 deletions(-) diff --git a/shard.yml b/shard.yml index 40a3905..3ebd92c 100644 --- a/shard.yml +++ b/shard.yml @@ -32,7 +32,7 @@ dependencies: fuzzy_match: github: acoustep/fuzzy_match.cr branch: master - # version: ~> 0.2.0 + version: ~> 0.2.0 development_dependencies: diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 1608bdb..349e0f2 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -21,7 +21,7 @@ module Repo config do |conf| conf.adapter = Crecto::Adapters::SQLite3 - conf.database = File.expand_path("~/.config/snipline/snipline.db") + conf.database = File.expand_path("~/.config/snipline/snipline.db", home: true) end end diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index fa21339..5c07b3b 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -35,43 +35,48 @@ module SniplineCli def run search_term : String = arguments.search_term || "" - snippets = if search_term.empty? - query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) - Repo.all(Snippet, query) - else - lowered_search_term = search_term.downcase - if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) - puts "The search field entered does not exist." - return + begin + snippets = if search_term.empty? + query = Crecto::Repo::Query.order_by("is_pinned ASC").order_by("name ASC").limit(flags.limit.to_i) + Repo.all(Snippet, query) + else + lowered_search_term = search_term.downcase + if flags.field != nil && !["alias", "documentation", "name", "tags"].includes?(flags.field.not_nil!) + puts "The search field entered does not exist." + return + end + query = Crecto::Repo::Query.new + query = if flags.field + # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) + query + else + wildcard_query = "%#{lowered_search_term}%" + query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query) + end + Repo.all(Snippet, query) + # snippets.select! { |i| + # if field = flags.field + # i.value_for_attribute(field).downcase.includes?(lowered_search_term) + # else + # if !i.tags.nil? + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) + # else + # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) + # end + # end + # } end - query = Crecto::Repo::Query.new - query = if flags.field - # query.where("snippets.#{flags.field.not_nil!.downcase} = ?", lowered_search_term) - query - else - wildcard_query = "%#{lowered_search_term}%" - query.where("snippets.name LIKE ?", wildcard_query).or_where("snippets.real_command LIKE ?", wildcard_query).or_where("snippets.snippet_alias LIKE ?", wildcard_query).or_where("snippets.tags LIKE ?", wildcard_query) - end - Repo.all(Snippet, query) - # snippets.select! { |i| - # if field = flags.field - # i.value_for_attribute(field).downcase.includes?(lowered_search_term) - # else - # if !i.tags.nil? - # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) || i.tags.as(Array(String)).includes?(lowered_search_term) - # else - # i.name.downcase.includes?(lowered_search_term) || i.real_command.downcase.includes?(lowered_search_term) - # end - # end - # } - end - # results = sort_results(snippets, flags.limit) + # results = sort_results(snippets, flags.limit) - # unless results.size > 0 - # puts "No results found." - # exit(0) - # end + # unless results.size > 0 + # puts "No results found." + # exit(0) + # end + rescue ex + puts "Error: #{ex.inspect}".colorize(:red) + abort + end DisplayResults.new(snippets) end diff --git a/src/snipline_cli/models/snippet.cr b/src/snipline_cli/models/snippet.cr index 7f2d2aa..9783127 100644 --- a/src/snipline_cli/models/snippet.cr +++ b/src/snipline_cli/models/snippet.cr @@ -1,4 +1,5 @@ module SniplineCli::Models + # A Snippet which is usually retrieved from the SQLite database class Snippet < Crecto::Model set_created_at_field :inserted_at @@ -20,9 +21,7 @@ module SniplineCli::Models unique_constraint :snippet_alias unique_constraint :name - # # Params such as variables or select that require input from the user - # def interactive_params : Array(SnippetParam) temp_array = [] of SnippetParam @@ -57,9 +56,9 @@ module SniplineCli::Models temp_array end + # Uninteractive params currently consist of password params. # - # E.g. Passwords - # + # These are replaced on copy/run with no user interaction. def uninteractive_params : Array(SnippetPasswordParam) temp_array = [] of SnippetPasswordParam real_command.as(String).scan(/#password\{\[(.+?)\]\}/) do |m| @@ -75,10 +74,12 @@ module SniplineCli::Models temp_array end + # Checks to see if the snippet has any parameters def has_params interactive_params.size > 0 || uninteractive_params.size > 0 end + # Converts the snippet to a more human-readable format. def preview_command unless has_params() return real_command @@ -102,6 +103,7 @@ module SniplineCli::Models temp_command end + # Helper method for getting the value of a snippet attribute def value_for_attribute(attribute : String) case attribute when "alias" diff --git a/src/snipline_cli/models/snippet_param.cr b/src/snipline_cli/models/snippet_param.cr index 4f798fb..22a6328 100644 --- a/src/snipline_cli/models/snippet_param.cr +++ b/src/snipline_cli/models/snippet_param.cr @@ -1,4 +1,7 @@ module SniplineCli::Models + # A single dynamic parameter which is apart of a Snippet + # + # When a snippet includes the text `#{[Param=value]}` or #{[Param]}` this becomes a parameter. struct SnippetParam property name : String property default_value : String diff --git a/src/snipline_cli/models/snippet_password_param.cr b/src/snipline_cli/models/snippet_password_param.cr index 4d6d25e..08cfc3b 100644 --- a/src/snipline_cli/models/snippet_password_param.cr +++ b/src/snipline_cli/models/snippet_password_param.cr @@ -1,4 +1,7 @@ module SniplineCli::Models + # A password parameter of a snippet. + # + # When a snippet has the text `#password{[Name]}` it becomes a password parameter struct SnippetPasswordParam property id : String property length : UInt32 | UInt8 diff --git a/src/snipline_cli/models/token.cr b/src/snipline_cli/models/token.cr index 6da1769..6fdeaa5 100644 --- a/src/snipline_cli/models/token.cr +++ b/src/snipline_cli/models/token.cr @@ -1,6 +1,7 @@ require "json" module SniplineCli::Models + # Used for parsing authentication tokens from the API class Token include JSON::Serializable diff --git a/src/snipline_cli/ncurses_windows/footer.cr b/src/snipline_cli/ncurses_windows/footer.cr index 3808e7d..77f3137 100644 --- a/src/snipline_cli/ncurses_windows/footer.cr +++ b/src/snipline_cli/ncurses_windows/footer.cr @@ -1,4 +1,7 @@ module SniplineCli::NCursesWindows + # The bottom element of the search window. + # + # This includes keyboard shortcuts for navigating the TUI class Footer property window diff --git a/src/snipline_cli/ncurses_windows/header.cr b/src/snipline_cli/ncurses_windows/header.cr index 86dc098..444049b 100644 --- a/src/snipline_cli/ncurses_windows/header.cr +++ b/src/snipline_cli/ncurses_windows/header.cr @@ -1,4 +1,5 @@ module SniplineCli::NCursesWindows + # The top element of the search interface class Header property window diff --git a/src/snipline_cli/ncurses_windows/left_pane.cr b/src/snipline_cli/ncurses_windows/left_pane.cr index 668c39f..ad9fa92 100644 --- a/src/snipline_cli/ncurses_windows/left_pane.cr +++ b/src/snipline_cli/ncurses_windows/left_pane.cr @@ -1,6 +1,9 @@ include SniplineCli::Models module SniplineCli::NCursesWindows + # The left panel of the search interface which lists snippets + # + # When the `selected_index` is updated the highlighted snippet is changed. class LeftPane property window property border diff --git a/src/snipline_cli/ncurses_windows/multi_param.cr b/src/snipline_cli/ncurses_windows/multi_param.cr index 5cba19f..09d0792 100644 --- a/src/snipline_cli/ncurses_windows/multi_param.cr +++ b/src/snipline_cli/ncurses_windows/multi_param.cr @@ -1,4 +1,7 @@ module SniplineCli::NCursesWindows + # The NCurses window for choosing a multi-select parameter. + # + # This window will show when a user has chosen a snippet with multi-select parameter. They will then select from the available choices before moving to the next parameter or finishing the copy/run process. class MultiParamPane property window property border diff --git a/src/snipline_cli/ncurses_windows/param.cr b/src/snipline_cli/ncurses_windows/param.cr index 243e259..23ac2c1 100644 --- a/src/snipline_cli/ncurses_windows/param.cr +++ b/src/snipline_cli/ncurses_windows/param.cr @@ -1,4 +1,7 @@ module SniplineCli::NCursesWindows + # This window will show when a user has chosen a snippet to run/copy. + # + # They will enter text or use the default value provided by the snippet. class ParamPane property window property border diff --git a/src/snipline_cli/ncurses_windows/right_pane.cr b/src/snipline_cli/ncurses_windows/right_pane.cr index 55b1107..f7308d4 100644 --- a/src/snipline_cli/ncurses_windows/right_pane.cr +++ b/src/snipline_cli/ncurses_windows/right_pane.cr @@ -1,4 +1,5 @@ module SniplineCli::NCursesWindows + # This NCurses window is the detail view which shows the attributes of the currently highlighted snippet. class RightPane property window property border diff --git a/src/snipline_cli/ncurses_windows/search.cr b/src/snipline_cli/ncurses_windows/search.cr index 708f104..f635da2 100644 --- a/src/snipline_cli/ncurses_windows/search.cr +++ b/src/snipline_cli/ncurses_windows/search.cr @@ -1,4 +1,5 @@ module SniplineCli::NCursesWindows + # This view appears above the left and right panes and is where the user refines their snippet search class Search property window property search_text : String = "" diff --git a/src/snipline_cli/parsers/snippet_attribute_parser.cr b/src/snipline_cli/parsers/snippet_attribute_parser.cr index 7e539f9..600c9dd 100644 --- a/src/snipline_cli/parsers/snippet_attribute_parser.cr +++ b/src/snipline_cli/parsers/snippet_attribute_parser.cr @@ -1,6 +1,9 @@ require "json" module SniplineCli::Parsers + # Used for parsing JSON-API spec attributes. + # + # When a list of snippets comes from the API, there is an `attribute` attribute which contains most of the snippet properties (except id). class SnippetAttributeParser include JSON::Serializable diff --git a/src/snipline_cli/parsers/snippet_parser.cr b/src/snipline_cli/parsers/snippet_parser.cr index e71e623..9753a8e 100644 --- a/src/snipline_cli/parsers/snippet_parser.cr +++ b/src/snipline_cli/parsers/snippet_parser.cr @@ -1,6 +1,9 @@ require "json" module SniplineCli::Parsers + # This is used for parsing snippets from the JSON API. + # + # Note how most attributes are contained within the `attribute` attribute. This is to conform to the JSON-API specification. class SnippetParser JSON.mapping({ id: String | Nil, diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr index 10ce3fa..2c03135 100644 --- a/src/snipline_cli/services/create_config_directory.cr +++ b/src/snipline_cli/services/create_config_directory.cr @@ -1,5 +1,6 @@ module SniplineCli module Services + # Creates a config directory for storing configuration files for SnipCLI. class CreateConfigDirectory def self.run(file) directory_name = File.expand_path(File.dirname(file), home: true) diff --git a/src/snipline_cli/services/display_results.cr b/src/snipline_cli/services/display_results.cr index baa0ff0..b598469 100644 --- a/src/snipline_cli/services/display_results.cr +++ b/src/snipline_cli/services/display_results.cr @@ -16,8 +16,8 @@ module SniplineCli::Services header_footer_height = 1 @header = SniplineCli::NCursesWindows::Header.new(header_footer_height) @footer = SniplineCli::NCursesWindows::Footer.new(header_footer_height) - @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results) - @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32) + @left_pane = SniplineCli::NCursesWindows::LeftPane.new(header_footer_height + 1, left: 0, right: (NCurses.width / 2).floor.to_i32, snippets: results) + @right_pane = SniplineCli::NCursesWindows::RightPane.new(header_footer_height + 1, left: (NCurses.width / 2).ceil.to_i32, right: (NCurses.width / 2.0).ceil.to_i32) @search = SniplineCli::NCursesWindows::Search.new(header_footer_height) @left_pane.filter("") refresh_right_pane diff --git a/src/snipline_cli/services/documentation_formatter.cr b/src/snipline_cli/services/documentation_formatter.cr index 21fafb5..44f7b0f 100644 --- a/src/snipline_cli/services/documentation_formatter.cr +++ b/src/snipline_cli/services/documentation_formatter.cr @@ -1,20 +1,24 @@ module SniplineCli::Services + # For parsing the snippet documentation attribute in NCurses. class DocumentationFormatter property window def initialize(@window : NCurses::Window | SniplineCli::NCursesWindows::MockWindow) end + # When the snippet does not have any documentation provide a default value. def to_ncurses(documentation : Nil) @window.print("No documentation found") end + # Format the documentation for NCurses given the terminal width. def to_ncurses(documentation : String) format_documentation(documentation, @window.width).each do |line| @window.print("#{line}") end end + # Take the documentation text and split it onto newlines while keeping whole words in tact. def format_documentation(documentation, width) formatted_line = String::Builder.new formatted_lines = [] of String diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index 5f3ee52..b90a50d 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -2,6 +2,7 @@ require "db" require "sqlite3" module SniplineCli::Services + # Keeps the database structure up to date class Migrator def self.run File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true)) diff --git a/src/snipline_cli/services/search_snippets.cr b/src/snipline_cli/services/search_snippets.cr index 2795735..4374933 100644 --- a/src/snipline_cli/services/search_snippets.cr +++ b/src/snipline_cli/services/search_snippets.cr @@ -2,7 +2,7 @@ require "json" require "fuzzy_match" module SniplineCli::Services - # For saving Snippets locally. + # Searches snippets. class SearchSnippets property snippets diff --git a/src/snipline_cli/services/setup_ncurses.cr b/src/snipline_cli/services/setup_ncurses.cr index 282bd6c..f4c2cd6 100644 --- a/src/snipline_cli/services/setup_ncurses.cr +++ b/src/snipline_cli/services/setup_ncurses.cr @@ -1,4 +1,5 @@ module SniplineCli::Services + # Sets up the Search NCurses TUI class Setup def initialize NCurses.start diff --git a/src/snipline_cli/services/sync_snippet_to_snipline.cr b/src/snipline_cli/services/sync_snippet_to_snipline.cr index d32c3f1..7a352cc 100644 --- a/src/snipline_cli/services/sync_snippet_to_snipline.cr +++ b/src/snipline_cli/services/sync_snippet_to_snipline.cr @@ -1,7 +1,7 @@ require "json" module SniplineCli::Services - # For saving Snippets locally. + # For synving snippets to Snipline Cloud. class SyncSnippetToSnipline # Takes an array of snippets and saves them to the `snippet.json` file. def self.handle(snippet) diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index fb5166c..b7a7f0b 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -1,7 +1,7 @@ require "toml" module SniplineCli::Services - # For saving Snippets locally. + # Provides the users preferred text editor with a template for editing and adding new snippets. class TempSnippetEditorFile property snippet : Snippet | Nil From 7c6327eb148ac1326e5627ce607a61b4db5b5fd9 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 19 Dec 2019 12:04:20 +0000 Subject: [PATCH 36/47] Import old JSON snippets on migration --- README.md | 4 ++- config.spec.toml | 10 +++++++ spec/services/migrator_spec.cr | 33 +++++++++++++++++++++ src/snipline_cli.cr | 2 +- src/snipline_cli/commands/init.cr | 1 + src/snipline_cli/config.cr | 9 ++++-- src/snipline_cli/services/migrator.cr | 42 +++++++++++++++++++++++++-- 7 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 config.spec.toml create mode 100644 spec/services/migrator_spec.cr diff --git a/README.md b/README.md index 3495842..df3df0a 100644 --- a/README.md +++ b/README.md @@ -110,8 +110,10 @@ env LOG_LEVEL=DEBUG ./snipcli search git To change the config file location (For testing) use the `CONFIG_FILE` environment variable. +There is an example already in place for testing located in `config.spec.toml` + ```bash -env CONFIG_FILE=./spec/fixtures/config.toml ./snipcli search git +env CONFIG_FILE=./config.spec.toml crystal spec ``` ## Contributing diff --git a/config.spec.toml b/config.spec.toml new file mode 100644 index 0000000..46f1a22 --- /dev/null +++ b/config.spec.toml @@ -0,0 +1,10 @@ +title = "Snipline" + +[api] +url = "http://localhost:4001/api" +token = "" + +[general] +db = "./test.db" +file = "./snippets.json" +temp_dir = "./temp" diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr new file mode 100644 index 0000000..ab811c1 --- /dev/null +++ b/spec/services/migrator_spec.cr @@ -0,0 +1,33 @@ +describe SniplineCli::Services::Migrator do + + after_each do + if File.exists?("./snippets.json") + File.delete("./snippets.json") + end + if File.exists?("./test.db") + File.delete("./test.db") + end + end + + it "should create and migrate a DB from scratch" do + File.exists?("./test.db").should eq(false) + SniplineCli::Services::Migrator.run + File.exists?("./test.db").should eq(true) + DB.open "sqlite3:./test.db" do |db| + db.scalar("select count(*) from snippets").should eq(0) + end + end + + it "should import any previously created json snippets" do + # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json")) + FileUtils.cp({"./spec/fixtures/snippets.json"}, "./") + File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true) + SniplineCli::Services::Migrator.run + DB.open "sqlite3:./test.db" do |db| + db.scalar("select count(*) from snippets").should eq(2) + end + # + File.exists?("./snippets.json").should eq(false) + end + +end diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 349e0f2..063669f 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -21,7 +21,7 @@ module Repo config do |conf| conf.adapter = Crecto::Adapters::SQLite3 - conf.database = File.expand_path("~/.config/snipline/snipline.db", home: true) + conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true) end end diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index e3c5246..42698f8 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -20,6 +20,7 @@ module SniplineCli [general] db = "#{config.get("general.db")}" + file = "#{config.get("general.file")}" temp_dir = "#{config.get("general.temp_dir")}" TOML diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index 530ad25..9df3019 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -24,8 +24,9 @@ module SniplineCli else @api = {"url" => "https://api.snipline.io/api", "token" => ""} @general = { - "db" => "~/.config/snipline/snipline.db", - "temp_dir" => "~/.config/snipline", + "db" => "~/.config/snipline/snipline.db", + "file" => "~/.config/snipline/snippets.json", + "temp_dir" => "~/.config/snipline", } end end @@ -38,7 +39,9 @@ module SniplineCli when "api.token" @api["token"].as(String) when "general.db" - @general["db"].as(String) + @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db" + when "general.file" + @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json" when "general.temp_dir" @general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline" else diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index b90a50d..ca161f2 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -1,12 +1,15 @@ require "db" require "sqlite3" +require "json" +require "crecto" module SniplineCli::Services # Keeps the database structure up to date class Migrator def self.run - File.write(File.expand_path("~/.config/snipline/snipline.db", home: true), "", mode: "w") unless File.exists?(File.expand_path("~/.config/snipline/snipline.db", home: true)) - DB.open "sqlite3:#{File.expand_path("~/.config/snipline/snipline.db", home: true)}" do |db| + config = SniplineCli.config + File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true)) + DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db| db.exec "create table if not exists snippets ( local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cloud_id TEXT NULL, @@ -26,6 +29,41 @@ module SniplineCli::Services rescue ex : DB::Error db.exec "insert into schema (version) values (?)", 1 end + + # Import 0.2.0 snippets from JSON file + if File.exists?(File.expand_path(config.get("general.file"), home: true)) + # Get the snippets + json = File.read(File.expand_path(config.get("general.file"), home: true)) + # import into DB + p "Importing JSON snippets into SQLite Database" + Array(SnippetParser).from_json(json).each do |snippet_json| + p "#{snippet_json.inspect}" + snippet = Snippet.new + snippet.cloud_id = snippet_json.id + snippet.name = snippet_json.name + snippet.real_command = snippet_json.real_command + snippet.documentation = snippet_json.documentation + snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil + snippet.snippet_alias = snippet_json.snippet_alias + snippet.is_pinned = snippet_json.is_pinned + snippet.is_synced = false + changeset = Snippet.changeset(snippet) + unless changeset.valid? + p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red) + p "Reasons given:".colorize(:red) + changeset.errors.each do |error| + puts "#{error.inspect}".colorize(:red) + end + p "" + p "Please fix this error and re-run the init command".colorize(:red) + abort() + end + if changeset.valid? + Repo.insert(changeset) + end + end + File.delete(File.expand_path(config.get("general.file"), home: true)) + end end end end From 1fc5003b4f40ce3f79888ba16e7ad3e9b966b08b Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 19 Dec 2019 12:06:30 +0000 Subject: [PATCH 37/47] Upgrade to Crystal 0.32.1 and run formatter --- .tool-versions | 2 +- shard.yml | 2 +- spec/services/migrator_spec.cr | 54 ++++++++++----------- src/snipline_cli.cr | 2 +- src/snipline_cli/config.cr | 10 ++-- src/snipline_cli/services/migrator.cr | 70 +++++++++++++-------------- 6 files changed, 69 insertions(+), 71 deletions(-) diff --git a/.tool-versions b/.tool-versions index a2c7d83..4991363 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -crystal 0.32.0 +crystal 0.32.1 diff --git a/shard.yml b/shard.yml index 3ebd92c..2717f1c 100644 --- a/shard.yml +++ b/shard.yml @@ -8,7 +8,7 @@ targets: cli2: main: src/cli.cr -crystal: 0.32.0 +crystal: 0.32.1 license: MIT diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr index ab811c1..c8769c8 100644 --- a/spec/services/migrator_spec.cr +++ b/spec/services/migrator_spec.cr @@ -1,33 +1,31 @@ describe SniplineCli::Services::Migrator do + after_each do + if File.exists?("./snippets.json") + File.delete("./snippets.json") + end + if File.exists?("./test.db") + File.delete("./test.db") + end + end - after_each do - if File.exists?("./snippets.json") - File.delete("./snippets.json") - end - if File.exists?("./test.db") - File.delete("./test.db") - end - end + it "should create and migrate a DB from scratch" do + File.exists?("./test.db").should eq(false) + SniplineCli::Services::Migrator.run + File.exists?("./test.db").should eq(true) + DB.open "sqlite3:./test.db" do |db| + db.scalar("select count(*) from snippets").should eq(0) + end + end - it "should create and migrate a DB from scratch" do - File.exists?("./test.db").should eq(false) - SniplineCli::Services::Migrator.run - File.exists?("./test.db").should eq(true) - DB.open "sqlite3:./test.db" do |db| - db.scalar("select count(*) from snippets").should eq(0) - end - end - - it "should import any previously created json snippets" do - # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json")) - FileUtils.cp({"./spec/fixtures/snippets.json"}, "./") - File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true) - SniplineCli::Services::Migrator.run - DB.open "sqlite3:./test.db" do |db| - db.scalar("select count(*) from snippets").should eq(2) - end + it "should import any previously created json snippets" do + # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json")) + FileUtils.cp({"./spec/fixtures/snippets.json"}, "./") + File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true) + SniplineCli::Services::Migrator.run + DB.open "sqlite3:./test.db" do |db| + db.scalar("select count(*) from snippets").should eq(2) + end # - File.exists?("./snippets.json").should eq(false) - end - + File.exists?("./snippets.json").should eq(false) + end end diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 063669f..508d72a 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -21,7 +21,7 @@ module Repo config do |conf| conf.adapter = Crecto::Adapters::SQLite3 - conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true) + conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true) end end diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index 9df3019..e98554a 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -24,9 +24,9 @@ module SniplineCli else @api = {"url" => "https://api.snipline.io/api", "token" => ""} @general = { - "db" => "~/.config/snipline/snipline.db", - "file" => "~/.config/snipline/snippets.json", - "temp_dir" => "~/.config/snipline", + "db" => "~/.config/snipline/snipline.db", + "file" => "~/.config/snipline/snippets.json", + "temp_dir" => "~/.config/snipline", } end end @@ -39,9 +39,9 @@ module SniplineCli when "api.token" @api["token"].as(String) when "general.db" - @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db" + @general.has_key?("db") ? @general["db"].as(String) : "~/.config/snipline/snipline.db" when "general.file" - @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json" + @general.has_key?("file") ? @general["file"].as(String) : "~/.config/snipline/snippets.json" when "general.temp_dir" @general.has_key?("temp_dir") ? @general["temp_dir"].as(String) : "~/.config/snipline" else diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index ca161f2..aa84977 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -7,7 +7,7 @@ module SniplineCli::Services # Keeps the database structure up to date class Migrator def self.run - config = SniplineCli.config + config = SniplineCli.config File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true)) DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db| db.exec "create table if not exists snippets ( @@ -30,40 +30,40 @@ module SniplineCli::Services db.exec "insert into schema (version) values (?)", 1 end - # Import 0.2.0 snippets from JSON file - if File.exists?(File.expand_path(config.get("general.file"), home: true)) - # Get the snippets - json = File.read(File.expand_path(config.get("general.file"), home: true)) - # import into DB - p "Importing JSON snippets into SQLite Database" - Array(SnippetParser).from_json(json).each do |snippet_json| - p "#{snippet_json.inspect}" - snippet = Snippet.new - snippet.cloud_id = snippet_json.id - snippet.name = snippet_json.name - snippet.real_command = snippet_json.real_command - snippet.documentation = snippet_json.documentation - snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil - snippet.snippet_alias = snippet_json.snippet_alias - snippet.is_pinned = snippet_json.is_pinned - snippet.is_synced = false - changeset = Snippet.changeset(snippet) - unless changeset.valid? - p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red) - p "Reasons given:".colorize(:red) - changeset.errors.each do |error| - puts "#{error.inspect}".colorize(:red) - end - p "" - p "Please fix this error and re-run the init command".colorize(:red) - abort() - end - if changeset.valid? - Repo.insert(changeset) - end - end - File.delete(File.expand_path(config.get("general.file"), home: true)) - end + # Import 0.2.0 snippets from JSON file + if File.exists?(File.expand_path(config.get("general.file"), home: true)) + # Get the snippets + json = File.read(File.expand_path(config.get("general.file"), home: true)) + # import into DB + p "Importing JSON snippets into SQLite Database" + Array(SnippetParser).from_json(json).each do |snippet_json| + p "#{snippet_json.inspect}" + snippet = Snippet.new + snippet.cloud_id = snippet_json.id + snippet.name = snippet_json.name + snippet.real_command = snippet_json.real_command + snippet.documentation = snippet_json.documentation + snippet.tags = (snippet_json.tags) ? snippet_json.tags.not_nil!.join(",") : nil + snippet.snippet_alias = snippet_json.snippet_alias + snippet.is_pinned = snippet_json.is_pinned + snippet.is_synced = false + changeset = Snippet.changeset(snippet) + unless changeset.valid? + p "Could not import snippet #{snippet.name} from the old 0.2.0 JSON file to the new 0.3.0+ SQLite database.".colorize(:red) + p "Reasons given:".colorize(:red) + changeset.errors.each do |error| + puts "#{error.inspect}".colorize(:red) + end + p "" + p "Please fix this error and re-run the init command".colorize(:red) + abort() + end + if changeset.valid? + Repo.insert(changeset) + end + end + File.delete(File.expand_path(config.get("general.file"), home: true)) + end end end end From df6e81fa4dd1d57e698b56df2547506f7748f79d Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 23 Dec 2019 11:54:23 +0000 Subject: [PATCH 38/47] Update version number in Snapcraft yml file --- snap/snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 25e66f1..531b14d 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,5 +1,5 @@ name: snipcli -version: 0.2.0 +version: 0.3.0 summary: Shell Snippet organiser description: > Snipcli is a commandline interface for managing shell commands. Sync commands with your Snipline account or use in guest mode. Snipline lets you dynamically change command parameters easily so you never have to remember how to build a command. From 3ad7e43c52454d2b194e4574a8b440784b6d440f Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 23 Dec 2019 11:59:01 +0000 Subject: [PATCH 39/47] Align example image to center --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index df3df0a..689f9ad 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ Snipline CLI is the command-line tool for [Snipline](https://snipline.io). -![SnipCLI Preview](https://f002.backblazeb2.com/file/snipline/2019-10-14+12.02.35.gif) +
+ SnipCLI Preview +
Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account. From dc6b3a6605ac655eb2be3d9d079d007508122ca4 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Mon, 23 Dec 2019 12:01:11 +0000 Subject: [PATCH 40/47] Fix alignment on image --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 689f9ad..0e4245f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,10 @@ # Snipline CLI -Snipline CLI is the command-line tool for [Snipline](https://snipline.io). +Snipline CLI allows you to organise and use your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account. -
+

SnipCLI Preview -

- -Snipline CLI allows you to organise your favourite shell commands from the terminal. It can optionally sync to your [Snipline](https://snipline.io) account. +

## Installation From e14921893d2897cfc1099e8d8a85677d091c4e2e Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Wed, 8 Jan 2020 14:24:59 +0000 Subject: [PATCH 41/47] Update fuzzy match --- shard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shard.yml b/shard.yml index bc0f7da..803ad0a 100644 --- a/shard.yml +++ b/shard.yml @@ -33,7 +33,7 @@ dependencies: fuzzy_match: github: acoustep/fuzzy_match.cr branch: master - version: ~> 0.2.0 + version: ~> 0.3.0 development_dependencies: From 2ddb474dd901ab79b2c65aa6001602a3a917ac8e Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 9 Jan 2020 09:21:55 +0000 Subject: [PATCH 42/47] Revert to Crystal 0.31.1 --- .tool-versions | 2 +- shard.lock | 12 ++++++------ shard.yml | 7 +++---- spec/services/migrator_spec.cr | 2 +- src/snipline_cli.cr | 2 +- src/snipline_cli/commands/init.cr | 10 +++++----- src/snipline_cli/commands/login.cr | 4 ++-- src/snipline_cli/commands/new.cr | 4 ++-- src/snipline_cli/commands/search.cr | 3 +-- src/snipline_cli/config.cr | 4 ++-- .../services/create_config_directory.cr | 2 +- src/snipline_cli/services/edit_snippet.cr | 2 +- src/snipline_cli/services/load_snippets.cr | 4 ++-- src/snipline_cli/services/migrator.cr | 13 ++++++------- src/snipline_cli/services/store_snippets.cr | 8 ++++---- .../services/temp_snippet_editor_file.cr | 12 ++++++------ 16 files changed, 44 insertions(+), 47 deletions(-) diff --git a/.tool-versions b/.tool-versions index 4991363..b8cd6d8 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -crystal 0.32.1 +crystal 0.31.1 diff --git a/shard.lock b/shard.lock index d3c88b4..a1ec933 100644 --- a/shard.lock +++ b/shard.lock @@ -9,8 +9,8 @@ shards: version: 0.11.0 crecto: - github: acoustep/crecto - commit: fcae1f96740970ddf33790bd825eaada30378d62 + github: Crecto/crecto + version: 0.11.2 crest: github: mamantoha/crest @@ -18,15 +18,15 @@ shards: db: github: crystal-lang/crystal-db - version: 0.8.0 + version: 0.7.0 fuzzy_match: github: acoustep/fuzzy_match.cr - commit: ce3bff7e29a5062190dcf8618de08072f11cab66 + commit: fe9eed429118adc8f0f9f6c91de4f11cdca5840e http-client-digest_auth: github: mamantoha/http-client-digest_auth - version: 0.2.0 + version: 0.3.0 ncurses: github: JohnDowson/ncurses @@ -34,7 +34,7 @@ shards: sqlite3: github: crystal-lang/crystal-sqlite3 - version: 0.15.0 + version: 0.14.0 toml: github: crystal-community/toml.cr diff --git a/shard.yml b/shard.yml index 803ad0a..07327d8 100644 --- a/shard.yml +++ b/shard.yml @@ -8,7 +8,7 @@ targets: cli2: main: src/cli.cr -crystal: 0.32.1 +crystal: 0.31.1 license: MIT @@ -25,11 +25,10 @@ dependencies: github: JohnDowson/ncurses branch: borders_and_lines crecto: - github: acoustep/crecto - branch: 0320compatability + github: Crecto/crecto sqlite3: github: crystal-lang/crystal-sqlite3 - version: ~> 0.15.0 + version: ~> 0.14.0 fuzzy_match: github: acoustep/fuzzy_match.cr branch: master diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr index c8769c8..02a4f2c 100644 --- a/spec/services/migrator_spec.cr +++ b/spec/services/migrator_spec.cr @@ -20,7 +20,7 @@ describe SniplineCli::Services::Migrator do it "should import any previously created json snippets" do # File.write("./snippets.json", File.read("./spec/fixtures/snippets.json")) FileUtils.cp({"./spec/fixtures/snippets.json"}, "./") - File.exists?(File.expand_path(SniplineCli.config.get("general.file"), home: true)).should eq(true) + File.exists?(File.expand_path(SniplineCli.config.get("general.file"))).should eq(true) SniplineCli::Services::Migrator.run DB.open "sqlite3:./test.db" do |db| db.scalar("select count(*) from snippets").should eq(2) diff --git a/src/snipline_cli.cr b/src/snipline_cli.cr index 508d72a..979d0a9 100644 --- a/src/snipline_cli.cr +++ b/src/snipline_cli.cr @@ -21,7 +21,7 @@ module Repo config do |conf| conf.adapter = Crecto::Adapters::SQLite3 - conf.database = File.expand_path(SniplineCli.config.get("general.db"), home: true) + conf.database = File.expand_path(SniplineCli.config.get("general.db")) end end diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 42698f8..5375354 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -25,11 +25,11 @@ module SniplineCli TOML CreateConfigDirectory.run(SniplineCli.config_file) - File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w") - puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}" - unless File.exists?(File.expand_path(config.get("general.db"), home: true)) - File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") - puts "Created SQLite file in #{File.expand_path(config.get("general.db"), home: true).colorize.mode(:bold)}" + File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") + puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" + unless File.exists?(File.expand_path(config.get("general.db"))) + File.write(File.expand_path(config.get("general.db")), "", mode: "w") + puts "Created SQLite file in #{File.expand_path(config.get("general.db")).colorize.mode(:bold)}" end puts "" puts "Run #{"snipcli new".colorize.mode(:bold)} to create your first snippet" diff --git a/src/snipline_cli/commands/login.cr b/src/snipline_cli/commands/login.cr index 04938a1..5bdd5d7 100644 --- a/src/snipline_cli/commands/login.cr +++ b/src/snipline_cli/commands/login.cr @@ -60,8 +60,8 @@ module SniplineCli TOML CreateConfigDirectory.run(SniplineCli.config_file) - File.write(File.expand_path(SniplineCli.config_file, home: true), toml_contents, mode: "w") - puts "Configuration saved to #{File.expand_path(SniplineCli.config_file, home: true).colorize.mode(:bold)}" + File.write(File.expand_path(SniplineCli.config_file), toml_contents, mode: "w") + puts "Configuration saved to #{File.expand_path(SniplineCli.config_file).colorize.mode(:bold)}" puts "To fetch your snippets run #{"snipcli sync".colorize.mode(:bold)}" end rescue ex : Crest::NotFound diff --git a/src/snipline_cli/commands/new.cr b/src/snipline_cli/commands/new.cr index 2f52ef2..91793e3 100644 --- a/src/snipline_cli/commands/new.cr +++ b/src/snipline_cli/commands/new.cr @@ -11,7 +11,7 @@ module SniplineCli def run config = SniplineCli.config - unless File.exists?(File.expand_path("#{config.get("general.db")}", home: true)) + unless File.exists?(File.expand_path("#{config.get("general.db")}")) abort("Database does not exist - Have you tried running #{"snipcli init".colorize.mode(:bold)}?".colorize.back(:red).on(:red)) end Migrator.run @@ -21,7 +21,7 @@ module SniplineCli temp_file = TempSnippetEditorFile.new temp_file.create loop do - system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}") + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read snippet = Snippet.new diff --git a/src/snipline_cli/commands/search.cr b/src/snipline_cli/commands/search.cr index 5c07b3b..80cf119 100644 --- a/src/snipline_cli/commands/search.cr +++ b/src/snipline_cli/commands/search.cr @@ -74,8 +74,7 @@ module SniplineCli # exit(0) # end rescue ex - puts "Error: #{ex.inspect}".colorize(:red) - abort + abort "Error: #{ex.inspect}" end DisplayResults.new(snippets) diff --git a/src/snipline_cli/config.cr b/src/snipline_cli/config.cr index e98554a..d952f44 100644 --- a/src/snipline_cli/config.cr +++ b/src/snipline_cli/config.cr @@ -16,8 +16,8 @@ module SniplineCli # When a new instance is created the config file is read and parsed. def initialize - if File.exists?(File.expand_path(SniplineCli.config_file, home: true)) - config_file = File.read(File.expand_path(SniplineCli.config_file, home: true)) + if File.exists?(File.expand_path(SniplineCli.config_file)) + config_file = File.read(File.expand_path(SniplineCli.config_file)) toml = TOML.parse(config_file) @api = toml["api"].as(Hash(String, TOML::Type)) @general = toml["general"].as(Hash(String, TOML::Type)) diff --git a/src/snipline_cli/services/create_config_directory.cr b/src/snipline_cli/services/create_config_directory.cr index 2c03135..649e1c2 100644 --- a/src/snipline_cli/services/create_config_directory.cr +++ b/src/snipline_cli/services/create_config_directory.cr @@ -3,7 +3,7 @@ module SniplineCli # Creates a config directory for storing configuration files for SnipCLI. class CreateConfigDirectory def self.run(file) - directory_name = File.expand_path(File.dirname(file), home: true) + directory_name = File.expand_path(File.dirname(file)) unless File.directory?(directory_name) SniplineCli.log.debug("Making config directory #{directory_name}") Dir.mkdir(directory_name) diff --git a/src/snipline_cli/services/edit_snippet.cr b/src/snipline_cli/services/edit_snippet.cr index 0257193..066c7b3 100644 --- a/src/snipline_cli/services/edit_snippet.cr +++ b/src/snipline_cli/services/edit_snippet.cr @@ -13,7 +13,7 @@ module SniplineCli temp_file = TempSnippetEditorFile.new(snippet) temp_file.create loop do - system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)}") + system("#{ENV["EDITOR"]} #{File.expand_path("#{config.get("general.temp_dir")}/temp.toml")}") snippet_attributes = temp_file.read snippet.name = snippet_attributes.name snippet.real_command = snippet_attributes.real_command diff --git a/src/snipline_cli/services/load_snippets.cr b/src/snipline_cli/services/load_snippets.cr index b478ba5..91de8d7 100644 --- a/src/snipline_cli/services/load_snippets.cr +++ b/src/snipline_cli/services/load_snippets.cr @@ -10,11 +10,11 @@ module SniplineCli config = SniplineCli.config log = SniplineCli.log log.info("Looking through file #{config.get("general.db")}") - unless File.readable?(File.expand_path(config.get("general.db"), home: true)) + unless File.readable?(File.expand_path(config.get("general.db"))) log.warn("Could not read #{config.get("general.db")}") abort("Run #{"snipline-cli sync".colorize(:green)} first") end - # File.open(File.expand_path(config.get("general.db"), home: true)) do |file| + # File.open(File.expand_path(config.get("general.db"))) do |file| # snippets = Array(Snippet).from_json(file) # end Repo.all(Snippet) diff --git a/src/snipline_cli/services/migrator.cr b/src/snipline_cli/services/migrator.cr index aa84977..f6c4b76 100644 --- a/src/snipline_cli/services/migrator.cr +++ b/src/snipline_cli/services/migrator.cr @@ -8,8 +8,8 @@ module SniplineCli::Services class Migrator def self.run config = SniplineCli.config - File.write(File.expand_path(config.get("general.db"), home: true), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"), home: true)) - DB.open "sqlite3:#{File.expand_path(config.get("general.db"), home: true)}" do |db| + File.write(File.expand_path(config.get("general.db")), "", mode: "w") unless File.exists?(File.expand_path(config.get("general.db"))) + DB.open "sqlite3:#{File.expand_path(config.get("general.db"))}" do |db| db.exec "create table if not exists snippets ( local_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cloud_id TEXT NULL, @@ -31,9 +31,9 @@ module SniplineCli::Services end # Import 0.2.0 snippets from JSON file - if File.exists?(File.expand_path(config.get("general.file"), home: true)) + if File.exists?(File.expand_path(config.get("general.file"))) # Get the snippets - json = File.read(File.expand_path(config.get("general.file"), home: true)) + json = File.read(File.expand_path(config.get("general.file"))) # import into DB p "Importing JSON snippets into SQLite Database" Array(SnippetParser).from_json(json).each do |snippet_json| @@ -55,14 +55,13 @@ module SniplineCli::Services puts "#{error.inspect}".colorize(:red) end p "" - p "Please fix this error and re-run the init command".colorize(:red) - abort() + abort("Please fix this error and re-run the init command") end if changeset.valid? Repo.insert(changeset) end end - File.delete(File.expand_path(config.get("general.file"), home: true)) + File.delete(File.expand_path(config.get("general.file"))) end end end diff --git a/src/snipline_cli/services/store_snippets.cr b/src/snipline_cli/services/store_snippets.cr index 88ceb3a..f31b0ab 100644 --- a/src/snipline_cli/services/store_snippets.cr +++ b/src/snipline_cli/services/store_snippets.cr @@ -6,13 +6,13 @@ module SniplineCli::Services # Takes an array of snippets and saves them to the `snippet.json` file. def store(snippets) config = SniplineCli.config - directory = File.dirname(File.expand_path(config.get("general.file"), home: true)) + directory = File.dirname(File.expand_path(config.get("general.file"))) unless File.directory?(directory) puts "Creating #{directory} directory" - Dir.mkdir(File.expand_path(directory, home: true)) + Dir.mkdir(File.expand_path(directory)) end - File.write(File.expand_path(config.get("general.file"), home: true), snippets, mode: "w") - unless File.writable?(File.expand_path(config.get("general.file"), home: true)) + File.write(File.expand_path(config.get("general.file")), snippets, mode: "w") + unless File.writable?(File.expand_path(config.get("general.file"))) raise Exception.new("Sync Failed: File not writable (#{config.get("general.file")}") end end diff --git a/src/snipline_cli/services/temp_snippet_editor_file.cr b/src/snipline_cli/services/temp_snippet_editor_file.cr index b7a7f0b..dda4d18 100644 --- a/src/snipline_cli/services/temp_snippet_editor_file.cr +++ b/src/snipline_cli/services/temp_snippet_editor_file.cr @@ -42,14 +42,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} def create config = SniplineCli.config - unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) - File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true), @template) + unless File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) + File.write(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"), @template) end end def read config = SniplineCli.config - toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))) + toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) SnippetAttributeParser.new( name: toml["name"].as(String), real_command: toml["real_command"].as(String), @@ -71,14 +71,14 @@ sync_to_cloud = #{SniplineCli.config.get("api.token") == "" ? "false" : "true"} def sync_to_cloud? config = SniplineCli.config - toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true))) + toml = TOML.parse(File.read(File.expand_path("#{config.get("general.temp_dir")}/temp.toml"))) toml["sync_to_cloud"].as(Bool) end def delete config = SniplineCli.config - if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) - File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml", home: true)) + if File.exists?(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) + File.delete(File.expand_path("#{config.get("general.temp_dir")}/temp.toml")) end end end From b1b07a9a989941d2bd529685f41a38763f570c4e Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 9 Jan 2020 10:30:03 +0000 Subject: [PATCH 43/47] Update changelog for new release --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db6ea21..248457b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## 0.3.0 + +### Features + +* Upgraded Crystal to 0.31.1 +* Overhauled the search command + * New NCurses TUI + * Fuzzy match searching. + * Deleting snippets via search. + * Editing snippets via search. + * Copy/run snippets via search +* Ability to edit and delete commands through the search interface. +* Moved from JSON storage to Sqlite - including a built in migration process +* Syncing snippets improvements: + * New local-only snippets will sync back to Snipline Cloud. + * Snipline Cloud snippets will now delete locally on sync. + * Locally edited snippets will sync back to Snipline Cloud. + * New `--dry-run` flag to see what will change during sync. + * New `--verbose` flag to see what has changed during sync. + +### Changes + +* Refactoring and testing to various classes. +* Snippets are now stored in an Sqlite database rather than JSON file. +* `sync` command now migrates the Sqlite database. +* Added Crecto for managing snippets from Sqlite. + +### Bugfixes + +None + ## 0.2.0 ### Features From 8b3342b26c3d9745b050d5a8e6e8a6f7024d5042 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Thu, 9 Jan 2020 10:33:39 +0000 Subject: [PATCH 44/47] Added removed web command to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 248457b..7e73bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ None * `search` command now copies the selected snippet instead of running. * Updated Crystal to `0.30.1` * Updated `lodash` dependency for `web` interface. +* Removed `web` command. ### Bugfixes From 23cdaf7fd79ee99e17969fb07b537d0da8d75745 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 10 Jan 2020 13:37:21 +0000 Subject: [PATCH 45/47] Migrate the database on init --- src/snipline_cli/commands/init.cr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/snipline_cli/commands/init.cr b/src/snipline_cli/commands/init.cr index 5375354..6c65d45 100644 --- a/src/snipline_cli/commands/init.cr +++ b/src/snipline_cli/commands/init.cr @@ -10,6 +10,8 @@ module SniplineCli define_help description: "Initialise Snipline CLI without logging in" def run + puts "Migrating Database..." + Migrator.run config = SniplineCli.config toml_contents = <<-TOML title = "Snipline" From 8737d1811e5ea8d5a56a46ce86e02bbda4e1b444 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 10 Jan 2020 13:44:32 +0000 Subject: [PATCH 46/47] Adjust password special parameters --- src/snipline_cli/services/command_builder.cr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index fa171c2..82ad621 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -38,8 +38,7 @@ module SniplineCli p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 - 9 0 £ * ^ ] [ : ; | ? , . - ` ~ /} + 9 0 £ ] \} : . _ @ } snippet.uninteractive_params.each do |param| # todo: use string builder instead generated_password = "" From 8fffe56193fc52e1554a24ee9a5a74af4cf1fbf4 Mon Sep 17 00:00:00 2001 From: Mitchell Stanley Date: Fri, 10 Jan 2020 13:53:51 +0000 Subject: [PATCH 47/47] Run Ameba and fix migrator test --- spec/services/migrator_spec.cr | 20 ++++++++++++-------- src/snipline_cli/services/command_builder.cr | 3 +-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spec/services/migrator_spec.cr b/spec/services/migrator_spec.cr index 02a4f2c..64f2945 100644 --- a/spec/services/migrator_spec.cr +++ b/spec/services/migrator_spec.cr @@ -1,12 +1,4 @@ describe SniplineCli::Services::Migrator do - after_each do - if File.exists?("./snippets.json") - File.delete("./snippets.json") - end - if File.exists?("./test.db") - File.delete("./test.db") - end - end it "should create and migrate a DB from scratch" do File.exists?("./test.db").should eq(false) @@ -15,6 +7,12 @@ describe SniplineCli::Services::Migrator do DB.open "sqlite3:./test.db" do |db| db.scalar("select count(*) from snippets").should eq(0) end + if File.exists?("./snippets.json") + File.delete("./snippets.json") + end + if File.exists?("./test.db") + File.delete("./test.db") + end end it "should import any previously created json snippets" do @@ -27,5 +25,11 @@ describe SniplineCli::Services::Migrator do end # File.exists?("./snippets.json").should eq(false) + if File.exists?("./snippets.json") + File.delete("./snippets.json") + end + if File.exists?("./test.db") + File.delete("./test.db") + end end end diff --git a/src/snipline_cli/services/command_builder.cr b/src/snipline_cli/services/command_builder.cr index 82ad621..b9ab1b7 100644 --- a/src/snipline_cli/services/command_builder.cr +++ b/src/snipline_cli/services/command_builder.cr @@ -33,12 +33,11 @@ module SniplineCli end end - # ameba:disable Lint/PercentArrays password_characters = %w{a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 - 9 0 £ ] \} : . _ @ } + 9 0 £ ] \} : . _ @} snippet.uninteractive_params.each do |param| # todo: use string builder instead generated_password = ""