From 19d85d783054cd4ed52b289e1682e99676c279d2 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Mon, 16 Nov 2020 14:43:13 -0800 Subject: [PATCH 001/199] initial commit --- .browserslistrc | 1 + .gitignore | 36 + .ruby-version | 1 + Gemfile | 78 + Gemfile.lock | 298 + Guardfile | 9 + Rakefile | 6 + app/assets/config/manifest.js | 2 + app/assets/images/.keep | 0 app/assets/stylesheets/application.scss | 18 + app/channels/application_cable/channel.rb | 4 + app/channels/application_cable/connection.rb | 4 + app/controllers/application_controller.rb | 2 + app/controllers/concerns/.keep | 0 app/helpers/application_helper.rb | 2 + app/javascript/channels/consumer.js | 6 + app/javascript/channels/index.js | 5 + app/javascript/packs/application.js | 19 + app/jobs/application_job.rb | 7 + app/mailers/application_mailer.rb | 4 + app/models/application_record.rb | 3 + app/models/concerns/.keep | 0 app/views/layouts/application.html.erb | 15 + app/views/layouts/mailer.html.erb | 13 + app/views/layouts/mailer.text.erb | 1 + babel.config.js | 72 + bin/bundle | 114 + bin/rails | 9 + bin/rake | 9 + bin/setup | 36 + bin/spring | 17 + bin/webpack | 18 + bin/webpack-dev-server | 18 + bin/yarn | 11 + config.ru | 5 + config/application.rb | 23 + config/boot.rb | 4 + config/cable.yml | 10 + config/credentials.yml.enc | 1 + config/database.yml | 85 + config/environment.rb | 5 + config/environments/development.rb | 62 + config/environments/production.rb | 112 + config/environments/test.rb | 49 + config/initializers/action_view.rb | 1 + .../application_controller_renderer.rb | 8 + config/initializers/assets.rb | 14 + config/initializers/backtrace_silencers.rb | 7 + .../initializers/content_security_policy.rb | 30 + config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 + config/initializers/mime_types.rb | 4 + config/initializers/wrap_parameters.rb | 14 + config/locales/en.yml | 33 + config/puma.rb | 38 + config/routes.rb | 3 + config/spring.rb | 6 + config/storage.yml | 34 + config/webpack/development.js | 5 + config/webpack/environment.js | 13 + config/webpack/production.js | 5 + config/webpack/test.js | 5 + config/webpacker.yml | 96 + db/schema.rb | 18 + db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 package.json | 18 + postcss.config.js | 12 + public/404.html | 67 + public/422.html | 67 + public/500.html | 66 + public/apple-touch-icon-precomposed.png | 0 public/apple-touch-icon.png | 0 public/favicon.ico | 0 public/robots.txt | 1 + storage/.keep | 0 test/application_system_test_case.rb | 5 + .../application_cable/connection_test.rb | 11 + test/controllers/.keep | 0 test/fixtures/.keep | 0 test/fixtures/files/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/system/.keep | 0 test/test_helper.rb | 21 + tmp/.keep | 0 tmp/pids/.keep | 0 vendor/.keep | 0 yarn.lock | 7638 +++++++++++++++++ 94 files changed, 9466 insertions(+) create mode 100644 .browserslistrc create mode 100644 .gitignore create mode 100644 .ruby-version create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Guardfile create mode 100644 Rakefile create mode 100644 app/assets/config/manifest.js create mode 100644 app/assets/images/.keep create mode 100644 app/assets/stylesheets/application.scss create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/helpers/application_helper.rb create mode 100644 app/javascript/channels/consumer.js create mode 100644 app/javascript/channels/index.js create mode 100644 app/javascript/packs/application.js create mode 100644 app/jobs/application_job.rb create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/application_record.rb create mode 100644 app/models/concerns/.keep create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb create mode 100644 babel.config.js create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100755 bin/webpack create mode 100755 bin/webpack-dev-server create mode 100755 bin/yarn create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/cable.yml create mode 100644 config/credentials.yml.enc create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/action_view.rb create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/content_security_policy.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/puma.rb create mode 100644 config/routes.rb create mode 100644 config/spring.rb create mode 100644 config/storage.yml create mode 100644 config/webpack/development.js create mode 100644 config/webpack/environment.js create mode 100644 config/webpack/production.js create mode 100644 config/webpack/test.js create mode 100644 config/webpacker.yml create mode 100644 db/schema.rb create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/apple-touch-icon-precomposed.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 storage/.keep create mode 100644 test/application_system_test_case.rb create mode 100644 test/channels/application_cable/connection_test.rb create mode 100644 test/controllers/.keep create mode 100644 test/fixtures/.keep create mode 100644 test/fixtures/files/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/system/.keep create mode 100644 test/test_helper.rb create mode 100644 tmp/.keep create mode 100644 tmp/pids/.keep create mode 100644 vendor/.keep create mode 100644 yarn.lock diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000000..e94f8140cc --- /dev/null +++ b/.browserslistrc @@ -0,0 +1 @@ +defaults diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..f22dd34725 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/ +!/tmp/pids/.keep + +# Ignore uploaded files in development. +/storage/* +!/storage/.keep + +/public/assets +.byebug_history + +# Ignore master key for decrypting credentials and more. +/config/master.key + +/public/packs +/public/packs-test +/node_modules +/yarn-error.log +yarn-debug.log* +.yarn-integrity diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000000..57cf282ebb --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.5 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..48cdee19cb --- /dev/null +++ b/Gemfile @@ -0,0 +1,78 @@ +source 'https://rubygems.org' +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby '2.6.5' + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 6.0.3', '>= 6.0.3.4' +# Use postgresql as the database for Active Record +gem 'pg', '>= 0.18', '< 2.0' +# Use Puma as the app server +gem 'puma', '~> 4.1' +# Use SCSS for stylesheets +gem 'sass-rails', '>= 6' +# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker +gem 'webpacker', '~> 4.0' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.7' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 4.0' +# Use Active Model has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Active Storage variant +# gem 'image_processing', '~> 1.2' + +# Reduces boot times through caching; required in config/boot.rb +gem 'bootsnap', '>= 1.4.2', require: false + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] +end + +group :development do + # Access an interactive console on exception pages or by calling 'console' anywhere in the code. + gem 'web-console', '>= 3.3.0' + gem 'listen', '~> 3.2' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end + +group :test do + # Adds support for Capybara system testing and selenium driver + gem 'capybara', '>= 2.15' + gem 'selenium-webdriver' + # Easy installation and use of web drivers to run system tests with browsers + gem 'webdrivers' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +gem 'jquery-rails' +gem 'jquery-turbolinks' +gem 'bootstrap' +group :development, :test do + gem 'pry-rails' +end + +group :development do + gem 'guard' + gem 'guard-minitest' + gem 'debase', '>= 0.2.4.1' + gem 'ruby-debug-ide', '>= 0.7.0' +end + +group :development do + gem 'better_errors' + gem 'binding_of_caller' +end + +group :test do + gem 'minitest-rails' + gem 'minitest-reporters' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..6283750b6c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,298 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.0.3.4) + actionpack (= 6.0.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.0.3.4) + actionpack (= 6.0.3.4) + activejob (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + mail (>= 2.7.1) + actionmailer (6.0.3.4) + actionpack (= 6.0.3.4) + actionview (= 6.0.3.4) + activejob (= 6.0.3.4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.0.3.4) + actionview (= 6.0.3.4) + activesupport (= 6.0.3.4) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.0.3.4) + actionpack (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + nokogiri (>= 1.8.5) + actionview (6.0.3.4) + activesupport (= 6.0.3.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.0.3.4) + activesupport (= 6.0.3.4) + globalid (>= 0.3.6) + activemodel (6.0.3.4) + activesupport (= 6.0.3.4) + activerecord (6.0.3.4) + activemodel (= 6.0.3.4) + activesupport (= 6.0.3.4) + activestorage (6.0.3.4) + actionpack (= 6.0.3.4) + activejob (= 6.0.3.4) + activerecord (= 6.0.3.4) + marcel (~> 0.3.1) + activesupport (6.0.3.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + ansi (1.5.0) + autoprefixer-rails (10.0.2.0) + execjs + better_errors (2.9.1) + coderay (>= 1.0.0) + erubi (>= 1.0.0) + rack (>= 0.9.0) + bindex (0.8.1) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + bootsnap (1.5.1) + msgpack (~> 1.0) + bootstrap (4.5.3) + autoprefixer-rails (>= 9.1.0) + popper_js (>= 1.14.3, < 2) + sassc-rails (>= 2.0.0) + builder (3.2.4) + byebug (11.1.3) + capybara (3.33.0) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (~> 1.5) + xpath (~> 3.2) + childprocess (3.0.0) + coderay (1.1.3) + concurrent-ruby (1.1.7) + crass (1.0.6) + debase (2.3.0) + debase-ruby_core_source (~> 0.10.10) + debase-ruby_core_source (0.10.11) + debug_inspector (0.0.3) + erubi (1.10.0) + execjs (2.7.0) + ffi (1.13.1) + formatador (0.2.5) + globalid (0.4.2) + activesupport (>= 4.2.0) + guard (2.16.2) + formatador (>= 0.2.4) + listen (>= 2.7, < 4.0) + lumberjack (>= 1.0.12, < 2.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-minitest (2.4.6) + guard-compat (~> 1.2) + minitest (>= 3.0) + i18n (1.8.5) + concurrent-ruby (~> 1.0) + jbuilder (2.10.1) + activesupport (>= 5.0.0) + jquery-rails (4.4.0) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + jquery-turbolinks (2.1.0) + railties (>= 3.1.0) + turbolinks + listen (3.3.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + loofah (2.7.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + lumberjack (1.2.8) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (0.3.3) + mimemagic (~> 0.3.2) + method_source (1.0.0) + mimemagic (0.3.5) + mini_mime (1.0.2) + mini_portile2 (2.4.0) + minitest (5.14.2) + minitest-rails (6.0.1) + minitest (~> 5.10) + railties (~> 6.0.0) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + msgpack (1.3.3) + nenv (0.3.0) + nio4r (2.5.4) + nokogiri (1.10.10) + mini_portile2 (~> 2.4.0) + notiffany (0.1.3) + nenv (~> 0.1) + shellany (~> 0.0) + pg (1.2.3) + popper_js (1.16.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + pry-rails (0.3.9) + pry (>= 0.10.4) + public_suffix (4.0.6) + puma (4.3.6) + nio4r (~> 2.0) + rack (2.2.3) + rack-proxy (0.6.5) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (6.0.3.4) + actioncable (= 6.0.3.4) + actionmailbox (= 6.0.3.4) + actionmailer (= 6.0.3.4) + actionpack (= 6.0.3.4) + actiontext (= 6.0.3.4) + actionview (= 6.0.3.4) + activejob (= 6.0.3.4) + activemodel (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + bundler (>= 1.3.0) + railties (= 6.0.3.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.3.0) + loofah (~> 2.3) + railties (6.0.3.4) + actionpack (= 6.0.3.4) + activesupport (= 6.0.3.4) + method_source + rake (>= 0.8.7) + thor (>= 0.20.3, < 2.0) + rake (13.0.1) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) + regexp_parser (1.8.2) + ruby-debug-ide (2.3.0) + debase (~> 2.3.0) + ruby-progressbar (1.10.1) + rubyzip (2.3.0) + sass-rails (6.0.0) + sassc-rails (~> 2.1, >= 2.1.1) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + selenium-webdriver (3.142.7) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) + shellany (0.0.1) + spring (2.1.1) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) + sprockets (4.0.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.2) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + thor (1.0.1) + thread_safe (0.3.6) + tilt (2.0.10) + turbolinks (5.2.1) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) + tzinfo (1.2.8) + thread_safe (~> 0.1) + web-console (4.1.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + webdrivers (4.4.1) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (>= 3.0, < 4.0) + webpacker (4.3.0) + activesupport (>= 4.2) + rack-proxy (>= 0.6.1) + railties (>= 4.2) + websocket-driver (0.7.3) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.4.1) + +PLATFORMS + ruby + +DEPENDENCIES + better_errors + binding_of_caller + bootsnap (>= 1.4.2) + bootstrap + byebug + capybara (>= 2.15) + debase (>= 0.2.4.1) + guard + guard-minitest + jbuilder (~> 2.7) + jquery-rails + jquery-turbolinks + listen (~> 3.2) + minitest-rails + minitest-reporters + pg (>= 0.18, < 2.0) + pry-rails + puma (~> 4.1) + rails (~> 6.0.3, >= 6.0.3.4) + ruby-debug-ide (>= 0.7.0) + sass-rails (>= 6) + selenium-webdriver + spring + spring-watcher-listen (~> 2.0.0) + turbolinks (~> 5) + tzinfo-data + web-console (>= 3.3.0) + webdrivers + webpacker (~> 4.0) + +RUBY VERSION + ruby 2.6.5p114 + +BUNDLED WITH + 2.1.4 diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000000..e34f706f4a --- /dev/null +++ b/Guardfile @@ -0,0 +1,9 @@ +guard :minitest, autorun: false, spring: true do + watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" } + watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' } + watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" } + watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" } + watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" } + watch(%r{^test/.+_test.rb$}) + watch(%r{^test/test_helper.rb$}) { 'test' } +end diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000000..e85f913914 --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js new file mode 100644 index 0000000000..591819335f --- /dev/null +++ b/app/assets/config/manifest.js @@ -0,0 +1,2 @@ +//= link_tree ../images +//= link_directory ../stylesheets .css diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss new file mode 100644 index 0000000000..17320fb11e --- /dev/null +++ b/app/assets/stylesheets/application.scss @@ -0,0 +1,18 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + */ + +/* Custom bootstrap variables must be set or imported *before* bootstrap. */ +@import "bootstrap"; + +@import "**/*"; diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb new file mode 100644 index 0000000000..d672697283 --- /dev/null +++ b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb new file mode 100644 index 0000000000..0ff5442f47 --- /dev/null +++ b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000000..09705d12ab --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,2 @@ +class ApplicationController < ActionController::Base +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000000..de6be7945c --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/javascript/channels/consumer.js b/app/javascript/channels/consumer.js new file mode 100644 index 0000000000..0eceb59b18 --- /dev/null +++ b/app/javascript/channels/consumer.js @@ -0,0 +1,6 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the `rails generate channel` command. + +import { createConsumer } from "@rails/actioncable" + +export default createConsumer() diff --git a/app/javascript/channels/index.js b/app/javascript/channels/index.js new file mode 100644 index 0000000000..0cfcf74919 --- /dev/null +++ b/app/javascript/channels/index.js @@ -0,0 +1,5 @@ +// Load all the channels within this directory and all subdirectories. +// Channel files must be named *_channel.js. + +const channels = require.context('.', true, /_channel\.js$/) +channels.keys().forEach(channels) diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js new file mode 100644 index 0000000000..529f85b082 --- /dev/null +++ b/app/javascript/packs/application.js @@ -0,0 +1,19 @@ +// This file is automatically compiled by Webpack, along with any other files +// present in this directory. You're encouraged to place your actual application logic in +// a relevant structure within app/javascript and only use these pack files to reference +// that code so it'll be compiled. + +require("@rails/ujs").start() +require("turbolinks").start() +require("@rails/activestorage").start() +require("channels") + +import "bootstrap" + + +// Uncomment to copy all static images under ../images to the output folder and reference +// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) +// or the `imagePath` JavaScript helper below. +// +// const images = require.context('../images', true) +// const imagePath = (name) => images(name, true) diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000000..d394c3d106 --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,7 @@ +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 0000000000..286b2239d1 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 0000000000..10a4cba84d --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000000..74961e61a4 --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,15 @@ + + + + Betsy + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000000..cbd34d2e9d --- /dev/null +++ b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000000..37f0bddbd7 --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..12f98da5af --- /dev/null +++ b/babel.config.js @@ -0,0 +1,72 @@ +module.exports = function(api) { + var validEnv = ['development', 'test', 'production'] + var currentEnv = api.env() + var isDevelopmentEnv = api.env('development') + var isProductionEnv = api.env('production') + var isTestEnv = api.env('test') + + if (!validEnv.includes(currentEnv)) { + throw new Error( + 'Please specify a valid `NODE_ENV` or ' + + '`BABEL_ENV` environment variables. Valid values are "development", ' + + '"test", and "production". Instead, received: ' + + JSON.stringify(currentEnv) + + '.' + ) + } + + return { + presets: [ + isTestEnv && [ + '@babel/preset-env', + { + targets: { + node: 'current' + } + } + ], + (isProductionEnv || isDevelopmentEnv) && [ + '@babel/preset-env', + { + forceAllTransforms: true, + useBuiltIns: 'entry', + corejs: 3, + modules: false, + exclude: ['transform-typeof-symbol'] + } + ] + ].filter(Boolean), + plugins: [ + 'babel-plugin-macros', + '@babel/plugin-syntax-dynamic-import', + isTestEnv && 'babel-plugin-dynamic-import-node', + '@babel/plugin-transform-destructuring', + [ + '@babel/plugin-proposal-class-properties', + { + loose: true + } + ], + [ + '@babel/plugin-proposal-object-rest-spread', + { + useBuiltIns: true + } + ], + [ + '@babel/plugin-transform-runtime', + { + helpers: false, + regenerator: true, + corejs: false + } + ], + [ + '@babel/plugin-transform-regenerator', + { + async: false + } + ] + ].filter(Boolean) + } +} diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000000..a71368e323 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,114 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../../Gemfile", __FILE__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_version + @bundler_version ||= + env_var_version || cli_arg_version || + lockfile_version + end + + def bundler_requirement + return "#{Gem::Requirement.default}.a" unless bundler_version + + bundler_gem_version = Gem::Version.new(bundler_version) + + requirement = bundler_gem_version.approximate_recommendation + + return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0") + + requirement += ".a" if bundler_gem_version.prerelease? + + requirement + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + activate_bundler + end + + def activate_bundler + gem_error = activation_error_handling do + gem "bundler", bundler_requirement + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000000..5badb2fde0 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000000..d87d5f5781 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000000..5853b5ea87 --- /dev/null +++ b/bin/setup @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby +require 'fileutils' + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +FileUtils.chdir APP_ROOT do + # This script is a way to setup or update your development environment automatically. + # This script is idempotent, so that you can run it at anytime and get an expectable outcome. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies + # system('bin/yarn') + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # FileUtils.cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:prepare' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 0000000000..d89ee495fa --- /dev/null +++ b/bin/spring @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +# This file loads Spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) + spring = lockfile.specs.detect { |spec| spec.name == 'spring' } + if spring + Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path + gem 'spring', spring.version + require 'spring/binstub' + end +end diff --git a/bin/webpack b/bin/webpack new file mode 100755 index 0000000000..1031168d01 --- /dev/null +++ b/bin/webpack @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/webpack_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::WebpackRunner.run(ARGV) +end diff --git a/bin/webpack-dev-server b/bin/webpack-dev-server new file mode 100755 index 0000000000..dd9662737a --- /dev/null +++ b/bin/webpack-dev-server @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/dev_server_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::DevServerRunner.run(ARGV) +end diff --git a/bin/yarn b/bin/yarn new file mode 100755 index 0000000000..460dd565b4 --- /dev/null +++ b/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +APP_ROOT = File.expand_path('..', __dir__) +Dir.chdir(APP_ROOT) do + begin + exec "yarnpkg", *ARGV + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000000..f7ba0b527b --- /dev/null +++ b/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000000..39167e2e9a --- /dev/null +++ b/config/application.rb @@ -0,0 +1,23 @@ +require_relative 'boot' + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Betsy + class Application < Rails::Application + config.generators do |g| + # Force new test files to be generated in the minitest-spec style + g.test_framework :minitest, spec: true + end + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 6.0 + + # Settings in config/environments/* take precedence over those specified here. + # Application configuration can go into files in config/initializers + # -- all .rb files in that directory are automatically loaded after loading + # the framework and any gems in your application. + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000000..b9e460cef3 --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,4 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000000..f2a452f546 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: test + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: betsy_production diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc new file mode 100644 index 0000000000..9cb41d15d2 --- /dev/null +++ b/config/credentials.yml.enc @@ -0,0 +1 @@ +r8kiHaiQIiHKPt7muPbHIrakcvQPmEGPfleu80qzFmkbGJ9d920oVNtfyDCKP1LTNHoXHwVIYP2t8aXnAzXFwNjRG4F6vwCOH4cZQ/dsZlTcazMteFAQ1+SoocIELe2Iu7cZPmMihFAT/YW12FeunmcbCc967aAOckDYESNd6tGHP679kpYBTmrACvaz3DLAU7DYCUuIHa88r9UjkP0hU185yRXpWEXRIcypl36YyBODgJZhPF3XGV4Qy/cZK+8eXUT329bT3o1o2W7hlxAussw7TwKiONbRgmfWWUzUzzrYdhz/dc3UzbVEkTJcWwbc0caFShSNfNPfZrvTnD5kvDxKFTfze5HJ6i4WED/hzG+gJcBACM1mKw4S8KdAojzJmQtky9GVnmN0sNz5jNaYKFFuftXucdj+hgAg--JrFEVcxA+vKUNvy4--C8xvLcSiCQdHVAGp7mca4g== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000000..8b9bc23f0c --- /dev/null +++ b/config/database.yml @@ -0,0 +1,85 @@ +# PostgreSQL. Versions 9.3 and up are supported. +# +# Install the pg driver: +# gem install pg +# On macOS with Homebrew: +# gem install pg -- --with-pg-config=/usr/local/bin/pg_config +# On macOS with MacPorts: +# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config +# On Windows: +# gem install pg +# Choose the win32 build. +# Install PostgreSQL and put its /bin directory on your path. +# +# Configure Using Gemfile +# gem 'pg' +# +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see Rails configuration guide + # https://guides.rubyonrails.org/configuring.html#database-pooling + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + +development: + <<: *default + database: betsy_development + + # The specified database role being used to connect to postgres. + # To create additional roles in postgres see `$ createuser --help`. + # When left blank, postgres will use the default role. This is + # the same name as the operating system user that initialized the database. + #username: betsy + + # The password associated with the postgres role (username). + #password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + + # The TCP port the server listens on. Defaults to 5432. + # If your server runs on a different port number, change accordingly. + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # log, notice, warning, error, fatal, and panic + # Defaults to warning. + #min_messages: notice + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: betsy_test + +# As with config/credentials.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password as a unix environment variable when you boot +# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full rundown on how to provide these environment variables in a +# production deployment. +# +# On Heroku and other platform providers, you may have a full connection URL +# available as an environment variable. For example: +# +# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" +# +# You can use this database configuration with: +# +# production: +# url: <%= ENV['DATABASE_URL'] %> +# +production: + <<: *default + database: betsy_production + username: betsy + password: <%= ENV['BETSY_DATABASE_PASSWORD'] %> diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000000..426333bb46 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000000..66df51f6fc --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,62 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join('tmp', 'caching-dev.txt').exist? + config.action_controller.perform_caching = true + config.action_controller.enable_fragment_cache_logging = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations. + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000000..cd0d255545 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,112 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress CSS using a preprocessor. + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain. + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment). + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "betsy_production" + + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false + + # Inserts middleware to perform automatic connection switching. + # The `database_selector` hash is used to pass options to the DatabaseSelector + # middleware. The `delay` is used to determine how long to wait after a write + # to send a subsequent read to the primary. + # + # The `database_resolver` class is used by the middleware to determine which + # database is appropriate to use based on the time delay. + # + # The `database_resolver_context` class is used by the middleware to set + # timestamps for the last write to the primary. The resolver uses the context + # class timestamps to determine how long to wait before reading from the + # replica. + # + # By default Rails will store a last write timestamp in the session. The + # DatabaseSelector middleware is designed as such you can define your own + # strategy for connection switching and pass that into the middleware through + # these configuration options. + # config.active_record.database_selector = { delay: 2.seconds } + # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver + # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000000..0cb24249b5 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,49 @@ +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + config.cache_classes = false + config.action_view.cache_template_loading = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + config.cache_store = :null_store + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory. + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations. + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/action_view.rb b/config/initializers/action_view.rb new file mode 100644 index 0000000000..142d382f87 --- /dev/null +++ b/config/initializers/action_view.rb @@ -0,0 +1 @@ +Rails.application.config.action_view.form_with_generates_remote_forms = false diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000000..89d2efab2b --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000000..4b828e80cb --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000000..59385cdf37 --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 0000000000..35d0f26fcd --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,30 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https +# # If you are using webpack-dev-server then specify webpack-dev-server host +# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? + +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end + +# If you are using UJS then enable automatic nonce generation +# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + +# Set the nonce only to specific directives +# Rails.application.config.content_security_policy_nonce_directives = %w(script-src) + +# Report CSP violations to a specified URI +# For further information see the following documentation: +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# Rails.application.config.content_security_policy_report_only = true diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000000..5a6a32d371 --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000000..4a994e1e7b --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000000..ac033bf9dc --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 0000000000..dc1899682b --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000000..bbfc3961bf --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000000..cf9b342d0a --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at https://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000000..5ed4437744 --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,38 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked web server processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +# preload_app! + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000000..c06383a172 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html +end diff --git a/config/spring.rb b/config/spring.rb new file mode 100644 index 0000000000..db5bf1307a --- /dev/null +++ b/config/spring.rb @@ -0,0 +1,6 @@ +Spring.watch( + ".ruby-version", + ".rbenv-vars", + "tmp/restart.txt", + "tmp/caching-dev.txt" +) diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 0000000000..d32f76e8fb --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/config/webpack/development.js b/config/webpack/development.js new file mode 100644 index 0000000000..c5edff94ad --- /dev/null +++ b/config/webpack/development.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'development' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpack/environment.js b/config/webpack/environment.js new file mode 100644 index 0000000000..1a4f73eecb --- /dev/null +++ b/config/webpack/environment.js @@ -0,0 +1,13 @@ +const { environment } = require('@rails/webpacker') + +module.exports = environment + +const webpack = require('webpack') +environment.plugins.append( + 'Provide', + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery', + Popper: ['popper.js', 'default'] + }) +) diff --git a/config/webpack/production.js b/config/webpack/production.js new file mode 100644 index 0000000000..be0f53aacf --- /dev/null +++ b/config/webpack/production.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'production' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpack/test.js b/config/webpack/test.js new file mode 100644 index 0000000000..c5edff94ad --- /dev/null +++ b/config/webpack/test.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'development' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpacker.yml b/config/webpacker.yml new file mode 100644 index 0000000000..8581ac0472 --- /dev/null +++ b/config/webpacker.yml @@ -0,0 +1,96 @@ +# Note: You must restart bin/webpack-dev-server for changes to take effect + +default: &default + source_path: app/javascript + source_entry_path: packs + public_root_path: public + public_output_path: packs + cache_path: tmp/cache/webpacker + check_yarn_integrity: false + webpack_compile_output: true + + # Additional paths webpack should lookup modules + # ['app/assets', 'engine/foo/app/assets'] + resolved_paths: [] + + # Reload manifest.json on all requests so we reload latest compiled packs + cache_manifest: false + + # Extract and emit a css file + extract_css: false + + static_assets_extensions: + - .jpg + - .jpeg + - .png + - .gif + - .tiff + - .ico + - .svg + - .eot + - .otf + - .ttf + - .woff + - .woff2 + + extensions: + - .mjs + - .js + - .sass + - .scss + - .css + - .module.sass + - .module.scss + - .module.css + - .png + - .svg + - .gif + - .jpeg + - .jpg + +development: + <<: *default + compile: true + + # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules + check_yarn_integrity: true + + # Reference: https://webpack.js.org/configuration/dev-server/ + dev_server: + https: false + host: localhost + port: 3035 + public: localhost:3035 + hmr: false + # Inline should be set to true if using HMR + inline: true + overlay: true + compress: true + disable_host_check: true + use_local_ip: false + quiet: false + pretty: false + headers: + 'Access-Control-Allow-Origin': '*' + watch_options: + ignored: '**/node_modules/**' + + +test: + <<: *default + compile: true + + # Compile test packs to a separate directory + public_output_path: packs-test + +production: + <<: *default + + # Production depends on precompilation of packs prior to booting for performance. + compile: false + + # Extract and emit a css file + extract_css: true + + # Cache manifest.json for performance + cache_manifest: true diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..b10373ba60 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,18 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `rails +# db:schema:load`. When creating a new database, `rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 0) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + +end diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000000..1beea2accd --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package.json b/package.json new file mode 100644 index 0000000000..1d56e43d97 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "betsy", + "private": true, + "dependencies": { + "@rails/actioncable": "^6.0.0", + "@rails/activestorage": "^6.0.0", + "@rails/ujs": "^6.0.0", + "@rails/webpacker": "4.3.0", + "bootstrap": "^4.5.3", + "jquery": "^3.5.1", + "popper.js": "^1.16.1", + "turbolinks": "^5.2.0" + }, + "version": "0.1.0", + "devDependencies": { + "webpack-dev-server": "^3.11.0" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000000..aa5998a809 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,12 @@ +module.exports = { + plugins: [ + require('postcss-import'), + require('postcss-flexbugs-fixes'), + require('postcss-preset-env')({ + autoprefixer: { + flexbox: 'no-2009' + }, + stage: 3 + }) + ] +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000000..2be3af26fc --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 0000000000..c08eac0d1d --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 0000000000..78a030af22 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..c19f78ab68 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1 @@ +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/storage/.keep b/storage/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb new file mode 100644 index 0000000000..d19212abd5 --- /dev/null +++ b/test/application_system_test_case.rb @@ -0,0 +1,5 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/test/channels/application_cable/connection_test.rb b/test/channels/application_cable/connection_test.rb new file mode 100644 index 0000000000..800405f15e --- /dev/null +++ b/test/channels/application_cable/connection_test.rb @@ -0,0 +1,11 @@ +require "test_helper" + +class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase + # test "connects with cookies" do + # cookies.signed[:user_id] = 42 + # + # connect + # + # assert_equal connection.user_id, "42" + # end +end diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/system/.keep b/test/system/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000000..b19af0d5bd --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,21 @@ +ENV['RAILS_ENV'] ||= 'test' +require_relative '../config/environment' +require 'rails/test_help' +require "minitest/rails" +require "minitest/reporters" # for Colorized output +# For colorful output! +Minitest::Reporters.use!( + Minitest::Reporters::SpecReporter.new, + ENV, + Minitest.backtrace_filter +) + +class ActiveSupport::TestCase + # Run tests in parallel with specified workers + # parallelize(workers: :number_of_processors) # causes out of order output. + + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tmp/pids/.keep b/tmp/pids/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/.keep b/vendor/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..d8487b4546 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7638 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.5.tgz#f56db0c4bb1bbbf221b4e81345aab4141e7cb0e9" + integrity sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg== + +"@babel/core@^7.7.2": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== + dependencies: + "@babel/types" "^7.12.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz#b1ce757156d40ed79d59d467cb2b154a5c4149ba" + integrity sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.6.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.6.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@^7.6.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.7.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" + integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.5" + "@babel/types" "^7.12.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.4.4": + version "7.12.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@rails/actioncable@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-6.0.3.tgz#722b4b639936129307ddbab3a390f6bcacf3e7bc" + integrity sha512-I01hgqxxnOgOtJTGlq0ZsGJYiTEEiSGVEGQn3vimZSqEP1HqzyFNbzGTq14Xdyeow2yGJjygjoFF1pmtE+SQaw== + +"@rails/activestorage@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-6.0.3.tgz#401d2a28ecb7167cdb5e830ffddaa17c308c31aa" + integrity sha512-YdNwyfryHlcKj7Ruix89wZ2aiN3KTYULdW1Y/hNlHJlrY2/PXjT2YBTzZiVd+dcjrwHBsXV2rExdy+Z/lsrlEg== + dependencies: + spark-md5 "^3.0.0" + +"@rails/ujs@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.0.3.tgz#e68a03278e30daea6a110aac5dfa33c60c53055d" + integrity sha512-CM9OEvoN9eXkaX7PXEnbsQLULJ97b9rVmwliZbz/iBOERLJ68Rk3ClJe+fQEMKU4CBZfky2lIRnfslOdUs9SLQ== + +"@rails/webpacker@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-4.3.0.tgz#3793b3aed08ed0b661f1bed9de0739abacb6a834" + integrity sha512-DmKGjKugLeeytT1TO9fUBBjdA3YwQ19zoWK5JDL8V1rM0bf6WRf1n9DZTiVmuf0WO1gp5ej5pJ9b3NjZwfAz4Q== + dependencies: + "@babel/core" "^7.7.2" + "@babel/plugin-proposal-class-properties" "^7.7.0" + "@babel/plugin-proposal-object-rest-spread" "^7.6.2" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.6.0" + "@babel/plugin-transform-regenerator" "^7.7.0" + "@babel/plugin-transform-runtime" "^7.6.2" + "@babel/preset-env" "^7.7.1" + "@babel/runtime" "^7.7.2" + babel-loader "^8.0.6" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-macros "^2.6.1" + case-sensitive-paths-webpack-plugin "^2.2.0" + compression-webpack-plugin "^4.0.0" + core-js "^3.4.0" + css-loader "^3.2.0" + file-loader "^4.2.0" + flatted "^2.0.1" + glob "^7.1.6" + js-yaml "^3.13.1" + mini-css-extract-plugin "^0.8.0" + node-sass "^4.13.0" + optimize-css-assets-webpack-plugin "^5.0.3" + path-complete-extname "^1.0.0" + pnp-webpack-plugin "^1.5.0" + postcss-flexbugs-fixes "^4.1.0" + postcss-import "^12.0.1" + postcss-loader "^3.0.0" + postcss-preset-env "^6.7.0" + postcss-safe-parser "^4.0.1" + regenerator-runtime "^0.13.3" + sass-loader "7.3.1" + style-loader "^1.0.0" + terser-webpack-plugin "^2.2.1" + webpack "^4.41.2" + webpack-assets-manifest "^3.1.1" + webpack-cli "^3.3.10" + webpack-sources "^1.4.3" + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@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 "14.14.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d" + integrity sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@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, accepts@~1.3.7: + 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@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +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, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.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= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +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-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +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.0, 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" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +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-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +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= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +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= + +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-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + 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.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-loader@^8.0.6: + version "8.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.1.tgz#e53313254677e86f27536f5071d807e01d24ec00" + integrity sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + make-dir "^2.1.0" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.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.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +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= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +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== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +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= + +bootstrap@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6" + integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ== + +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" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.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, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.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.12.0, browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.6.4: + version "4.14.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" + integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ== + dependencies: + caniuse-lite "^1.0.30001157" + colorette "^1.2.1" + electron-to-chromium "^1.3.591" + escalade "^3.1.1" + node-releases "^1.1.66" + +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.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + 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.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +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-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + +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= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^5.0.0, camelcase@^5.3.1: + 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.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: + version "1.0.30001158" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz#fce86d321369603c2bc855ee0e901a7f49f8310b" + integrity sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g== + +case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.1: + 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, 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" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + 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" + +chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + 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-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.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.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +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.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression-webpack-plugin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz#33eda97f1170dd38c5556771de10f34245aa0274" + integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +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" + +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.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +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= + +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.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +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.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + 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.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +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.6.2: + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed" + integrity sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg== + dependencies: + browserslist "^4.14.6" + semver "7.0.0" + +core-js@^3.4.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f" + integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA== + +core-util-is@1.0.2, 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@^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" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + 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.4, create-hmac@^1.1.7: + 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-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +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" + +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-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +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-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.2.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +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.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.1.tgz#7726678dfe2a57993a018d9dce519bf1760e3b6d" + integrity sha512-WroX+2MvsYcRGP8QA0p+rxzOniT/zpAoQ/DTKDSJzh5T3IQKUkFHeIIfgIapm2uaP178GWY3Mime1qbk8GO/tA== + dependencies: + mdn-data "2.0.12" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +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.10: + 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@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.1.tgz#e0cb02d6eb3af1df719222048e4359efd662af13" + integrity sha512-Rvq+e1e0TFB8E8X+8MQjHSY6vtol45s5gxtLI/018UsAn2IBMmwNEZRM/h+HVnAJRHjasLIKKUO3uvoMM28LvA== + dependencies: + css-tree "^1.0.0" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +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.1.1, debug@^3.2.5: + 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.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +decamelize@^1.1.2, 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.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +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.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.1: + 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" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +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.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + 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-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" + +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.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +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: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" + integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== + +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@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +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" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.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.591: + version "1.3.596" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.596.tgz#c7ed98512c7ff36ddcbfed9e54e6355335c35257" + integrity sha512-nLO2Wd2yU42eSoNJVQKNf89CcEGqeFZd++QsnN2XIgje1s/19AgctfjLIbPORlvcCO8sYjLwX4iUgDdusOY8Sg== + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + 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" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +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.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +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.2.0, 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" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +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.3: + 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== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +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@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +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.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +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" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +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.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +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" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.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-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.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" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flatted@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +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.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + +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= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +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= + +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-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +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.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +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" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +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= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +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-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.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" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +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" + +globule@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4" + integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA== + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +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-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +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.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.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +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" + +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" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +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.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +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.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + 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-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +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.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.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.24: + 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-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +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-fresh@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.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= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +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= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +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.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +internal-ip@^4.3.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.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +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.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +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-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +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-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +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-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + 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, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +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-core-module@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== + dependencies: + has "^1.0.3" + +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.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +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.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-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +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, is-glob@^4.0.1, is-glob@~4.0.1: + 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-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + +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-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +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-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +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, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^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.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +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= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jquery@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +js-base64@^2.1.8: + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +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-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +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-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +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== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +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.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +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.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +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" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +loader-runner@^2.4.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.1, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +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" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.get@^4.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.has@^4.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + +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.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +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.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@~4.17.10: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@^4.0.1: + 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" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.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" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.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-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +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" + +mdn-data@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.12.tgz#bbb658d08b38f574bbb88f7b83703defdcc46844" + integrity sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +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= + +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" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +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-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +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: + 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.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mini-css-extract-plugin@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" + integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +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, minimatch@~3.0.2: + 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@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +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.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +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== + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +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, nan@^2.13.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +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" + +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, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +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== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + 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.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.66: + version "1.1.66" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.66.tgz#609bd0dc069381015cd982300bae51ab4f1b1814" + integrity sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg== + +node-sass@^4.13.0: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +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, 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@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +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== + +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@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + 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= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +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-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object-keys@^1.0.12, object-keys@^1.1.1: + 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.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +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.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + 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.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + 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-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: + 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-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-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + 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-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.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-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +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.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +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-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +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, parseurl@~1.3.3: + 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.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-complete-extname@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b" + integrity sha512-CVjiWcMRdGU8ubs08YQVzhutOR5DEfO97ipRIlOGMK5Bek5nQySknBpuxVAVJ36hseTNs+vdIcv57ZrWxH7zvg== + +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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +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-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + 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" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +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" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pnp-webpack-plugin@^1.5.0: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +popper.js@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +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-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +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-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +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-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" + integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== + dependencies: + postcss "^7.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.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-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +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-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +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-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, 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, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +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.2.3: + 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-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +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.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +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= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +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, punycode@^2.1.1: + 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.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +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== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +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.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + 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.1: + 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.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"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.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + 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, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + 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" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +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.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +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= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +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-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +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-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +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.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + 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== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +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, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + 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.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-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +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", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + +sass-loader@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" + integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +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@^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" + +schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +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.7: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + 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.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +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.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +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@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + 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== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +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" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +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= + +signal-exit@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +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" + +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.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + 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.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +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.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + 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.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + 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.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.6: + 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.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spark-md5@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.1.tgz#83a0e255734f2ab4e5c466e5a2cfc9ba2aa2124d" + integrity sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + +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.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + 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= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +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" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.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== + +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", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +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.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +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": + 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-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimend@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" + integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string.prototype.trimstart@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" + integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.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-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.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-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +style-loader@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.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: + 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" + +supports-color@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + 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.37" + csso "^4.0.2" + 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" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^2.2.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.12: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +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" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + 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-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +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" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +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= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +turbolinks@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c" + integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-is@~1.6.17, type-is@~1.6.18: + 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= + +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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +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.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +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.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + 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.2, 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.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +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.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +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.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +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-assets-manifest@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de" + integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== + dependencies: + chalk "^2.0" + lodash.get "^4.0" + lodash.has "^4.0" + mkdirp "^0.5" + schema-utils "^1.0.0" + tapable "^1.0.0" + webpack-sources "^1.0.0" + +webpack-cli@^3.3.10: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +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-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.41.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +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, which@^1.2.14, which@^1.2.9, which@^1.3.1: + 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@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +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.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" From a0005326782fba184c510bc8320ffd5ac9571da0 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 11:46:12 -0800 Subject: [PATCH 002/199] add merchant and product models & controllers --- app/assets/stylesheets/merchants.scss | 3 ++ app/assets/stylesheets/product.scss | 3 ++ app/controllers/merchants_controller.rb | 7 ++++ app/controllers/product_controller.rb | 22 +++++++++++ app/helpers/merchants_helper.rb | 2 + app/helpers/product_helper.rb | 2 + app/models/merchant.rb | 2 + app/models/product.rb | 2 + app/views/merchants/index.html.erb | 2 + app/views/merchants/show.html.erb | 2 + app/views/product/create.html.erb | 2 + app/views/product/destroy.html.erb | 2 + app/views/product/edit.html.erb | 2 + app/views/product/index.html.erb | 2 + app/views/product/new.html.erb | 2 + app/views/product/show.html.erb | 2 + app/views/product/update.html.erb | 2 + config/routes.rb | 9 +++++ db/migrate/20201117193507_create_merchants.rb | 10 +++++ db/migrate/20201117194233_create_products.rb | 13 +++++++ test/controllers/merchants_controller_test.rb | 14 +++++++ test/controllers/product_controller_test.rb | 39 +++++++++++++++++++ test/models/merchant_test.rb | 7 ++++ test/models/product_test.rb | 7 ++++ 24 files changed, 160 insertions(+) create mode 100644 app/assets/stylesheets/merchants.scss create mode 100644 app/assets/stylesheets/product.scss create mode 100644 app/controllers/merchants_controller.rb create mode 100644 app/controllers/product_controller.rb create mode 100644 app/helpers/merchants_helper.rb create mode 100644 app/helpers/product_helper.rb create mode 100644 app/models/merchant.rb create mode 100644 app/models/product.rb create mode 100644 app/views/merchants/index.html.erb create mode 100644 app/views/merchants/show.html.erb create mode 100644 app/views/product/create.html.erb create mode 100644 app/views/product/destroy.html.erb create mode 100644 app/views/product/edit.html.erb create mode 100644 app/views/product/index.html.erb create mode 100644 app/views/product/new.html.erb create mode 100644 app/views/product/show.html.erb create mode 100644 app/views/product/update.html.erb create mode 100644 db/migrate/20201117193507_create_merchants.rb create mode 100644 db/migrate/20201117194233_create_products.rb create mode 100644 test/controllers/merchants_controller_test.rb create mode 100644 test/controllers/product_controller_test.rb create mode 100644 test/models/merchant_test.rb create mode 100644 test/models/product_test.rb diff --git a/app/assets/stylesheets/merchants.scss b/app/assets/stylesheets/merchants.scss new file mode 100644 index 0000000000..743080c521 --- /dev/null +++ b/app/assets/stylesheets/merchants.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Merchants controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/product.scss b/app/assets/stylesheets/product.scss new file mode 100644 index 0000000000..ab95946e00 --- /dev/null +++ b/app/assets/stylesheets/product.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Product controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb new file mode 100644 index 0000000000..314c63af28 --- /dev/null +++ b/app/controllers/merchants_controller.rb @@ -0,0 +1,7 @@ +class MerchantsController < ApplicationController + def index + end + + def show + end +end diff --git a/app/controllers/product_controller.rb b/app/controllers/product_controller.rb new file mode 100644 index 0000000000..7340d1dcaa --- /dev/null +++ b/app/controllers/product_controller.rb @@ -0,0 +1,22 @@ +class ProductController < ApplicationController + def index + end + + def show + end + + def new + end + + def edit + end + + def create + end + + def update + end + + def destroy + end +end diff --git a/app/helpers/merchants_helper.rb b/app/helpers/merchants_helper.rb new file mode 100644 index 0000000000..5337747b0f --- /dev/null +++ b/app/helpers/merchants_helper.rb @@ -0,0 +1,2 @@ +module MerchantsHelper +end diff --git a/app/helpers/product_helper.rb b/app/helpers/product_helper.rb new file mode 100644 index 0000000000..d5da560508 --- /dev/null +++ b/app/helpers/product_helper.rb @@ -0,0 +1,2 @@ +module ProductHelper +end diff --git a/app/models/merchant.rb b/app/models/merchant.rb new file mode 100644 index 0000000000..0440407160 --- /dev/null +++ b/app/models/merchant.rb @@ -0,0 +1,2 @@ +class Merchant < ApplicationRecord +end diff --git a/app/models/product.rb b/app/models/product.rb new file mode 100644 index 0000000000..35a85acab3 --- /dev/null +++ b/app/models/product.rb @@ -0,0 +1,2 @@ +class Product < ApplicationRecord +end diff --git a/app/views/merchants/index.html.erb b/app/views/merchants/index.html.erb new file mode 100644 index 0000000000..0ad7977813 --- /dev/null +++ b/app/views/merchants/index.html.erb @@ -0,0 +1,2 @@ +

