diff --git a/.dockerignore b/.dockerignore index fb31961..e2b0b51 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,7 +15,6 @@ !sample/sample.sqlite3 !viewer/**/*.py -!viewer/static/download-files !viewer/static_src !viewer/templates diff --git a/.gitignore b/.gitignore index e138b05..7d208c6 100644 --- a/.gitignore +++ b/.gitignore @@ -63,8 +63,6 @@ venv *.egg-info .installed.cfg viewer/static/** -!viewer/static/download-files -!viewer/static/download-files/* # Unit test / coverage reports ################# diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..dc462ec --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +.github +.tox + +htmlcov +sample +venv +viewer/static diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..edd6acc --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Django runserver", + "type": "debugpy", + "request": "launch", + "args": ["runserver"], + "django": true, + "autoStartBrowser": false, + "program": "${workspaceFolder}/manage.py" + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec64336..17c1144 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,11 +5,10 @@ > feature request, you are agreeing to comply with this waiver of copyright interest. > Details can be found in our [TERMS](TERMS.md) and [LICENSE](LICENSE). - There are two primary ways to help: - - Using the issue tracker, and - - Changing the code-base. +- Using the issue tracker, and +- Changing the code-base. ## Using the issue tracker @@ -21,7 +20,6 @@ Use the issue tracker to find ways to contribute. Find a bug or a feature, menti the issue that you will take on that effort, then follow the _Changing the code-base_ guidance below. - ## Changing the code-base Generally speaking, you should fork this repository, make changes in your @@ -31,7 +29,6 @@ Additionally, the code should follow any stylistic and architectural guidelines prescribed by the project. In the absence of such guidelines, mimic the styles and patterns in the existing code-base. - ## Browser support We configure our build chain tools diff --git a/README.md b/README.md index ccd924b..8dc1f99 100644 --- a/README.md +++ b/README.md @@ -129,13 +129,20 @@ sqlite> SELECT url FROM crawler_page WHERE html LIKE "%
%" ORDER BY URL asc; ## Running the viewer application -From the repo's root, compile front-end assets: +From the repo's root, compile frontend assets: ``` yarn yarn build ``` +Alternatively, to continuously watch the frontend assets and rebuild as necessary: + +``` +yarn +yarn watch +``` + Create a Python virtual environment and install required packages: ``` @@ -205,7 +212,7 @@ yarn prettier You can fix any problems by running: ``` -yarn fix +yarn prettier:fix ``` ### Sample test data @@ -291,9 +298,10 @@ The `deploy` command: See [fabfile.py](fabfile.py) for additional detail. ----- +--- ## Open source licensing info + 1. [TERMS](TERMS.md) 2. [LICENSE](LICENSE) 3. [CFPB Source Code Policy](https://github.com/cfpb/source-code-policy/) diff --git a/TERMS.md b/TERMS.md index f64c133..a0268df 100644 --- a/TERMS.md +++ b/TERMS.md @@ -1,7 +1,7 @@ As a work of the United States Government, this package (excluding any exceptions listed below) is in the public domain within the United States. Additionally, we waive copyright and related rights in the work worldwide -through the [CC0 1.0 Universal public domain dedication][CC0]. +through the [CC0 1.0 Universal public domain dedication][cc0]. Software source code previously released under an open source license and then modified by CFPB staff or its contractors is considered a "joint work" @@ -14,10 +14,9 @@ rights for that work are waived through the CC0 1.0 Universal dedication. For further details, please see the CFPB [Source Code Policy][policy]. - ## CC0 1.0 Universal Summary -This is a human-readable summary of the [Legal Code (read the full text)][CC0]. +This is a human-readable summary of the [Legal Code (read the full text)][cc0]. ### No Copyright @@ -26,7 +25,7 @@ the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. -You can copy, modify, distribute and perform the work, even for commercial +You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below. ### Other Information @@ -42,8 +41,7 @@ When using or citing the work, you should not imply endorsement by the author or the affirmer. [policy]: https://github.com/cfpb/source-code-policy/ -[CC0]: http://creativecommons.org/publicdomain/zero/1.0/legalcode - +[cc0]: http://creativecommons.org/publicdomain/zero/1.0/legalcode ## Exceptions diff --git a/esbuild.mjs b/esbuild.mjs new file mode 100644 index 0000000..a0acd49 --- /dev/null +++ b/esbuild.mjs @@ -0,0 +1,89 @@ +import { context } from "esbuild"; +import { copy } from "esbuild-plugin-copy"; +import autoprefixer from "autoprefixer"; +import { promises, readdirSync } from "fs"; +import { dirname } from "path"; +import postcss from "postcss"; +import less from "less"; + +const modules = "./node_modules"; + +// Copied from https://github.com/cfpb/consumerfinance.gov/blob/fcb4eab638db45003cac57432b89c0a249bc2aff/esbuild/plugins/postcss.js +const postCSSPlugin = ({ plugins = [], lessOptions = {} }) => ({ + name: "less-and-postcss", + setup(build) { + build.onLoad({ filter: /.\.less$/ }, async (args) => { + const fileContent = await promises.readFile(args.path, { + encoding: "utf-8", + }); + const lessResult = await less.render(fileContent, { + ...lessOptions, + filename: args.path, + rootpath: dirname(args.path), + }); + const result = await postcss(plugins).process(lessResult.css, { + from: args.path, + }); + + return { + contents: result.css, + loader: "css", + watchFiles: lessResult.imports, + }; + }); + }, +}); + +(async function () { + const watch = process.argv.slice(2)[0] === "--watch"; + + const ctx = await context({ + entryPoints: [ + "viewer/static_src/js/main.js", + "viewer/static_src/css/main.less", + ], + bundle: true, + sourcemap: true, + minify: true, + logLevel: "debug", + outbase: "viewer/static_src", + outdir: "viewer/static", + external: ["*.png", "*.woff", "*.woff2", "*.gif"], + loader: { + ".svg": "text", + }, + plugins: [ + copy({ + assets: [ + { + from: ["viewer/static_src/query-string-filtering.docx"], + to: ["."], + }, + { + from: [`${modules}/@cfpb/cfpb-icons/src/icons/*`], + to: ["./icons"], + }, + ], + }), + postCSSPlugin({ + plugins: [autoprefixer], + lessOptions: { + math: "always", + paths: [ + ...readdirSync(`${modules}/@cfpb`).map( + (v) => `${modules}/@cfpb/${v}/src` + ), + `${modules}`, + ], + }, + }), + ], + }); + + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + return await ctx.dispose(); + } +})(); diff --git a/package.json b/package.json index 848bfd1..2f3db68 100644 --- a/package.json +++ b/package.json @@ -2,36 +2,36 @@ "name": "website-indexer", "version": "1.1.0", "license": "CC0-1.0", - "type": "module", "engines": { "node": ">=16.x" }, "scripts": { - "prettier": "prettier --check 'viewer/static_src/*.{css,js}' 'viewer/**/*.html'", - "fix": "npm run prettier -- --write", - "fonts": "cp -r viewer/static_src/fonts viewer/static/fonts", - "styles": "curl -o viewer/static/cfgov.css https://www.consumerfinance.gov/static/css/main.css && curl https://www.consumerfinance.gov/static/apps/regulations3k/css/main.css >> viewer/static/cfgov.css && cp viewer/static_src/main.css viewer/static/main.css", - "scripts": "esbuild viewer/static_src/main.js --bundle --outfile=viewer/static/main.js", - "build": "yarn fonts && yarn styles && yarn scripts" + "build": "node ./esbuild.mjs", + "clean": "rm -rf ./viewer/static/", + "prettier": "prettier . --check", + "prettier:fix": "prettier . --write", + "watch": "yarn build --watch" }, "dependencies": { - "@cfpb/cfpb-expandables": "0.32.0", - "esbuild": "^0.14.38" + "@cfpb/cfpb-atomic-component": "^2.0.1", + "@cfpb/cfpb-buttons": "^2.0.0", + "@cfpb/cfpb-core": "^2.0.0", + "@cfpb/cfpb-expandables": "^2.0.1", + "@cfpb/cfpb-forms": "^2.0.0", + "@cfpb/cfpb-grid": "^2.0.0", + "@cfpb/cfpb-icons": "^2.0.0", + "@cfpb/cfpb-layout": "^2.0.0", + "@cfpb/cfpb-notifications": "^2.0.1", + "@cfpb/cfpb-pagination": "^2.0.0", + "@cfpb/cfpb-typography": "^2.0.1", + "autoprefixer": "^10.4.19", + "esbuild": "^0.23.0", + "esbuild-plugin-copy": "^2.1.1", + "less": "^4.2.0", + "postcss": "^8.4.39", + "postcss-less": "^6.0.0" }, "devDependencies": { "prettier": "^2.7.1" - }, - "prettier": { - "bracketSameLine": true, - "htmlWhitespaceSensitivity": "strict", - "tabWidth": 2, - "overrides": [ - { - "files": "*.css", - "options": { - "tabWidth": 4 - } - } - ] } } diff --git a/settings.py b/settings.py index 51bf03e..d780e7d 100644 --- a/settings.py +++ b/settings.py @@ -57,6 +57,7 @@ TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [BASE_DIR / "viewer/static/icons"], "APP_DIRS": True, "OPTIONS": { "context_processors": [ diff --git a/viewer/static/.gitkeep b/viewer/static/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/viewer/static_src/css/breadcrumbs.less b/viewer/static_src/css/breadcrumbs.less new file mode 100644 index 0000000..6ff5778 --- /dev/null +++ b/viewer/static_src/css/breadcrumbs.less @@ -0,0 +1,29 @@ +// Copied from https://github.com/cfpb/consumerfinance.gov/blob/f19227f9d13d90f19c06dd1dbd78e9233d1d3432/cfgov/unprocessed/css/breadcrumbs.less +.m-breadcrumbs { + // Mobile size. + position: relative; + display: flex; + gap: unit(10px / @base-font-size-px, rem); + align-items: center; + flex-wrap: wrap; + + font-size: unit(14px / @base-font-size-px, rem); + padding-top: unit(15px / @base-font-size-px, rem); + padding-bottom: unit(15px / @base-font-size-px, rem); + min-height: 33px; + + // Desktop and above. + .respond-to-min(@bp-med-min, { + padding-top: unit(30px / @base-font-size-px, rem); + // Bottom is zero because main content area may or may not have a breadcrumb, + // so the main content needs to set it s own spacing. + padding-bottom: 0; + }); +} + +// Hide on print. +.respond-to-print({ + .m-breadcrumbs { + display: none; + } +}); diff --git a/viewer/static_src/css/crawler.less b/viewer/static_src/css/crawler.less new file mode 100644 index 0000000..d612c87 --- /dev/null +++ b/viewer/static_src/css/crawler.less @@ -0,0 +1,65 @@ +.search-options { + display: flex; + flex-direction: row; + flex-wrap: wrap; + width: 100%; + + div { + flex: 50%; + } + + label { + font-weight: bold; + + > span { + display: block; + margin-top: 3px; + margin-bottom: 15px; + font-weight: normal; + } + } +} + +.results-list { + li { + list-style-type: none; + } + + .results-list__item { + padding: 24px 0 !important; + + + .results-list__item { + border-top: 1px solid var(--gray-40); + } + } +} + +.u-truncate { + max-width: none !important; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + list-style-position: inside; + margin-bottom: 15px; +} + +.crawl-date { + display: flex; + + &__text { + font-weight: bold; + padding-right: 5px; + margin-bottom: 15px; + } +} + +.help-text { + margin-top: 15px; + margin-bottom: 30px; +} + +code.language-html { + max-height: 500px; + overflow: scroll; + display: block; +} diff --git a/viewer/static_src/css/footer.less b/viewer/static_src/css/footer.less new file mode 100644 index 0000000..32e49cb --- /dev/null +++ b/viewer/static_src/css/footer.less @@ -0,0 +1,22 @@ +// Copied from https://github.com/cfpb/consumerfinance.gov/blob/9fd820092b80fe7272454e6a93cef2c81f351877/cfgov/unprocessed/css/organisms/footer.less +.u-upper-hover-line { + position: absolute; + top: -1px; + content: ""; + display: block; + height: 1px; + width: 100%; + border-top: 1px solid currentcolor; +} + +.o-footer { + font-weight: 500; + // Adding an extra 5px to the top to account for the absolute positioned + // social media icons. + padding-top: unit(50px / @base-font-size-px, em); + // There is a 10px margin-bottom on the last .o-footer__list li's, plus the + // 50px bottom padding = 60px of total padding at the bottom of the footer. + padding-bottom: unit(50px / @base-font-size-px, em); + border-top: 5px solid var(--green); + background: var(--gray-5); +} diff --git a/viewer/static_src/css/layout.less b/viewer/static_src/css/layout.less new file mode 100644 index 0000000..ccca686 --- /dev/null +++ b/viewer/static_src/css/layout.less @@ -0,0 +1,126 @@ +// Copied from https://github.com/cfpb/consumerfinance.gov/blob/9fd820092b80fe7272454e6a93cef2c81f351877/cfgov/unprocessed/css/enhancements/layout-base.less +@layer layout-base { + // Establish the wrapper inside the grid container as the grid element. + .u-layout-grid { + --layout-max-width: 1170px; + + &__wrapper { + display: grid; + max-width: var(--layout-max-width); + margin: 0 auto; + padding-left: unit(15px / @base-font-size-px, rem); + padding-right: unit(15px / @base-font-size-px, rem); + grid-template-areas: + "c-breadcrumbs" + "c-secondary-nav" + "c-main" + "c-sidebar" + "c-prefooter"; + grid-auto-columns: 100%; + } + + // Name all possible content area elements (appearing inside
). + &__breadcrumbs { + grid-area: c-breadcrumbs; + } + + &__main { + grid-area: c-main; + padding-top: unit((30px / @base-font-size-px), rem); + } + + &__sidebar { + grid-area: c-sidebar; + } + + &__secondary-nav { + grid-area: c-secondary-nav; + } + + &__prefooter { + grid-area: c-prefooter; + } + + // Tablet and below. + .respond-to-max(@bp-sm-max, { + &__breadcrumbs { + padding-left: unit(30px / @base-font-size-px, rem); + padding-right: unit(30px / @base-font-size-px, rem); + margin-left: unit(-30px / @base-font-size-px, rem); + margin-right: unit(-30px / @base-font-size-px, rem); + background: var(--gray-5); + border-bottom: 1px solid var(--gray-40); + } + }); + + // Tablet only. + .respond-to-range(@bp-sm-min, @bp-sm-max, { + &__breadcrumbs { + padding-left: unit(15px / @base-font-size-px, rem); + padding-right: unit(15px / @base-font-size-px, rem); + } + }); + + // Tablet and above. + .respond-to-min(@bp-sm-min, { + &__wrapper { + // This handles collapsing of the breadcrumbs space if they are absent. + grid-template-rows: min-content 1fr; + padding-left: unit(30px / @base-font-size-px, rem); + padding-right: unit(30px / @base-font-size-px, rem); + } + + // If we do not have breadcrumbs, the gap above the content is larger… + &__main, + &__secondary-nav { + margin-top: unit((15px / @base-font-size-px), rem); + } + + // …than if we do have breadcrumbs + &__breadcrumbs ~ &__main, + &__breadcrumbs ~ &__secondary-nav { + margin-top: 0; + } + }); + + // Desktop and above. + .respond-to-min(@bp-med-min, { + &__secondary-nav { + padding-top: unit((30px / @base-font-size-px), rem); + } + }); + } + + // Modifier to remove max-width value. Used on CCDB, for example. + .u-layout-grid--full-width { + .u-layout-grid__wrapper { + max-width: initial; + } + } + + // Set default line width. + .u-layout-grid__main, + .u-layout-grid__content-intro { + dd, + dt, + h3, + h4, + h5, + h6, + li, + p, + label { + max-width: 41.875rem; + } + } + + // "Breakout" container that bleeds out of the grid to the screen edge. + .u-layout-grid__breakout { + width: 100vw; + position: relative; + left: 50%; + right: 50%; + margin-left: -50vw; + margin-right: -50vw; + } +} diff --git a/viewer/static_src/css/main.less b/viewer/static_src/css/main.less new file mode 100644 index 0000000..35155cf --- /dev/null +++ b/viewer/static_src/css/main.less @@ -0,0 +1,24 @@ +// CFPB Design System +@import (less) "cfpb-atomic-component.less"; +@import (less) "cfpb-core.less"; +@import (less) "cfpb-buttons.less"; +@import (less) "cfpb-expandables.less"; +@import (less) "cfpb-forms.less"; +@import (less) "cfpb-grid.less"; +@import (less) "cfpb-icons.less"; +@import (less) "cfpb-layout.less"; +@import (less) "cfpb-notifications.less"; +@import (less) "cfpb-pagination.less"; +@import (less) "cfpb-typography.less"; + +// Inspired by consumerfinance.gov +@import (less) "breadcrumbs.less"; +@import (less) "footer.less"; +@import (less) "skip-nav.less"; +@import (less) "layout.less"; + +// Crawler-specific +@import (less) "crawler.less"; + +@font-stack: Arial, sans-serif; +@font-face-path: ""; diff --git a/viewer/static_src/css/skip-nav.less b/viewer/static_src/css/skip-nav.less new file mode 100644 index 0000000..599fbef --- /dev/null +++ b/viewer/static_src/css/skip-nav.less @@ -0,0 +1,35 @@ +// Copied from https://github.com/cfpb/consumerfinance.gov/blob/fcb4eab638db45003cac57432b89c0a249bc2aff/cfgov/unprocessed/css/skip-nav.less +.skip-nav { + position: relative; + + &__link { + position: absolute; + top: auto; + left: -10000px; + height: 1px; + width: 1px; + overflow: hidden; + background: transparent; + transition: transform 1s ease, background 0.5s linear; + z-index: 11; + + &:focus { + .a-btn(); + // Adjustments to button to make it appear like a super button. + padding: unit(11px / 18px, em) unit(29px / 18px, em); + font-size: unit(18px / @base-font-size-px, em); + + top: 15px; + left: 15px; + height: auto; + width: auto; + overflow: visible; + outline: 0; + transition: transform 0.1s ease, background 0.2s linear; + } + + &--flush-left:focus { + left: 0; + } + } +} diff --git a/viewer/static_src/fonts/1e9892c0-6927-4412-9874-1b82801ba47a.woff b/viewer/static_src/fonts/1e9892c0-6927-4412-9874-1b82801ba47a.woff deleted file mode 100755 index ee6bd30..0000000 Binary files a/viewer/static_src/fonts/1e9892c0-6927-4412-9874-1b82801ba47a.woff and /dev/null differ diff --git a/viewer/static_src/fonts/2cd55546-ec00-4af9-aeca-4a3cd186da53.woff2 b/viewer/static_src/fonts/2cd55546-ec00-4af9-aeca-4a3cd186da53.woff2 deleted file mode 100755 index 3273d7d..0000000 Binary files a/viewer/static_src/fonts/2cd55546-ec00-4af9-aeca-4a3cd186da53.woff2 and /dev/null differ diff --git a/viewer/static_src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 b/viewer/static_src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 deleted file mode 100755 index abb3d33..0000000 Binary files a/viewer/static_src/fonts/627fbb5a-3bae-4cd9-b617-2f923e29d55e.woff2 and /dev/null differ diff --git a/viewer/static_src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff b/viewer/static_src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff deleted file mode 100755 index fdf59ed..0000000 Binary files a/viewer/static_src/fonts/f26faddb-86cc-4477-a253-1e1287684336.woff and /dev/null differ diff --git a/viewer/static_src/js/main.js b/viewer/static_src/js/main.js new file mode 100644 index 0000000..8d6af9e --- /dev/null +++ b/viewer/static_src/js/main.js @@ -0,0 +1,9 @@ +import { Expandable } from "@cfpb/cfpb-expandables"; + +const docElement = document.documentElement; +docElement.className = docElement.className.replace( + /(^|\s)no-js(\s|$)/, + "$1$2" +); + +Expandable.init(); diff --git a/viewer/static_src/main.css b/viewer/static_src/main.css deleted file mode 100644 index abd5b7a..0000000 --- a/viewer/static_src/main.css +++ /dev/null @@ -1,126 +0,0 @@ -.content_main-alt { - border-top: 0 !important; - width: 100% !important; -} - -.search_results .results_count { - display: grid; - grid-template-columns: repeat(auto-fit, 1000px); - grid-template-rows: auto auto; - grid-auto-rows: 0px; - overflow: hidden; - margin: 0 auto; - - padding-left: 1.875em; - padding-bottom: 15px; - margin-top: 30px; - border: 1px solid #20aa3f; -} - -.results_item h4 { - padding-top: 30px !important; -} - -.search_results .results_list { - padding-top: 0; - padding-left: 0 !important; -} - -.search_results .results_list ul { - padding-left: 0; -} - -.search_results .results_item { - margin: 0; -} - -.u-truncate { - max-width: none !important; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - list-style-position: inside; - margin-bottom: 15px; -} - -code.language-html { - max-height: 500px; - overflow: scroll; - display: block; -} - -.breadcrumbs { - border: 0; -} - -.o-radio_buttons { - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; -} - -.o-radio_buttons div { - flex: 50%; -} - -.o-radio_buttons label > span { - display: block; - margin-top: 3px; - margin-bottom: 15px; - font-weight: normal; -} - -.o-radio_buttons label { - font-weight: bold; -} - -.o-form__input-w-btn-alt { - border-left-width: 0; - margin-bottom: 30px; -} - -.a-btn-alt { - margin-top: 15px; -} - -.a-link_text { - color: #0061c1; -} - -.u-bold_text { - font-weight: bold; - margin-bottom: 15px; -} - -.m-list_item { - max-width: 60em !important; -} - -.o-header_alt { - margin-top: 30px; - margin-bottom: 15px; -} - -.u-crawl_text { - font-weight: bold; - padding-right: 5px; -} - -.u-crawl_date { - display: flex; -} - -.o-well_alt { - margin-top: 60px; -} - -.lead-paragraph { - margin-top: 0; - margin-bottom: 15px; -} - -.u-help_text { - margin-top: 15px; - margin-bottom: 30px; -} diff --git a/viewer/static_src/main.js b/viewer/static_src/main.js deleted file mode 100644 index a58ad41..0000000 --- a/viewer/static_src/main.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Expandable } from "@cfpb/cfpb-expandables"; - -Expandable.init(); diff --git a/viewer/static/download-files/query-string-filtering.docx b/viewer/static_src/query-string-filtering.docx similarity index 100% rename from viewer/static/download-files/query-string-filtering.docx rename to viewer/static_src/query-string-filtering.docx diff --git a/viewer/templates/viewer/base.html b/viewer/templates/viewer/base.html index 3f33cea..f4b3823 100644 --- a/viewer/templates/viewer/base.html +++ b/viewer/templates/viewer/base.html @@ -7,30 +7,35 @@ - - {% block title %}Consumerfinance.gov web page index{% endblock %} - - - - + content="width=device-width, initial-scale=1, minimum-scale=1" + /> + + {% block title %}Consumerfinance.gov web page index{% endblock %} + + +
- Skip to main content + Skip to main content
-
-
-
-
- {% block content %}{% endblock content %} -
+
+
+ {% block breadcrumbs %}{% endblock breadcrumbs %} +
+ {% block content %}{% endblock content %}
-
-
+
+
An official website of the @@ -39,6 +44,6 @@
- + diff --git a/viewer/templates/viewer/base_search.html b/viewer/templates/viewer/base_search.html deleted file mode 100644 index 473eb7e..0000000 --- a/viewer/templates/viewer/base_search.html +++ /dev/null @@ -1,33 +0,0 @@ -{% extends './base.html' %} {% load viewer %} {% block content %} -
-
-