Merchants#index

+

Find me in app/views/merchants/index.html.erb

diff --git a/app/views/merchants/show.html.erb b/app/views/merchants/show.html.erb new file mode 100644 index 0000000000..cbb0f02bfe --- /dev/null +++ b/app/views/merchants/show.html.erb @@ -0,0 +1,2 @@ +

Merchants#show

+

Find me in app/views/merchants/show.html.erb

diff --git a/app/views/product/create.html.erb b/app/views/product/create.html.erb new file mode 100644 index 0000000000..784addad7b --- /dev/null +++ b/app/views/product/create.html.erb @@ -0,0 +1,2 @@ +

Product#create

+

Find me in app/views/product/create.html.erb

diff --git a/app/views/product/destroy.html.erb b/app/views/product/destroy.html.erb new file mode 100644 index 0000000000..d6ed7302df --- /dev/null +++ b/app/views/product/destroy.html.erb @@ -0,0 +1,2 @@ +

Product#destroy

+

Find me in app/views/product/destroy.html.erb

diff --git a/app/views/product/edit.html.erb b/app/views/product/edit.html.erb new file mode 100644 index 0000000000..fde04fa23c --- /dev/null +++ b/app/views/product/edit.html.erb @@ -0,0 +1,2 @@ +

Product#edit

+

Find me in app/views/product/edit.html.erb

diff --git a/app/views/product/index.html.erb b/app/views/product/index.html.erb new file mode 100644 index 0000000000..1303bdf198 --- /dev/null +++ b/app/views/product/index.html.erb @@ -0,0 +1,2 @@ +

Product#index

+

Find me in app/views/product/index.html.erb

diff --git a/app/views/product/new.html.erb b/app/views/product/new.html.erb new file mode 100644 index 0000000000..a5bc8bfcab --- /dev/null +++ b/app/views/product/new.html.erb @@ -0,0 +1,2 @@ +

Product#new

+

Find me in app/views/product/new.html.erb

diff --git a/app/views/product/show.html.erb b/app/views/product/show.html.erb new file mode 100644 index 0000000000..fe582be5fd --- /dev/null +++ b/app/views/product/show.html.erb @@ -0,0 +1,2 @@ +

Product#show

+

Find me in app/views/product/show.html.erb

diff --git a/app/views/product/update.html.erb b/app/views/product/update.html.erb new file mode 100644 index 0000000000..c941572470 --- /dev/null +++ b/app/views/product/update.html.erb @@ -0,0 +1,2 @@ +

Product#update

+

Find me in app/views/product/update.html.erb

diff --git a/config/routes.rb b/config/routes.rb index c06383a172..e0074f7b1a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,3 +1,12 @@ Rails.application.routes.draw do + get 'product/index' + get 'product/show' + get 'product/new' + get 'product/edit' + get 'product/create' + get 'product/update' + get 'product/destroy' + get 'merchants/index' + get 'merchants/show' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end diff --git a/db/migrate/20201117193507_create_merchants.rb b/db/migrate/20201117193507_create_merchants.rb new file mode 100644 index 0000000000..d7dc18b6f4 --- /dev/null +++ b/db/migrate/20201117193507_create_merchants.rb @@ -0,0 +1,10 @@ +class CreateMerchants < ActiveRecord::Migration[6.0] + def change + create_table :merchants do |t| + t.string :username + t.string :email + + t.timestamps + end + end +end diff --git a/db/migrate/20201117194233_create_products.rb b/db/migrate/20201117194233_create_products.rb new file mode 100644 index 0000000000..5e96dc5718 --- /dev/null +++ b/db/migrate/20201117194233_create_products.rb @@ -0,0 +1,13 @@ +class CreateProducts < ActiveRecord::Migration[6.0] + def change + create_table :products do |t| + t.string :name + t.float :price + t.integer :merchant_id + t.integer :quantity + t.integer :category_id + + t.timestamps + end + end +end diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb new file mode 100644 index 0000000000..f7410e782f --- /dev/null +++ b/test/controllers/merchants_controller_test.rb @@ -0,0 +1,14 @@ +require "test_helper" + +describe MerchantsController do + it "must get index" do + get merchants_index_url + must_respond_with :success + end + + it "must get show" do + get merchants_show_url + must_respond_with :success + end + +end diff --git a/test/controllers/product_controller_test.rb b/test/controllers/product_controller_test.rb new file mode 100644 index 0000000000..7affb0463c --- /dev/null +++ b/test/controllers/product_controller_test.rb @@ -0,0 +1,39 @@ +require "test_helper" + +describe ProductController do + it "must get index" do + get product_index_url + must_respond_with :success + end + + it "must get show" do + get product_show_url + must_respond_with :success + end + + it "must get new" do + get product_new_url + must_respond_with :success + end + + it "must get edit" do + get product_edit_url + must_respond_with :success + end + + it "must get create" do + get product_create_url + must_respond_with :success + end + + it "must get update" do + get product_update_url + must_respond_with :success + end + + it "must get destroy" do + get product_destroy_url + must_respond_with :success + end + +end diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb new file mode 100644 index 0000000000..ca3d6ca9b2 --- /dev/null +++ b/test/models/merchant_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Merchant do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/product_test.rb b/test/models/product_test.rb new file mode 100644 index 0000000000..6977718e14 --- /dev/null +++ b/test/models/product_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Product do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From ab2264ef6d3ad842d994f1a880408ae88929fab8 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 11:56:39 -0800 Subject: [PATCH 003/199] add model & controllers for categorization, orderItem, reviews --- app/assets/stylesheets/categorizations.scss | 3 +++ app/assets/stylesheets/order_items.scss | 3 +++ app/assets/stylesheets/reviews.scss | 3 +++ app/controllers/categorizations_controller.rb | 2 ++ app/controllers/order_items_controller.rb | 2 ++ app/controllers/reviews_controller.rb | 2 ++ app/helpers/categorizations_helper.rb | 2 ++ app/helpers/order_items_helper.rb | 2 ++ app/helpers/reviews_helper.rb | 2 ++ app/models/categorization.rb | 2 ++ app/models/order_item.rb | 2 ++ app/models/review.rb | 2 ++ db/migrate/20201117194806_create_reviews.rb | 10 ++++++++++ db/migrate/20201117195313_create_categorizations.rb | 9 +++++++++ db/migrate/20201117195536_create_order_items.rb | 11 +++++++++++ test/controllers/categorizations_controller_test.rb | 7 +++++++ test/controllers/order_items_controller_test.rb | 7 +++++++ test/controllers/reviews_controller_test.rb | 7 +++++++ test/models/categorization_test.rb | 7 +++++++ test/models/order_item_test.rb | 7 +++++++ test/models/review_test.rb | 7 +++++++ 21 files changed, 99 insertions(+) create mode 100644 app/assets/stylesheets/categorizations.scss create mode 100644 app/assets/stylesheets/order_items.scss create mode 100644 app/assets/stylesheets/reviews.scss create mode 100644 app/controllers/categorizations_controller.rb create mode 100644 app/controllers/order_items_controller.rb create mode 100644 app/controllers/reviews_controller.rb create mode 100644 app/helpers/categorizations_helper.rb create mode 100644 app/helpers/order_items_helper.rb create mode 100644 app/helpers/reviews_helper.rb create mode 100644 app/models/categorization.rb create mode 100644 app/models/order_item.rb create mode 100644 app/models/review.rb create mode 100644 db/migrate/20201117194806_create_reviews.rb create mode 100644 db/migrate/20201117195313_create_categorizations.rb create mode 100644 db/migrate/20201117195536_create_order_items.rb create mode 100644 test/controllers/categorizations_controller_test.rb create mode 100644 test/controllers/order_items_controller_test.rb create mode 100644 test/controllers/reviews_controller_test.rb create mode 100644 test/models/categorization_test.rb create mode 100644 test/models/order_item_test.rb create mode 100644 test/models/review_test.rb diff --git a/app/assets/stylesheets/categorizations.scss b/app/assets/stylesheets/categorizations.scss new file mode 100644 index 0000000000..df4b642c68 --- /dev/null +++ b/app/assets/stylesheets/categorizations.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Categorizations controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/order_items.scss b/app/assets/stylesheets/order_items.scss new file mode 100644 index 0000000000..4bb17c4250 --- /dev/null +++ b/app/assets/stylesheets/order_items.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the OrderItems controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/reviews.scss b/app/assets/stylesheets/reviews.scss new file mode 100644 index 0000000000..6457abefb6 --- /dev/null +++ b/app/assets/stylesheets/reviews.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Reviews controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/categorizations_controller.rb b/app/controllers/categorizations_controller.rb new file mode 100644 index 0000000000..bdb2c9156c --- /dev/null +++ b/app/controllers/categorizations_controller.rb @@ -0,0 +1,2 @@ +class CategorizationsController < ApplicationController +end diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb new file mode 100644 index 0000000000..357e7f5c80 --- /dev/null +++ b/app/controllers/order_items_controller.rb @@ -0,0 +1,2 @@ +class OrderItemsController < ApplicationController +end diff --git a/app/controllers/reviews_controller.rb b/app/controllers/reviews_controller.rb new file mode 100644 index 0000000000..b3d77cc1c3 --- /dev/null +++ b/app/controllers/reviews_controller.rb @@ -0,0 +1,2 @@ +class ReviewsController < ApplicationController +end diff --git a/app/helpers/categorizations_helper.rb b/app/helpers/categorizations_helper.rb new file mode 100644 index 0000000000..4717005fc2 --- /dev/null +++ b/app/helpers/categorizations_helper.rb @@ -0,0 +1,2 @@ +module CategorizationsHelper +end diff --git a/app/helpers/order_items_helper.rb b/app/helpers/order_items_helper.rb new file mode 100644 index 0000000000..e197528ae1 --- /dev/null +++ b/app/helpers/order_items_helper.rb @@ -0,0 +1,2 @@ +module OrderItemsHelper +end diff --git a/app/helpers/reviews_helper.rb b/app/helpers/reviews_helper.rb new file mode 100644 index 0000000000..682b7b1abc --- /dev/null +++ b/app/helpers/reviews_helper.rb @@ -0,0 +1,2 @@ +module ReviewsHelper +end diff --git a/app/models/categorization.rb b/app/models/categorization.rb new file mode 100644 index 0000000000..62a86becd5 --- /dev/null +++ b/app/models/categorization.rb @@ -0,0 +1,2 @@ +class Categorization < ApplicationRecord +end diff --git a/app/models/order_item.rb b/app/models/order_item.rb new file mode 100644 index 0000000000..acc6099fd0 --- /dev/null +++ b/app/models/order_item.rb @@ -0,0 +1,2 @@ +class OrderItem < ApplicationRecord +end diff --git a/app/models/review.rb b/app/models/review.rb new file mode 100644 index 0000000000..b2ca4935ed --- /dev/null +++ b/app/models/review.rb @@ -0,0 +1,2 @@ +class Review < ApplicationRecord +end diff --git a/db/migrate/20201117194806_create_reviews.rb b/db/migrate/20201117194806_create_reviews.rb new file mode 100644 index 0000000000..20c9bab4a1 --- /dev/null +++ b/db/migrate/20201117194806_create_reviews.rb @@ -0,0 +1,10 @@ +class CreateReviews < ActiveRecord::Migration[6.0] + def change + create_table :reviews do |t| + t.integer :rating + t.integer :product_id + + t.timestamps + end + end +end diff --git a/db/migrate/20201117195313_create_categorizations.rb b/db/migrate/20201117195313_create_categorizations.rb new file mode 100644 index 0000000000..b7671c748a --- /dev/null +++ b/db/migrate/20201117195313_create_categorizations.rb @@ -0,0 +1,9 @@ +class CreateCategorizations < ActiveRecord::Migration[6.0] + def change + create_table :categorizations do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/migrate/20201117195536_create_order_items.rb b/db/migrate/20201117195536_create_order_items.rb new file mode 100644 index 0000000000..86e7ee1330 --- /dev/null +++ b/db/migrate/20201117195536_create_order_items.rb @@ -0,0 +1,11 @@ +class CreateOrderItems < ActiveRecord::Migration[6.0] + def change + create_table :order_items do |t| + t.integer :product_id + t.integer :order_id + t.integer :quantity + + t.timestamps + end + end +end diff --git a/test/controllers/categorizations_controller_test.rb b/test/controllers/categorizations_controller_test.rb new file mode 100644 index 0000000000..baba1a393f --- /dev/null +++ b/test/controllers/categorizations_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe CategorizationsController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/controllers/order_items_controller_test.rb b/test/controllers/order_items_controller_test.rb new file mode 100644 index 0000000000..17457ab944 --- /dev/null +++ b/test/controllers/order_items_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe OrderItemsController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/controllers/reviews_controller_test.rb b/test/controllers/reviews_controller_test.rb new file mode 100644 index 0000000000..444c98848f --- /dev/null +++ b/test/controllers/reviews_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe ReviewsController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/categorization_test.rb b/test/models/categorization_test.rb new file mode 100644 index 0000000000..d2e2b5a08f --- /dev/null +++ b/test/models/categorization_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Categorization do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/order_item_test.rb b/test/models/order_item_test.rb new file mode 100644 index 0000000000..b2630ff9e9 --- /dev/null +++ b/test/models/order_item_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe OrderItem do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/review_test.rb b/test/models/review_test.rb new file mode 100644 index 0000000000..626fa522d8 --- /dev/null +++ b/test/models/review_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Review do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From d3e2a2b9e20ffe2a8ba5b4983fe3c75e27dd8180 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 12:10:04 -0800 Subject: [PATCH 004/199] add order model and controller --- app/assets/stylesheets/orders.scss | 3 +++ app/controllers/orders_controller.rb | 2 ++ app/helpers/orders_helper.rb | 2 ++ app/models/order.rb | 2 ++ db/migrate/20201117200918_create_orders.rb | 14 ++++++++++++++ test/controllers/orders_controller_test.rb | 7 +++++++ test/models/order_test.rb | 7 +++++++ 7 files changed, 37 insertions(+) create mode 100644 app/assets/stylesheets/orders.scss create mode 100644 app/controllers/orders_controller.rb create mode 100644 app/helpers/orders_helper.rb create mode 100644 app/models/order.rb create mode 100644 db/migrate/20201117200918_create_orders.rb create mode 100644 test/controllers/orders_controller_test.rb create mode 100644 test/models/order_test.rb diff --git a/app/assets/stylesheets/orders.scss b/app/assets/stylesheets/orders.scss new file mode 100644 index 0000000000..e8c23c2250 --- /dev/null +++ b/app/assets/stylesheets/orders.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Orders controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb new file mode 100644 index 0000000000..8a0e3659ae --- /dev/null +++ b/app/controllers/orders_controller.rb @@ -0,0 +1,2 @@ +class OrdersController < ApplicationController +end diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb new file mode 100644 index 0000000000..443227fd48 --- /dev/null +++ b/app/helpers/orders_helper.rb @@ -0,0 +1,2 @@ +module OrdersHelper +end diff --git a/app/models/order.rb b/app/models/order.rb new file mode 100644 index 0000000000..10281b3450 --- /dev/null +++ b/app/models/order.rb @@ -0,0 +1,2 @@ +class Order < ApplicationRecord +end diff --git a/db/migrate/20201117200918_create_orders.rb b/db/migrate/20201117200918_create_orders.rb new file mode 100644 index 0000000000..15e09fd455 --- /dev/null +++ b/db/migrate/20201117200918_create_orders.rb @@ -0,0 +1,14 @@ +class CreateOrders < ActiveRecord::Migration[6.0] + def change + create_table :orders do |t| + t.string :address + t.string :name + t.string :status + t.string :email + t.string :credit_card + t.string :exp_date + + t.timestamps + end + end +end diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb new file mode 100644 index 0000000000..4b01cc1988 --- /dev/null +++ b/test/controllers/orders_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe OrdersController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/order_test.rb b/test/models/order_test.rb new file mode 100644 index 0000000000..59ceb9a253 --- /dev/null +++ b/test/models/order_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Order do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From f2e17fb7bdc006257466a6e9f1dcf0908a655ea5 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 12:17:34 -0800 Subject: [PATCH 005/199] run migrations --- db/schema.rb | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index b10373ba60..47c7800f6a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,9 +10,58 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 0) do +ActiveRecord::Schema.define(version: 2020_11_17_200918) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" + create_table "categorizations", force: :cascade do |t| + t.string "name" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "merchants", force: :cascade do |t| + t.string "username" + t.string "email" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "order_items", force: :cascade do |t| + t.integer "product_id" + t.integer "order_id" + t.integer "quantity" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "orders", force: :cascade do |t| + t.string "address" + t.string "name" + t.string "status" + t.string "email" + t.string "credit_card" + t.string "exp_date" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "products", force: :cascade do |t| + t.string "name" + t.float "price" + t.integer "merchant_id" + t.integer "quantity" + t.integer "category_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "reviews", force: :cascade do |t| + t.integer "rating" + t.integer "product_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + end From 94ee2660eaa135ea98e361d7009bb42b71cae5ba Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:03:16 -0800 Subject: [PATCH 006/199] fix products controller --- .../{product.scss => products.scss} | 2 +- app/controllers/product_controller.rb | 22 ----------- app/controllers/products_controller.rb | 2 + app/helpers/product_helper.rb | 2 - app/helpers/products_helper.rb | 2 + app/views/product/create.html.erb | 2 - app/views/product/destroy.html.erb | 2 - app/views/product/edit.html.erb | 2 - app/views/product/index.html.erb | 2 - app/views/product/new.html.erb | 2 - app/views/product/show.html.erb | 2 - app/views/product/update.html.erb | 2 - test/controllers/product_controller_test.rb | 39 ------------------- test/controllers/products_controller_test.rb | 7 ++++ 14 files changed, 12 insertions(+), 78 deletions(-) rename app/assets/stylesheets/{product.scss => products.scss} (63%) delete mode 100644 app/controllers/product_controller.rb create mode 100644 app/controllers/products_controller.rb delete mode 100644 app/helpers/product_helper.rb create mode 100644 app/helpers/products_helper.rb delete mode 100644 app/views/product/create.html.erb delete mode 100644 app/views/product/destroy.html.erb delete mode 100644 app/views/product/edit.html.erb delete mode 100644 app/views/product/index.html.erb delete mode 100644 app/views/product/new.html.erb delete mode 100644 app/views/product/show.html.erb delete mode 100644 app/views/product/update.html.erb delete mode 100644 test/controllers/product_controller_test.rb create mode 100644 test/controllers/products_controller_test.rb diff --git a/app/assets/stylesheets/product.scss b/app/assets/stylesheets/products.scss similarity index 63% rename from app/assets/stylesheets/product.scss rename to app/assets/stylesheets/products.scss index ab95946e00..8f0ca888eb 100644 --- a/app/assets/stylesheets/product.scss +++ b/app/assets/stylesheets/products.scss @@ -1,3 +1,3 @@ -// Place all the styles related to the Product controller here. +// Place all the styles related to the Products controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/product_controller.rb b/app/controllers/product_controller.rb deleted file mode 100644 index 7340d1dcaa..0000000000 --- a/app/controllers/product_controller.rb +++ /dev/null @@ -1,22 +0,0 @@ -class ProductController < ApplicationController - def index - end - - def show - end - - def new - end - - def edit - end - - def create - end - - def update - end - - def destroy - end -end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb new file mode 100644 index 0000000000..f1ad12ddea --- /dev/null +++ b/app/controllers/products_controller.rb @@ -0,0 +1,2 @@ +class ProductsController < ApplicationController +end diff --git a/app/helpers/product_helper.rb b/app/helpers/product_helper.rb deleted file mode 100644 index d5da560508..0000000000 --- a/app/helpers/product_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ProductHelper -end diff --git a/app/helpers/products_helper.rb b/app/helpers/products_helper.rb new file mode 100644 index 0000000000..ab5c42b325 --- /dev/null +++ b/app/helpers/products_helper.rb @@ -0,0 +1,2 @@ +module ProductsHelper +end diff --git a/app/views/product/create.html.erb b/app/views/product/create.html.erb deleted file mode 100644 index 784addad7b..0000000000 --- a/app/views/product/create.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#create

-

Find me in app/views/product/create.html.erb

diff --git a/app/views/product/destroy.html.erb b/app/views/product/destroy.html.erb deleted file mode 100644 index d6ed7302df..0000000000 --- a/app/views/product/destroy.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#destroy

-

Find me in app/views/product/destroy.html.erb

diff --git a/app/views/product/edit.html.erb b/app/views/product/edit.html.erb deleted file mode 100644 index fde04fa23c..0000000000 --- a/app/views/product/edit.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#edit

-

Find me in app/views/product/edit.html.erb

diff --git a/app/views/product/index.html.erb b/app/views/product/index.html.erb deleted file mode 100644 index 1303bdf198..0000000000 --- a/app/views/product/index.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#index

-

Find me in app/views/product/index.html.erb

diff --git a/app/views/product/new.html.erb b/app/views/product/new.html.erb deleted file mode 100644 index a5bc8bfcab..0000000000 --- a/app/views/product/new.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#new

-

Find me in app/views/product/new.html.erb

diff --git a/app/views/product/show.html.erb b/app/views/product/show.html.erb deleted file mode 100644 index fe582be5fd..0000000000 --- a/app/views/product/show.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#show

-

Find me in app/views/product/show.html.erb

diff --git a/app/views/product/update.html.erb b/app/views/product/update.html.erb deleted file mode 100644 index c941572470..0000000000 --- a/app/views/product/update.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

Product#update

-

Find me in app/views/product/update.html.erb

diff --git a/test/controllers/product_controller_test.rb b/test/controllers/product_controller_test.rb deleted file mode 100644 index 7affb0463c..0000000000 --- a/test/controllers/product_controller_test.rb +++ /dev/null @@ -1,39 +0,0 @@ -require "test_helper" - -describe ProductController do - it "must get index" do - get product_index_url - must_respond_with :success - end - - it "must get show" do - get product_show_url - must_respond_with :success - end - - it "must get new" do - get product_new_url - must_respond_with :success - end - - it "must get edit" do - get product_edit_url - must_respond_with :success - end - - it "must get create" do - get product_create_url - must_respond_with :success - end - - it "must get update" do - get product_update_url - must_respond_with :success - end - - it "must get destroy" do - get product_destroy_url - must_respond_with :success - end - -end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb new file mode 100644 index 0000000000..1c0716685f --- /dev/null +++ b/test/controllers/products_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe ProductsController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From dc4bcd9a03754c624a45e6e1b49116d2da7f750d Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:07:40 -0800 Subject: [PATCH 007/199] add merchant model validations --- app/models/merchant.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 0440407160..21bc8c81d7 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,2 +1,4 @@ class Merchant < ApplicationRecord + validates :username, uniqueness: true, presence: true + validates :email, presence: true, format: {with: /@/} end From 74e2c92768a7fb8cf2a5432f91d3c5ac1538b7b2 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:08:03 -0800 Subject: [PATCH 008/199] add merchant model validations --- app/models/merchant.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 21bc8c81d7..8ebe7386e1 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,4 +1,4 @@ class Merchant < ApplicationRecord validates :username, uniqueness: true, presence: true - validates :email, presence: true, format: {with: /@/} + validates :email, presence: true, format: {with: /@/}, uniqueness: true end From 4c71829c9335958bd4caf6b8d81d280346a5ccb6 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:17:38 -0800 Subject: [PATCH 009/199] add product model validations --- app/models/merchant.rb | 2 ++ app/models/product.rb | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 8ebe7386e1..a6c333c6e2 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,4 +1,6 @@ class Merchant < ApplicationRecord + has_many :products + validates :username, uniqueness: true, presence: true validates :email, presence: true, format: {with: /@/}, uniqueness: true end diff --git a/app/models/product.rb b/app/models/product.rb index 35a85acab3..789beacb5a 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,2 +1,6 @@ class Product < ApplicationRecord + belongs_to :merchant + + validates :name, presence: true, uniqueness: true + validates :price, presence: true, numericality: { greater_than: 0 } end From ecf8fa3b067d9f167536cbe15ed95b0105f38320 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:21:13 -0800 Subject: [PATCH 010/199] add relationship to order model --- app/models/order.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/order.rb b/app/models/order.rb index 10281b3450..b8ff4b192c 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,2 +1,3 @@ class Order < ApplicationRecord + has_many :order_items end From cc0eb5a55c762e556a9cfac9c52a76e974d24a02 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:23:19 -0800 Subject: [PATCH 011/199] add relationships and validations to orderItem model --- app/models/order_item.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/order_item.rb b/app/models/order_item.rb index acc6099fd0..466e650da6 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -1,2 +1,6 @@ class OrderItem < ApplicationRecord + belongs_to :product + belongs_to :order + + validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 } end From 003ac8d84c707eaa021e0a70f3dfed7a6a0610a0 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 17:25:27 -0800 Subject: [PATCH 012/199] add validations to review model --- app/models/review.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/review.rb b/app/models/review.rb index b2ca4935ed..c08c384f72 100644 --- a/app/models/review.rb +++ b/app/models/review.rb @@ -1,2 +1,3 @@ class Review < ApplicationRecord + validates :rating, presence: true, numericality: { only_integer: true, in: 1..5 } end From 2aea67d54e8dc9cc94817194a28c2c59747d03cd Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 18:18:49 -0800 Subject: [PATCH 013/199] add relations to products model --- app/models/product.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/product.rb b/app/models/product.rb index 789beacb5a..fcf9978406 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,5 +1,9 @@ class Product < ApplicationRecord belongs_to :merchant + has_many :reviews + has_many :categorizations + has_many :order_items + has_many :orders, through: :order_items validates :name, presence: true, uniqueness: true validates :price, presence: true, numericality: { greater_than: 0 } From 88253dc57c368c3bbf9c49751ad18bbe02d6a708 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 18:27:43 -0800 Subject: [PATCH 014/199] add relations to order and review models --- app/models/order.rb | 3 +++ app/models/review.rb | 2 ++ 2 files changed, 5 insertions(+) diff --git a/app/models/order.rb b/app/models/order.rb index b8ff4b192c..02ebfbcc07 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,3 +1,6 @@ class Order < ApplicationRecord + #TODO validations? + has_many :order_items + has_many :products, through: :order_items end diff --git a/app/models/review.rb b/app/models/review.rb index c08c384f72..c7ffaf7653 100644 --- a/app/models/review.rb +++ b/app/models/review.rb @@ -1,3 +1,5 @@ class Review < ApplicationRecord + belongs_to :product + validates :rating, presence: true, numericality: { only_integer: true, in: 1..5 } end From 20c79c2c32bf26c3a573329015c1800bbcf033de Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Tue, 17 Nov 2020 18:56:09 -0800 Subject: [PATCH 015/199] add all routes --- config/routes.rb | 7 +++++++ ...0201118023840_create_categorizations_products_join.rb | 8 ++++++++ db/schema.rb | 9 ++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20201118023840_create_categorizations_products_join.rb diff --git a/config/routes.rb b/config/routes.rb index e0074f7b1a..446b5906c2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -9,4 +9,11 @@ get 'merchants/index' get 'merchants/show' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html + + resources :merchants + resources :products + resources :categorizations + resources :order_items + resources :orders + resources :reviews end diff --git a/db/migrate/20201118023840_create_categorizations_products_join.rb b/db/migrate/20201118023840_create_categorizations_products_join.rb new file mode 100644 index 0000000000..9ffce13ec6 --- /dev/null +++ b/db/migrate/20201118023840_create_categorizations_products_join.rb @@ -0,0 +1,8 @@ +class CreateCategorizationsProductsJoin < ActiveRecord::Migration[6.0] + def change + create_table :categorizations_products do |t| + t.belongs_to :product, index: true + t.belongs_to :categorization, index: true + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 47c7800f6a..b55969f9e3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_17_200918) do +ActiveRecord::Schema.define(version: 2020_11_18_023840) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -21,6 +21,13 @@ t.datetime "updated_at", precision: 6, null: false end + create_table "categorizations_products", force: :cascade do |t| + t.bigint "product_id" + t.bigint "categorization_id" + t.index ["categorization_id"], name: "index_categorizations_products_on_categorization_id" + t.index ["product_id"], name: "index_categorizations_products_on_product_id" + end + create_table "merchants", force: :cascade do |t| t.string "username" t.string "email" From 05bc0e340fa87ba5aae0ba5908b8899375ff1de9 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 15:14:46 -0800 Subject: [PATCH 016/199] add oauth routes --- config/routes.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 446b5906c2..b9aa3cc54e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,7 +8,10 @@ get 'product/destroy' get 'merchants/index' get 'merchants/show' - # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html + # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.htmlget "/auth/github", as: "github_login" #OmniAuth login + get "/auth/github", as: "github_login" #OmniAuth login + get "/auth/:provider/callback", to: "users#create" #OmniAuth Github callback + post "/logout", to: "users#logout", as: "logout" resources :merchants resources :products From 73ba3ba47706525794ccd03a6b7c602eca125379 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 15:15:19 -0800 Subject: [PATCH 017/199] add omniauth gems --- Gemfile | 6 ++++++ Gemfile.lock | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/Gemfile b/Gemfile index 48cdee19cb..e641fc04be 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,11 @@ gem 'jbuilder', '~> 2.7' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false +gem "omniauth" +gem "omniauth-github" + group :development, :test do + gem "dotenv-rails" # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end @@ -76,3 +80,5 @@ group :test do gem 'minitest-rails' gem 'minitest-reporters' end + +ENV['GITHUB_CLIENT_ID'] \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 6283750b6c..702d95b614 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,8 +92,15 @@ GEM debase-ruby_core_source (~> 0.10.10) debase-ruby_core_source (0.10.11) debug_inspector (0.0.3) + dotenv (2.7.6) + dotenv-rails (2.7.6) + dotenv (= 2.7.6) + railties (>= 3.2) erubi (1.10.0) execjs (2.7.0) + faraday (1.1.0) + multipart-post (>= 1.2, < 3) + ruby2_keywords ffi (1.13.1) formatador (0.2.5) globalid (0.4.2) @@ -111,6 +118,7 @@ GEM guard-minitest (2.4.6) guard-compat (~> 1.2) minitest (>= 3.0) + hashie (4.1.0) i18n (1.8.5) concurrent-ruby (~> 1.0) jbuilder (2.10.1) @@ -122,6 +130,7 @@ GEM jquery-turbolinks (2.1.0) railties (>= 3.1.0) turbolinks + jwt (2.2.2) listen (3.3.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -147,6 +156,9 @@ GEM minitest (>= 5.0) ruby-progressbar msgpack (1.3.3) + multi_json (1.15.0) + multi_xml (0.6.0) + multipart-post (2.1.1) nenv (0.3.0) nio4r (2.5.4) nokogiri (1.10.10) @@ -154,6 +166,21 @@ GEM notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) + oauth2 (1.4.4) + faraday (>= 0.8, < 2.0) + jwt (>= 1.0, < 3.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + omniauth (1.9.1) + hashie (>= 3.4.6) + rack (>= 1.6.2, < 3) + omniauth-github (1.4.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) + omniauth-oauth2 (1.7.0) + oauth2 (~> 1.4) + omniauth (~> 1.9) pg (1.2.3) popper_js (1.16.0) pry (0.13.1) @@ -203,6 +230,7 @@ GEM ruby-debug-ide (2.3.0) debase (~> 2.3.0) ruby-progressbar (1.10.1) + ruby2_keywords (0.0.2) rubyzip (2.3.0) sass-rails (6.0.0) sassc-rails (~> 2.1, >= 2.1.1) @@ -268,6 +296,7 @@ DEPENDENCIES byebug capybara (>= 2.15) debase (>= 0.2.4.1) + dotenv-rails guard guard-minitest jbuilder (~> 2.7) @@ -276,6 +305,8 @@ DEPENDENCIES listen (~> 3.2) minitest-rails minitest-reporters + omniauth + omniauth-github pg (>= 0.18, < 2.0) pry-rails puma (~> 4.1) From 8a8a1e4cd69ad01bf8e2d6d86a7e5958bf5965f5 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 15:41:30 -0800 Subject: [PATCH 018/199] Ignore .env file --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index f22dd34725..60d10a1fb8 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,5 @@ /yarn-error.log yarn-debug.log* .yarn-integrity + +.env \ No newline at end of file From 9d10df6b697ba586a5b8271f683815f4e188053d Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:06:47 -0800 Subject: [PATCH 019/199] remove ENV from gemfile --- Gemfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index e641fc04be..272a2604d4 100644 --- a/Gemfile +++ b/Gemfile @@ -79,6 +79,4 @@ end group :test do gem 'minitest-rails' gem 'minitest-reporters' -end - -ENV['GITHUB_CLIENT_ID'] \ No newline at end of file +end \ No newline at end of file From ff31b91e7997cabc7bfb078fea37af9104d532ba Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:07:07 -0800 Subject: [PATCH 020/199] Add build_from_github method --- app/models/merchant.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index a6c333c6e2..3dd76403da 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -3,4 +3,15 @@ class Merchant < ApplicationRecord validates :username, uniqueness: true, presence: true validates :email, presence: true, format: {with: /@/}, uniqueness: true + + def self.build_from_github(auth_hash) + user = Merchant.new + user.uid = auth_hash[:uid] + user.provider = "github" + user.username = auth_hash["info"]["name"] + user.email = auth_hash["info"]["email"] + # Note that the user has not been saved. + # We'll choose to do the saving outside of this method + return user + end end From c37378f41d17cc92ba3a10a9c618663f8229b823 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:08:38 -0800 Subject: [PATCH 021/199] add Merchant login and create actions --- app/controllers/application_controller.rb | 21 +++++++++++++++++- app/controllers/merchants_controller.rb | 26 +++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 09705d12ab..49ee974f84 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,2 +1,21 @@ class ApplicationController < ActionController::Base -end + + def render_404 + return render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false + end + + private + + def find_merchant + if session[:user_id] + @login_user = Merchant.find_by(id: session[:user_id]) + end + end + + def require_login + if @login_user.nil? + flash[:error] = "You must be logged in to do that" + redirect_to root_path + end + end +end \ No newline at end of file diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 314c63af28..579f3c94b6 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,7 +1,33 @@ class MerchantsController < ApplicationController + + def create + auth_hash = request.env["omniauth.auth"] + merchant = Merchant.find_by(uid: auth_hash[:uid], provider: "github") + + if merchant + flash[:success] = "Logged in as returning user #{merchant.username}" + else + merchant = Merchant.build_from_github(auth_hash) + + if merchant.save + flash[:success] = "Logged in as new user #{merchant.username}" + else + flash[:error] = "Could not create new user account: #{merchant.errors.messages}" + return redirect_to root_path + end + end + end + def index end def show end + + def destroy + session[:user_id] = nil + flash[:success] = "Successfully logged out!" + + redirect_to root_path + end end From 41fa73a019d87eebd597443bc4a9c8344390abf2 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:09:00 -0800 Subject: [PATCH 022/199] add oauth routes --- config/routes.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index b9aa3cc54e..8d19d07883 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,8 +10,8 @@ get 'merchants/show' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.htmlget "/auth/github", as: "github_login" #OmniAuth login get "/auth/github", as: "github_login" #OmniAuth login - get "/auth/:provider/callback", to: "users#create" #OmniAuth Github callback - post "/logout", to: "users#logout", as: "logout" + get "/auth/:provider/callback", to: "merchants#create" #OmniAuth Github callback + post "/logout", to: "merchants#logout", as: "logout" resources :merchants resources :products From f5ec97cd8bae414cd85e80a2824747ca021583ef Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:09:18 -0800 Subject: [PATCH 023/199] add login/logout and flash message --- app/views/layouts/application.html.erb | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 74961e61a4..994596184a 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -10,6 +10,41 @@ + + + + + + <% if flash[:result_text] or flash[:messages] %> +
+
+ <%= flash[:status].to_s == "failure" ? "A problem occurred: " : "" %><%= flash[:result_text] %> + <% if flash[:messages] %> +
    + <% flash[:messages].each do |name, problems| %> + <% problems.each do |problem| %> +
  • <%= name %>: <%= problem %>
  • + <% end %> + <% end %> +
+ <% end %> +
+
+ <% end %> + <%= yield %> From d48fc7f38be14746145be113eb5623b9e1af58a9 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:58:03 -0800 Subject: [PATCH 024/199] add login helper methods --- app/controllers/application_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 49ee974f84..e4e787e382 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,5 +1,7 @@ class ApplicationController < ActionController::Base + before_action :find_merchant + def render_404 return render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false end From 4e93acfa816e0612fb67e0dcaa72fe8b4cda0c48 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:59:21 -0800 Subject: [PATCH 025/199] add merchant avatar --- app/models/merchant.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 3dd76403da..b0889e6746 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -5,13 +5,15 @@ class Merchant < ApplicationRecord validates :email, presence: true, format: {with: /@/}, uniqueness: true def self.build_from_github(auth_hash) - user = Merchant.new - user.uid = auth_hash[:uid] - user.provider = "github" - user.username = auth_hash["info"]["name"] - user.email = auth_hash["info"]["email"] + merchant = Merchant.new + merchant.uid = auth_hash[:uid] + merchant.provider = "github" + merchant.username = auth_hash["info"]["nickname"] + merchant.email = auth_hash["info"]["email"] + merchant.avatar = auth_hash["info"]["image"] # Note that the user has not been saved. # We'll choose to do the saving outside of this method - return user + return merchant end end + From 578a100d2c65f118469fd0c5b6ae9c93542b70ca Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 16:59:46 -0800 Subject: [PATCH 026/199] edit flash messages for merchants controller --- app/controllers/merchants_controller.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 579f3c94b6..68604bd65b 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -5,17 +5,24 @@ def create merchant = Merchant.find_by(uid: auth_hash[:uid], provider: "github") if merchant - flash[:success] = "Logged in as returning user #{merchant.username}" + flash[:status] = :success + flash[:result_text] = "Existing user #{merchant.username} is logged in." else merchant = Merchant.build_from_github(auth_hash) if merchant.save - flash[:success] = "Logged in as new user #{merchant.username}" + flash[:status] = :success + flash[:result_text] = "Logged in as new user #{merchant.username}" else - flash[:error] = "Could not create new user account: #{merchant.errors.messages}" - return redirect_to root_path + flash[:status] = :failure + flash[:result_text] = "Could not create user account #{merchant.errors.messages}" + redirect_to merchants_path + return end end + + session[:user_id] = merchant.id + redirect_to root_path end def index @@ -24,10 +31,10 @@ def index def show end - def destroy + def logout session[:user_id] = nil - flash[:success] = "Successfully logged out!" - + flash[:status] = :success + flash[:result_text] = "Successfully logged out!" redirect_to root_path end end From f943f772c45a64c83f66d1922475c2b61e6189ef Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 17:00:04 -0800 Subject: [PATCH 027/199] add homepage route --- config/routes.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 8d19d07883..7b7a007ae2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,5 @@ Rails.application.routes.draw do + get 'homepages/index' get 'product/index' get 'product/show' get 'product/new' @@ -9,10 +10,14 @@ get 'merchants/index' get 'merchants/show' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.htmlget "/auth/github", as: "github_login" #OmniAuth login + get "/auth/github", as: "github_login" #OmniAuth login get "/auth/:provider/callback", to: "merchants#create" #OmniAuth Github callback post "/logout", to: "merchants#logout", as: "logout" + root to: "homepages#index" + + resources :homepages, only: [:index] resources :merchants resources :products resources :categorizations From 31f9e35127599d7427460490e65f4d9711d3d25d Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 17:00:49 -0800 Subject: [PATCH 028/199] add uid, provider and avatar fields to merchant table --- db/schema.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index b55969f9e3..835b16fbb1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_18_023840) do +ActiveRecord::Schema.define(version: 2020_11_19_001025) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -33,6 +33,9 @@ t.string "email" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "uid" + t.string "provider" + t.string "avatar" end create_table "order_items", force: :cascade do |t| From c6b7dedb473fe70d7aad2dec6f37f5600c78fd52 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 17:02:08 -0800 Subject: [PATCH 029/199] add login functionality for merchant controller --- app/assets/stylesheets/homepages.scss | 3 +++ app/controllers/homepages_controller.rb | 4 ++++ app/helpers/homepages_helper.rb | 2 ++ app/views/homepages/index.html.erb | 2 ++ config/initializers/omniauth.rb | 3 +++ .../20201119001025_add_uid_and_provider_to_merchants.rb | 7 +++++++ test/controllers/homepages_controller_test.rb | 9 +++++++++ 7 files changed, 30 insertions(+) create mode 100644 app/assets/stylesheets/homepages.scss create mode 100644 app/controllers/homepages_controller.rb create mode 100644 app/helpers/homepages_helper.rb create mode 100644 app/views/homepages/index.html.erb create mode 100644 config/initializers/omniauth.rb create mode 100644 db/migrate/20201119001025_add_uid_and_provider_to_merchants.rb create mode 100644 test/controllers/homepages_controller_test.rb diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss new file mode 100644 index 0000000000..f54dc27a9f --- /dev/null +++ b/app/assets/stylesheets/homepages.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Homepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb new file mode 100644 index 0000000000..f200c8ac2e --- /dev/null +++ b/app/controllers/homepages_controller.rb @@ -0,0 +1,4 @@ +class HomepagesController < ApplicationController + def index + end +end diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb new file mode 100644 index 0000000000..4bd8098f37 --- /dev/null +++ b/app/helpers/homepages_helper.rb @@ -0,0 +1,2 @@ +module HomepagesHelper +end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb new file mode 100644 index 0000000000..37d3ce7099 --- /dev/null +++ b/app/views/homepages/index.html.erb @@ -0,0 +1,2 @@ +