Consumerfinance.gov web page index

- {% block intro %} -
- This tool generates and stores a nightly snapshot of CF.gov web page -

- data that you can - search for all sorts of useful things. -

-
- {% endblock intro %} {% if crawl_stats.start %} - - {% endif %} -
-
- -
- {% include './search_form.html' %} -
-
-
-
- {% block content_main %}{% endblock content_main %} -
-
-
-{% endblock content %} diff --git a/viewer/templates/viewer/breadcrumbs.html b/viewer/templates/viewer/breadcrumbs.html new file mode 100644 index 0000000..ba7d8e7 --- /dev/null +++ b/viewer/templates/viewer/breadcrumbs.html @@ -0,0 +1,8 @@ + diff --git a/viewer/templates/viewer/component_list.html b/viewer/templates/viewer/component_list.html index 17d4522..1c96ace 100644 --- a/viewer/templates/viewer/component_list.html +++ b/viewer/templates/viewer/component_list.html @@ -2,24 +2,27 @@ -
+
    {% for component in results %}
  • + href="{% url 'index' %}?search_type=components&q={{ component.class_name | escape }}" + > {{ component.class_name }}
  • diff --git a/viewer/templates/viewer/help.html b/viewer/templates/viewer/help.html index 33b38a4..5ae5021 100644 --- a/viewer/templates/viewer/help.html +++ b/viewer/templates/viewer/help.html @@ -1,84 +1,79 @@ -{% extends './base.html' %} {% block content %} {% load static %} - +{% extends './base.html' %} {% load static %} -

    Common searches

    + +{% block breadcrumbs %} +{% include "viewer/breadcrumbs.html" %} +{% endblock breadcrumbs %} -

    - This tool stores a nightly snapshot of consumerfinance.gov web page data that - you can search for all sorts of useful things. Common search examples are - below. You can also - learn more about the data.

    View results in the browser, or export them as a CSV. For those less handy - with Excel, it may be useful to - - - learn how to filter out results with query strings - - - . - -

    +{% block content %} +
    +

    Common searches

    -
    +

    + This tool stores a nightly snapshot of consumerfinance.gov web page data + that you can search for all sorts of useful things. Common search examples + are below. You can also + learn more about the data. +

    +

    + View results in the browser, or export them as a CSV. For those less handy + with Excel, it may be useful to + + learn how to filter out results with query strings + {% include "download.svg" %}. + +

    +
    + +

    Title

    Find all instances of a string in the title of a cf.gov page.

    -

    Examples

    +

    Examples

      -
    • +
    • You want a list of all pages with the word "Chopra" in the title. Search "Chopra"
    -
    +

    URL

    -

    Find all instances of a string in the URL of a cf.gov page.

    -

    Examples

    +

    Find all instances of a string in the URL of a cf.gov page.

    +

    Examples

    -
    +

    Components

    Search by class names of our - Design System - - - Design System + {% include "external-link.svg" %}components and patterns. Partial searches also work: searching for "notification" will return pages containing "m-notification", "m-notification__borderless", etc.

    -

    Examples

    - +

    Examples

    -
    + -
    +

    Full text

    Find all instances of a term or exact phrase in the full text of the <body> of a page, excluding the header and footer.

    -

    Examples

    - +

    Examples

    -
    +

    HTML

    -

    Find all instances of a string in the HTML of the <body> of a cf.gov - page, excluding the header and footer.

    -

    Examples

    - +

    + Find all instances of a string in the HTML of the <body> of a cf.gov + page, excluding the header and footer. +

    +

    Examples

    -
    -
    About the data
    -

    This index contains web page data saved from the www.consumerfinance.gov - domain.

    -

    The index is built using an iterative process that "crawls" every page of - the website, starting at the home page. A web crawler starts on that page, - then follows every link on that page, then follows every link on those - pages, and so on. If a link leaves the www.consumerfinance.gov domain, it is - ignored. In this way, the crawler covers every page on the website that is - linked from any other page.

    -

    The data excludes:

    -
      -
    • - Pages on other subdomains, like files.consumerfinance.gov, although it - does track links to those pages. -
    • -
    • - Pages with query parameters, with the exception of the ?page= query - parameter. So, "/about-us/blog/?page=1" is included, but - "/about-us/blog/?title=&topics=financial-education" is not. -
    • -
    +
    +
    +
    About the data
    +

    + This index contains web page data saved from the www.consumerfinance.gov + domain. +

    +

    + The index is built using an iterative process that "crawls" every page of + the website, starting at the home page. A web crawler starts on that page, + then follows every link on that page, then follows every link on those + pages, and so on. If a link leaves the www.consumerfinance.gov domain, it + is ignored. In this way, the crawler covers every page on the website that + is linked from any other page. +

    +

    The data excludes:

    +
      +
    • + Pages on other subdomains, like files.consumerfinance.gov, although it + does track links to those pages. +
    • +
    • + Pages with query parameters, with the exception of the ?page= query + parameter. So, "/about-us/blog/?page=1" is included, but + "/about-us/blog/?title=&topics=financial-education" is not. +
    • +
    +
    {% endblock %} diff --git a/viewer/templates/viewer/icons/chevron-left.svg b/viewer/templates/viewer/icons/chevron-left.svg deleted file mode 100644 index 97ebbfb..0000000 --- a/viewer/templates/viewer/icons/chevron-left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/viewer/templates/viewer/icons/chevron-right.svg b/viewer/templates/viewer/icons/chevron-right.svg deleted file mode 100644 index 6abe2b0..0000000 --- a/viewer/templates/viewer/icons/chevron-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/viewer/templates/viewer/icons/magnifying-glass.svg b/viewer/templates/viewer/icons/magnifying-glass.svg deleted file mode 100644 index ef9a26a..0000000 --- a/viewer/templates/viewer/icons/magnifying-glass.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/viewer/templates/viewer/icons/minus-round.svg b/viewer/templates/viewer/icons/minus-round.svg deleted file mode 100644 index 01d5fb8..0000000 --- a/viewer/templates/viewer/icons/minus-round.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/viewer/templates/viewer/icons/plus-round.svg b/viewer/templates/viewer/icons/plus-round.svg deleted file mode 100644 index 01f526c..0000000 --- a/viewer/templates/viewer/icons/plus-round.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/viewer/templates/viewer/page_detail.html b/viewer/templates/viewer/page_detail.html index dc36232..56eafe5 100644 --- a/viewer/templates/viewer/page_detail.html +++ b/viewer/templates/viewer/page_detail.html @@ -1,127 +1,108 @@ -{% extends './base.html' %} {% block content %} -
    -
    -
    -
    - -
    -

    Page: {{ title }}

    -
    -
    - {{ url }} - (last crawled {{ timestamp }}) -
    -
    - -
    -
      - {% for link in links %} -
    • {{ link }}
    • - {% endfor %} -
    -
    -
    -
    - -
    -
      - {% for component in components %} -
    • {{ component }}
    • - {% endfor %} -
    -
    -
    -
    - -
    -
    {{ text }}
    -
    -
    -
    - -
    -
    {{ html }}
    -
    -
    -
    +{% extends './base.html' %} + + +{% block breadcrumbs %} +{% include "viewer/breadcrumbs.html" %} +{% endblock breadcrumbs %} + +{% block content %} +
    +

    {{ title }}

    +
    + +
    +

    {{ url }}

    +

    (last crawled {{ timestamp }})

    +
    + +
    +
    + +
    +
      + {% for link in links %} +
    • {{ link }}
    • + {% endfor %} +
    +
    +
    +
    + +
    +
    + +
    +
      + {% for component in components %} +
    • {{ component }}
    • + {% endfor %} +
    +
    +
    +
    + +
    +
    + +
    +
    {{ text }}
    +
    +
    +
    + +
    +
    + +
    +
    {{ html }}
    diff --git a/viewer/templates/viewer/page_list.html b/viewer/templates/viewer/page_list.html index 7e03ad5..8d8da84 100644 --- a/viewer/templates/viewer/page_list.html +++ b/viewer/templates/viewer/page_list.html @@ -1,200 +1,183 @@ -{% extends './base_search.html' %} {% load humanize %} {% load viewer %} - -{% block content_main %} -
    -

    {% results_summary %}

    - {% if count %} -
    - - Download search results - - - - +{% load humanize %} {% load viewer %} + +
    +
    - - {# Use an arbitrary estimate of how big the CSV is likely to be. #} - {# Use Django's built-in width ratio tag as a way to multiply. #} - {% widthratio count 1 256 as csv_file_size %} - (CSV, ~{{ csv_file_size | filesizeformat }}) - + {% if count %} + {% include "approved-round.svg" %} + {% else %} + {% include "warning-round.svg" %} + {% endif %} +
    +
    {% results_summary %}
    + {% if count %} + + {% endif %} +
    - {% endif %}
    -
    - +
    +
    + +
    {% if previous or next %} -
    - +
    {% endif %} -
    -
    Discover more
    -
    +
    +
    +
    Discover more
    {% if crawl_stats.start %} - Data last updated: - -

    {{ crawl_stats.start | format_datetime }}

    +
    + Data last updated: +

    {{ crawl_stats.start | format_datetime }}

    +
    {% endif %} +
    -
    -{% endblock content_main %} diff --git a/viewer/templates/viewer/search_form.html b/viewer/templates/viewer/search_form.html index 04cea1f..1265a49 100644 --- a/viewer/templates/viewer/search_form.html +++ b/viewer/templates/viewer/search_form.html @@ -1,89 +1,131 @@ -
    -
    -

    Search the index

    -
    -
    +
    + +

    Search the index

    +
    +
    + class="a-text-input a-text-input__full" + placeholder="Search" + title="Search" + autocomplete="off" + maxlength="75" + /> +
    -

    Check out the Common searches page for - examples -

    +
    -
    -
    + +

    + Check out the Common searches page for + examples +

    + +
    +
    - +
    -
    - - +
    +
    -
    +
    - +
    -
    - - +
    +
    -
    +
    - +
    -
    +
    - +
    -
    - + +
    diff --git a/viewer/templates/viewer/search_results.html b/viewer/templates/viewer/search_results.html new file mode 100644 index 0000000..4ca6992 --- /dev/null +++ b/viewer/templates/viewer/search_results.html @@ -0,0 +1,29 @@ +{% extends 'viewer/base.html' %} {% load viewer %} {% block content %} +
    +
    +

    Consumerfinance.gov web page index

    +
    + This tool generates and stores a nightly snapshot of CF.gov web page +

    + data that you can + search for all sorts of useful things. +

    +
    + {% if crawl_stats.start %} + + {% endif %} +
    +
    + +
    {% include 'viewer/search_form.html' %}
    + +
    {% include 'viewer/page_list.html' %}
    + + +{% block content_main %} +{% endblock content_main %} + +{% endblock content %} diff --git a/viewer/views.py b/viewer/views.py index 271d50f..c9d96c4 100644 --- a/viewer/views.py +++ b/viewer/views.py @@ -133,7 +133,7 @@ def get_queryset(self): class PageListView(PageMixin, ListAPIView): def get_template_names(self): - return ["viewer/page_list.html"] + return ["viewer/search_results.html"] def get_serializer_class(self): if self.is_rendering_csv: diff --git a/yarn.lock b/yarn.lock index ccce658..567ec99 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,171 +2,727 @@ # yarn lockfile v1 -"@cfpb/cfpb-atomic-component@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@cfpb/cfpb-atomic-component/-/cfpb-atomic-component-0.32.0.tgz#65e020b8b536503b568623e4727e0eac07372a3c" - integrity sha512-tiC5anVmgaJCPsKlut0lZS4jlUUe6pyPnxYjcrHga51DgtLdtzCct1kPY3gHSj5lM+d3zDBBcy+e+i32zFErVw== - -"@cfpb/cfpb-core@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@cfpb/cfpb-core/-/cfpb-core-0.32.0.tgz#1728cfd37810c899180d174181fd7497fdc21aaa" - integrity sha512-cT6LAFxtwkigJ9Rz54fSHjuVJvnfJ+ro/oDAK6AFZl666SbnSDPT3zpmj9RJzaOXV+zHl1t02n8AYLmNk99dcg== - dependencies: - normalize-css "^2.0.0" - -"@cfpb/cfpb-expandables@0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@cfpb/cfpb-expandables/-/cfpb-expandables-0.32.0.tgz#cacc55e3a66de7951bf872e0646e1c584c0cf3c4" - integrity sha512-DZz67W3ysSN+i6zs+vpaZa6GahjyTej1RxtuKy1knQv6yUJE9+cMvOHmeRk7lKjSayidesovQbCuSR1EjfweZw== - dependencies: - "@cfpb/cfpb-atomic-component" "^0.32.0" - "@cfpb/cfpb-core" "^0.32.0" - "@cfpb/cfpb-icons" "^0.32.0" - -"@cfpb/cfpb-icons@^0.32.0": - version "0.32.0" - resolved "https://registry.yarnpkg.com/@cfpb/cfpb-icons/-/cfpb-icons-0.32.0.tgz#a5bcb15c643e39663cc4a8f779d0b097b2a24fc4" - integrity sha512-drBbfKX8+N5G8cNgCnbpUa+KKNd0wrK6P287/kEPXO7vrQ8LiTvdCwIWJ76pvnFUSW3Wy2kxIck8Ggo5uh1Mjw== - -esbuild-android-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64" - integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw== - -esbuild-android-arm64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8" - integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA== - -esbuild-darwin-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46" - integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA== - -esbuild-darwin-arm64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9" - integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ== - -esbuild-freebsd-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e" - integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig== - -esbuild-freebsd-arm64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6" - integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ== - -esbuild-linux-32@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70" - integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g== - -esbuild-linux-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519" - integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q== - -esbuild-linux-arm64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a" - integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA== - -esbuild-linux-arm@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986" - integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA== - -esbuild-linux-mips64le@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5" - integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ== - -esbuild-linux-ppc64le@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47" - integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q== - -esbuild-linux-riscv64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2" - integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ== - -esbuild-linux-s390x@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0" - integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ== - -esbuild-netbsd-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95" - integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q== - -esbuild-openbsd-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd" - integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ== - -esbuild-sunos-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b" - integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA== - -esbuild-windows-32@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1" - integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw== - -esbuild-windows-64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107" - integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw== - -esbuild-windows-arm64@0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54" - integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw== - -esbuild@^0.14.38: - version "0.14.38" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30" - integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA== +"@cfpb/cfpb-atomic-component@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-atomic-component/-/cfpb-atomic-component-2.0.1.tgz#5985addc4c2e6fc3a3ce2a309025a7f15b4f3781" + integrity sha512-kb1RQIONND7WgiF1Ly0+qe1Wvs3Zn+1RTYKpmzdTjujxgxWlJ95ncfIlOEQhVF9snAC5OeofmMB6RdkTEdqhnA== + +"@cfpb/cfpb-buttons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-buttons/-/cfpb-buttons-2.0.0.tgz#952b901e04ddde9729395485ad115426128c5866" + integrity sha512-+p9Vf8OVpzDY7qxejpXHqb/eb2R7HykjXPyT/0OuDgz56ws/cAHmxG/4W23UT4oGiVGcx7NQY2bk9DRsYv9Vew== + dependencies: + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@cfpb/cfpb-core@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-core/-/cfpb-core-2.0.0.tgz#27e58b84ca1edc0d06a60ca7571ce56c8e13092c" + integrity sha512-p6VO7W955Rz+i5uXuOd3Vv6koixHgsKLZUG2qYKJmPb2FUq/eqU7MJ0cGcawF7P+iaWbW/F4b57WufvUrJ0XOw== + +"@cfpb/cfpb-expandables@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-expandables/-/cfpb-expandables-2.0.1.tgz#04b5d2803c4f94c3e5dd255eb25b71252f4dfc61" + integrity sha512-YxsH3UCKWU2pscru22hpuG0dqFD1SbGcqj6R6aYvZGZBEgeJe43wN0k7wSGxOltX/mMReKvBl/h+aTEBRRadcA== + dependencies: + "@cfpb/cfpb-atomic-component" "^2.0.1" + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@cfpb/cfpb-forms@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-forms/-/cfpb-forms-2.0.0.tgz#e7dec28033490ffc4d7203a58277bdfb837fcdfc" + integrity sha512-5Iutlt7uwVR/9Z/bB/4TIH3OaD0sHI4JmxDpVs7TDZeXkdPdkQ2/ltEAYYX4lfTOcgiznFwA49wI1aiRk+4klw== + dependencies: + "@cfpb/cfpb-buttons" "^2.0.0" + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-grid" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@cfpb/cfpb-grid@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-grid/-/cfpb-grid-2.0.0.tgz#ddc2b2c5fa14bbcc3aab74d34f86b862414453a1" + integrity sha512-JnmD5X47ulcGTUGh76OSEEJ9liQMD388X2gkJfLIUSRhekB35PsTEOrY/VjgwKOYyCzZLOQ+bKKTeftD4clJQQ== + +"@cfpb/cfpb-icons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-icons/-/cfpb-icons-2.0.0.tgz#2d49b95d9371a7803fad5a3f86b03f6ba00163d5" + integrity sha512-yetzASNxntlJtxUf2zxRe0fMXv8uumA2DDB2ra80uhoqd7mfn2XemPqI4EdSxark+GwqNAxXBLVsWxsSMFegjg== + +"@cfpb/cfpb-layout@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-layout/-/cfpb-layout-2.0.0.tgz#5ab77630a980fa0caef6f50592be21819214d0e9" + integrity sha512-5OSkdQGMegiBwfV59YVMkNz+bDy5IyBsqious+3NvGcggAbo3fWSwQoXAOlLXscBFJp/Qt1OXLWO/RLJCBY+Bw== + dependencies: + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-grid" "^2.0.0" + +"@cfpb/cfpb-notifications@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-notifications/-/cfpb-notifications-2.0.1.tgz#b51f6c7d87e3b27d4b1b30acb5573c5b9871ad61" + integrity sha512-XsjDG4KL35PhYPQGzf1uDys7RuuMGuqBrx/qVTj8xDfwGGGUGY9gzgN9s+ib5yL68budRecusS7h+qeW5gNBag== + dependencies: + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@cfpb/cfpb-pagination@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-pagination/-/cfpb-pagination-2.0.0.tgz#3438001f88c9c9243701a719347a20adb9043069" + integrity sha512-qCfEo0qzNmuWPHoHGN0mTF7KcxWeHyIEjXLm2wQDKVPauwzO1bqhrU8E46bhqFcxewLnOdocwdmpsct8c4ioVg== + dependencies: + "@cfpb/cfpb-buttons" "^2.0.0" + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@cfpb/cfpb-typography@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cfpb/cfpb-typography/-/cfpb-typography-2.0.1.tgz#14b93ba6f7a434cbe18ba18fedd329b48aeeb73f" + integrity sha512-S2LP0cToV5DvBMoyLEhxdbSdnLYfXyQT5zKq44bSK5VXFYvyUlc5oWq+Y/V8O5j4s0ARwelZOzx+ge2pKxcvBw== + dependencies: + "@cfpb/cfpb-core" "^2.0.0" + "@cfpb/cfpb-icons" "^2.0.0" + +"@esbuild/aix-ppc64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz#145b74d5e4a5223489cabdc238d8dad902df5259" + integrity sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ== + +"@esbuild/android-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz#453bbe079fc8d364d4c5545069e8260228559832" + integrity sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ== + +"@esbuild/android-arm@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.0.tgz#26c806853aa4a4f7e683e519cd9d68e201ebcf99" + integrity sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g== + +"@esbuild/android-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.0.tgz#1e51af9a6ac1f7143769f7ee58df5b274ed202e6" + integrity sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ== + +"@esbuild/darwin-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz#d996187a606c9534173ebd78c58098a44dd7ef9e" + integrity sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow== + +"@esbuild/darwin-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz#30c8f28a7ef4e32fe46501434ebe6b0912e9e86c" + integrity sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ== + +"@esbuild/freebsd-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz#30f4fcec8167c08a6e8af9fc14b66152232e7fb4" + integrity sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw== + +"@esbuild/freebsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz#1003a6668fe1f5d4439e6813e5b09a92981bc79d" + integrity sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ== + +"@esbuild/linux-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz#3b9a56abfb1410bb6c9138790f062587df3e6e3a" + integrity sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw== + +"@esbuild/linux-arm@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz#237a8548e3da2c48cd79ae339a588f03d1889aad" + integrity sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw== + +"@esbuild/linux-ia32@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz#4269cd19cb2de5de03a7ccfc8855dde3d284a238" + integrity sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA== + +"@esbuild/linux-loong64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz#82b568f5658a52580827cc891cb69d2cb4f86280" + integrity sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A== + +"@esbuild/linux-mips64el@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz#9a57386c926262ae9861c929a6023ed9d43f73e5" + integrity sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w== + +"@esbuild/linux-ppc64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz#f3a79fd636ba0c82285d227eb20ed8e31b4444f6" + integrity sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw== + +"@esbuild/linux-riscv64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz#f9d2ef8356ce6ce140f76029680558126b74c780" + integrity sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw== + +"@esbuild/linux-s390x@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz#45390f12e802201f38a0229e216a6aed4351dfe8" + integrity sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg== + +"@esbuild/linux-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#c8409761996e3f6db29abcf9b05bee8d7d80e910" + integrity sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ== + +"@esbuild/netbsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz#ba70db0114380d5f6cfb9003f1d378ce989cd65c" + integrity sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw== + +"@esbuild/openbsd-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz#72fc55f0b189f7a882e3cf23f332370d69dfd5db" + integrity sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ== + +"@esbuild/openbsd-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz#b6ae7a0911c18fe30da3db1d6d17a497a550e5d8" + integrity sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg== + +"@esbuild/sunos-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz#58f0d5e55b9b21a086bfafaa29f62a3eb3470ad8" + integrity sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA== + +"@esbuild/win32-arm64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz#b858b2432edfad62e945d5c7c9e5ddd0f528ca6d" + integrity sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ== + +"@esbuild/win32-ia32@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz#167ef6ca22a476c6c0c014a58b4f43ae4b80dec7" + integrity sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA== + +"@esbuild/win32-x64@0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz#db44a6a08520b5f25bbe409f34a59f2d4bcc7ced" + integrity sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +autoprefixer@^10.4.19: + version "10.4.19" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + dependencies: + browserslist "^4.23.0" + caniuse-lite "^1.0.30001599" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.23.0: + version "4.23.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== + dependencies: + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" + node-releases "^2.0.14" + update-browserslist-db "^1.1.0" + +caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640: + version "1.0.30001642" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz#6aa6610eb24067c246d30c57f055a9d0a7f8d05f" + integrity sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA== + +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +electron-to-chromium@^1.4.820: + version "1.4.830" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.830.tgz#a11899bc3343bc28f57a87fcf83060e0d28038d4" + integrity sha512-TrPKKH20HeN0J1LHzsYLs2qwXrp8TF4nHdu4sq61ozGbzMpWhI7iIOPYPPkxeq1azMT9PZ8enPFcftbs/Npcjg== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +esbuild-plugin-copy@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz#638308ecfd679e4c7c76b71c62f7dd9a4cc7f901" + integrity sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw== + dependencies: + chalk "^4.1.2" + chokidar "^3.5.3" + fs-extra "^10.0.1" + globby "^11.0.3" + +esbuild@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.0.tgz#de06002d48424d9fdb7eb52dbe8e95927f852599" + integrity sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.23.0" + "@esbuild/android-arm" "0.23.0" + "@esbuild/android-arm64" "0.23.0" + "@esbuild/android-x64" "0.23.0" + "@esbuild/darwin-arm64" "0.23.0" + "@esbuild/darwin-x64" "0.23.0" + "@esbuild/freebsd-arm64" "0.23.0" + "@esbuild/freebsd-x64" "0.23.0" + "@esbuild/linux-arm" "0.23.0" + "@esbuild/linux-arm64" "0.23.0" + "@esbuild/linux-ia32" "0.23.0" + "@esbuild/linux-loong64" "0.23.0" + "@esbuild/linux-mips64el" "0.23.0" + "@esbuild/linux-ppc64" "0.23.0" + "@esbuild/linux-riscv64" "0.23.0" + "@esbuild/linux-s390x" "0.23.0" + "@esbuild/linux-x64" "0.23.0" + "@esbuild/netbsd-x64" "0.23.0" + "@esbuild/openbsd-arm64" "0.23.0" + "@esbuild/openbsd-x64" "0.23.0" + "@esbuild/sunos-x64" "0.23.0" + "@esbuild/win32-arm64" "0.23.0" + "@esbuild/win32-ia32" "0.23.0" + "@esbuild/win32-x64" "0.23.0" + +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fs-extra@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globby@^11.0.3: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +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== + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +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-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +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-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" optionalDependencies: - esbuild-android-64 "0.14.38" - esbuild-android-arm64 "0.14.38" - esbuild-darwin-64 "0.14.38" - esbuild-darwin-arm64 "0.14.38" - esbuild-freebsd-64 "0.14.38" - esbuild-freebsd-arm64 "0.14.38" - esbuild-linux-32 "0.14.38" - esbuild-linux-64 "0.14.38" - esbuild-linux-arm "0.14.38" - esbuild-linux-arm64 "0.14.38" - esbuild-linux-mips64le "0.14.38" - esbuild-linux-ppc64le "0.14.38" - esbuild-linux-riscv64 "0.14.38" - esbuild-linux-s390x "0.14.38" - esbuild-netbsd-64 "0.14.38" - esbuild-openbsd-64 "0.14.38" - esbuild-sunos-64 "0.14.38" - esbuild-windows-32 "0.14.38" - esbuild-windows-64 "0.14.38" - esbuild-windows-arm64 "0.14.38" - -insert-css@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-0.0.0.tgz#2304bfa6f893abecb8ff9ca8d9c7605d94cf2911" - integrity sha512-PwixL1rVtKkM1gz43tEHwZ2sUOYmWB5zk/9YiEmOxERqjfIkkMY4jwrl3v3e9NLzblEdkBuMLiTLm/0sHMx4qA== - -normalize-css@^2.0.0: + graceful-fs "^4.1.6" + +less@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450" + integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.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" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +node-releases@^2.0.14: + version "2.0.17" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.17.tgz#d74bc4fec38d839eec5db2a3c9c963d4f33cb366" + integrity sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA== + +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 sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +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== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/normalize-css/-/normalize-css-2.3.1.tgz#fc03e3b91e3a51aa7a1836bae7b2b6ac6d51e156" - integrity sha512-70Lnkke3P+8ehu56S0M0yoUTgTve/rCrEncjdgPmKER/TLZMRa30rFLW7Yv3iGZldmGV4bGevGW47VOfZJbGyw== + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +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== + +postcss-less@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-6.0.0.tgz#463b34c60f53b648c237f569aeb2e09149d85af4" + integrity sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.39: + version "8.4.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" + integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== dependencies: - insert-css "0.0.0" + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +supports-color@^7.1.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" + +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" + +tslib@^2.3.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1"