Homepages#index

+

Find me in app/views/homepages/index.html.erb

diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb new file mode 100644 index 0000000000..e32a45234e --- /dev/null +++ b/config/initializers/omniauth.rb @@ -0,0 +1,3 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + provider :github, ENV["GITHUB_CLIENT_ID"], ENV["GITHUB_CLIENT_SECRET"], scope: "user:email" +end \ No newline at end of file diff --git a/db/migrate/20201119001025_add_uid_and_provider_to_merchants.rb b/db/migrate/20201119001025_add_uid_and_provider_to_merchants.rb new file mode 100644 index 0000000000..3c3d497893 --- /dev/null +++ b/db/migrate/20201119001025_add_uid_and_provider_to_merchants.rb @@ -0,0 +1,7 @@ +class AddUidAndProviderToMerchants < ActiveRecord::Migration[6.0] + def change + add_column :merchants, :uid, :string + add_column :merchants, :provider, :string + add_column :merchants, :avatar, :string + end +end diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb new file mode 100644 index 0000000000..1fa2ec2097 --- /dev/null +++ b/test/controllers/homepages_controller_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe HomepagesController do + it "must get index" do + get homepages_index_url + must_respond_with :success + end + +end From b553e1e686bab6f707e6168f4905641e928cc4db Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 17:14:31 -0800 Subject: [PATCH 030/199] complete merchant crud actions --- app/controllers/merchants_controller.rb | 8 ++++++++ config/routes.rb | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 68604bd65b..7b976718b6 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -26,9 +26,17 @@ def create end def index + @merchants = Merchant.all end def show + merchant_id = params[:id].to_i + @merchant = User.find_by(id: merchant_id) + + if @merchant.nil? + redirect_to merchants_path + return + end end def logout diff --git a/config/routes.rb b/config/routes.rb index 7b7a007ae2..cf5fd582ff 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,7 +18,7 @@ root to: "homepages#index" resources :homepages, only: [:index] - resources :merchants + resources :merchants, only: [:create, :index, :show] resources :products resources :categorizations resources :order_items From 2349f60e8db762f69617533daf0f6488cffab6a3 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 18:18:39 -0800 Subject: [PATCH 031/199] create merchant dashboard view, routes and action --- app/controllers/merchants_controller.rb | 9 +++++++-- app/views/layouts/application.html.erb | 5 +++-- config/routes.rb | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 7b976718b6..023d9366c5 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,5 +1,10 @@ class MerchantsController < ApplicationController + before_action :require_login, except: [:index, :create, :show] + + def dashboard + end + def create auth_hash = request.env["omniauth.auth"] merchant = Merchant.find_by(uid: auth_hash[:uid], provider: "github") @@ -31,10 +36,10 @@ def index def show merchant_id = params[:id].to_i - @merchant = User.find_by(id: merchant_id) + @merchant = Merchant.find_by(id: merchant_id) if @merchant.nil? - redirect_to merchants_path + render render_404 return end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 994596184a..c8aa85a595 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -14,7 +14,8 @@ diff --git a/config/routes.rb b/config/routes.rb index cf5fd582ff..8a20e028ad 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,6 +19,7 @@ resources :homepages, only: [:index] resources :merchants, only: [:create, :index, :show] + get "/dashboard", to: "merchants#dashboard", as: "dashboard" resources :products resources :categorizations resources :order_items From 218b6ee40a521c998c696856edb3947bab719c93 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Wed, 18 Nov 2020 18:26:56 -0800 Subject: [PATCH 032/199] CRUD operations added to controller --- .generators | 8 ++++ Gemfile.lock | 33 +++++++++++++++ app/controllers/products_controller.rb | 57 ++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 .generators diff --git a/.generators b/.generators new file mode 100644 index 0000000000..1618976692 --- /dev/null +++ b/.generators @@ -0,0 +1,8 @@ + + diff --git a/Gemfile.lock b/Gemfile.lock index 702d95b614..6c663a531b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -102,6 +102,9 @@ GEM multipart-post (>= 1.2, < 3) ruby2_keywords ffi (1.13.1) + ffi (1.13.1-java) + ffi (1.13.1-x64-mingw32) + ffi (1.13.1-x86-mingw32) formatador (0.2.5) globalid (0.4.2) activesupport (>= 4.2.0) @@ -156,13 +159,22 @@ GEM minitest (>= 5.0) ruby-progressbar msgpack (1.3.3) + msgpack (1.3.3-java) + msgpack (1.3.3-x64-mingw32) + msgpack (1.3.3-x86-mingw32) multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.1.1) nenv (0.3.0) nio4r (2.5.4) + nio4r (2.5.4-java) nokogiri (1.10.10) mini_portile2 (~> 2.4.0) + nokogiri (1.10.10-java) + nokogiri (1.10.10-x64-mingw32) + mini_portile2 (~> 2.4.0) + nokogiri (1.10.10-x86-mingw32) + mini_portile2 (~> 2.4.0) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) @@ -182,15 +194,23 @@ GEM oauth2 (~> 1.4) omniauth (~> 1.9) pg (1.2.3) + pg (1.2.3-x64-mingw32) + pg (1.2.3-x86-mingw32) popper_js (1.16.0) pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) + pry (0.13.1-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.6) puma (4.3.6) nio4r (~> 2.0) + puma (4.3.6-java) + nio4r (~> 2.0) rack (2.2.3) rack-proxy (0.6.5) rack @@ -236,6 +256,8 @@ GEM sassc-rails (~> 2.1, >= 2.1.1) sassc (2.4.0) ffi (~> 1.9) + sassc (2.4.0-x64-mingw32) + ffi (~> 1.9) sassc-rails (2.1.2) railties (>= 4.0.0) sassc (>= 2.0) @@ -246,6 +268,8 @@ GEM childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) shellany (0.0.1) + spoon (0.0.6) + ffi spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) @@ -259,12 +283,15 @@ GEM sprockets (>= 3.0.0) thor (1.0.1) thread_safe (0.3.6) + thread_safe (0.3.6-java) tilt (2.0.10) turbolinks (5.2.1) turbolinks-source (~> 5.2) turbolinks-source (5.2.0) tzinfo (1.2.8) thread_safe (~> 0.1) + tzinfo-data (1.2020.4) + tzinfo (>= 1.0.0) web-console (4.1.0) actionview (>= 6.0.0) activemodel (>= 6.0.0) @@ -280,13 +307,19 @@ GEM railties (>= 4.2) websocket-driver (0.7.3) websocket-extensions (>= 0.1.0) + websocket-driver (0.7.3-java) + websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.4.1) PLATFORMS + java ruby + x64-mingw32 + x86-mingw32 + x86-mswin32 DEPENDENCIES better_errors diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index f1ad12ddea..be004fcc51 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,2 +1,59 @@ class ProductsController < ApplicationController + + def index + @products = Product.all + end + + def show + @product = Product.find_by(id: params[:id]) + render_404 unless @product + end + + def new + @product = Product.new + end + + def edit + @product = Product.find_by(id: params[:id]) + if @product.nil? + redirect_to products_path + return + end + end + + def create + @product = Product.new(product_params) + if @product.save + flash[:status] = :success + flash[:result_text] = "Successfully created new product: #{@product.name}" + redirect_to product_path(@product) + else + flash[:status] = :failure + flash[:result_text] = "Could not create #{@product}" + flash[:messages] = @product.errors.messages + render :new, status: :bad_request + end + end + + def update + if @product.update(product_params) + flash[:status] = :success + flash[:result_text] = "Successfully updated #{@product.id}" + redirect_to product_path(@product) + else + flash.now[:status] = :failure + flash.now[:result_text] = "Could not update #{@product}" + flash.now[:messages] = @product.errors.messages + render :edit, status: :not_found + end + end + + #TODO def retire? + + private + + def product_params + return params.require(:product).permit(:name, :price, :merchant_id, :quantity, :category_id) + end + end From 42dc51386be1a6a1f0db412ecf1fffa4e5bf68e8 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Wed, 18 Nov 2020 18:35:26 -0800 Subject: [PATCH 033/199] Added authorization rule to products page--PLEASE CHECK --- app/controllers/products_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index be004fcc51..9e46760dc4 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,7 @@ class ProductsController < ApplicationController + skip_before_action :require_login, except [:new, :edit, :destroy] + def index @products = Product.all end From 6904ad37b649d9ac7602846c95011e44dccbfa6d Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Wed, 18 Nov 2020 19:36:01 -0800 Subject: [PATCH 034/199] edit main view to include dashboard button --- app/views/layouts/application.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index c8aa85a595..ae9d236343 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -48,4 +48,4 @@ <%= yield %> - + \ No newline at end of file From 4c746b304f7fbd9dbf0518df8a5a1450b9b4f74b Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Wed, 18 Nov 2020 21:20:49 -0800 Subject: [PATCH 035/199] 1 model test written --- test/models/product_test.rb | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 6977718e14..ded7efb932 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -1,7 +1,30 @@ require "test_helper" describe Product do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + describe 'validations' do + before do + merchant_id = Merchant.new(username:"123", email:"abc", id: 5) + @product = Product.create(name: "Shoyru", price: 5.00, merchant_id: merchant_id[:id], quantity: 500, category_id: 1) + end + + it "is valid when all fields are filled" do + + result = @product.valid? + p @product + expect(result).must_equal true + end + end end +# "username" +# t.string "email" +# t.datetime "created_at", precision: 6, null: false +# t.datetime "updated_at", precision: 6, null: false +# t.string "uid" +# t.string "provider" +# t.string "avatar" + +# t.string "name" +# t.float "price" +# t.integer "merchant_id" +# t.integer "quantity" +# t.integer "category_id" \ No newline at end of file From 4349081f1f738cb0ea2944fb14432f49c2c260ef Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Wed, 18 Nov 2020 23:02:13 -0800 Subject: [PATCH 036/199] Product model validations tests complete --- test/models/product_test.rb | 72 +++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/test/models/product_test.rb b/test/models/product_test.rb index ded7efb932..da4e40d9ec 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -3,28 +3,62 @@ describe Product do describe 'validations' do before do - merchant_id = Merchant.new(username:"123", email:"abc", id: 5) - @product = Product.create(name: "Shoyru", price: 5.00, merchant_id: merchant_id[:id], quantity: 500, category_id: 1) + @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") + @product = Product.create(name: "Shoyru", price: 5.00, merchant_id: @merchant[:id], quantity: 500, category_id: 1) end it "is valid when all fields are filled" do - + #Act/Assert result = @product.valid? - p @product - expect(result).must_equal true + expect(result).must_equal true + end + + it "is invalid without a merchant" do + + @product.merchant_id = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:merchant)).must_equal true + expect(@product.errors.messages[:merchant].include?("must exist")).must_equal true + end - end + + it "fails validation when there is no product name" do + + #Act/Assert + @product.name = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:name)).must_equal true + expect(@product.errors.messages[:name].include?("can't be blank")).must_equal true + end + + it "fails validation when there is no product price" do + + #Act/Assert + @product.price = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:price)).must_equal true + expect(@product.errors.messages[:price].include?("is not a number")).must_equal true + + end + + it "fails validation when the price is set to 0" do + @product.price = 0.0 + + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:price)).must_equal true + expect(@product.errors.messages[:price].include?("must be greater than 0")).must_equal true + + + end + it "fails validation when the product name already exists" do + + #Act + new_product = Product.create(name: @product.name, price: 10.00, merchant_id: @merchant[:id]) + + #Assert + expect(new_product.valid?).must_equal false + expect(new_product.errors.messages.include?(:name)).must_equal true + expect(new_product.errors.messages[:name].include?("has already been taken")).must_equal true + end + end end -# "username" -# t.string "email" -# t.datetime "created_at", precision: 6, null: false -# t.datetime "updated_at", precision: 6, null: false -# t.string "uid" -# t.string "provider" -# t.string "avatar" - -# t.string "name" -# t.float "price" -# t.integer "merchant_id" -# t.integer "quantity" -# t.integer "category_id" \ No newline at end of file From 12b669312d4c5b5fec791540594e73cef6454036 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Wed, 18 Nov 2020 23:44:47 -0800 Subject: [PATCH 037/199] relationship tests added to product model tests --- test/models/product_test.rb | 112 ++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 42 deletions(-) diff --git a/test/models/product_test.rb b/test/models/product_test.rb index da4e40d9ec..ae17882c3e 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -1,64 +1,92 @@ require "test_helper" describe Product do - describe 'validations' do - before do - @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") - @product = Product.create(name: "Shoyru", price: 5.00, merchant_id: @merchant[:id], quantity: 500, category_id: 1) - end - it "is valid when all fields are filled" do - #Act/Assert - result = @product.valid? - expect(result).must_equal true + describe "relationships" do + describe "merchant" do + before do + @merchant = Merchant.create!(username: "Captain", email: "captain@email.com") + @product = Product.new(name: "fries", price: 10.00) end + it "can set the merchant using the Merchant" do - it "is invalid without a merchant" do + #Act/Assert + @product.merchant = @merchant + expect(@product.merchant_id).must_equal @merchant.id - @product.merchant_id = nil - expect(@product.valid?).must_equal false - expect(@product.errors.messages.include?(:merchant)).must_equal true - expect(@product.errors.messages[:merchant].include?("must exist")).must_equal true + end - end + it "can set the merchant using a merchant id" do - it "fails validation when there is no product name" do + #Act/Assert + @product.merchant_id = @merchant.id + expect(@product.merchant_id).must_equal @merchant.id + + end + end + end - #Act/Assert - @product.name = nil - expect(@product.valid?).must_equal false - expect(@product.errors.messages.include?(:name)).must_equal true - expect(@product.errors.messages[:name].include?("can't be blank")).must_equal true + describe 'validations' do + before do + @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") + @product = Product.create(name: "Shoyru", price: 5.00, merchant_id: @merchant[:id], quantity: 500, category_id: 1) end - it "fails validation when there is no product price" do + it "is valid when all fields are filled" do - #Act/Assert - @product.price = nil - expect(@product.valid?).must_equal false - expect(@product.errors.messages.include?(:price)).must_equal true - expect(@product.errors.messages[:price].include?("is not a number")).must_equal true + #Act/Assert + result = @product.valid? + expect(result).must_equal true + end - end + it "is invalid without a merchant" do - it "fails validation when the price is set to 0" do - @product.price = 0.0 + #Act/Assert + @product.merchant_id = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:merchant)).must_equal true + expect(@product.errors.messages[:merchant].include?("must exist")).must_equal true - expect(@product.valid?).must_equal false - expect(@product.errors.messages.include?(:price)).must_equal true - expect(@product.errors.messages[:price].include?("must be greater than 0")).must_equal true + end + it "fails validation when there is no product name" do - end - it "fails validation when the product name already exists" do + #Act/Assert + @product.name = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:name)).must_equal true + expect(@product.errors.messages[:name].include?("can't be blank")).must_equal true + end - #Act - new_product = Product.create(name: @product.name, price: 10.00, merchant_id: @merchant[:id]) + it "fails validation when there is no product price" do - #Assert - expect(new_product.valid?).must_equal false - expect(new_product.errors.messages.include?(:name)).must_equal true - expect(new_product.errors.messages[:name].include?("has already been taken")).must_equal true - end + #Act/Assert + @product.price = nil + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:price)).must_equal true + expect(@product.errors.messages[:price].include?("is not a number")).must_equal true + + end + + it "fails validation when the price is set to 0" do + + #Act/Assert + @product.price = 0.0 + expect(@product.valid?).must_equal false + expect(@product.errors.messages.include?(:price)).must_equal true + expect(@product.errors.messages[:price].include?("must be greater than 0")).must_equal true + + + end + it "fails validation when the product name already exists" do + + #Act + new_product = Product.create(name: @product.name, price: 10.00, merchant_id: @merchant[:id]) + + #Assert + expect(new_product.valid?).must_equal false + expect(new_product.errors.messages.include?(:name)).must_equal true + expect(new_product.errors.messages[:name].include?("has already been taken")).must_equal true + end end end From 5c8e1fadfaca928dca1e6e1cf0eeda30bb78b454 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Thu, 19 Nov 2020 00:10:53 -0800 Subject: [PATCH 038/199] Validations in merchant model complete --- test/models/merchant_test.rb | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb index ca3d6ca9b2..174ced7f0f 100644 --- a/test/models/merchant_test.rb +++ b/test/models/merchant_test.rb @@ -1,7 +1,64 @@ require "test_helper" describe Merchant do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + before do + @merchant = Merchant.create(email: "mkkr@123.com", username: "MKKRs") + end + + it "is valid when all fields are filled" do + + #Act/Assert + result = @merchant.valid? + expect(result).must_equal true + end + + it "is invalid without a username" do + + #Act/Assert + @merchant.username = nil + expect(@merchant.valid?).must_equal false + expect(@merchant.errors.messages.include?(:username)).must_equal true + expect(@merchant.errors.messages[:username].include?("can't be blank")).must_equal true + + end + + it "is invalid without an e-mail" do + + #Act/Assert + @merchant.email = nil + expect(@merchant.valid?).must_equal false + expect(@merchant.errors.messages.include?(:email)).must_equal true + expect(@merchant.errors.messages[:email].include?("can't be blank")).must_equal true + + end + + it "is invalid if email is improperly formatted" do + + #Act/Assert + @merchant.email = "iamanemail.com" + expect(@merchant.valid?).must_equal false + expect(@merchant.errors.messages.include?(:email)).must_equal true + expect(@merchant.errors.messages[:email].include?("is invalid")).must_equal true + + end + it "fails validation when the username already exists" do + + #Act + new_merchant = Merchant.create(username: @merchant.username, email: "im_good@email.com") + + #Assert + expect(new_merchant.valid?).must_equal false + expect(new_merchant.errors.messages.include?(:username)).must_equal true + expect(new_merchant.errors.messages[:username].include?("has already been taken")).must_equal true + end + + it "fails validation when the email already another_merchant" do + #Act + another_merchant = Merchant.create(username: "neopet_2020", email: @merchant.email) + + #Assert + expect(another_merchant.valid?).must_equal false + expect(another_merchant.errors.messages.include?(:email)).must_equal true + expect(another_merchant.errors.messages[:email].include?("has already been taken")).must_equal true + end end From fef3a814c0d9eeaa846d027e8d787e0b7fe0017e Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Thu, 19 Nov 2020 09:04:21 -0800 Subject: [PATCH 039/199] Added merchant id to create function --- app/controllers/products_controller.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 9e46760dc4..518be76d3c 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -24,7 +24,15 @@ def edit end def create + unless session[:merchant_id] + flash[:status] = :failure + flash[:result_text] = "Only merchants can create a new product" + render :index, status: :forbidden + return + end + @product = Product.new(product_params) + @product.merchant_id = session[:merchant.id] #<--will this work? Or need to declare @merchant? if @product.save flash[:status] = :success flash[:result_text] = "Successfully created new product: #{@product.name}" From 7d533716e5c59d3af952a7aefa9ab25d45b4fca4 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Thu, 19 Nov 2020 10:11:31 -0800 Subject: [PATCH 040/199] Added status column to products and removed category_id column from products --- db/migrate/20201119180725_add_status_to_products.rb | 5 +++++ .../20201119180953_remove_category_id_from_products.rb | 5 +++++ db/schema.rb | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20201119180725_add_status_to_products.rb create mode 100644 db/migrate/20201119180953_remove_category_id_from_products.rb diff --git a/db/migrate/20201119180725_add_status_to_products.rb b/db/migrate/20201119180725_add_status_to_products.rb new file mode 100644 index 0000000000..e362f9d9a5 --- /dev/null +++ b/db/migrate/20201119180725_add_status_to_products.rb @@ -0,0 +1,5 @@ +class AddStatusToProducts < ActiveRecord::Migration[6.0] + def change + add_column :products, :status, :boolean + end +end diff --git a/db/migrate/20201119180953_remove_category_id_from_products.rb b/db/migrate/20201119180953_remove_category_id_from_products.rb new file mode 100644 index 0000000000..308164b7e2 --- /dev/null +++ b/db/migrate/20201119180953_remove_category_id_from_products.rb @@ -0,0 +1,5 @@ +class RemoveCategoryIdFromProducts < ActiveRecord::Migration[6.0] + def change + remove_column :products, :category_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 835b16fbb1..c9433a1da8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_19_001025) do +ActiveRecord::Schema.define(version: 2020_11_19_180953) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -62,9 +62,9 @@ t.float "price" t.integer "merchant_id" t.integer "quantity" - t.integer "category_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.boolean "status" end create_table "reviews", force: :cascade do |t| From 2e9f37adb1e114c3d0208995e4d95597cbfa5070 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Thu, 19 Nov 2020 10:16:37 -0800 Subject: [PATCH 041/199] create merchant dashboard and controller/model tests --- app/models/merchant.rb | 1 + app/views/merchants/dashboard.html.erb | 4 ++ test/controllers/merchants_controller_test.rb | 29 ++++++++-- test/fixtures/merchants.yml | 6 ++ test/fixtures/products.yml | 0 test/models/merchant_test.rb | 55 ++++++++++++++++++- 6 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 app/views/merchants/dashboard.html.erb create mode 100644 test/fixtures/merchants.yml create mode 100644 test/fixtures/products.yml diff --git a/app/models/merchant.rb b/app/models/merchant.rb index b0889e6746..5f02d26d20 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -3,6 +3,7 @@ class Merchant < ApplicationRecord validates :username, uniqueness: true, presence: true validates :email, presence: true, format: {with: /@/}, uniqueness: true + validates :uid, uniqueness: { scope: :provider } def self.build_from_github(auth_hash) merchant = Merchant.new diff --git a/app/views/merchants/dashboard.html.erb b/app/views/merchants/dashboard.html.erb new file mode 100644 index 0000000000..5def829519 --- /dev/null +++ b/app/views/merchants/dashboard.html.erb @@ -0,0 +1,4 @@ +

Merchant Dashboard

+

<%= @login_user.username %>

+

<%= @login_user.email %>

+<%= image_tag @login_user.avatar, alt: "user's Github image" %> \ No newline at end of file diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb index f7410e782f..9dda17df08 100644 --- a/test/controllers/merchants_controller_test.rb +++ b/test/controllers/merchants_controller_test.rb @@ -1,14 +1,31 @@ require "test_helper" describe MerchantsController do - it "must get index" do - get merchants_index_url - must_respond_with :success + describe "index" do + it "must get index" do + get merchants_path + must_respond_with :success + end end - it "must get show" do - get merchants_show_url - must_respond_with :success + describe "show" do + it "must get show" do + get merchant_path(merchants(:merchant1)) + must_respond_with :success + end end + describe "dashboard" do + it "must get the dashboard page" do + skip + end + end + + describe "create" do + + end + + describe "logout" do + + end end diff --git a/test/fixtures/merchants.yml b/test/fixtures/merchants.yml new file mode 100644 index 0000000000..52e8c09f05 --- /dev/null +++ b/test/fixtures/merchants.yml @@ -0,0 +1,6 @@ +merchant1: + username: bob_belcher + email: bob@bob.com + uid: 12345 + provider: github + avatar: nil \ No newline at end of file diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb index ca3d6ca9b2..0432000e77 100644 --- a/test/models/merchant_test.rb +++ b/test/models/merchant_test.rb @@ -1,7 +1,56 @@ require "test_helper" describe Merchant do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + before do + @merchant1 = merchants(:merchant1) + end + + describe "instantiation" do + it "will have the required fields" do + skip + end + end + + describe "validations" do + it "is valid if username is present" do + merchant = Merchant.new(username: "linda_belcher", email: "linda@linda.com", uid: "23456") + expect(merchant.valid?).must_equal true + end + + it "is invalid if username is nil" do + merchant = Merchant.new(username: nil) + expect(merchant.valid?).must_equal false + expect(merchant.errors.messages).must_include :username + end + + it "is valid if email is present" do + merchant = Merchant.new(username: "linda_belcher", email: "linda@linda.com", uid: "23456") + expect(merchant.valid?).must_equal true + end + + it "is invalid if email is nil" do + merchant = Merchant.new(email: nil) + expect(merchant.valid?).must_equal false + expect(merchant.errors.messages).must_include :email + end + + #TODO - edge case for uid + it "requires a unique uid" do + dup = Merchant.new(username: "bob_belcher", provider: "github", uid: 12345, email: "bob@bob.com") + expect(dup.valid?).must_equal false + expect(dup.errors.messages).must_include :uid + end + end + + describe "relations" do + it "has a list of products" do + expect(@merchant1).must_respond_to :products + + #TODO - uncomment when products are created + + # @merchant1.products.each do |product| + # expect(product).must_be_kind_of Product + # end + end + end end From 436f4428c65f85ae55b68094e123649d46341b75 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Thu, 19 Nov 2020 10:32:57 -0800 Subject: [PATCH 042/199] refined routes --- config/routes.rb | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 8a20e028ad..e35bbad04d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,14 +1,4 @@ Rails.application.routes.draw do - get 'homepages/index' - get 'product/index' - get 'product/show' - get 'product/new' - get 'product/edit' - get 'product/create' - get 'product/update' - get 'product/destroy' - get 'merchants/index' - get 'merchants/show' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.htmlget "/auth/github", as: "github_login" #OmniAuth login get "/auth/github", as: "github_login" #OmniAuth login From 29c3e7fa416edcf5b4bca666317a0394c9253421 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Thu, 19 Nov 2020 12:02:25 -0800 Subject: [PATCH 043/199] add oauth testing for merchant controller --- app/controllers/merchants_controller.rb | 2 +- app/models/merchant.rb | 2 +- config/routes.rb | 2 +- test/controllers/merchants_controller_test.rb | 46 +++++++++++++++++++ test/test_helper.rb | 24 ++++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 023d9366c5..7434305ba0 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -21,7 +21,7 @@ def create else flash[:status] = :failure flash[:result_text] = "Could not create user account #{merchant.errors.messages}" - redirect_to merchants_path + redirect_to root_path return end end diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 5f02d26d20..988c12c64e 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -3,7 +3,7 @@ class Merchant < ApplicationRecord validates :username, uniqueness: true, presence: true validates :email, presence: true, format: {with: /@/}, uniqueness: true - validates :uid, uniqueness: { scope: :provider } + validates :uid, presence: true, uniqueness: { scope: :provider } def self.build_from_github(auth_hash) merchant = Merchant.new diff --git a/config/routes.rb b/config/routes.rb index e35bbad04d..c4cab0e2fc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,7 @@ # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.htmlget "/auth/github", as: "github_login" #OmniAuth login get "/auth/github", as: "github_login" #OmniAuth login - get "/auth/:provider/callback", to: "merchants#create" #OmniAuth Github callback + get "/auth/:provider/callback", to: "merchants#create", as: "auth_callback" #OmniAuth Github callback post "/logout", to: "merchants#logout", as: "logout" root to: "homepages#index" diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb index 9dda17df08..2215a535b9 100644 --- a/test/controllers/merchants_controller_test.rb +++ b/test/controllers/merchants_controller_test.rb @@ -1,6 +1,50 @@ require "test_helper" describe MerchantsController do + describe "auth_callback" do + it "logs in an existing merchant and redirects to the root path" do + start_count = Merchant.count + merchant = merchants(:merchant1) + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(merchant)) + + get auth_callback_path(:github) + + must_redirect_to root_path + + expect(session[:user_id]).must_equal merchant.id + expect(Merchant.count).must_equal start_count + end + + it "creates a new user and redirects to the root path" do + start_count = Merchant.count + new_merchant = Merchant.new(provider: "github", uid: 99999, username: "test_user", email: "test@user.com") + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(new_merchant)) + get auth_callback_path(:github) + + must_redirect_to root_path + + expect(Merchant.count).must_equal start_count + 1 + expect(session[:user_id]).must_equal Merchant.last.id + end + + it "redirects to the root path if given invalid user data" do + start_count = Merchant.count + new_merchant = Merchant.new(provider: "github", uid: nil, username: "test_user", email: "test@user.com") + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(new_merchant)) + get auth_callback_path(:github) + + must_redirect_to root_path + + new_merchant = Merchant.find_by(uid: new_merchant.uid, provider: new_merchant.provider) + expect(new_merchant).must_be_nil + expect(Merchant.count).must_equal start_count + expect(session[:user_id]).must_be_nil + end + end + describe "index" do it "must get index" do get merchants_path @@ -28,4 +72,6 @@ describe "logout" do end + + end diff --git a/test/test_helper.rb b/test/test_helper.rb index b19af0d5bd..7de1c8a32a 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -17,5 +17,29 @@ class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. fixtures :all + def setup + OmniAuth.config.test_mode = true + end + + def mock_auth_hash(merchant) + return { + provider: merchant.provider, + uid: merchant.uid, + info: { + email: merchant.email, + nickname: merchant.username + } + } + end + + def perform_login(merchant = nil) + merchant ||= Merchant.first + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(merchant)) + get auth_callback_path(:github) + + return merchant + end + # Add more helper methods to be used by all tests here... end From 8572c489016107de96dc1b7281dc42c9b9a65113 Mon Sep 17 00:00:00 2001 From: Madeline Date: Thu, 19 Nov 2020 21:59:07 -0500 Subject: [PATCH 044/199] finished order form and changed order schema --- .DS_Store | Bin 0 -> 8196 bytes .idea/.generators | 8 ++ .idea/.gitignore | 6 + .idea/.rakeTasks | 7 + .idea/betsy.iml | 135 ++++++++++++++++++ .idea/inspectionProfiles/Project_Default.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + Gemfile.lock | 41 +----- app/controllers/orders_controller.rb | 29 ++++ app/controllers/products_controller.rb | 25 ++-- app/views/orders/_form.html.erb | 23 +++ app/views/orders/new.html.erb | 1 + app/views/orders/show.html.erb | 0 app/views/products/create.html.erb | 0 app/views/products/edit.html.erb | 0 app/views/products/index.html.erb | 0 app/views/products/new.html.erb | 0 app/views/products/show.html.erb | 0 ...20201120022035_add_zip_code_to_products.rb | 5 + ...20201120022801_remove_zip_from_products.rb | 5 + .../20201120023003_add_zip_code_to_orders.rb | 5 + ...0201120023936_set_default_status_orders.rb | 5 + db/schema.rb | 5 +- test/.DS_Store | Bin 0 -> 6148 bytes test/controllers/products_controller_test.rb | 134 ++++++++++++++++- test/fixtures/.DS_Store | Bin 0 -> 6148 bytes test/fixtures/products.yml | 6 + 29 files changed, 410 insertions(+), 54 deletions(-) create mode 100644 .DS_Store create mode 100644 .idea/.generators create mode 100644 .idea/.gitignore create mode 100644 .idea/.rakeTasks create mode 100644 .idea/betsy.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 app/views/orders/_form.html.erb create mode 100644 app/views/orders/new.html.erb create mode 100644 app/views/orders/show.html.erb create mode 100644 app/views/products/create.html.erb create mode 100644 app/views/products/edit.html.erb create mode 100644 app/views/products/index.html.erb create mode 100644 app/views/products/new.html.erb create mode 100644 app/views/products/show.html.erb create mode 100644 db/migrate/20201120022035_add_zip_code_to_products.rb create mode 100644 db/migrate/20201120022801_remove_zip_from_products.rb create mode 100644 db/migrate/20201120023003_add_zip_code_to_orders.rb create mode 100644 db/migrate/20201120023936_set_default_status_orders.rb create mode 100644 test/.DS_Store create mode 100644 test/fixtures/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..aea528ce4f0d8424f2d82db18cb20f8eacfafefe GIT binary patch literal 8196 zcmeHM-D(p-6h4#0beC2dL1@LB+z4J&X%K5c3Nf}wF9c~sFI3vyWNp`Oc0-bFs4YD z68CeSNrkNC8ms`Hl9nGOKCUV=SleI~unJfOtO8a6tHA%E0G`>LoHL&Ls@IlQ0jt1; zRDkafRb;mH%ubY*w+<9C1b{7}StiuwkAK)IH^A02J5d%bNJ3Fz6;)&*hR9+Eq3GzZ zXZVS-icUh#jB&D=MHZomEc6gn2`5ok)|OTQtH7)R9J?3Eqb_xKBQ1WvkDi-9Wsd+=uv7gei)1b zwaM2p1<$}NVow1+Kw`HoI>yKyY8$L?25W&Hfzy$CL=@=g;+BD4($Sb9f|{61=Mj70 zW6lFEcqvxZ!|GW1nVE=H&ohd^gyx>5>Lx0oLw$C^dgoC~@OOfl1KP(X`Q}K7X1*WjcY9G0rQr*VW`Rr(s<>mEW)UtnVbBF^w@@sI6E9&Y1#5wcb^Z z|98%Q|9{SQWtVFeunPQ*0;06t+-`vJ`yp(SIo7TsA0TsL+(cPPK_SC&SQ(DPPX91O fy$UFE>Y1G=ix#AR{vsgvAEkZ%OBdMU0xIwePsx!^ literal 0 HcmV?d00001 diff --git a/.idea/.generators b/.idea/.generators new file mode 100644 index 0000000000..1618976692 --- /dev/null +++ b/.idea/.generators @@ -0,0 +1,8 @@ + + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000..8bf4d45d6e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,6 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks new file mode 100644 index 0000000000..c6865d9a1b --- /dev/null +++ b/.idea/.rakeTasks @@ -0,0 +1,7 @@ + + diff --git a/.idea/betsy.iml b/.idea/betsy.iml new file mode 100644 index 0000000000..9685f3f8b3 --- /dev/null +++ b/.idea/betsy.iml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000000..b0db9b0fca --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..510e7fcc8f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000..c8f8be844a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..94a25f7f4c --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 6c663a531b..c36c89dd8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -88,8 +88,8 @@ GEM coderay (1.1.3) concurrent-ruby (1.1.7) crass (1.0.6) - debase (2.3.0) - debase-ruby_core_source (~> 0.10.10) + debase (0.2.4.1) + debase-ruby_core_source (>= 0.10.2) debase-ruby_core_source (0.10.11) debug_inspector (0.0.3) dotenv (2.7.6) @@ -102,9 +102,6 @@ GEM multipart-post (>= 1.2, < 3) ruby2_keywords ffi (1.13.1) - ffi (1.13.1-java) - ffi (1.13.1-x64-mingw32) - ffi (1.13.1-x86-mingw32) formatador (0.2.5) globalid (0.4.2) activesupport (>= 4.2.0) @@ -159,22 +156,13 @@ GEM minitest (>= 5.0) ruby-progressbar msgpack (1.3.3) - msgpack (1.3.3-java) - msgpack (1.3.3-x64-mingw32) - msgpack (1.3.3-x86-mingw32) multi_json (1.15.0) multi_xml (0.6.0) multipart-post (2.1.1) nenv (0.3.0) nio4r (2.5.4) - nio4r (2.5.4-java) nokogiri (1.10.10) mini_portile2 (~> 2.4.0) - nokogiri (1.10.10-java) - nokogiri (1.10.10-x64-mingw32) - mini_portile2 (~> 2.4.0) - nokogiri (1.10.10-x86-mingw32) - mini_portile2 (~> 2.4.0) notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) @@ -194,23 +182,15 @@ GEM oauth2 (~> 1.4) omniauth (~> 1.9) pg (1.2.3) - pg (1.2.3-x64-mingw32) - pg (1.2.3-x86-mingw32) popper_js (1.16.0) pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) - pry (0.13.1-java) - coderay (~> 1.1) - method_source (~> 1.0) - spoon (~> 0.0) pry-rails (0.3.9) pry (>= 0.10.4) public_suffix (4.0.6) puma (4.3.6) nio4r (~> 2.0) - puma (4.3.6-java) - nio4r (~> 2.0) rack (2.2.3) rack-proxy (0.6.5) rack @@ -247,8 +227,8 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) regexp_parser (1.8.2) - ruby-debug-ide (2.3.0) - debase (~> 2.3.0) + ruby-debug-ide (0.7.2) + rake (>= 0.8.1) ruby-progressbar (1.10.1) ruby2_keywords (0.0.2) rubyzip (2.3.0) @@ -256,8 +236,6 @@ GEM sassc-rails (~> 2.1, >= 2.1.1) sassc (2.4.0) ffi (~> 1.9) - sassc (2.4.0-x64-mingw32) - ffi (~> 1.9) sassc-rails (2.1.2) railties (>= 4.0.0) sassc (>= 2.0) @@ -268,8 +246,6 @@ GEM childprocess (>= 0.5, < 4.0) rubyzip (>= 1.2.2) shellany (0.0.1) - spoon (0.0.6) - ffi spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) @@ -283,15 +259,12 @@ GEM sprockets (>= 3.0.0) thor (1.0.1) thread_safe (0.3.6) - thread_safe (0.3.6-java) tilt (2.0.10) turbolinks (5.2.1) turbolinks-source (~> 5.2) turbolinks-source (5.2.0) tzinfo (1.2.8) thread_safe (~> 0.1) - tzinfo-data (1.2020.4) - tzinfo (>= 1.0.0) web-console (4.1.0) actionview (>= 6.0.0) activemodel (>= 6.0.0) @@ -307,19 +280,13 @@ GEM railties (>= 4.2) websocket-driver (0.7.3) websocket-extensions (>= 0.1.0) - websocket-driver (0.7.3-java) - websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) zeitwerk (2.4.1) PLATFORMS - java ruby - x64-mingw32 - x86-mingw32 - x86-mswin32 DEPENDENCIES better_errors diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 8a0e3659ae..a953402a43 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,2 +1,31 @@ class OrdersController < ApplicationController + + + def new + @order = Order.new + end + + def create + @order = Order.new(order_params) + if @order.save + flash[:status] = :success + flash[:result_text] = "Successfully ordered: #{@order.id}" + redirect_to order_path(@order) + else + flash[:status] = :failure + flash[:result_text] = "Could not create #{@order}" + flash[:messages] = @order.errors.messages + render :new, status: :bad_request + end + end + + private + + def order_params + return params.require(:order).permit(:name, :email, :address, :zip_code, :credit_card, :exp_date) + end + + def find_order + @order = Order.find_by_id(id: params[:id]) + end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 518be76d3c..43f90b1c09 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,13 +1,12 @@ class ProductsController < ApplicationController - - skip_before_action :require_login, except [:new, :edit, :destroy] + before_action :find_product, only: [:show, :edit, :update] + # skip_before_action :require_login, except [:new, :edit, :destroy] def index @products = Product.all end def show - @product = Product.find_by(id: params[:id]) render_404 unless @product end @@ -16,11 +15,10 @@ def new end def edit - @product = Product.find_by(id: params[:id]) - if @product.nil? - redirect_to products_path - return - end + # if @product.nil? + # redirect_to products_path + # return + # end end def create @@ -60,10 +58,13 @@ def update #TODO def retire? - private + private - def product_params - return params.require(:product).permit(:name, :price, :merchant_id, :quantity, :category_id) - end + def product_params + return params.require(:product).permit(:name, :price, :merchant_id, :quantity, :status) + end + def find_product + @product = Product.find_by_id(id: params[:id]) + end end diff --git a/app/views/orders/_form.html.erb b/app/views/orders/_form.html.erb new file mode 100644 index 0000000000..fc4a48f019 --- /dev/null +++ b/app/views/orders/_form.html.erb @@ -0,0 +1,23 @@ +<%= form_with model: @order, class: 'create-book' do |f| %> + + <%= f.label :name %> + <%= f.text_field :name %> + + <%= f.label :email %> + <%= f.text_field :email %> + + <%= f.label :address %> + <%= f.text_field :address %> + + <%= f.label :zip_code %> + <%= f.text_field :zip_code %> + + <%= f.label :credit_card %> + <%= f.text_field :credit_card %> + + <%= f.label :exp_date %> + <%= f.text_field :exp_date %> + + + <%= f.submit action_name, class: "book-button" %> +<% end %> \ No newline at end of file diff --git a/app/views/orders/new.html.erb b/app/views/orders/new.html.erb new file mode 100644 index 0000000000..e254ec8944 --- /dev/null +++ b/app/views/orders/new.html.erb @@ -0,0 +1 @@ +<%= render partial: "form", locals: { action_name: "Submit Order" } %> diff --git a/app/views/orders/show.html.erb b/app/views/orders/show.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/products/create.html.erb b/app/views/products/create.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/products/edit.html.erb b/app/views/products/edit.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/products/new.html.erb b/app/views/products/new.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb new file mode 100644 index 0000000000..e69de29bb2 diff --git a/db/migrate/20201120022035_add_zip_code_to_products.rb b/db/migrate/20201120022035_add_zip_code_to_products.rb new file mode 100644 index 0000000000..ae9ec38700 --- /dev/null +++ b/db/migrate/20201120022035_add_zip_code_to_products.rb @@ -0,0 +1,5 @@ +class AddZipCodeToProducts < ActiveRecord::Migration[6.0] + def change + add_column :products, :zip, :string + end +end diff --git a/db/migrate/20201120022801_remove_zip_from_products.rb b/db/migrate/20201120022801_remove_zip_from_products.rb new file mode 100644 index 0000000000..7d97f6f9a1 --- /dev/null +++ b/db/migrate/20201120022801_remove_zip_from_products.rb @@ -0,0 +1,5 @@ +class RemoveZipFromProducts < ActiveRecord::Migration[6.0] + def change + remove_column :products, :zip, :string + end +end diff --git a/db/migrate/20201120023003_add_zip_code_to_orders.rb b/db/migrate/20201120023003_add_zip_code_to_orders.rb new file mode 100644 index 0000000000..7e1c907e3f --- /dev/null +++ b/db/migrate/20201120023003_add_zip_code_to_orders.rb @@ -0,0 +1,5 @@ +class AddZipCodeToOrders < ActiveRecord::Migration[6.0] + def change + add_column :orders, :zip_code, :string + end +end diff --git a/db/migrate/20201120023936_set_default_status_orders.rb b/db/migrate/20201120023936_set_default_status_orders.rb new file mode 100644 index 0000000000..640dbce570 --- /dev/null +++ b/db/migrate/20201120023936_set_default_status_orders.rb @@ -0,0 +1,5 @@ +class SetDefaultStatusOrders < ActiveRecord::Migration[6.0] + def change + change_column :orders, :status, :string, :default => "pending" + end +end diff --git a/db/schema.rb b/db/schema.rb index c9433a1da8..7e54e45b4e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_19_180953) do +ActiveRecord::Schema.define(version: 2020_11_20_023936) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -49,12 +49,13 @@ create_table "orders", force: :cascade do |t| t.string "address" t.string "name" - t.string "status" + t.string "status", default: "pending" t.string "email" t.string "credit_card" t.string "exp_date" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "zip_code" end create_table "products", force: :cascade do |t| diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3e1b30458a68cac9ee7fbeb0631039db17ce8245 GIT binary patch literal 6148 zcmeHK%Zd|06up(iNyn&@#lYyw-Uu!RNh5{<83=J)%ua~tLM79kw3CLOu8{5+$4n#} z|3UN%{1rDY{SZGu&#kJ_PAB3*5D9fd)v3q1^*B{sl_Db1nG8Il1`#<3jFroX))?1w zSh12RxdIfbjfnc>Q$`WV6}By~3RngHHwF0Hy@_vjgkOyB_Sg5DP>)hNL&zwkQ{)&q z*Hf$%xjQtb;3$^;AeI4I;$!4K!tL+Mkm94GPeb&O;1{Bgw7~yV;Mc*I;AUuBf*-?c zT=WvV1uutQV)U=!H31vrT<%4@`x8HyrXw?p&%r2;(yZD1DoW+brLC${t2wo+wHMu? zoOUxmo1`6o{ETyt{A?JQ^kXUGpJ_jM5{1)VW9NZPGCxYfv2uWnOj1Ni35S)UjU`tHbLuTC4LnF!HNehswM*A)P?yi?cpiR=eaEysFqg zK0Md1W$8!TC9_+r_*q^S;P#oS9wY z)HiNsc0yJGtH9qXz~_UDz}Pmp(5Q|MMCu6ute{vK()=fYeO!ZWgA0wQfeGyj)ULuj zF@$zUxodcBgA0w?orHOO2-CALFBGAANBgd#lW1$Su~on-u&h8?XB&L~Km7gsf7!|A ztO8bnjZ#2V4!egPOv&7>E0g29)>N2l6Q>fLDp6vH(-|+3R|7jor$eInkXZSncoAEj^A}5pRLAtGKq|1VfY!dWk>3Aj z{LAzf`IeF{6-WjCs{%5ZTujFNy0}}ve5c;Eh3%3}P4hbK(AZyl1n`HRBZoHV<3;<- XtAU-P&Z2Rn6Z0Wpf}~3YenEkEN;)@P literal 0 HcmV?d00001 diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml index e69de29bb2..1f9ffb8f77 100644 --- a/test/fixtures/products.yml +++ b/test/fixtures/products.yml @@ -0,0 +1,6 @@ +blue_shoes: + name: shoes + price: 2.99 + merchant_id: 1 + quantity: 10 + status: false \ No newline at end of file From cd7efd221312456ad89925291afe9d2eb00197a1 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Thu, 19 Nov 2020 19:25:03 -0800 Subject: [PATCH 045/199] write custom model methods for Merchant --- app/models/merchant.rb | 60 ++++++++++++++++++++++++++ app/views/merchants/dashboard.html.erb | 38 +++++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 988c12c64e..72fdf73b4c 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -16,5 +16,65 @@ def self.build_from_github(auth_hash) # We'll choose to do the saving outside of this method return merchant end + + def total_revenue + return 0 if self.products.empty? + result = 0 + + self.products.sum do |product| + product.order_items.each do |order_item| + result += order_item.quantity * product.price + end + end + + return result + end + + def total_revenue_by_status(status) + return 0 if self.products.empty? + result = 0 + + self.products.each do |product| + product.order_items.each do |order_item| + if order_item.order.status == status + result += order_item.quantity * product.price + end + end + end + + return result + end + + #TODO is this a quantity or a list of orders? + + def total_num_orders_by_status(status) + return 0 if self.products.empty? + result = [] + + self.products.each do |product| + product.order_items.each do |order_item| + if order_item.order.status == status + result << order_item.order_id + end + end + end + + return result.uniq.length + end + + def filter_orders(status) + return 0 if self.products.empty? + result = [] + + self.products.each do |product| + product.order_items.each do |order_item| + if order_item.order.status == status + result << order_item.order + end + end + end + + return result.uniq + end end diff --git a/app/views/merchants/dashboard.html.erb b/app/views/merchants/dashboard.html.erb index 5def829519..9ce36e5906 100644 --- a/app/views/merchants/dashboard.html.erb +++ b/app/views/merchants/dashboard.html.erb @@ -1,4 +1,40 @@

Merchant Dashboard

<%= @login_user.username %>

<%= @login_user.email %>

-<%= image_tag @login_user.avatar, alt: "user's Github image" %> \ No newline at end of file +<%= image_tag @login_user.avatar, alt: "user's Github image" %> + +
    + <% @login_user.products.each do |product| %> +
  • <%= product.name %>
  • +
  • <%= product.price %>
  • +
  • <%= product.quantity %>
  • +
  • <%= product.status %>
  • + <% end %> +
+ +

Total Revenue: $<%= @login_user.total_revenue %>

+

View Orders:

+

Fulfilled Orders Revenue: $<%= @login_user.total_revenue_by_status("fulfilled") %>

+

Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("fulfilled") %>

+

Pending Orders Revenue: $<%= @login_user.total_revenue_by_status("pending") %>

+

Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("pending") %>

+ +
    + <% @login_user.filter_orders("fulfilled").each do |order| %> +
  • <%= order.name %>
  • +
  • <%= order.email %>
  • +
  • <%= order.address %>
  • +
  • <%= order.credit_card %>
  • +
  • <%= order.exp_date %>
  • + <% end %> +
+ +
    + <% @login_user.filter_orders("pending").each do |order| %> +
  • <%= order.name %>
  • +
  • <%= order.email %>
  • +
  • <%= order.address %>
  • +
  • <%= order.credit_card %>
  • +
  • <%= order.exp_date %>
  • + <% end %> +
\ No newline at end of file From fc2a092207820970c671eebeaab0a63e05b9140e Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Thu, 19 Nov 2020 23:06:53 -0800 Subject: [PATCH 046/199] Products show view semi-working --- .idea/.generators | 2 +- .idea/betsy.iml | 15 +++++++++++++++ app/controllers/products_controller.rb | 11 +++++++++-- app/views/products/index.html.erb | 8 ++++++++ app/views/products/show.html.erb | 15 +++++++++++++++ .../20201120065727_add_description_to_products.rb | 5 +++++ db/schema.rb | 3 ++- 7 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20201120065727_add_description_to_products.rb diff --git a/.idea/.generators b/.idea/.generators index 1618976692..72e196d79d 100644 --- a/.idea/.generators +++ b/.idea/.generators @@ -5,4 +5,4 @@ You are allowed to: 2. Remove generators 3. Add installed generators To add new installed generators automatically delete this file and reload the project. ---> +--> diff --git a/.idea/betsy.iml b/.idea/betsy.iml index 9685f3f8b3..adf8b082d0 100644 --- a/.idea/betsy.iml +++ b/.idea/betsy.iml @@ -55,20 +55,27 @@ + + + + + + + @@ -81,11 +88,17 @@ + + + + + + @@ -103,7 +116,9 @@ + + diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 43f90b1c09..ccb35dd841 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,5 @@ class ProductsController < ApplicationController - before_action :find_product, only: [:show, :edit, :update] + # before_action :find_product, only: [:show, :edit, :update] # skip_before_action :require_login, except [:new, :edit, :destroy] def index @@ -7,11 +7,17 @@ def index end def show + @product = Product.find_by(id: params[:id]) render_404 unless @product + end def new @product = Product.new + @quantity = @product.quantity + if @product.quantity.nil? + @quantity = 0 + end end def edit @@ -65,6 +71,7 @@ def product_params end def find_product - @product = Product.find_by_id(id: params[:id]) + @product = Product.find_by(id: params[:product_id]) end + end diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index e69de29bb2..a8c8026b7a 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -0,0 +1,8 @@ +<% @products.each do |product|%> + +
    +
  • <%= link_to product.name, product_path(product) %>
  • +
+ + +<% end %> \ No newline at end of file diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index e69de29bb2..096fabb174 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -0,0 +1,15 @@ + + + + +

<%= @product.name %>

+

Sold by <%= @product.merchant.username %>

+

Price: $<%= @product.price %>

+

Description: <%= @product.description %>

+ +
+ +
<%= @quantity %> In Stock
+ + + diff --git a/db/migrate/20201120065727_add_description_to_products.rb b/db/migrate/20201120065727_add_description_to_products.rb new file mode 100644 index 0000000000..de508bec73 --- /dev/null +++ b/db/migrate/20201120065727_add_description_to_products.rb @@ -0,0 +1,5 @@ +class AddDescriptionToProducts < ActiveRecord::Migration[6.0] + def change + add_column :products, :description, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 7e54e45b4e..ad8422df13 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_20_023936) do +ActiveRecord::Schema.define(version: 2020_11_20_065727) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -66,6 +66,7 @@ t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.boolean "status" + t.string "description" end create_table "reviews", force: :cascade do |t| From acb8e612ccecc3b6f8dfe26e80fe8768d280bb06 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 02:46:24 -0800 Subject: [PATCH 047/199] First pass at shopping cart, changed some routes and schema --- Gemfile | 2 +- app/controllers/application_controller.rb | 8 ++++++++ app/controllers/order_items_controller.rb | 11 +++++++++++ app/controllers/products_controller.rb | 19 +++++++++++++++++++ app/models/product.rb | 2 ++ app/views/products/index.html.erb | 12 ++++++++---- app/views/products/shopping_cart.html.erb | 6 ++++++ app/views/products/show.html.erb | 11 +++++++++-- config/routes.rb | 12 ++++++++++-- ...20201120070941_products_default_setting.rb | 5 +++++ ...201120071150_change_product_column_name.rb | 5 +++++ ...0201120073116_add_status_to_order_items.rb | 5 +++++ ...0201120080158_add_photo_url_to_products.rb | 5 +++++ db/schema.rb | 6 ++++-- 14 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 app/views/products/shopping_cart.html.erb create mode 100644 db/migrate/20201120070941_products_default_setting.rb create mode 100644 db/migrate/20201120071150_change_product_column_name.rb create mode 100644 db/migrate/20201120073116_add_status_to_order_items.rb create mode 100644 db/migrate/20201120080158_add_photo_url_to_products.rb diff --git a/Gemfile b/Gemfile index 272a2604d4..f20212a669 100644 --- a/Gemfile +++ b/Gemfile @@ -79,4 +79,4 @@ end group :test do gem 'minitest-rails' gem 'minitest-reporters' -end \ No newline at end of file +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e4e787e382..d7bf01b44d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -6,6 +6,14 @@ def render_404 return render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false end + def current_order + if !session[:order_id].nil? + Order.find(session[:order_id]) + else + Order.new + end + end + private def find_merchant diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb index 357e7f5c80..714b66c888 100644 --- a/app/controllers/order_items_controller.rb +++ b/app/controllers/order_items_controller.rb @@ -1,2 +1,13 @@ class OrderItemsController < ApplicationController + + def create + @order = current_order + + + + end + + def update + + end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index ccb35dd841..eb6f816144 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -9,9 +9,24 @@ def index def show @product = Product.find_by(id: params[:id]) render_404 unless @product + end + + def add_to_cart + initialize_session + unless session[:cart].include?(find_product) + session[:cart] << find_product + redirect_to product_shopping_cart_path(find_product) + end + # id = params[:id] + # session[:cart] << id unless session[:cart].include?(id) end + def shopping_cart + initialize_session + @product = Product(session[:cart]) + end + def new @product = Product.new @quantity = @product.quantity @@ -66,6 +81,10 @@ def update private + def initialize_session + return session[:cart] ||= [] + end + def product_params return params.require(:product).permit(:name, :price, :merchant_id, :quantity, :status) end diff --git a/app/models/product.rb b/app/models/product.rb index fcf9978406..4e2eb9ff31 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -7,4 +7,6 @@ class Product < ApplicationRecord validates :name, presence: true, uniqueness: true validates :price, presence: true, numericality: { greater_than: 0 } + + end diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index a8c8026b7a..dfbfe86765 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,8 +1,12 @@ -<% @products.each do |product|%> -
    -
  • <%= link_to product.name, product_path(product) %>
  • -
+<% @products.each do |product|%> +

<%= product.name %>

+ <%# if product.photo.present? %> + + <%#end %> +

Price: <%= number_to_currency(product.price) %>

+

<%= product.description %>

+

<%= link_to product.name, product_path(product.id) %>

<% end %> \ No newline at end of file diff --git a/app/views/products/shopping_cart.html.erb b/app/views/products/shopping_cart.html.erb new file mode 100644 index 0000000000..49318847c3 --- /dev/null +++ b/app/views/products/shopping_cart.html.erb @@ -0,0 +1,6 @@ +

shopping cart!

+ +<% @products.each do |product|%> +

<%= product.name %>

+<% end %> + diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 096fabb174..b699c2eba5 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -3,13 +3,20 @@

<%= @product.name %>

+

Sold by <%= @product.merchant.username %>

-

Price: $<%= @product.price %>

+

Price: <%= number_to_currency(@product.price) %>

Description: <%= @product.description %>


- + <%= form_with model: @products, url: product_add_to_cart_path(@product.id), method: :post do |f| %> + <%= f.select :quantity, (1..20) %> + <%= f.submit "Add to cart", class:"btn btn-primary" %> + <%end%>
<%= @quantity %> In Stock
+ + + diff --git a/config/routes.rb b/config/routes.rb index c4cab0e2fc..50b4050b4a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,14 +5,22 @@ get "/auth/:provider/callback", to: "merchants#create", as: "auth_callback" #OmniAuth Github callback post "/logout", to: "merchants#logout", as: "logout" + resources :products, except: [:delete] do + # post "/products/:product_id/order_items", to: "order_items#create", as: "start_shopping" + get "products/shopping_cart", to: "products#shopping_cart", as: "shopping_cart" + post 'products/add_to_cart/id', to: 'products#add_to_cart', as: "add_to_cart" + delete 'products/remove_from_cart/id', to: 'products#remove_from_cart', as: "remove_from_cart" + + end + root to: "homepages#index" resources :homepages, only: [:index] resources :merchants, only: [:create, :index, :show] get "/dashboard", to: "merchants#dashboard", as: "dashboard" - resources :products + resources :categorizations - resources :order_items + # resources :order_items resources :orders resources :reviews end diff --git a/db/migrate/20201120070941_products_default_setting.rb b/db/migrate/20201120070941_products_default_setting.rb new file mode 100644 index 0000000000..2232386d00 --- /dev/null +++ b/db/migrate/20201120070941_products_default_setting.rb @@ -0,0 +1,5 @@ +class ProductsDefaultSetting < ActiveRecord::Migration[6.0] + def change + change_column :products, :status, :boolean, :default => true + end +end diff --git a/db/migrate/20201120071150_change_product_column_name.rb b/db/migrate/20201120071150_change_product_column_name.rb new file mode 100644 index 0000000000..dfcc1b6215 --- /dev/null +++ b/db/migrate/20201120071150_change_product_column_name.rb @@ -0,0 +1,5 @@ +class ChangeProductColumnName < ActiveRecord::Migration[6.0] + def change + rename_column :products, :status, :active + end +end diff --git a/db/migrate/20201120073116_add_status_to_order_items.rb b/db/migrate/20201120073116_add_status_to_order_items.rb new file mode 100644 index 0000000000..fd5d6dd21d --- /dev/null +++ b/db/migrate/20201120073116_add_status_to_order_items.rb @@ -0,0 +1,5 @@ +class AddStatusToOrderItems < ActiveRecord::Migration[6.0] + def change + add_column :order_items, :status, :string, :default => "pending" + end +end diff --git a/db/migrate/20201120080158_add_photo_url_to_products.rb b/db/migrate/20201120080158_add_photo_url_to_products.rb new file mode 100644 index 0000000000..1aeece154e --- /dev/null +++ b/db/migrate/20201120080158_add_photo_url_to_products.rb @@ -0,0 +1,5 @@ +class AddPhotoUrlToProducts < ActiveRecord::Migration[6.0] + def change + add_column :products, :photo, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index ad8422df13..98e32d9351 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_20_065727) do +ActiveRecord::Schema.define(version: 2020_11_20_080158) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -44,6 +44,7 @@ t.integer "quantity" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "status", default: "pending" end create_table "orders", force: :cascade do |t| @@ -65,8 +66,9 @@ t.integer "quantity" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false - t.boolean "status" + t.boolean "active", default: true t.string "description" + t.string "photo" end create_table "reviews", force: :cascade do |t| From 73a3b025db4b0588714ec0c781f82146d25ad281 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 07:41:10 -0800 Subject: [PATCH 048/199] add_to_cart_feature--unable to get quantity to pass via session --- app/controllers/products_controller.rb | 19 +++++++++---------- app/views/products/cart.html.erb | 20 ++++++++++++++++++++ app/views/products/index.html.erb | 4 ++-- app/views/products/shopping_cart.html.erb | 6 ------ app/views/products/show.html.erb | 5 ++--- config/routes.rb | 9 ++++++--- 6 files changed, 39 insertions(+), 24 deletions(-) create mode 100644 app/views/products/cart.html.erb delete mode 100644 app/views/products/shopping_cart.html.erb diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index eb6f816144..9229408003 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -11,20 +11,19 @@ def show render_404 unless @product end - def add_to_cart - initialize_session - unless session[:cart].include?(find_product) - session[:cart] << find_product - redirect_to product_shopping_cart_path(find_product) - end - # id = params[:id] - # session[:cart] << id unless session[:cart].include?(id) + def cart + @cart = session[:cart] + end + def clear_cart + session[:cart] = [] + redirect_to cart_path end - def shopping_cart + def add_to_cart initialize_session - @product = Product(session[:cart]) + session[:cart] << find_product + redirect_to cart_path end def new diff --git a/app/views/products/cart.html.erb b/app/views/products/cart.html.erb new file mode 100644 index 0000000000..b92f4ebacb --- /dev/null +++ b/app/views/products/cart.html.erb @@ -0,0 +1,20 @@ + +

Your Shopping Cart:

+<% if @cart.empty? + @cart = "Your cart is currently empty!" %> + <%= @cart %> +<% else %> + <% @cart.each do |item| %> +
    +
  • <%= link_to item["name"], products_path(item["id"]) %>
  • +
  • <%= item["price"] %>
  • +
  • Quantity: coming soon
  • + +
+ <% end %> + <%= link_to "Clear Cart", clear_cart_path %> +<% end %> +<%= link_to "Go Shopping", products_path %> + + + diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index dfbfe86765..a717593524 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,12 +1,12 @@ <% @products.each do |product|%> -

<%= product.name %>

+

<%= link_to product.name, product_path(product.id) %>

<%# if product.photo.present? %> <%#end %>

Price: <%= number_to_currency(product.price) %>

<%= product.description %>

-

<%= link_to product.name, product_path(product.id) %>

+

<% end %> \ No newline at end of file diff --git a/app/views/products/shopping_cart.html.erb b/app/views/products/shopping_cart.html.erb deleted file mode 100644 index 49318847c3..0000000000 --- a/app/views/products/shopping_cart.html.erb +++ /dev/null @@ -1,6 +0,0 @@ -

shopping cart!

- -<% @products.each do |product|%> -

<%= product.name %>

-<% end %> - diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index b699c2eba5..5c02d1ff80 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,7 +1,5 @@ - -

<%= @product.name %>

Sold by <%= @product.merchant.username %>

@@ -9,8 +7,9 @@

Description: <%= @product.description %>


- <%= form_with model: @products, url: product_add_to_cart_path(@product.id), method: :post do |f| %> + <%= form_with model: @products, url: add_to_cart_path(@product), method: :post do |f| %> <%= f.select :quantity, (1..20) %> + <%= f.hidden_field :product_id, value: @product.id %> <%= f.submit "Add to cart", class:"btn btn-primary" %> <%end%>
<%= @quantity %> In Stock
diff --git a/config/routes.rb b/config/routes.rb index 50b4050b4a..95fc97fd5b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,12 +7,15 @@ resources :products, except: [:delete] do # post "/products/:product_id/order_items", to: "order_items#create", as: "start_shopping" - get "products/shopping_cart", to: "products#shopping_cart", as: "shopping_cart" - post 'products/add_to_cart/id', to: 'products#add_to_cart', as: "add_to_cart" - delete 'products/remove_from_cart/id', to: 'products#remove_from_cart', as: "remove_from_cart" + # get "/cart", to: "products#shopping_cart", as: "shopping_cart" + # post 'products/add_to_cart/id', to: 'products#add_to_cart', as: "add_to_cart" + # delete 'products/remove_from_cart/id', to: 'products#remove_from_cart', as: "remove_from_cart" end + get "/cart", to:"products#cart", as: "cart" + post "/add_to_cart", to:"products#add_to_cart", as: "add_to_cart" + get "/clear_cart", to:"products#clear_cart", as: "clear_cart" root to: "homepages#index" resources :homepages, only: [:index] From 801d41be581710dfa6b41937bfecd910540964a5 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 08:44:41 -0800 Subject: [PATCH 049/199] Shopping cart has quantity--and adds total --- app/controllers/products_controller.rb | 23 ++++++++++++++++++++++- app/views/products/cart.html.erb | 20 ++++++++++++++++---- app/views/products/show.html.erb | 2 +- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 9229408003..d5f82cd7f8 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -13,16 +13,37 @@ def show def cart @cart = session[:cart] + @cart_total = get_total + end + + def get_total + total = 0.0 + @cart.each do |item| + total = total + item['product']['price'] * item['selected_quantity'] + end + return total end def clear_cart session[:cart] = [] + @cart = {} redirect_to cart_path end def add_to_cart initialize_session - session[:cart] << find_product + product = find_product + quantity = params[:selected_quantity].to_i + if product.quantity.nil? + product.quantity = 0 + product.save + end + if quantity > product.quantity.to_i + quantity = product.quantity #if more is added than is available, add remaining + end + + product_hash = {"product"=> product, "selected_quantity"=>quantity} + session[:cart] << product_hash redirect_to cart_path end diff --git a/app/views/products/cart.html.erb b/app/views/products/cart.html.erb index b92f4ebacb..1c984ac5e8 100644 --- a/app/views/products/cart.html.erb +++ b/app/views/products/cart.html.erb @@ -4,14 +4,26 @@ @cart = "Your cart is currently empty!" %> <%= @cart %> <% else %> + <%# @cart.each do |item| %> + + + + + + + <%# end %> + <% @cart.each do |item| %>
    -
  • <%= link_to item["name"], products_path(item["id"]) %>
  • -
  • <%= item["price"] %>
  • -
  • Quantity: coming soon
  • +
  • Product: <%= link_to item["product"]["name"], products_path(item["product"]) %>
  • +
  • Description: <%= item["product"]["description"] %>
  • +
  • Price: $<%= item["product"]["price"] %>
  • +
  • Selected Quantity: <%= item["selected_quantity"] %>
- <% end %> + <% end %> + + Cart Total: $<%= @cart_total %> <%= link_to "Clear Cart", clear_cart_path %> <% end %> <%= link_to "Go Shopping", products_path %> diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 5c02d1ff80..d2836feac0 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -8,7 +8,7 @@
<%= form_with model: @products, url: add_to_cart_path(@product), method: :post do |f| %> - <%= f.select :quantity, (1..20) %> + <%= f.select :selected_quantity, (1..20) %> <%= f.hidden_field :product_id, value: @product.id %> <%= f.submit "Add to cart", class:"btn btn-primary" %> <%end%> From 8959be4fd8afc4fc83e5fb16eb4ee6c0eb5d9563 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 08:53:50 -0800 Subject: [PATCH 050/199] Added new route 'checkout --- app/views/products/cart.html.erb | 2 ++ config/routes.rb | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/products/cart.html.erb b/app/views/products/cart.html.erb index 1c984ac5e8..e6415ebc26 100644 --- a/app/views/products/cart.html.erb +++ b/app/views/products/cart.html.erb @@ -23,10 +23,12 @@ <% end %> + Cart Total: $<%= @cart_total %> <%= link_to "Clear Cart", clear_cart_path %> <% end %> <%= link_to "Go Shopping", products_path %> +<%= link_to "Checkout", checkout_path %> diff --git a/config/routes.rb b/config/routes.rb index 95fc97fd5b..f18c3d7370 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,8 +12,9 @@ # delete 'products/remove_from_cart/id', to: 'products#remove_from_cart', as: "remove_from_cart" end - + get "/checkout", to: "orders#new", as: "checkout" get "/cart", to:"products#cart", as: "cart" + post "/add_to_cart", to:"products#add_to_cart", as: "add_to_cart" get "/clear_cart", to:"products#clear_cart", as: "clear_cart" root to: "homepages#index" From 848f40ba5270bcbd0e57bae4ccc2b59a8c7b457b Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 09:10:52 -0800 Subject: [PATCH 051/199] added number_to_currency to cart total --- app/views/products/cart.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/products/cart.html.erb b/app/views/products/cart.html.erb index e6415ebc26..ad2ab2e562 100644 --- a/app/views/products/cart.html.erb +++ b/app/views/products/cart.html.erb @@ -24,7 +24,7 @@ <% end %> - Cart Total: $<%= @cart_total %> + Cart Total: <%= number_to_currency(@cart_total) %> <%= link_to "Clear Cart", clear_cart_path %> <% end %> <%= link_to "Go Shopping", products_path %> From 71d7bd636419767402a0e3b5bcfdf17d0e97696b Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 12:33:12 -0800 Subject: [PATCH 052/199] create many to many relationship between products and categorizations --- .gitignore | 4 +++- app/models/categorization.rb | 1 + app/models/product.rb | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 60d10a1fb8..3f47af68b6 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,6 @@ yarn-debug.log* .yarn-integrity -.env \ No newline at end of file +.env + +/.idea/* diff --git a/app/models/categorization.rb b/app/models/categorization.rb index 62a86becd5..15f53f2be5 100644 --- a/app/models/categorization.rb +++ b/app/models/categorization.rb @@ -1,2 +1,3 @@ class Categorization < ApplicationRecord + has_and_belongs_to_many :products end diff --git a/app/models/product.rb b/app/models/product.rb index 4e2eb9ff31..f454dfddda 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,7 +1,7 @@ class Product < ApplicationRecord belongs_to :merchant has_many :reviews - has_many :categorizations + has_and_belongs_to_many :categorizations has_many :order_items has_many :orders, through: :order_items From 20968197acf18f13ef85c269d94944dcdc2e45b7 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 15:19:55 -0800 Subject: [PATCH 053/199] deleted unused routes from routes file --- app/controllers/orders_controller.rb | 45 ++++++++++++++++++++++++++++ app/views/orders/_form.html.erb | 2 +- app/views/orders/edit.html.erb | 1 + app/views/orders/new.html.erb | 1 - app/views/products/show.html.erb | 26 ++++++++-------- config/routes.rb | 9 ++---- 6 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 app/views/orders/edit.html.erb diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index a953402a43..5d8c031a10 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -19,6 +19,47 @@ def create end end + def edit + @order = Order.new + end + + def cart + @cart = session[:cart] + @cart_total = get_total + end + + def get_total + total = 0.0 + @cart.each do |item| + total = total + item['product']['price'] * item['selected_quantity'] + end + return total + end + + def clear_cart + session[:cart] = [] + @cart = {} + redirect_to cart_path + end + + + def add_to_cart + initialize_session + product = Product.find_by(id: params[:product_id]) + quantity = params[:selected_quantity].to_i + if product.quantity.nil? + product.quantity = 0 + product.save + end + if quantity > product.quantity.to_i + quantity = product.quantity #if more is added than is available, add remaining + end + + product_hash = {"product"=> product, "selected_quantity"=>quantity} + session[:cart] << product_hash + redirect_to cart_path + end + private def order_params @@ -28,4 +69,8 @@ def order_params def find_order @order = Order.find_by_id(id: params[:id]) end + + def initialize_session + return session[:cart] ||= [] + end end diff --git a/app/views/orders/_form.html.erb b/app/views/orders/_form.html.erb index fc4a48f019..3ddfa0d059 100644 --- a/app/views/orders/_form.html.erb +++ b/app/views/orders/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_with model: @order, class: 'create-book' do |f| %> +<%= form_with model: @order, class: 'update-order' do |f| %> <%= f.label :name %> <%= f.text_field :name %> diff --git a/app/views/orders/edit.html.erb b/app/views/orders/edit.html.erb new file mode 100644 index 0000000000..e254ec8944 --- /dev/null +++ b/app/views/orders/edit.html.erb @@ -0,0 +1 @@ +<%= render partial: "form", locals: { action_name: "Submit Order" } %> diff --git a/app/views/orders/new.html.erb b/app/views/orders/new.html.erb index e254ec8944..e69de29bb2 100644 --- a/app/views/orders/new.html.erb +++ b/app/views/orders/new.html.erb @@ -1 +0,0 @@ -<%= render partial: "form", locals: { action_name: "Submit Order" } %> diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index d2836feac0..b63655d36c 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,18 +1,18 @@ - - -

<%= @product.name %>

+

<%= @product.name %>

-

Sold by <%= @product.merchant.username %>

-

Price: <%= number_to_currency(@product.price) %>

-

Description: <%= @product.description %>

+

Sold by <%= @product.merchant.username %>

+

Price: <%= number_to_currency(@product.price) %>

+

Description: <%= @product.description %>

-
- <%= form_with model: @products, url: add_to_cart_path(@product), method: :post do |f| %> - <%= f.select :selected_quantity, (1..20) %> - <%= f.hidden_field :product_id, value: @product.id %> - <%= f.submit "Add to cart", class:"btn btn-primary" %> - <%end%> -
<%= @quantity %> In Stock
+
+<%= form_with model: @products, url: add_to_cart_path(@product), method: :post do |f| %> + <%= f.select :selected_quantity, (1..20) %> + <%= f.hidden_field :product_id, value: @product.id %> + <%= f.submit "Add to cart", class:"btn btn-primary" %> +<%end%> +
<%= @quantity %> In Stock
+ + diff --git a/config/routes.rb b/config/routes.rb index f18c3d7370..76f95d01be 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,14 +5,9 @@ get "/auth/:provider/callback", to: "merchants#create", as: "auth_callback" #OmniAuth Github callback post "/logout", to: "merchants#logout", as: "logout" - resources :products, except: [:delete] do - # post "/products/:product_id/order_items", to: "order_items#create", as: "start_shopping" - # get "/cart", to: "products#shopping_cart", as: "shopping_cart" - # post 'products/add_to_cart/id', to: 'products#add_to_cart', as: "add_to_cart" - # delete 'products/remove_from_cart/id', to: 'products#remove_from_cart', as: "remove_from_cart" + resources :products, except: [:delete] - end - get "/checkout", to: "orders#new", as: "checkout" + get "/checkout", to: "orders#edit", as: "checkout" get "/cart", to:"products#cart", as: "cart" post "/add_to_cart", to:"products#add_to_cart", as: "add_to_cart" From 228178fc779112de1d420fc39cf71fff17140a03 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 16:01:28 -0800 Subject: [PATCH 054/199] Order items are now connected to the Order --- app/controllers/orders_controller.rb | 1 + app/controllers/products_controller.rb | 11 ++++++----- app/views/orders/_form.html.erb | 2 +- app/views/products/cart.html.erb | 9 +++++---- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 5d8c031a10..4fe3bb6510 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -7,6 +7,7 @@ def new def create @order = Order.new(order_params) + @order.order_items = session[:cart].map { |attributes| OrderItem.new(attributes)} if @order.save flash[:status] = :success flash[:result_text] = "Successfully ordered: #{@order.id}" diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index d5f82cd7f8..e75d8edf4c 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -12,21 +12,21 @@ def show end def cart - @cart = session[:cart] + @cart = session[:cart].map { |attributes| OrderItem.new(attributes)} @cart_total = get_total end def get_total total = 0.0 @cart.each do |item| - total = total + item['product']['price'] * item['selected_quantity'] + total = total + item.product.price * item.quantity end return total end def clear_cart session[:cart] = [] - @cart = {} + redirect_to cart_path end @@ -42,8 +42,9 @@ def add_to_cart quantity = product.quantity #if more is added than is available, add remaining end - product_hash = {"product"=> product, "selected_quantity"=>quantity} - session[:cart] << product_hash + order_item = OrderItem.new(product: product, quantity: quantity) + # product_hash = {"product"=> product, "selected_quantity"=>quantity} + session[:cart] << order_item redirect_to cart_path end diff --git a/app/views/orders/_form.html.erb b/app/views/orders/_form.html.erb index 3ddfa0d059..3ee6c943be 100644 --- a/app/views/orders/_form.html.erb +++ b/app/views/orders/_form.html.erb @@ -19,5 +19,5 @@ <%= f.text_field :exp_date %> - <%= f.submit action_name, class: "book-button" %> + <%= f.submit action_name, class: "product-button" %> <% end %> \ No newline at end of file diff --git a/app/views/products/cart.html.erb b/app/views/products/cart.html.erb index ad2ab2e562..26fd9c8784 100644 --- a/app/views/products/cart.html.erb +++ b/app/views/products/cart.html.erb @@ -14,11 +14,12 @@ <%# end %> <% @cart.each do |item| %> +
    -
  • Product: <%= link_to item["product"]["name"], products_path(item["product"]) %>
  • -
  • Description: <%= item["product"]["description"] %>
  • -
  • Price: $<%= item["product"]["price"] %>
  • -
  • Selected Quantity: <%= item["selected_quantity"] %>
  • +
  • Product: <%= link_to item.product.name, products_path(item.product) %>
  • +
  • Description: <%= item.product.description %>
  • +
  • Price: $<%= item.product.price %>
  • +
  • Selected Quantity: <%= item.quantity %>
<% end %> From 6769fedf0aa49489a7c2a46e73b7f494222de531 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 16:58:51 -0800 Subject: [PATCH 055/199] add new product form --- app/assets/stylesheets/products.scss | 3 +++ app/controllers/products_controller.rb | 6 ++--- app/views/merchants/dashboard.html.erb | 2 +- app/views/products/new.html.erb | 33 ++++++++++++++++++++++++++ app/views/products/show.html.erb | 2 +- 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/products.scss b/app/assets/stylesheets/products.scss index 8f0ca888eb..b95371e54d 100644 --- a/app/assets/stylesheets/products.scss +++ b/app/assets/stylesheets/products.scss @@ -1,3 +1,6 @@ // Place all the styles related to the Products controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ +.product-photo { + max-width: 250px; +} \ No newline at end of file diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index e75d8edf4c..cccee6ab9e 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -64,7 +64,7 @@ def edit end def create - unless session[:merchant_id] + unless session[:user_id] flash[:status] = :failure flash[:result_text] = "Only merchants can create a new product" render :index, status: :forbidden @@ -72,7 +72,7 @@ def create end @product = Product.new(product_params) - @product.merchant_id = session[:merchant.id] #<--will this work? Or need to declare @merchant? + @product.merchant_id = session[:user_id] if @product.save flash[:status] = :success flash[:result_text] = "Successfully created new product: #{@product.name}" @@ -107,7 +107,7 @@ def initialize_session end def product_params - return params.require(:product).permit(:name, :price, :merchant_id, :quantity, :status) + return params.require(:product).permit(:name, :price, :quantity, :active, :description, :photo) end def find_product diff --git a/app/views/merchants/dashboard.html.erb b/app/views/merchants/dashboard.html.erb index 9ce36e5906..343775016b 100644 --- a/app/views/merchants/dashboard.html.erb +++ b/app/views/merchants/dashboard.html.erb @@ -8,7 +8,7 @@
  • <%= product.name %>
  • <%= product.price %>
  • <%= product.quantity %>
  • -
  • <%= product.status %>
  • + <% end %> diff --git a/app/views/products/new.html.erb b/app/views/products/new.html.erb index e69de29bb2..e1a1660449 100644 --- a/app/views/products/new.html.erb +++ b/app/views/products/new.html.erb @@ -0,0 +1,33 @@ +
    +

    Create New Product

    + + <%= form_with model: @product do |f| %> +
    + <%= f.label :name %> +
    + <%= f.text_field :name, :class => "form-control" %> +
    +
    + <%= f.label :price %> +
    + <%= f.text_field :price, :type => "number", :step => "0.01", :class => "form-control" %> +
    +
    + <%= f.label :quantity %> +
    + <%= f.text_field :quantity, :type => "number", :class => "form-control" %> +
    +
    + <%= f.label :photo %> +
    + <%= f.text_field :photo, :type => "url", :class => "form-control" %> +
    +
    + <%= f.label :description %> +
    + <%= f.text_area :description, :class => "form-control" %> +
    +
    + <%= f.submit "Save", :class => "btn btn-primary"%> + <% end %> +
    \ No newline at end of file diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index b63655d36c..f4ea6a8134 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,5 +1,5 @@

    <%= @product.name %>

    - +<%= image_tag @product.photo, :alt => "#{@product.name} image", :class => "product-photo" %>

    Sold by <%= @product.merchant.username %>

    Price: <%= number_to_currency(@product.price) %>

    Description: <%= @product.description %>

    From bf811d30baaea7f5900d8a922f8c2181150658f8 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 17:24:27 -0800 Subject: [PATCH 056/199] add product form partial and edit product form --- app/controllers/products_controller.rb | 20 ++++++++----- app/views/products/_product-form.html.erb | 33 ++++++++++++++++++++++ app/views/products/edit.html.erb | 1 + app/views/products/new.html.erb | 34 +---------------------- 4 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 app/views/products/_product-form.html.erb diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index cccee6ab9e..36f6a4f3bb 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,5 @@ class ProductsController < ApplicationController - # before_action :find_product, only: [:show, :edit, :update] + before_action :find_product, only: [:show, :edit, :update] # skip_before_action :require_login, except [:new, :edit, :destroy] def index @@ -7,7 +7,6 @@ def index end def show - @product = Product.find_by(id: params[:id]) render_404 unless @product end @@ -57,10 +56,10 @@ def new end def edit - # if @product.nil? - # redirect_to products_path - # return - # end + if @product.nil? + redirect_to products_path + return + end end def create @@ -86,6 +85,13 @@ def create end def update + unless session[:user_id] + flash[:status] = :failure + flash[:result_text] = "Only merchants can update a product" + render :index, status: :forbidden + return + end + if @product.update(product_params) flash[:status] = :success flash[:result_text] = "Successfully updated #{@product.id}" @@ -111,7 +117,7 @@ def product_params end def find_product - @product = Product.find_by(id: params[:product_id]) + @product = Product.find_by(id: params[:id]) end end diff --git a/app/views/products/_product-form.html.erb b/app/views/products/_product-form.html.erb new file mode 100644 index 0000000000..ee10167bbf --- /dev/null +++ b/app/views/products/_product-form.html.erb @@ -0,0 +1,33 @@ +
    +

    <%= edit ? "Update #{@product.name}" : "Create New Product" %>

    + + <%= form_with model: @product do |f| %> +
    + <%= f.label :name %> +
    + <%= f.text_field :name, :class => "form-control" %> +
    +
    + <%= f.label :price %> +
    + <%= f.text_field :price, :type => "number", :step => "0.01", :class => "form-control" %> +
    +
    + <%= f.label :quantity %> +
    + <%= f.text_field :quantity, :type => "number", :class => "form-control" %> +
    +
    + <%= f.label :photo %> +
    + <%= f.text_field :photo, :type => "url", :class => "form-control" %> +
    +
    + <%= f.label :description %> +
    + <%= f.text_area :description, :class => "form-control" %> +
    +
    + <%= f.submit (edit ? "Update" : "Create"), :class => "btn btn-primary"%> + <% end %> +
    \ No newline at end of file diff --git a/app/views/products/edit.html.erb b/app/views/products/edit.html.erb index e69de29bb2..aa1c13323d 100644 --- a/app/views/products/edit.html.erb +++ b/app/views/products/edit.html.erb @@ -0,0 +1 @@ +<%= render partial: 'product-form', locals: { edit: true } %> \ No newline at end of file diff --git a/app/views/products/new.html.erb b/app/views/products/new.html.erb index e1a1660449..1a6ce9f0c2 100644 --- a/app/views/products/new.html.erb +++ b/app/views/products/new.html.erb @@ -1,33 +1 @@ -
    -

    Create New Product

    - - <%= form_with model: @product do |f| %> -
    - <%= f.label :name %> -
    - <%= f.text_field :name, :class => "form-control" %> -
    -
    - <%= f.label :price %> -
    - <%= f.text_field :price, :type => "number", :step => "0.01", :class => "form-control" %> -
    -
    - <%= f.label :quantity %> -
    - <%= f.text_field :quantity, :type => "number", :class => "form-control" %> -
    -
    - <%= f.label :photo %> -
    - <%= f.text_field :photo, :type => "url", :class => "form-control" %> -
    -
    - <%= f.label :description %> -
    - <%= f.text_area :description, :class => "form-control" %> -
    -
    - <%= f.submit "Save", :class => "btn btn-primary"%> - <% end %> -
    \ No newline at end of file +<%= render partial: 'product-form', locals: { edit: false } %> \ No newline at end of file From c286a4e9b46931e5093a6ee6b3028b6d1dda7d67 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 17:40:05 -0800 Subject: [PATCH 057/199] uncomment image tag for index.html.erb --- app/views/products/index.html.erb | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index a717593524..4f18da2864 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,12 +1,8 @@ - - <% @products.each do |product|%> -

    <%= link_to product.name, product_path(product.id) %>

    - <%# if product.photo.present? %> - - <%#end %> +

    <%= link_to product.name, product_path(product.id) %>

    + <% if product.photo.present? %> +

    <%= image_tag product.photo, :class => 'product-photo' %>

    + <%end %>

    Price: <%= number_to_currency(product.price) %>

    <%= product.description %>

    -

    - <% end %> \ No newline at end of file From 1f0b4ea0cf6a0537dc28036af84cdc08beadadc4 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 17:55:49 -0800 Subject: [PATCH 058/199] comment out photo tags --- app/views/products/show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index f4ea6a8134..92e9522e38 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -1,5 +1,5 @@

    <%= @product.name %>

    -<%= image_tag @product.photo, :alt => "#{@product.name} image", :class => "product-photo" %> +<%#= image_tag @product.photo, :alt => "#{@product.name} image", :class => "product-photo" %>

    Sold by <%= @product.merchant.username %>

    Price: <%= number_to_currency(@product.price) %>

    Description: <%= @product.description %>

    From 969813e2dbfce737777dcd52d41ca9ff4c1003da Mon Sep 17 00:00:00 2001 From: Madeline Date: Fri, 20 Nov 2020 15:08:18 -0500 Subject: [PATCH 059/199] products controller/testing in progress --- app/controllers/products_controller.rb | 22 +- test/controllers/products_controller_test.rb | 243 +++++++++---------- 2 files changed, 138 insertions(+), 127 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 36f6a4f3bb..6153813f00 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,6 @@ class ProductsController < ApplicationController - before_action :find_product, only: [:show, :edit, :update] + before_action :find_product, only: [:show, :edit, :update, :create] + before_action :find_merchant, only: [:edit, :update, :create] # skip_before_action :require_login, except [:new, :edit, :destroy] def index @@ -7,7 +8,7 @@ def index end def show - render_404 unless @product + # render_404 unless @product end def cart @@ -75,7 +76,7 @@ def create if @product.save flash[:status] = :success flash[:result_text] = "Successfully created new product: #{@product.name}" - redirect_to product_path(@product) + redirect_to product_path(@product.id) else flash[:status] = :failure flash[:result_text] = "Could not create #{@product}" @@ -84,6 +85,9 @@ def create end end + def edit + end + def update unless session[:user_id] flash[:status] = :failure @@ -117,7 +121,17 @@ def product_params end def find_product - @product = Product.find_by(id: params[:id]) + @product = Product.find_by_id(id: params[:id]) + return render_404 unless @product + end + + def find_merchant + @merchant = Merchant.find_by(id: params[:author_id]) + + if @merchant.nil? + flash.now[:error] = "Merchant not found." + render :new, status: :bad_request + end end end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 14882c97d2..9f63340964 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -1,135 +1,132 @@ require "test_helper" describe ProductsController do - before do - @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") + let (:product) { products(:blue_shoes) } + before do + @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") + end + + describe "index" do + it "should get index" do + get products_path + + must_respond_with :success end - - let (:product) { products(:blue_shoes) } - - describe "index" do - it "should get index" do - get products_path - - must_respond_with :success - end - - it "should get index when there are no products" do - Product.all do |product| - product.destroy - end - - get products_path - - must_respond_with :success + + it "should get index when there are no products" do + Product.all do |product| + product.destroy end + + get products_path + + must_respond_with :success end - - describe "new" do - it "succeeds" do - get new_product_path - - must_respond_with :success - end + end + + describe "new" do + it "succeeds" do + get new_product_path + + must_respond_with :success end - - describe "create" do - it "creates a product with valid data" do - new_product = { product: { name: "Shoes", price: 2.99, merchant_id: @merchant[:id], quantity: 10, category_id: 1 } } - - expect { - post products_path, params: new_product - }.must_change "Product.count", 1 - - new_product_id = Product.find_by(name: "Shoes").id - - must_respond_with :redirect - must_redirect_to product_path(new_product_id) - end - - it "renders bad_request and does not update the DB for invalid data" do - bad_product = { product: { name: "Shoes", price: nil, merchant_id: 1, quantity: 10, category_id: 1 } } - - expect { - post products_path, params: bad_product - }.wont_change "Product.count" - - must_respond_with :bad_request - end + end + + describe "create" do + it "creates a product with valid data" do + new_product = { product: { name: "Shoes", price: 2.99, merchant_id: @merchant[:id], quantity: 10, category_id: 1 } } + + expect { + post products_path, params: new_product + }.must_change "Product.count", 1 + + new_product_id = Product.find_by(name: "Shoes").id + + must_respond_with :redirect + must_redirect_to product_path(new_product_id) end - - describe "show" do - # used fixture - it "shows a product" do - product = products(:blue_shoes) - get product_path(product.id) - - must_respond_with :success - end - - it "renders 404 not_found for a invalid product ID" do - product = products(:blue_shoes) - destroyed_id = product.id - product.destroy - - get product_path(destroyed_id) - - must_respond_with :not_found - end + + it "renders bad_request and does not update the DB for invalid data" do + bad_product = { product: { name: "Shoes", price: nil, merchant_id: 1, quantity: 10, category_id: 1 } } + + expect { + post products_path, params: bad_product + }.wont_change "Product.count" + + must_respond_with :bad_request end - - describe "edit" do - it "succeeds in editing existing product" do - product = products(:blue_shoes) - get edit_product_path(product.id) - - must_respond_with :success - end - - it "renders 404 not_found for an invalid product ID" do - get edit_product_path(-99) - must_respond_with :not_found - end + end + + describe "show" do + # used fixture + it "shows a product" do + # product = products(:blue_shoes) + get product_path(products(:blue_shoes).id) + + must_respond_with :success end - - describe "update" do - before do - @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") - end - - it "succeeds for updating" do - updates = { product: { name: "fries" } } - - expect { - put product_path(products(:blue_shoes)[:id]), params: updates - }.wont_change "Product.count" - updated_product = Product.find_by(id: products(:blue_shoes)[:id]) - - expect(updated_product.name).must_equal "fries" - must_respond_with :redirect - must_redirect_to product_path(products(:blue_shoes)[:id]) - end - - # it "renders bad_request for invalid data" do - # product = { product: { name: "Shoes", price: 3.99, merchant_id: 1, quantity: 10, category_id: 1 } } - - # expect { - # put work_path(product), params: product - # }.wont_change "Work.count" - - # work = Work.find_by(id: existing_work.id) - - # must_respond_with :not_found - # end - - # it "renders 404 not_found for a bogus work ID" do - # bogus_id = existing_work.id - # existing_work.destroy - - # put work_path(bogus_id), params: { work: { title: "Test Title" } } - - # must_respond_with :not_found - # end + + it "renders 404 not_found for a invalid product ID" do + # product = products(:blue_shoes) + # destroyed_id = product.id + # product.destroy + + get product_path(-99) + + must_respond_with :not_found + end + end + + describe "edit" do + it "succeeds in editing existing product" do + product = products(:blue_shoes) + get edit_product_path(product.id) + + must_respond_with :success + end + + it "renders 404 not_found for an invalid product ID" do + get edit_product_path(-99) + must_respond_with :not_found + end + end + + describe "update" do + before do + @merchant = Merchant.create!(email: "email@123.com", username: "kayla-bo-bayla") + end + + it "succeeds for updating" do + updates = { product: { name: "fries" } } + + expect { + put product_path(products(:blue_shoes).id), params: updates + }.wont_change "Product.count" + updated_product = Product.find_by(id: products(:blue_shoes)[:id]) + + expect(updated_product.name).must_equal "fries" + must_respond_with :redirect + must_redirect_to product_path(products(:blue_shoes)[:id]) + end + + # it "renders bad_request for invalid data" do + # product = { product: { name: "Shoes", price: 3.99, merchant_id: 1, quantity: 10, category_id: 1 } } + + # expect { + # put product_path(product), params: product + # }.wont_change "Product.count" + + # bad_product = Product.find_by(id: product.id) + + # must_respond_with :not_found + # end + + # it "renders 404 not_found for a invalid product ID" do + + + # put product_path(-99), params: { product: { name: "Test" } } + + # must_respond_with :not_found + # end end - end From 0b4802c98a859bcc7dc75e31f4b846f8bcc721f6 Mon Sep 17 00:00:00 2001 From: Madeline Date: Sat, 21 Nov 2020 00:08:09 -0500 Subject: [PATCH 060/199] Rebasing Master --- test/controllers/products_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 9f63340964..3a44690232 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -47,7 +47,7 @@ end it "renders bad_request and does not update the DB for invalid data" do - bad_product = { product: { name: "Shoes", price: nil, merchant_id: 1, quantity: 10, category_id: 1 } } + bad_product = { product: { name: "Shoes", price: nil, merchant_id: @merchant[:id], quantity: 10, category_id: 1 } } expect { post products_path, params: bad_product From 216b10a980bbd5e84f7992d164edde9415b599d8 Mon Sep 17 00:00:00 2001 From: Kimberly Vitug Date: Fri, 20 Nov 2020 21:57:56 -0800 Subject: [PATCH 061/199] add partial for product-card and product grid --- app/assets/stylesheets/products.scss | 9 ++- app/controllers/categorizations_controller.rb | 39 +++++++++++ app/views/categorizations/index.html.erb | 6 ++ app/views/categorizations/new.html.erb | 12 ++++ app/views/categorizations/show.html.erb | 4 ++ app/views/merchants/dashboard.html.erb | 70 +++++++++---------- app/views/products/_product-card.html.erb | 22 ++++++ app/views/products/_product-grid.html.erb | 7 ++ app/views/products/index.html.erb | 12 ++-- 9 files changed, 136 insertions(+), 45 deletions(-) create mode 100644 app/views/categorizations/index.html.erb create mode 100644 app/views/categorizations/new.html.erb create mode 100644 app/views/categorizations/show.html.erb create mode 100644 app/views/products/_product-card.html.erb create mode 100644 app/views/products/_product-grid.html.erb diff --git a/app/assets/stylesheets/products.scss b/app/assets/stylesheets/products.scss index b95371e54d..e6a27dc826 100644 --- a/app/assets/stylesheets/products.scss +++ b/app/assets/stylesheets/products.scss @@ -3,4 +3,11 @@ // You can use Sass (SCSS) here: https://sass-lang.com/ .product-photo { max-width: 250px; -} \ No newline at end of file +} + +.product-image-preview { + background-size: cover; + padding-bottom: 300px; + position: relative; + width: 100%; +} diff --git a/app/controllers/categorizations_controller.rb b/app/controllers/categorizations_controller.rb index bdb2c9156c..df214b6df5 100644 --- a/app/controllers/categorizations_controller.rb +++ b/app/controllers/categorizations_controller.rb @@ -1,2 +1,41 @@ class CategorizationsController < ApplicationController + + def index + @categorizations = Categorization.all + end + + def show + @categorization = Categorization.find_by(id: params[:id]) + + if @categorization.nil? + redirect_to categorizations_path + return + end + end + + def new + @categorization = Categorization.new + end + + def create + @categorization = Categorization.new(categorization_params) + + if @categorization.save + flash[:success] = "Successfully created #{@categorization.name} #{@categorization.id}" + redirect_to categorization_path(@categorization.id) + else + flash.now[:warning] = "A problem occurred: Could not create #{@categorization.name}" + render :new, status: :bad_request + end + end + + private + + def categorization_params + return params.require(:categorization).permit(:name) + end + + def find_categorization + @categorization = Categorization.find_by_id(params[:id]) + end end diff --git a/app/views/categorizations/index.html.erb b/app/views/categorizations/index.html.erb new file mode 100644 index 0000000000..5ed2583808 --- /dev/null +++ b/app/views/categorizations/index.html.erb @@ -0,0 +1,6 @@ +
    +

    View Products By Category

    + <% @categorizations.each do |category| %> +

    <%= link_to category.name, categorization_path(category.id), :class => "badge badge-secondary badge-pill"%>

    + <% end %> +
    \ No newline at end of file diff --git a/app/views/categorizations/new.html.erb b/app/views/categorizations/new.html.erb new file mode 100644 index 0000000000..731e127cee --- /dev/null +++ b/app/views/categorizations/new.html.erb @@ -0,0 +1,12 @@ +
    +

    Create New Category

    + + <%= form_with model: @categorization do |f| %> +
    + <%= f.label :name %> +
    + <%= f.text_field :name, :class => "form-control" %> +
    + <%= f.submit action_name, :class => "btn btn-primary"%> + <% end %> +
    \ No newline at end of file diff --git a/app/views/categorizations/show.html.erb b/app/views/categorizations/show.html.erb new file mode 100644 index 0000000000..c350878195 --- /dev/null +++ b/app/views/categorizations/show.html.erb @@ -0,0 +1,4 @@ +
    +

    Browse All Products In <%= @categorization.name.capitalize %>

    + <%= render partial: 'products/product-grid', locals: { products: @categorization.products } %> +
    \ No newline at end of file diff --git a/app/views/merchants/dashboard.html.erb b/app/views/merchants/dashboard.html.erb index 343775016b..1dad19eaaa 100644 --- a/app/views/merchants/dashboard.html.erb +++ b/app/views/merchants/dashboard.html.erb @@ -1,40 +1,38 @@ -

    Merchant Dashboard

    -

    <%= @login_user.username %>

    -

    <%= @login_user.email %>

    -<%= image_tag @login_user.avatar, alt: "user's Github image" %> +
    +

    Merchant Dashboard

    +
    +

    <%= @login_user.username %>

    +

    <%= @login_user.email %>

    + <%= image_tag @login_user.avatar, alt: "user's Github image" %> +
    -
      - <% @login_user.products.each do |product| %> -
    • <%= product.name %>
    • -
    • <%= product.price %>
    • -
    • <%= product.quantity %>
    • - - <% end %> -
    +

    Products

    + <%= render partial: 'products/product-grid', locals: { products: @login_user.products } %> -

    Total Revenue: $<%= @login_user.total_revenue %>

    -

    View Orders:

    -

    Fulfilled Orders Revenue: $<%= @login_user.total_revenue_by_status("fulfilled") %>

    -

    Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("fulfilled") %>

    -

    Pending Orders Revenue: $<%= @login_user.total_revenue_by_status("pending") %>

    -

    Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("pending") %>

    +

    Total Revenue: $<%= @login_user.total_revenue %>

    +

    View Orders:

    +

    Fulfilled Orders Revenue: $<%= @login_user.total_revenue_by_status("fulfilled") %>

    +

    Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("fulfilled") %>

    +

    Pending Orders Revenue: $<%= @login_user.total_revenue_by_status("pending") %>

    +

    Total number of fulfilled orders: $<%= @login_user.total_num_orders_by_status("pending") %>

    -
      - <% @login_user.filter_orders("fulfilled").each do |order| %> -
    • <%= order.name %>
    • -
    • <%= order.email %>
    • -
    • <%= order.address %>
    • -
    • <%= order.credit_card %>
    • -
    • <%= order.exp_date %>
    • - <% end %> -
    +
      + <% @login_user.filter_orders("fulfilled").each do |order| %> +
    • <%= order.name %>
    • +
    • <%= order.email %>
    • +
    • <%= order.address %>
    • +
    • <%= order.credit_card %>
    • +
    • <%= order.exp_date %>
    • + <% end %> +
    -
      - <% @login_user.filter_orders("pending").each do |order| %> -
    • <%= order.name %>
    • -
    • <%= order.email %>
    • -
    • <%= order.address %>
    • -
    • <%= order.credit_card %>
    • -
    • <%= order.exp_date %>
    • - <% end %> -
    \ No newline at end of file +
      + <% @login_user.filter_orders("pending").each do |order| %> +
    • <%= order.name %>
    • +
    • <%= order.email %>
    • +
    • <%= order.address %>
    • +
    • <%= order.credit_card %>
    • +
    • <%= order.exp_date %>
    • + <% end %> +
    +
    \ No newline at end of file diff --git a/app/views/products/_product-card.html.erb b/app/views/products/_product-card.html.erb new file mode 100644 index 0000000000..ddeb877a53 --- /dev/null +++ b/app/views/products/_product-card.html.erb @@ -0,0 +1,22 @@ +
    +
    +
    +
    + <%= product.name.capitalize %> +
    + + + +
    + <%= number_to_currency(product.price) %> +
    +

    + <%= product.description %> +

    + <%= link_to 'View Product', product_path(product.id), :class => 'btn btn-primary' %> +
    +
    diff --git a/app/views/products/_product-grid.html.erb b/app/views/products/_product-grid.html.erb new file mode 100644 index 0000000000..f84fffe243 --- /dev/null +++ b/app/views/products/_product-grid.html.erb @@ -0,0 +1,7 @@ +
    + <% products.each do |product| %> +
    + <%= render partial: 'products/product-card', locals: { product: product } %> +
    + <% end %> +
    \ No newline at end of file diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 4f18da2864..af430faeba 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,8 +1,4 @@ -<% @products.each do |product|%> -

    <%= link_to product.name, product_path(product.id) %>

    - <% if product.photo.present? %> -

    <%= image_tag product.photo, :class => 'product-photo' %>

    - <%end %> -

    Price: <%= number_to_currency(product.price) %>

    -

    <%= product.description %>

    -<% end %> \ No newline at end of file +
    +

    Products

    + <%= render partial: 'product-grid', locals: { products: @products } %> +
    From b9f84aabdd36ea16b336012a98e8c5b98fae6d90 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 22:21:55 -0800 Subject: [PATCH 062/199] Slight change to find_product params --- app/controllers/products_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 36f6a4f3bb..45ad5b1def 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -117,7 +117,7 @@ def product_params end def find_product - @product = Product.find_by(id: params[:id]) + @product = Product.find_by(id: params[:product_id]) end end From ea767622872c7dda29d1678df06054bb7e376578 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 23:18:56 -0800 Subject: [PATCH 063/199] Reverting back--i'll find another product id method work around --- app/controllers/products_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 45ad5b1def..a3dfebd32a 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -31,7 +31,7 @@ def clear_cart def add_to_cart initialize_session - product = find_product + # product = find_product quantity = params[:selected_quantity].to_i if product.quantity.nil? product.quantity = 0 @@ -117,7 +117,7 @@ def product_params end def find_product - @product = Product.find_by(id: params[:product_id]) + @product = Product.find_by(id: params[:id]) end end From 99bd26e621a24d0721fa3eb692a46f1d929d99c5 Mon Sep 17 00:00:00 2001 From: Kayla Johnson Date: Fri, 20 Nov 2020 23:31:44 -0800 Subject: [PATCH 064/199] fixed display bugs around product id params --- app/controllers/products_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index a3dfebd32a..3a3ff92fbe 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -31,8 +31,8 @@ def clear_cart def add_to_cart initialize_session - # product = find_product - quantity = params[:selected_quantity].to_i + product = Product.find_by(id: params["product_id"]) + quantity = params["selected_quantity"].to_i if product.quantity.nil? product.quantity = 0 product.save @@ -41,7 +41,7 @@ def add_to_cart quantity = product.quantity #if more is added than is available, add remaining end - order_item = OrderItem.new(product: product, quantity: quantity) + order_item = OrderItem.new(product_id: product.id, quantity: quantity) # product_hash = {"product"=> product, "selected_quantity"=>quantity} session[:cart] << order_item redirect_to cart_path From 272a8b7a2f781af46ea460cf0bf7cb6093bba983 Mon Sep 17 00:00:00 2001 From: Madeline Date: Sat, 21 Nov 2020 13:59:51 -0500 Subject: [PATCH 065/199] added merchant/product routes and fixed filter controllers for finding product and merchant --- app/controllers/products_controller.rb | 29 +++++++++--------- config/routes.rb | 5 +++ test/controllers/products_controller_test.rb | 32 ++++++++++++-------- test/fixtures/products.yml | 2 +- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 6153813f00..b3d12fab6b 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,6 +1,8 @@ class ProductsController < ApplicationController + # before_action :require_login, only: [:new, :edit, :update, :create] + before_action :find_merchant, only: [:new, :edit, :update, :create] before_action :find_product, only: [:show, :edit, :update, :create] - before_action :find_merchant, only: [:edit, :update, :create] + # skip_before_action :require_login, except [:new, :edit, :destroy] def index @@ -58,7 +60,7 @@ def new def edit if @product.nil? - redirect_to products_path + redirect_to product_path(@product.id) return end end @@ -85,9 +87,6 @@ def create end end - def edit - end - def update unless session[:user_id] flash[:status] = :failure @@ -116,22 +115,24 @@ def initialize_session return session[:cart] ||= [] end + def find_merchant + @merchant = Merchant.find_by(id: session[:user_id], provider: "github") + + if @merchant.nil? + flash.now[:error] = "Merchant not found." + render :new, status: :bad_request + end + end + def product_params - return params.require(:product).permit(:name, :price, :quantity, :active, :description, :photo) + return params.require(:product).permit(:name, :price, :quantity, :active, :description, :photo).with_defaults(merchant_id: @merchant.id) end def find_product - @product = Product.find_by_id(id: params[:id]) + @product = Product.find_by_id(params[:id]) return render_404 unless @product end - def find_merchant - @merchant = Merchant.find_by(id: params[:author_id]) - if @merchant.nil? - flash.now[:error] = "Merchant not found." - render :new, status: :bad_request - end - end end diff --git a/config/routes.rb b/config/routes.rb index 76f95d01be..0378204698 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -15,7 +15,12 @@ root to: "homepages#index" resources :homepages, only: [:index] + resources :merchants, only: [:create, :index, :show] + resources :merchants do + resources :products, only: [:new, :create, :edit, :update] + end + get "/dashboard", to: "merchants#dashboard", as: "dashboard" resources :categorizations diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 3a44690232..f2f1d7fcc8 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -3,7 +3,18 @@ describe ProductsController do let (:product) { products(:blue_shoes) } before do - @merchant = Merchant.create(email: "email@123.com", username: "kayla-bo-bayla") + @merchant = Merchant.create!(email: "email@123.com", username: "kayla-bo-bayla", uid: "123456", provider: "github", avatar: "avatar") + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(@merchant)) + + get auth_callback_path(:github) + + @product = Product.create!( + name: "sleds", + price: 2.99, + merchant_id: @merchant.id, + quantity: 10, + active: true) end describe "index" do @@ -37,7 +48,7 @@ new_product = { product: { name: "Shoes", price: 2.99, merchant_id: @merchant[:id], quantity: 10, category_id: 1 } } expect { - post products_path, params: new_product + post product_path, params: new_product }.must_change "Product.count", 1 new_product_id = Product.find_by(name: "Shoes").id @@ -53,7 +64,7 @@ post products_path, params: bad_product }.wont_change "Product.count" - must_respond_with :bad_request + must_respond_with :not_found end end @@ -61,7 +72,7 @@ # used fixture it "shows a product" do # product = products(:blue_shoes) - get product_path(products(:blue_shoes).id) + get products_path(@product.id) must_respond_with :success end @@ -79,8 +90,7 @@ describe "edit" do it "succeeds in editing existing product" do - product = products(:blue_shoes) - get edit_product_path(product.id) + get edit_product_path(@product[:id]) must_respond_with :success end @@ -92,21 +102,17 @@ end describe "update" do - before do - @merchant = Merchant.create!(email: "email@123.com", username: "kayla-bo-bayla") - end - it "succeeds for updating" do updates = { product: { name: "fries" } } expect { - put product_path(products(:blue_shoes).id), params: updates + put products_path(@product), params: updates }.wont_change "Product.count" - updated_product = Product.find_by(id: products(:blue_shoes)[:id]) + updated_product = Product.find_by(id: @product.id) expect(updated_product.name).must_equal "fries" must_respond_with :redirect - must_redirect_to product_path(products(:blue_shoes)[:id]) + must_redirect_to products_path(@product.id) end # it "renders bad_request for invalid data" do diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml index 1f9ffb8f77..7f41270dc0 100644 --- a/test/fixtures/products.yml +++ b/test/fixtures/products.yml @@ -3,4 +3,4 @@ blue_shoes: price: 2.99 merchant_id: 1 quantity: 10 - status: false \ No newline at end of file + active: true \ No newline at end of file From 1e90b1800d452ac2c76f4c9d26ab1d0db9fcaa09 Mon Sep 17 00:00:00 2001 From: Ren Carothers Date: Sat, 21 Nov 2020 11:01:31 -0800 Subject: [PATCH 066/199] add navbar prototype --- app/assets/images/about.png | Bin 0 -> 509 bytes app/assets/images/contactus.png | Bin 0 -> 571 bytes app/assets/images/home.gif | Bin 0 -> 761 bytes app/assets/images/jubjub.png | Bin 0 -> 4147 bytes app/assets/images/kougra.png | Bin 0 -> 4483 bytes app/assets/images/logo-sml.png | Bin 0 -> 7492 bytes app/assets/images/plushie.png | Bin 0 -> 4711 bytes app/assets/images/poogle.png | Bin 0 -> 3710 bytes app/assets/images/portal.gif | Bin 0 -> 996 bytes app/assets/images/shop.gif | Bin 0 -> 742 bytes app/assets/images/shoyru2.png | Bin 0 -> 5317 bytes app/assets/images/space_faerie.png | Bin 0 -> 4394 bytes app/assets/images/splash.jpg | Bin 0 -> 70931 bytes app/assets/images/toolbar.gif | Bin 0 -> 789 bytes app/assets/stylesheets/bootstrap.min.css | 12 +++ app/assets/stylesheets/homepages.scss | 6 ++ app/views/homepages/index.html.erb | 40 ++++++- app/views/layouts/application.html.erb | 127 ++++++++++++++++++++--- 18 files changed, 169 insertions(+), 16 deletions(-) create mode 100644 app/assets/images/about.png create mode 100644 app/assets/images/contactus.png create mode 100644 app/assets/images/home.gif create mode 100644 app/assets/images/jubjub.png create mode 100644 app/assets/images/kougra.png create mode 100644 app/assets/images/logo-sml.png create mode 100644 app/assets/images/plushie.png create mode 100644 app/assets/images/poogle.png create mode 100644 app/assets/images/portal.gif create mode 100644 app/assets/images/shop.gif create mode 100644 app/assets/images/shoyru2.png create mode 100644 app/assets/images/space_faerie.png create mode 100644 app/assets/images/splash.jpg create mode 100644 app/assets/images/toolbar.gif create mode 100644 app/assets/stylesheets/bootstrap.min.css diff --git a/app/assets/images/about.png b/app/assets/images/about.png new file mode 100644 index 0000000000000000000000000000000000000000..044134f33f5475900e4fa247bfbcc9a3fd149fa2 GIT binary patch literal 509 zcmV^i+Jv;wySCAtE&(A~ zdc6cY?|tzXWMBLfF{8RsFZlnfI}!@eqh2@4;rXXJ;-PCxHR`ZdZ0<<806Cj^&QRxa zq7kFQwSq1Yh4?mO`ydYJgn2lUvrlMA#kay%6XFia@f{Kxgr5S0BhZ z%)l7|BWexV8!9d&`-Ivtzl?fX7_iS2 zC2ea<4_ZgiLhj~3=moMajhb@iT`D(R8m)bb*&an^_z=-{}Co z0k<`PDFtP!J6?!}C|q%#yT@nzqmXUnU4Q`qi=DD|Tl&2T00000NkvXXu0mjfMj+KL literal 0 HcmV?d00001 diff --git a/app/assets/images/contactus.png b/app/assets/images/contactus.png new file mode 100644 index 0000000000000000000000000000000000000000..912df4ba25b18a2696c31916e4fd2a3835b9d0e4 GIT binary patch literal 571 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/kougra.png b/app/assets/images/kougra.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba690e8ed343074d477e3d90cfcf1d43b98db73 GIT binary patch literal 4483 zcmV-}5q$26P)e60Go?BOBV$<5(Sbg6L4)(FETAS4+AnC3n(r< zbA}!u3Ib6G0x>%lfF}udh<;HS1m{8!y+RQG|IYva{{jF4xBPZG9459&e?!9x(_ zK@jyu5dTRL@j?*pLJ%PUXvakm-a!xr0BgiU58qA^%t#SP7zEZq4m=bF+e{E80C40` z5dZ(+(n=Bk|MCC-ga7An1_2^05Ck3w1ONZ%3IKNhTM^Gf4^QEE^O$mW62POc15db&FIt!072RQ(@DFBK(5FDc}2!bL9|5OA2 z|Iz{gOZ!O?Z6*j41_A&8UjhI???n*MIt-aB30)%zF#wwX|Bwg(hXVjr1pqDaR1st$ z2EarC|NOok2_9-51@=h<%SZum5CHG@&^Z9ax-5?P83BS108|M8HUOzI0HV*#X&M1j76C$9I2SZ15dZ%G%FU?# z>wkiPWv8A@YIZ_%9Wovr6x==u>Fx2y$;#&CwjykoSpTU%LLSQR`-Q6(4@3+XQf{W}EQECJcu-5CJQuf?eU z{iXBqjN;gG>fdpwifU_8N+vHHxIqE(^7!NB$56jK~=l<$70ON|MvCX)I z-NQ-hWGnGC2;JWR!^7^jw$_P>$^@ zHf6#~{{`bYzdJ6UhH}V!laOEFyWo&Kbg8LjY9Dw}-OgTjXy*RhKMxHv68Xskh)|g6 zHNVd?xZ}wVUS_R2bLArB+t&C9%Q9!P{Q#K=$nuv5l1*g=%jWfg6BD)uWv5qFXgwA& zgNvdpLK%0aCrk5D5{t-al&@<)x?$g>n&&xZobG~#wQB`YR#jC~fPM5D6eWeSI1IlT z?|3LRoQSXoRuxGl&yDkTm-)}`;}+XcxVDfU6(xu<;Ovr@=FxgWLMcRHruRR=(S?a7 z_k1xb9j%O3KC@xB(RY?;V22G&kD(iu+eP1@-aWAk4UJ@x-JEU>8<*QjK@d^hc8N4C zA}tMiop*E1%s$IygKG;52d(rNfz017d3oH;(-+r&LZz@wk1l=S*6(N`VMKzqcheKk zMFfKeJyVzOJu^IHgN17onwdEzGT75D+U@#>7mJS8p&3Tw9lpAIZSR&;qoLtMLU_R? z3~giI)$cMZJ_-}IW+&+_@jUxZJKeMAFeGjNs4pc&U+s4X^lA?gXq0qh{cfX}dgJmM-xIvlvb!H?DtPI+~V- zq0=Hx-|jr4mut>YBN{>qBeSxW*he?Lt_*(us!peA6btjYVOnHDCj^aUptbai| z8k{yI`^CVS3GE!vs}7~$Ln5_Je)bLds6INa=-mr-ap9BHn$5*Q#doSZEj&G5gkWgt zE%axBvog}zKOd!1@S&zMu9rRZy#O8Y?E8vN6s6Ye$bNG3=3P`O%Ho!@SdAFEa>{Jw z0q&e4wK9`N!<*xhj@u1vublv0x&6F4ESZ$sShII;YAT5miq|&zFu*jn-$F+`KCgh` zcqDalNps?mz1rtJ@VF8>!2KziSKUQP)kP(~ol+Bu4+$rbk#hr=ir#%Z!XDbmO;K^Y zIUzA-*xgQS2YwH2lm}+&bll{cv&~O8KV7UblfVRllu0>tdi_P^G@3iVYP-OKhQh%_ zL9B=Kg6Nem)|YgYC!=}!srki;!0RXPq~h_QU=hiLzQ9elyxw@hdwyS616E6{*3y85 ztM%QdPY&0h6e_JI>B-4d(9keE9v@0Uh^%uyJJ%^~WaxKzA!V*0EeE%zcgPnGLDx^r z$s`gG8WxvoPT6r%vzJN%>=2MNMB~5&X0~|aiidCucQy<@J*2B;^V}BrxI~{?gW@q5 z1r4vtE@o!$0A7PXfwIcc@m4>s3>LTAUt3*DnO&*pI9i44{BO9)<4@LLEIhTQs@R%y z>}|t<i(~W*`?nsEmlN2a4^sm2!|fL_QIoHy57yaY2H;RLotoo*5$>iw-`tt^Wp< z0%Vhk{DBQc(aHn%MPqAO7pV3|lf`4+fXw>hxA%r%26UfP84fGc#E|%nx*NH8EC982 zrzDl)$Gw~uXk++q%2-0r7xm(UCr-2-KHMt)=ELhGFc2aiEMf;E#H}vN7IB1k zGN_oz9OmL?Mc&KxEBa8(j&LG--_d8^KlUl~)RnQ;jZn*Z8upTN{)|Kt9St4uw~t;X z+uC4_5?IqcW@q`9H+yIpnn7&*qW$>|R}Vb~K`ZV$5b^rX8<^S1x!&=0mESzG&DTD9 zd2GVkm?*kH;6AhL>DtE6>;{nsY-RLsFFNz}$d{*nfuJj&1&g3L|LuU4HB1k&%&~$6tk3jETjE_fWxGz$VAt z?772pvFICWD5TFpyV7<(bpPhgxHuAx0!Dsm^~cXC{}}o5SE%JKvADI57D^!?1O}4% zu#59z5#pBJ93;TlGYnZ1_Tar=?TO3J*CmIOBQr0Zf`5bl9QpbXKtmXs0#uWI7zIn5 z7HuA9&sOEA1cIR%uEB8+yQYA0O3h2|B1i6Aw*fY6AHmRXZrfjf;5>~HNk+)Vc+294 zirWfC% zs!;~nR8du2x@<<&_^uISxE16v~mcrDCySzI(XRSP7L z`Es{et3YqcXZqP^+BJcy$)irZvdU`s~V8F+B z_^=TIhoP7?+iT?TwU<6TTd-53SU>jSOULf}JWH|flbhFRRIKg+GNNU1XNdM(=8E(8 zaL@8^`5O~3yp}0z;uB5fezS{p+XVb(OUoOd!|yx>O||_m?YoKE*2YNSpon#k+ikbh zE?wzvh>abNifv+4!PCVVXRy)*DnkXE0M8Cl&z7fPtW6x62EW>}ANua4JSrel5Rfif z?kz1#Ts*k(tRz*Uz?yAQ-&rE_vuT5)K=rVu>($)3>+apqmJ{%awx_1ak6l^O20?F} zr;$P^1R{YY^2)&bCE3-s!W z*PzE;CMExJE@p%u$NSx`yoID zZOe)i@V?#sb#=W3XSQE1+O$WfY8Y%z+KX_A2ADZ)LlZc!#4-!mtcng*%#fVN=cv!- z!1fnq*ZshVEswamdbz*#;@H@#Rh!-)l}Os#zshbXY$(}QaAYcdxPE;X=cVZlmA(aYd%(DXs^;15#Cs=#DsLqkw$x!GhS z2zgn227xTfyReIfpJwypVP^-?-m!*prP79e_6ezE6D<3-Ihz}YW`LV0hET5Ay{E7L zqnA_AsihhebVio1gJ{pvboffJ(x&=|^u1#$!_ejmGi4InMVEj5t7g$1IsKhDFY*euXu#532=BK^VI|J<)WhT3mBOc7D+5HYWeXwG4vQ! z>9uQF`D`s2uAXuP3vZT4;b@TD29wnL;G@sOyHRj33pWxu0X1*ee9VoTkZV--xU7ZHdYbyHM!Z&xE2TWCg8POPs(Awuhd zDP1X{)NpPbHdmy{AK!9y@?7rb=HZUrUMP%40$JEyUXqxjQ-d=&g;pb1#s0lv_zONC V@}a(N50(G`002ovPDHLkV1kE9H>>~v literal 0 HcmV?d00001 diff --git a/app/assets/images/logo-sml.png b/app/assets/images/logo-sml.png new file mode 100644 index 0000000000000000000000000000000000000000..410abb0c30577ca0655db69106fd6583ec13cf57 GIT binary patch literal 7492 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 YrRF+X%puhLuX9ax6>Vg-l10e>1Cct2`v3p{ literal 0 HcmV?d00001 diff --git a/app/assets/images/plushie.png b/app/assets/images/plushie.png new file mode 100644 index 0000000000000000000000000000000000000000..e95116fdebb54d5d0b6888f5387387efa44a578e GIT binary patch literal 4711 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/poogle.png b/app/assets/images/poogle.png new file mode 100644 index 0000000000000000000000000000000000000000..a35bb106e1055bd67d3f7b8140363bebeb87dcb7 GIT binary patch literal 3710 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 E00tyX4*&oF literal 0 HcmV?d00001 diff --git a/app/assets/images/shop.gif b/app/assets/images/shop.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3609a958dd0fdeac984b480e4bbc7235f6ba4f8 GIT binary patch literal 742 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/splash.jpg b/app/assets/images/splash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a17595388e6baefa332b1eb1c55e42c9502b00d4 GIT binary patch literal 70931 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:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.3rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#888}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid rgba(0,0,0,.05)}.table thead th{vertical-align:bottom;border-bottom:2px solid rgba(0,0,0,.05)}.table tbody+tbody{border-top:2px solid rgba(0,0,0,.05)}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid rgba(0,0,0,.05)}.table-bordered td,.table-bordered th{border:1px solid rgba(0,0,0,.05)}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#888;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d9eee8}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#b9dfd4}.table-hover .table-primary:hover{background-color:#c7e6dd}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#c7e6dd}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#fce2e3}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#f9c8ca}.table-hover .table-secondary:hover{background-color:#facbcd}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#facbcd}.table-success,.table-success>td,.table-success>th{background-color:#d0f1e4}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#a7e4cc}.table-hover .table-success:hover{background-color:#bcebd9}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#bcebd9}.table-info,.table-info>td,.table-info>th{background-color:#d6eef3}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#b3e0e9}.table-hover .table-info:hover{background-color:#c2e6ed}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c2e6ed}.table-warning,.table-warning>td,.table-warning>th{background-color:#fff1d4}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffe6b0}.table-hover .table-warning:hover{background-color:#ffe9bb}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe9bb}.table-danger,.table-danger>td,.table-danger>th{background-color:#ffd9ce}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ffb9a5}.table-hover .table-danger:hover{background-color:#ffc5b5}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ffc5b5}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#5a5a5a;background-color:#f7f7f9;border-color:rgba(0,0,0,.05)}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#5a5a5a;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.4rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #5a5a5a}.form-control:focus{color:#5a5a5a;background-color:#fff;border-color:#d0eae2;outline:0;box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.form-control::-webkit-input-placeholder{color:#888;opacity:1}.form-control::-moz-placeholder{color:#888;opacity:1}.form-control:-ms-input-placeholder{color:#888;opacity:1}.form-control::-ms-input-placeholder{color:#888;opacity:1}.form-control::placeholder{color:#888;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#f7f7f9;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#5a5a5a;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#888;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.3rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.6rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#888}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#56cc9d}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(86,204,157,.9);border-radius:.4rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#56cc9d;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2356cc9d' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#56cc9d;box-shadow:0 0 0 .2rem rgba(86,204,157,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#56cc9d;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2356cc9d' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#56cc9d;box-shadow:0 0 0 .2rem rgba(86,204,157,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#56cc9d}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#56cc9d}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#56cc9d}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#7dd8b4;background-color:#7dd8b4}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(86,204,157,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#56cc9d}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#56cc9d}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#56cc9d;box-shadow:0 0 0 .2rem rgba(86,204,157,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#ff7851}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(255,120,81,.9);border-radius:.4rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ff7851;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ff7851' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff7851' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ff7851;box-shadow:0 0 0 .2rem rgba(255,120,81,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#ff7851;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23ff7851' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff7851' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#ff7851;box-shadow:0 0 0 .2rem rgba(255,120,81,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ff7851}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#ff7851}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#ff7851}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#ffa084;background-color:#ffa084}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(255,120,81,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#ff7851}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#ff7851}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#ff7851;box-shadow:0 0 0 .2rem rgba(255,120,81,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#888;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.4rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#888;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#78c2ad;border-color:#78c2ad}.btn-primary:hover{color:#fff;background-color:#5eb69d;border-color:#55b298}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#5eb69d;border-color:#55b298;box-shadow:0 0 0 .2rem rgba(140,203,185,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#78c2ad;border-color:#78c2ad}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#55b298;border-color:#4eac92}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(140,203,185,.5)}.btn-secondary{color:#fff;background-color:#f3969a;border-color:#f3969a}.btn-secondary:hover{color:#fff;background-color:#ef7479;border-color:#ee686e}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#ef7479;border-color:#ee686e;box-shadow:0 0 0 .2rem rgba(245,166,169,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#f3969a;border-color:#f3969a}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#ee686e;border-color:#ec5d63}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(245,166,169,.5)}.btn-success{color:#fff;background-color:#56cc9d;border-color:#56cc9d}.btn-success:hover{color:#fff;background-color:#3ac18c;border-color:#37b885}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#3ac18c;border-color:#37b885;box-shadow:0 0 0 .2rem rgba(111,212,172,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#56cc9d;border-color:#56cc9d}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#37b885;border-color:#34ae7d}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(111,212,172,.5)}.btn-info{color:#fff;background-color:#6cc3d5;border-color:#6cc3d5}.btn-info:hover{color:#fff;background-color:#4eb7cd;border-color:#44b3ca}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#4eb7cd;border-color:#44b3ca;box-shadow:0 0 0 .2rem rgba(130,204,219,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#6cc3d5;border-color:#6cc3d5}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#44b3ca;border-color:#3aafc7}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,204,219,.5)}.btn-warning{color:#fff;background-color:#ffce67;border-color:#ffce67}.btn-warning:hover{color:#fff;background-color:#ffc241;border-color:#ffbe34}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ffc241;border-color:#ffbe34;box-shadow:0 0 0 .2rem rgba(255,213,126,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#fff;background-color:#ffce67;border-color:#ffce67}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ffbe34;border-color:#ffb927}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,213,126,.5)}.btn-danger{color:#fff;background-color:#ff7851;border-color:#ff7851}.btn-danger:hover{color:#fff;background-color:#ff5a2b;border-color:#ff501e}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#ff5a2b;border-color:#ff501e;box-shadow:0 0 0 .2rem rgba(255,140,107,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#ff7851;border-color:#ff7851}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff501e;border-color:#ff4711}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,140,107,.5)}.btn-light{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#fff;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#fff;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(249,250,251,.5)}.btn-light.disabled,.btn-light:disabled{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#fff;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(249,250,251,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#78c2ad;border-color:#78c2ad}.btn-outline-primary:hover{color:#fff;background-color:#78c2ad;border-color:#78c2ad}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(120,194,173,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#78c2ad;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#78c2ad;border-color:#78c2ad}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(120,194,173,.5)}.btn-outline-secondary{color:#f3969a;border-color:#f3969a}.btn-outline-secondary:hover{color:#fff;background-color:#f3969a;border-color:#f3969a}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(243,150,154,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#f3969a;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#f3969a;border-color:#f3969a}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(243,150,154,.5)}.btn-outline-success{color:#56cc9d;border-color:#56cc9d}.btn-outline-success:hover{color:#fff;background-color:#56cc9d;border-color:#56cc9d}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(86,204,157,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#56cc9d;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#56cc9d;border-color:#56cc9d}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(86,204,157,.5)}.btn-outline-info{color:#6cc3d5;border-color:#6cc3d5}.btn-outline-info:hover{color:#fff;background-color:#6cc3d5;border-color:#6cc3d5}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(108,195,213,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#6cc3d5;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#6cc3d5;border-color:#6cc3d5}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,195,213,.5)}.btn-outline-warning{color:#ffce67;border-color:#ffce67}.btn-outline-warning:hover{color:#fff;background-color:#ffce67;border-color:#ffce67}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,206,103,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffce67;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#ffce67;border-color:#ffce67}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,206,103,.5)}.btn-outline-danger{color:#ff7851;border-color:#ff7851}.btn-outline-danger:hover{color:#fff;background-color:#ff7851;border-color:#ff7851}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(255,120,81,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#ff7851;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ff7851;border-color:#ff7851}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,120,81,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#78c2ad;text-decoration:none}.btn-link:hover{color:#4aa48a;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#888;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.6rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.3rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#888;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.4rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #f7f7f9}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#fff;text-decoration:none;background-color:#f3969a}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#78c2ad}.dropdown-item.disabled,.dropdown-item:disabled{color:#888;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#888;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#5a5a5a;text-align:center;white-space:nowrap;background-color:#f7f7f9;border:1px solid #ced4da;border-radius:.4rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.6rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#78c2ad;background-color:#78c2ad}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#d0eae2}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#f3faf8;border-color:#f3faf8}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#888}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#f7f7f9}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#aaa solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.4rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#78c2ad;background-color:#78c2ad}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(120,194,173,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(120,194,173,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(120,194,173,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#aaa;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(120,194,173,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#5a5a5a;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.4rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#d0eae2;outline:0;box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.custom-select:focus::-ms-value{color:#5a5a5a;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#888;background-color:#f7f7f9}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #5a5a5a}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#d0eae2;box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#f7f7f9}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#5a5a5a;background-color:#fff;border:1px solid #ced4da;border-radius:.4rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#5a5a5a;content:"Browse";background-color:#f7f7f9;border-left:inherit;border-radius:0 .4rem .4rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(120,194,173,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(120,194,173,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(120,194,173,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#78c2ad;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#f3faf8}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#eceeef;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#78c2ad;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#f3faf8}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#eceeef;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#78c2ad;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#f3faf8}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#eceeef;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#eceeef;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#aaa}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#aaa}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#aaa}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#888;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #eceeef}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.4rem;border-top-right-radius:.4rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#f7f7f9 #f7f7f9 #eceeef}.nav-tabs .nav-link.disabled{color:#888;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#5a5a5a;background-color:#fff;border-color:#eceeef #eceeef #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.4rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#78c2ad}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:-8px;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.4rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#5a5a5a}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:#5a5a5a}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:#5a5a5a}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.1)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:#5a5a5a}.navbar-light .navbar-toggler{color:rgba(0,0,0,.3);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.3%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.3)}.navbar-light .navbar-text a{color:#5a5a5a}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:#5a5a5a}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.6)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:#fff}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.6);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.6%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.6)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.4rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.4rem - 1px);border-top-right-radius:calc(.4rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.4rem - 1px);border-bottom-left-radius:calc(.4rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.4rem - 1px) calc(.4rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.4rem - 1px) calc(.4rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.4rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.4rem - 1px);border-top-right-radius:calc(.4rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.4rem - 1px);border-bottom-left-radius:calc(.4rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#78c2ad;border-radius:.4rem}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#fff;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#fff}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.4rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#fff;background-color:#78c2ad;border:1px solid #78c2ad}.page-link:hover{z-index:2;color:#fff;text-decoration:none;background-color:#f3969a;border-color:#f3969a}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(120,194,173,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.4rem;border-bottom-left-radius:.4rem}.page-item:last-child .page-link{border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#f3969a;border-color:#f3969a}.page-item.disabled .page-link{color:#fff;pointer-events:none;cursor:auto;background-color:#cce8e0;border-color:#cce8e0}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.6rem;border-bottom-left-radius:.6rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.6rem;border-bottom-right-radius:.6rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.4rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#78c2ad}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#55b298}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(120,194,173,.5)}.badge-secondary{color:#fff;background-color:#f3969a}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#ee686e}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(243,150,154,.5)}.badge-success{color:#fff;background-color:#56cc9d}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#37b885}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(86,204,157,.5)}.badge-info{color:#fff;background-color:#6cc3d5}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#44b3ca}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,195,213,.5)}.badge-warning{color:#fff;background-color:#ffce67}a.badge-warning:focus,a.badge-warning:hover{color:#fff;background-color:#ffbe34}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,206,103,.5)}.badge-danger{color:#fff;background-color:#ff7851}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#ff501e}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,120,81,.5)}.badge-light{color:#fff;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#fff;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#f7f7f9;border-radius:.6rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.4rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#3e655a;background-color:#e4f3ef;border-color:#d9eee8}.alert-primary hr{border-top-color:#c7e6dd}.alert-primary .alert-link{color:#2b453e}.alert-secondary{color:#7e4e50;background-color:#fdeaeb;border-color:#fce2e3}.alert-secondary hr{border-top-color:#facbcd}.alert-secondary .alert-link{color:#5f3b3c}.alert-success{color:#2d6a52;background-color:#ddf5eb;border-color:#d0f1e4}.alert-success hr{border-top-color:#bcebd9}.alert-success .alert-link{color:#1e4636}.alert-info{color:#38656f;background-color:#e2f3f7;border-color:#d6eef3}.alert-info hr{border-top-color:#c2e6ed}.alert-info .alert-link{color:#27464d}.alert-warning{color:#856b36;background-color:#fff5e1;border-color:#fff1d4}.alert-warning hr{border-top-color:#ffe9bb}.alert-warning .alert-link{color:#614e27}.alert-danger{color:#853e2a;background-color:#ffe4dc;border-color:#ffd9ce}.alert-danger hr{border-top-color:#ffc5b5}.alert-danger .alert-link{color:#5e2c1e}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#f7f7f9;border-radius:.4rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#78c2ad;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.4rem}.list-group-item-action{width:100%;color:#5a5a5a;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#5a5a5a;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#888;background-color:#f7f7f9}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#888;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#78c2ad;border-color:#78c2ad}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.4rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.4rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.4rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.4rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.4rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.4rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.4rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.4rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.4rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.4rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#3e655a;background-color:#d9eee8}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#3e655a;background-color:#c7e6dd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#3e655a;border-color:#3e655a}.list-group-item-secondary{color:#7e4e50;background-color:#fce2e3}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#7e4e50;background-color:#facbcd}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#7e4e50;border-color:#7e4e50}.list-group-item-success{color:#2d6a52;background-color:#d0f1e4}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#2d6a52;background-color:#bcebd9}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#2d6a52;border-color:#2d6a52}.list-group-item-info{color:#38656f;background-color:#d6eef3}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#38656f;background-color:#c2e6ed}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#38656f;border-color:#38656f}.list-group-item-warning{color:#856b36;background-color:#fff1d4}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856b36;background-color:#ffe9bb}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856b36;border-color:#856b36}.list-group-item-danger{color:#853e2a;background-color:#ffd9ce}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#853e2a;background-color:#ffc5b5}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#853e2a;border-color:#853e2a}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#888;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.6rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #eceeef;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #eceeef;border-bottom-right-radius:calc(.6rem - 1px);border-bottom-left-radius:calc(.6rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;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-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.4rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;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-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.6rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .6rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.6rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:#5a5a5a;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.6rem - 1px);border-top-right-radius:calc(.6rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#888}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#78c2ad!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#55b298!important}.bg-secondary{background-color:#f3969a!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#ee686e!important}.bg-success{background-color:#56cc9d!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#37b885!important}.bg-info{background-color:#6cc3d5!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#44b3ca!important}.bg-warning{background-color:#ffce67!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#ffbe34!important}.bg-danger{background-color:#ff7851!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#ff501e!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #eceeef!important}.border-top{border-top:1px solid #eceeef!important}.border-right{border-right:1px solid #eceeef!important}.border-bottom{border-bottom:1px solid #eceeef!important}.border-left{border-left:1px solid #eceeef!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#78c2ad!important}.border-secondary{border-color:#f3969a!important}.border-success{border-color:#56cc9d!important}.border-info{border-color:#6cc3d5!important}.border-warning{border-color:#ffce67!important}.border-danger{border-color:#ff7851!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.3rem!important}.rounded{border-radius:.4rem!important}.rounded-top{border-top-left-radius:.4rem!important;border-top-right-radius:.4rem!important}.rounded-right{border-top-right-radius:.4rem!important;border-bottom-right-radius:.4rem!important}.rounded-bottom{border-bottom-right-radius:.4rem!important;border-bottom-left-radius:.4rem!important}.rounded-left{border-top-left-radius:.4rem!important;border-bottom-left-radius:.4rem!important}.rounded-lg{border-radius:.6rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#78c2ad!important}a.text-primary:focus,a.text-primary:hover{color:#4aa48a!important}.text-secondary{color:#f3969a!important}a.text-secondary:focus,a.text-secondary:hover{color:#eb5158!important}.text-success{color:#56cc9d!important}a.text-success:focus,a.text-success:hover{color:#31a476!important}.text-info{color:#6cc3d5!important}a.text-info:focus,a.text-info:hover{color:#36a7be!important}.text-warning{color:#ffce67!important}a.text-warning:focus,a.text-warning:hover{color:#ffb51b!important}.text-danger{color:#ff7851!important}a.text-danger:focus,a.text-danger:hover{color:#ff3d05!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#888!important}.text-muted{color:#888!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #aaa;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #eceeef!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:rgba(0,0,0,.05)}.table .thead-dark th{color:inherit;border-color:rgba(0,0,0,.05)}}.navbar{font-family:Montserrat,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.bg-dark{background-color:#f3969a!important}.border-dark{border-color:#f3969a!important}.btn{font-family:Montserrat,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.btn,.btn:hover{color:#fff}.btn-light,.btn-light:hover{color:#5a5a5a}.btn-link,.btn-link:hover{color:#78c2ad}.btn-link.disabled:hover{color:#888}.btn-outline-primary{color:#78c2ad}.btn-outline-secondary{color:#f3969a}.btn-outline-success{color:#56cc9d}.btn-outline-info{color:#6cc3d5}.btn-outline-warning{color:#ffce67}.btn-outline-danger{color:#ff7851}.btn-outline-dark{color:#343a40}.btn-outline-light{color:#f8f9fa}.table-danger,.table-info,.table-primary,.table-secondary,.table-success,.table-warning{color:#fff}.table-primary,.table-primary>td,.table-primary>th{background-color:#78c2ad}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#f3969a}.table-light,.table-light>td,.table-light>th{background-color:#f8f9fa}.table-dark,.table-dark>td,.table-dark>th{background-color:#343a40}.table-success,.table-success>td,.table-success>th{background-color:#56cc9d}.table-info,.table-info>td,.table-info>th{background-color:#6cc3d5}.table-danger,.table-danger>td,.table-danger>th{background-color:#ff7851}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffce67}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#66baa2}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#f07f84}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#e9ecef}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#292d32}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#42c692}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#58bbcf}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ff6438}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffc64e}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{background-color:#78c2ad;border-color:rgba(0,0,0,.05);font-family:Montserrat,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}legend{font-family:Montserrat,-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.dropdown-menu{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"}.breadcrumb a{color:rgba(255,255,255,.6)}.breadcrumb a:hover{color:#fff;text-decoration:none}.alert{color:#fff}.alert h1,.alert h2,.alert h3,.alert h4,.alert h5,.alert h6{color:inherit}.alert .alert-link,.alert a{color:#fff}.alert-primary,.alert-primary>td,.alert-primary>th{background-color:#78c2ad}.alert-secondary,.alert-secondary>td,.alert-secondary>th{background-color:#f3969a}.alert-success,.alert-success>td,.alert-success>th{background-color:#56cc9d}.alert-info,.alert-info>td,.alert-info>th{background-color:#6cc3d5}.alert-danger,.alert-danger>td,.alert-danger>th{background-color:#ff7851}.alert-warning,.alert-warning>td,.alert-warning>th{background-color:#ffce67}.alert-dark,.alert-dark>td,.alert-dark>th{background-color:#343a40}.alert-light,.alert-light>td,.alert-light>th{background-color:#f8f9fa}.alert-light,.alert-light .alert-link,.alert-light a:not(.btn){color:#888}.badge{color:#fff}.badge-light{color:#5a5a5a}.card h1,.card h2,.card h3,.card h4,.card h5,.card h6,.list-group-item h1,.list-group-item h2,.list-group-item h3,.list-group-item h4,.list-group-item h5,.list-group-item h6{color:inherit} \ No newline at end of file diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss index f54dc27a9f..1a31764ef6 100644 --- a/app/assets/stylesheets/homepages.scss +++ b/app/assets/stylesheets/homepages.scss @@ -1,3 +1,9 @@ // Place all the styles related to the Homepages controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ + +div.homepage-banner { +padding: 6px; +display: flex; +justify-content: center; +} diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 37d3ce7099..43a9cc0efa 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,2 +1,38 @@ -

    Homepages#index

    -

    Find me in app/views/homepages/index.html.erb

    +
    + <%= image_tag("splash.jpg", :alt => "mystical faerieland") %> +
    + + + + + + + + + + + + + + + + <%#= image_tag("carosel_marketplace.gif", :alt => "draik in a grocery marketplace", :class => "d-block w-25") %> + + + <%#= image_tag("carosel_marketplace.gif", :alt => "draik in a grocery marketplace", :class => "d-block w-25") %> + + + <%#= image_tag("carosel_marketplace.gif", :alt => "draik in a grocery marketplace", :class => "d-block w-25") %> + + + + + + + + + + + + + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index ae9d236343..e4c50cc248 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - Betsy + Neopetsy Betsy <%= csrf_meta_tags %> <%= csp_meta_tag %> @@ -11,22 +11,95 @@ +
    + + - + + <%#= link_to "Log Out", logout_path, method: :post, class: "btn btn-primary" %> + + <%# else %> + + <%#= link_to "Log In", github_login_path, class: "btn btn-primary" %> + + <%# end %> + <% if flash[:result_text] or flash[:messages] %> @@ -47,5 +120,31 @@ <% end %> <%= yield %> + + + \ No newline at end of file From 71fe66929b697b2d0c0394e3b99798e8e1ec63d3 Mon Sep 17 00:00:00 2001 From: Ren Carothers Date: Sat, 21 Nov 2020 11:13:24 -0800 Subject: [PATCH 067/199] fix img alts --- app/views/layouts/application.html.erb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index e4c50cc248..027e8f9752 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -41,32 +41,32 @@