From 3ea76c2303fe33e814bab43ded9acfb307f99696 Mon Sep 17 00:00:00 2001 From: Joseph Price Date: Sat, 17 Nov 2018 21:25:30 -0500 Subject: [PATCH 01/37] Update config-example.json --- config-example.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-example.json b/config-example.json index 6c892df7..64729e13 100644 --- a/config-example.json +++ b/config-example.json @@ -47,7 +47,7 @@ "BitbucketCustomUrl" : { "url" : "git@bitbucket.org:organization/project.git", "url-pattern" : { - "base-url" : "{url}/src/master/{path}{anchor}", + "base-url" : "https://{url}/src/master/{path}{anchor}", "anchor" : "#{filename}-{line}" } }, From 3af56b56c0ce2aab82eb20351b13e2bc3785e0e8 Mon Sep 17 00:00:00 2001 From: dschott Date: Fri, 28 Feb 2020 14:12:03 -0800 Subject: [PATCH 02/37] Add CONTRIBUTING.md file --- CONTRIBUTING.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..b38b130e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,19 @@ +# Contributing to Hound +We welcome (and appreciate) contributions from the community! Give this guide a quick read to ensure your contribution +goes as smoothly as possible. + +## Submitting contributions +If you're just getting started, this guide will help get you started +[hacking on hound](https://github.com/hound-search/hound#hacking-on-hound). + +Once you're ready, open a [pull request](https://github.com/hound-search/hound/compare) with a clear description of +your changes (you can read more about pull requests on GitHub [here](http://help.github.com/pull-requests/)). + +When you send a pull request, please be sure to include: +- unit tests that validate that your changes work as expected +- consice code comments (it can help to imagine that you're explaining your code to a total stranger) +- an examples, if necessary. + +## More +Hound is a volunteer effort. We do our best to try and review contributions in a timely manner. Any code or feedback +you share with us is hugely appreciated. From 6d209fff097a4ef1559ee4885ad3b8833a340aaf Mon Sep 17 00:00:00 2001 From: Nicolas R Date: Sat, 7 Dec 2019 12:35:09 -0500 Subject: [PATCH 03/37] Dockerfile should use github.com/hound-search This fixing the docker build issue. --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index eecf88a1..3cd3de2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,13 @@ FROM alpine ENV GOPATH /go -COPY . /go/src/github.com/etsy/hound +COPY . /go/src/github.com/hound-search/hound COPY default-config.json /data/config.json RUN apk update \ && apk add go git subversion libc-dev mercurial bzr openssh \ - && go install github.com/etsy/hound/cmds/houndd \ + && go install github.com/hound-search/hound/cmds/houndd \ && apk del go \ && rm -f /var/cache/apk/* \ && rm -rf /go/src /go/pkg From 4754d5a7be6e6907ca404b26caf07e6e5494febb Mon Sep 17 00:00:00 2001 From: Igor Date: Wed, 15 Apr 2020 20:23:32 +0200 Subject: [PATCH 04/37] make listen URL clickable in iTerm (#340) --- README.md | 2 +- cmds/houndd/main.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2ac9ba8f..12e2fb1b 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ go get github.com/hound-search/hound/cmds/... 2015/03/13 09:07:42 Searcher started for statsd 2015/03/13 09:07:42 Searcher started for Hound 2015/03/13 09:07:42 All indexes built! -2015/03/13 09:07:42 running server at http://localhost:6080... +2015/03/13 09:07:42 running server at http://localhost:6080 ``` ### Using Docker (1.4+) diff --git a/cmds/houndd/main.go b/cmds/houndd/main.go index 006d0b8e..cb1ef97d 100644 --- a/cmds/houndd/main.go +++ b/cmds/houndd/main.go @@ -164,7 +164,7 @@ func main() { } } - info_log.Printf("running server at http://%s...\n", host) + info_log.Printf("running server at http://%s\n", host) // Fully enable the web server now that we have indexes panic(ws.ServeWithIndex(idx)) From ac0241d63ea15fe7fd2bfff4d8217f18ea589e92 Mon Sep 17 00:00:00 2001 From: Salem Date: Wed, 15 Apr 2020 16:22:01 -0400 Subject: [PATCH 05/37] Add Jest tests and Prettier support (#343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds support for Jest and writes a few simple tests as proof. Adding a test is as easy as adding a file that ends in `.test.js` next to the file you want to test. Any file that matches that pattern should have access to Jest functions. The whole test suite can be run with `npm run test`. I also added support for Prettier. Running `npm run format` should run Prettier on any staged changes. I thought about adding Husky to automatically run Prettier as a pre-commit hook, but it seems as though Husky requires git v2.13 which would require me upgrading Git. I didn't add support for ESLint yet since I figured that may be a slightly more involved conversation — Prettier seems to be generally uncontroverical and is generally only slightly configurable, whereas ESlint is highly configurable and behaves however we want it to. --- .prettierignore | 3 + .prettierrc | 3 + CONTRIBUTING.md | 2 +- Makefile | 1 + README.md | 8 + jest.config.js | 188 ++ package-lock.json | 4597 ++++++++++++++++++++++++++++++++++- package.json | 6 +- ui/assets/js/common.test.js | 21 + 9 files changed, 4749 insertions(+), 80 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 jest.config.js create mode 100644 ui/assets/js/common.test.js diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..1553c672 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +ui/assets/js/JSXTransformer-0.12.2.js +ui/assets/js/jquery-2.1.3.min.js +ui/assets/js/react-0.12.2.min.js diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..0a02bcef --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "tabWidth": 4 +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b38b130e..a1fe3077 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Once you're ready, open a [pull request](https://github.com/hound-search/hound/c your changes (you can read more about pull requests on GitHub [here](http://help.github.com/pull-requests/)). When you send a pull request, please be sure to include: -- unit tests that validate that your changes work as expected +- unit tests that validate that your changes work as expected (both for Go and for JavaScript changes) - consice code comments (it can help to imagine that you're explaining your code to a total stranger) - an examples, if necessary. diff --git a/Makefile b/Makefile index fbbff568..2049b44e 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,7 @@ dev: ALL test: go test github.com/hound-search/hound/... + npm test clean: rm -rf .build node_modules diff --git a/README.md b/README.md index 12e2fb1b..bfd415ab 100644 --- a/README.md +++ b/README.md @@ -117,11 +117,19 @@ GOPATH=$(pwd) make -C src/github.com/hound-search/hound ### Testing There are an increasing number of tests in each of the packages in Hound. Please make sure these pass before uploading your Pull Request. You can run the tests with the following command. +To run the entire test suite, use: ``` make test ``` +If you want to just run the JavaScript test suite, use: +``` +npm test +``` + +Any Go files that end in `_test.go` are assumed to be test files. Similarly, any JavaScript files that ends in `.test.js` are automatically run by Jest, our test runner. Tests should live next to the files that they cover. [Check out Jest's docs](https://jestjs.io/docs/en/getting-started) for more details on writing Jest tests, and [check out Go's testing docs](https://golang.org/pkg/testing/) for more details on testing Go code. + ### Working on the web UI Hound includes a web UI that is composed of several files (html, css, javascript, etc.). To make sure hound works seamlessly with the standard Go tools, these resources are all bundled inside of the `houndd` binary. Note that changes to the UI will result in local changes to the `ui/bindata.go` file. You must include these changes in your Pull Request. diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..f31f81ff --- /dev/null +++ b/jest.config.js @@ -0,0 +1,188 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // Respect "browser" field in package.json when resolving modules + // browser: false, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/tmp/jest_8hl", + + // Automatically clear mock calls and instances between every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + // collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: "coverage", + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "json", + // "jsx", + // "ts", + // "tsx", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + // testEnvironment: "jest-environment-jsdom", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: undefined, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; diff --git a/package-lock.json b/package-lock.json index 8830e128..727cfdb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -402,6 +402,24 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -429,6 +447,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz", + "integrity": "sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", @@ -438,6 +465,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -899,6 +935,15 @@ "@babel/plugin-transform-react-jsx-source": "^7.8.3" } }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", @@ -938,92 +983,855 @@ "to-fast-properties": "^2.0.0" } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } }, - "@types/node": { - "version": "13.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz", - "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "@jest/console": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.3.0.tgz", + "integrity": "sha512-LvSDNqpmZIZyweFaEQ6wKY7CbexPitlsLHGJtcooNECo0An/w49rFhjCJzu6efeb6+a3ee946xss1Jcd9r03UQ==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@jest/source-map": "^25.2.6", + "chalk": "^3.0.0", + "jest-util": "^25.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true + "@jest/core": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.3.0.tgz", + "integrity": "sha512-+D5a/tFf6pA/Gqft2DLBp/yeSRgXhlJ+Wpst0X/ZkfTRP54qDR3C61VfHwaex+GzZBiTcE9vQeoZ2v5T10+Mqw==", + "dev": true, + "requires": { + "@jest/console": "^25.3.0", + "@jest/reporters": "^25.3.0", + "@jest/test-result": "^25.3.0", + "@jest/transform": "^25.3.0", + "@jest/types": "^25.3.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.3", + "jest-changed-files": "^25.3.0", + "jest-config": "^25.3.0", + "jest-haste-map": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.3.0", + "jest-resolve-dependencies": "^25.3.0", + "jest-runner": "^25.3.0", + "jest-runtime": "^25.3.0", + "jest-snapshot": "^25.3.0", + "jest-util": "^25.3.0", + "jest-validate": "^25.3.0", + "jest-watcher": "^25.3.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "realpath-native": "^2.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true + "@jest/environment": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.3.0.tgz", + "integrity": "sha512-vgooqwJTHLLak4fE+TaCGeYP7Tz1Y3CKOsNxR1sE0V3nx3KRUHn3NUnt+wbcfd5yQWKZQKAfW6wqbuwQLrXo3g==", + "dev": true, + "requires": { + "@jest/fake-timers": "^25.3.0", + "@jest/types": "^25.3.0", + "jest-mock": "^25.3.0" + } + }, + "@jest/fake-timers": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.3.0.tgz", + "integrity": "sha512-NHAj7WbsyR3qBJPpBwSwqaq2WluIvUQsyzpJTN7XDVk7VnlC/y1BAnaYZL3vbPIP8Nhm0Ae5DJe0KExr/SdMJQ==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-mock": "^25.3.0", + "jest-util": "^25.3.0", + "lolex": "^5.0.0" + } + }, + "@jest/reporters": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.3.0.tgz", + "integrity": "sha512-1u0ZBygs0C9DhdYgLCrRfZfNKQa+9+J7Uo+Z9z0RWLHzgsxhoG32lrmMOtUw48yR6bLNELdvzormwUqSk4H4Vg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.3.0", + "@jest/test-result": "^25.3.0", + "@jest/transform": "^25.3.0", + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^25.3.0", + "jest-resolve": "^25.3.0", + "jest-util": "^25.3.0", + "jest-worker": "^25.2.6", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "@jest/source-map": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.2.6.tgz", + "integrity": "sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.3", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true + "@jest/test-result": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.3.0.tgz", + "integrity": "sha512-mqrGuiiPXl1ap09Mydg4O782F3ouDQfsKqtQzIjitpwv3t1cHDwCto21jThw6WRRE+dKcWQvLG70GpyLJICfGw==", + "dev": true, + "requires": { + "@jest/console": "^25.3.0", + "@jest/types": "^25.3.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "@jest/test-sequencer": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.3.0.tgz", + "integrity": "sha512-Xvns3xbji7JCvVcDGvqJ/pf4IpmohPODumoPEZJ0/VgC5gI4XaNVIBET2Dq5Czu6Gk3xFcmhtthh/MBOTljdNg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@jest/test-result": "^25.3.0", + "jest-haste-map": "^25.3.0", + "jest-runner": "^25.3.0", + "jest-runtime": "^25.3.0" } }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "@jest/transform": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.3.0.tgz", + "integrity": "sha512-W01p8kTDvvEX6kd0tJc7Y5VdYyFaKwNWy1HQz6Jqlhu48z/8Gxp+yFCDVj+H8Rc7ezl3Mg0hDaGuFVkmHOqirg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^25.3.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.3", + "jest-haste-map": "^25.3.0", + "jest-regex-util": "^25.2.6", + "jest-util": "^25.3.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@jest/types": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.3.0.tgz", + "integrity": "sha512-UkaDNewdqXAmCDbN2GlUM6amDKS78eCqiw/UmF5nE0mmLTd6moJkiZJML/X52Ke3LH7Swhw883IRXq8o9nWjVw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@sinonjs/commons": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.2.tgz", + "integrity": "sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@types/babel__core": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz", + "integrity": "sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.10.tgz", + "integrity": "sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "13.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz", + "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", + "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", "dev": true }, @@ -1155,6 +1963,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -1171,6 +1985,22 @@ "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "dev": true }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, "ajv": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", @@ -1201,6 +2031,15 @@ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -1249,6 +2088,15 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -1267,6 +2115,18 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -1294,6 +2154,21 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -1332,12 +2207,24 @@ } } }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -1359,12 +2246,97 @@ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-jest": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.3.0.tgz", + "integrity": "sha512-qiXeX1Cmw4JZ5yQ4H57WpkO0MZ61Qj+YnsVUwAMnDV5ls+yHon11XjarDdgP7H8lTmiEi6biiZA8y3Tmvx6pCg==", + "dev": true, + "requires": { + "@jest/transform": "^25.3.0", + "@jest/types": "^25.3.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^25.3.0", + "chalk": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "babel-loader": { "version": "8.0.6", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", @@ -1386,6 +2358,56 @@ "object.assign": "^4.1.0" } }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.6.tgz", + "integrity": "sha512-qE2xjMathybYxjiGFJg0mLFrz0qNp83aNZycWDY/SuHiZNq+vQfRQtuINqyXyue1ELd8Rd+1OhFSLjms8msMbw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz", + "integrity": "sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.3.0.tgz", + "integrity": "sha512-tjdvLKNMwDI9r+QWz9sZUQGTq1dpoxjUqFUpEasAc7MOtHg9XuLT2fx0udFG+k1nvMV0WvHHVAN7VmCZ+1Zxbw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^25.2.6", + "babel-preset-current-node-syntax": "^0.1.2" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1459,6 +2481,15 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -1593,6 +2624,29 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -1675,6 +2729,15 @@ "node-releases": "^1.1.47" } }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -1756,6 +2819,12 @@ "unset-value": "^1.0.0" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -1768,6 +2837,21 @@ "integrity": "sha512-7xvKeErvXZFtUItTHgNtLgS9RJpVnwBlWX8jSo/BO8VsF6deszemZSkJJJA1KOKrXuzZH4WALpAJdq5EyfgMLg==", "dev": true }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1814,6 +2898,12 @@ "tslib": "^1.9.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -1858,12 +2948,24 @@ "wrap-ansi": "^5.1.0" } }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1889,6 +2991,15 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1901,6 +3012,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -2064,6 +3181,19 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@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": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -2133,12 +3263,55 @@ "randomfill": "^1.0.3" } }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", + "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2174,6 +3347,18 @@ "regexp.prototype.flags": "^1.2.0" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -2249,6 +3434,12 @@ "rimraf": "^2.6.3" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -2277,12 +3468,24 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -2325,6 +3528,15 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2337,6 +3549,16 @@ "stream-shift": "^1.0.0" } }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2423,6 +3645,15 @@ "prr": "~1.0.1" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-abstract": { "version": "1.17.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", @@ -2465,6 +3696,28 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -2475,6 +3728,12 @@ "estraverse": "^4.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -2533,6 +3792,12 @@ "safe-buffer": "^5.1.1" } }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -2548,6 +3813,12 @@ "strip-eof": "^1.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2607,6 +3878,47 @@ "homedir-polyfill": "^1.0.1" } }, + "expect": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.3.0.tgz", + "integrity": "sha512-buboTXML2h/L0Kh44Ys2Cx49mX20ISc5KDirkxIs3Q9AJv0kazweUAbukegr+nHDOvFRKmxdojjIHCjqAceYfg==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-regex-util": "^25.2.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -2668,6 +3980,12 @@ } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2754,6 +4072,12 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", @@ -2766,6 +4090,12 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -2775,6 +4105,15 @@ "websocket-driver": ">=0.5.1" } }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -2863,6 +4202,15 @@ "locate-path": "^3.0.0" } }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -2911,6 +4259,23 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -3551,6 +4916,15 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -3654,12 +5028,35 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, "handle-thing": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3765,12 +5162,27 @@ "wbuf": "^1.1.0" } }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, "html-entities": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -3827,12 +5239,142 @@ "micromatch": "^3.1.10" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "husky": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", + "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^6.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", + "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3854,6 +5396,30 @@ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -3979,6 +5545,12 @@ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -4000,6 +5572,15 @@ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -4063,6 +5644,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -4149,6 +5736,12 @@ "has-symbols": "^1.0.1" } }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4173,11 +5766,1832 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.3.0.tgz", + "integrity": "sha512-iKd5ShQSHzFT5IL/6h5RZJhApgqXSoPxhp5HEi94v6OAw9QkF8T7X+liEU2eEHJ1eMFYTHmeWLrpBWulsDpaUg==", + "dev": true, + "requires": { + "@jest/core": "^25.3.0", + "import-local": "^3.0.2", + "jest-cli": "^25.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "jest-cli": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.3.0.tgz", + "integrity": "sha512-XpNQPlW1tzpP7RGG8dxpkRegYDuLjzSiENu92+CYM87nEbmEPb3b4+yo8xcsHOnj0AG7DUt9b3uG8LuHI3MDzw==", + "dev": true, + "requires": { + "@jest/core": "^25.3.0", + "@jest/test-result": "^25.3.0", + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^25.3.0", + "jest-util": "^25.3.0", + "jest-validate": "^25.3.0", + "prompts": "^2.0.1", + "realpath-native": "^2.0.0", + "yargs": "^15.3.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.3.0.tgz", + "integrity": "sha512-eqd5hyLbUjIVvLlJ3vQ/MoPxsxfESVXG9gvU19XXjKzxr+dXmZIqCXiY0OiYaibwlHZBJl2Vebkc0ADEMzCXew==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "execa": "^3.2.0", + "throat": "^5.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-config": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.3.0.tgz", + "integrity": "sha512-CmF1JnNWFmoCSPC4tnU52wnVBpuxHjilA40qH/03IHxIevkjUInSMwaDeE6ACfxMPTLidBGBCO3EbxvzPbo8wA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^25.3.0", + "@jest/types": "^25.3.0", + "babel-jest": "^25.3.0", + "chalk": "^3.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "jest-environment-jsdom": "^25.3.0", + "jest-environment-node": "^25.3.0", + "jest-get-type": "^25.2.6", + "jest-jasmine2": "^25.3.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.3.0", + "jest-util": "^25.3.0", + "jest-validate": "^25.3.0", + "micromatch": "^4.0.2", + "pretty-format": "^25.3.0", + "realpath-native": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-diff": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.3.0.tgz", + "integrity": "sha512-vyvs6RPoVdiwARwY4kqFWd4PirPLm2dmmkNzKqo38uZOzJvLee87yzDjIZLmY1SjM3XR5DwsUH+cdQ12vgqi1w==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.3.0.tgz", + "integrity": "sha512-aBfS4VOf/Qs95yUlX6d6WBv0szvOcTkTTyCIaLuQGj4bSHsT+Wd9dDngVHrCe5uytxpN8VM+NAloI6nbPjXfXw==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "jest-util": "^25.3.0", + "pretty-format": "^25.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.3.0.tgz", + "integrity": "sha512-jdE4bQN+k2QEZ9sWOxsqDJvMzbdFSCN/4tw8X0TQaCqyzKz58PyEf41oIr4WO7ERdp7WaJGBSUKF7imR3UW1lg==", + "dev": true, + "requires": { + "@jest/environment": "^25.3.0", + "@jest/fake-timers": "^25.3.0", + "@jest/types": "^25.3.0", + "jest-mock": "^25.3.0", + "jest-util": "^25.3.0", + "jsdom": "^15.2.1" + } + }, + "jest-environment-node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.3.0.tgz", + "integrity": "sha512-XO09S29Nx1NU7TiMPHMoDIkxoGBuKSTbE+sHp0gXbeLDXhIdhysUI25kOqFFSD9AuDgvPvxWCXrvNqiFsOH33g==", + "dev": true, + "requires": { + "@jest/environment": "^25.3.0", + "@jest/fake-timers": "^25.3.0", + "@jest/types": "^25.3.0", + "jest-mock": "^25.3.0", + "jest-util": "^25.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.3.0.tgz", + "integrity": "sha512-LjXaRa+F8wwtSxo9G+hHD/Cp63PPQzvaBL9XCVoJD2rrcJO0Zr2+YYzAFWWYJ5GlPUkoaJFJtOuk0sL6MJY80A==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.3", + "jest-serializer": "^25.2.6", + "jest-util": "^25.3.0", + "jest-worker": "^25.2.6", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "jest-jasmine2": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.3.0.tgz", + "integrity": "sha512-NCYOGE6+HNzYFSui52SefgpsnIzvxjn6KAgqw66BdRp37xpMD/4kujDHLNW5bS5i53os5TcMn6jYrzQRO8VPrQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.3.0", + "@jest/source-map": "^25.2.6", + "@jest/test-result": "^25.3.0", + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.3.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.3.0", + "jest-matcher-utils": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-runtime": "^25.3.0", + "jest-snapshot": "^25.3.0", + "jest-util": "^25.3.0", + "pretty-format": "^25.3.0", + "throat": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.3.0.tgz", + "integrity": "sha512-jk7k24dMIfk8LUSQQGN8PyOy9+J0NAfHZWiDmUDYVMctY8FLJQ1eQ8+PjMoN8PgwhLIggUqgYJnyRFvUz3jLRw==", + "dev": true, + "requires": { + "jest-get-type": "^25.2.6", + "pretty-format": "^25.3.0" + } + }, + "jest-matcher-utils": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.3.0.tgz", + "integrity": "sha512-ZBUJ2fchNIZt+fyzkuCFBb8SKaU//Rln45augfUtbHaGyVxCO++ANARdBK9oPGXU3hEDgyy7UHnOP/qNOJXFUg==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "jest-diff": "^25.3.0", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.3.0.tgz", + "integrity": "sha512-5QNy9Id4WxJbRITEbA1T1kem9bk7y2fD0updZMSTNHtbEDnYOGLDPAuFBhFgVmOZpv0n6OMdVkK+WhyXEPCcOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.3.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "jest-mock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.3.0.tgz", + "integrity": "sha512-yRn6GbuqB4j3aYu+Z1ezwRiZfp0o9om5uOcBovVtkcRLeBCNP5mT0ysdenUsxAHnQUgGwPOE1wwhtQYe6NKirQ==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + }, + "jest-resolve": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.3.0.tgz", + "integrity": "sha512-IHoQAAybulsJ+ZgWis+ekYKDAoFkVH5Nx/znpb41zRtpxj4fr2WNV9iDqavdSm8GIpMlsfZxbC/fV9DhW0q9VQ==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "browser-resolve": "^1.11.3", + "chalk": "^3.0.0", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^2.0.0", + "resolve": "^1.15.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.3.0.tgz", + "integrity": "sha512-bDUlLYmHW+f7J7KgcY2lkq8EMRqKonRl0XoD4Wp5SJkgAxKJnsaIOlrrVNTfXYf+YOu3VCjm/Ac2hPF2nfsCIA==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "jest-regex-util": "^25.2.6", + "jest-snapshot": "^25.3.0" + } + }, + "jest-runner": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.3.0.tgz", + "integrity": "sha512-csDqSC9qGHYWDrzrElzEgFbteztFeZJmKhSgY5jlCIcN0+PhActzRNku0DA1Xa1HxGOb0/AfbP1EGJlP4fGPtA==", + "dev": true, + "requires": { + "@jest/console": "^25.3.0", + "@jest/environment": "^25.3.0", + "@jest/test-result": "^25.3.0", + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.3", + "jest-config": "^25.3.0", + "jest-docblock": "^25.3.0", + "jest-haste-map": "^25.3.0", + "jest-jasmine2": "^25.3.0", + "jest-leak-detector": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-resolve": "^25.3.0", + "jest-runtime": "^25.3.0", + "jest-util": "^25.3.0", + "jest-worker": "^25.2.6", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.3.0.tgz", + "integrity": "sha512-gn5KYB1wxXRM3nfw8fVpthFu60vxQUCr+ShGq41+ZBFF3DRHZRKj3HDWVAVB4iTNBj2y04QeAo5cZ/boYaPg0w==", + "dev": true, + "requires": { + "@jest/console": "^25.3.0", + "@jest/environment": "^25.3.0", + "@jest/source-map": "^25.2.6", + "@jest/test-result": "^25.3.0", + "@jest/transform": "^25.3.0", + "@jest/types": "^25.3.0", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.3", + "jest-config": "^25.3.0", + "jest-haste-map": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-mock": "^25.3.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.3.0", + "jest-snapshot": "^25.3.0", + "jest-util": "^25.3.0", + "jest-validate": "^25.3.0", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.2.6.tgz", + "integrity": "sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ==", + "dev": true + }, + "jest-snapshot": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.3.0.tgz", + "integrity": "sha512-GGpR6Oro2htJPKh5RX4PR1xwo5jCEjtvSPLW1IS7N85y+2bWKbiknHpJJRKSdGXghElb5hWaeQASJI4IiRayGg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^25.3.0", + "@types/prettier": "^1.19.0", + "chalk": "^3.0.0", + "expect": "^25.3.0", + "jest-diff": "^25.3.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.3.0", + "jest-message-util": "^25.3.0", + "jest-resolve": "^25.3.0", + "make-dir": "^3.0.0", + "natural-compare": "^1.4.0", + "pretty-format": "^25.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.3.0.tgz", + "integrity": "sha512-dc625P/KS/CpWTJJJxKc4bA3A6c+PJGBAqS8JTJqx4HqPoKNqXg/Ec8biL2Z1TabwK7E7Ilf0/ukSEXM1VwzNA==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "chalk": "^3.0.0", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.3.0.tgz", + "integrity": "sha512-3WuXgIZ4HXUvW6gk9twFFkT9j6zUorKnF2oEY8VEsHb7x5LGvVlN3WUsbqazVKuyXwvikO2zFJ/YTySMsMje2w==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.3.0.tgz", + "integrity": "sha512-dtFkfidFCS9Ucv8azOg2hkiY3sgJEHeTLtGFHS+jfBEE7eRtrO6+2r1BokyDkaG2FOD7485r/SgpC1MFAENfeA==", + "dev": true, + "requires": { + "@jest/test-result": "^25.3.0", + "@jest/types": "^25.3.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-util": "^25.3.0", + "string-length": "^3.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.2.6.tgz", + "integrity": "sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "js-tokens": { "version": "4.0.0", @@ -4185,6 +7599,70 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "ws": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", + "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", + "dev": true + } + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -4197,12 +7675,24 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -4226,6 +7716,18 @@ } } }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -4238,6 +7740,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -4262,6 +7770,22 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -4312,12 +7836,27 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "loglevel": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4354,6 +7893,15 @@ } } }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, "mamacro": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", @@ -4428,6 +7976,12 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -4581,6 +8135,12 @@ "run-queue": "^1.0.3" } }, + "mri": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.5.tgz", + "integrity": "sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -4603,6 +8163,27 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -4629,6 +8210,12 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -4653,6 +8240,12 @@ "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -4692,6 +8285,42 @@ } } }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.1.1", + "semver": "^6.3.0", + "shellwords": "^0.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true, + "optional": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "optional": true + } + } + }, "node-releases": { "version": "1.1.49", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz", @@ -4730,6 +8359,18 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4845,6 +8486,21 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", + "dev": true + }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -4854,6 +8510,20 @@ "is-wsl": "^1.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -4886,6 +8556,12 @@ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, + "p-each-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", + "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4954,6 +8630,15 @@ "readable-stream": "^2.1.5" } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -4968,12 +8653,30 @@ "safe-buffer": "^5.1.1" } }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -5034,6 +8737,12 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -5047,6 +8756,18 @@ "sha.js": "^2.4.8" } }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -5068,6 +8789,15 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -5077,6 +8807,21 @@ "find-up": "^3.0.0" } }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, "portfinder": { "version": "1.0.25", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", @@ -5094,17 +8839,212 @@ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", + "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", + "dev": true + }, + "pretty-format": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.3.0.tgz", + "integrity": "sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA==", + "dev": true, + "requires": { + "@jest/types": "^25.3.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "pretty-quick": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-2.0.1.tgz", + "integrity": "sha512-y7bJt77XadjUr+P1uKqZxFWLddvj3SKY6EU4BuQtMxmmEFSMpbN132pUWdSG1g1mtUfO0noBvn7wBf0BVeomHg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "execa": "^2.1.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.4", + "multimatch": "^4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-2.1.0.tgz", + "integrity": "sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^3.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "npm-run-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", + "integrity": "sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -5129,6 +9069,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -5156,6 +9106,12 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -5333,6 +9289,12 @@ "readable-stream": "^2.0.2" } }, + "realpath-native": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", + "dev": true + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -5348,6 +9310,12 @@ "regenerate": "^1.4.0" } }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "regenerator-transform": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", @@ -5432,6 +9400,84 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5534,6 +9580,12 @@ "inherits": "^2.0.1" } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -5564,6 +9616,40 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, "scheduler": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", @@ -5606,6 +9692,18 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -5792,12 +9890,31 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6062,6 +10179,29 @@ "extend-shallow": "^3.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "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": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", @@ -6071,6 +10211,12 @@ "figgy-pudding": "^3.5.1" } }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6098,6 +10244,12 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -6137,6 +10289,16 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -6186,12 +10348,24 @@ "ansi-regex": "^4.1.0" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6201,12 +10375,55 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, "terser": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", @@ -6251,6 +10468,23 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -6276,6 +10510,12 @@ "setimmediate": "^1.0.4" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -6336,6 +10576,26 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -6348,6 +10608,42 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -6364,6 +10660,15 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -6564,18 +10869,77 @@ "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", "dev": true }, + "v8-to-istanbul": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz", + "integrity": "sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -6596,6 +10960,12 @@ "minimalistic-assert": "^1.0.0" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { "version": "4.41.6", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.6.tgz", @@ -6936,6 +11306,32 @@ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -6951,6 +11347,18 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -6977,6 +11385,18 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -6986,6 +11406,18 @@ "async-limiter": "~1.0.0" } }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -7004,6 +11436,15 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yaml": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", + "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7" + } + }, "yargs": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", diff --git a/package.json b/package.json index 7525f652..62751dae 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Hound", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "jest", + "format": "pretty-quick --staged --pattern '**/*.*(js|jsx)'" }, "repository": { "type": "git", @@ -22,6 +23,9 @@ "@babel/preset-env": "^7.8.4", "@babel/preset-react": "^7.8.3", "babel-loader": "^8.0.6", + "jest": "^25.3.0", + "prettier": "^2.0.4", + "pretty-quick": "^2.0.1", "react": "^16.12.0", "react-dom": "^16.12.0", "webpack": "^4.41.6", diff --git a/ui/assets/js/common.test.js b/ui/assets/js/common.test.js new file mode 100644 index 00000000..5196ceeb --- /dev/null +++ b/ui/assets/js/common.test.js @@ -0,0 +1,21 @@ +import { ExpandVars, UrlToRepo } from "./common"; + +describe("ExpandVars", () => { + test("Replaces template variables with their values", () => { + const template = "I am trying to {verb} my {noun}"; + const values = { verb: "wash", noun: "dishes" }; + expect(ExpandVars(template, values)).toBe( + "I am trying to wash my dishes" + ); + }); + + test("Doesn't replace unlisted variables", () => { + const template = "Get the {expletive} out of my {noun}"; + const values1 = { noun: "stamp collection" }; + + expect(ExpandVars(template, values1)).toBe( + "Get the {expletive} out of my stamp collection" + ); + expect(ExpandVars(template, {})).toBe(template); + }); +}); From fcb4ffda9763409f1b447a939facdedbae65c3ef Mon Sep 17 00:00:00 2001 From: Richard Liang Date: Tue, 25 Aug 2020 16:39:51 -0400 Subject: [PATCH 06/37] Git VCS driver: Support non-default target refs (#345) Currently, only the default ref (`master`) is supported. - Allow target non-default target refs to be specified via configs. - Add config-driven target ref auto-detection using the `HEAD` branch. - Update default repo base URL pattern to link to the content revision, accounting for potential non-default target ref usage. - Add global-level VCS configs which are merged into the repo-level configs during startup (repo-level vals take precedence). --- .gitignore | 2 + config-example.json | 16 +++++++- config/config.go | 73 +++++++++++++++++++++++++++----- config/config_test.go | 18 ++++++++ vcs/git.go | 96 ++++++++++++++++++++++++++++++++++++++----- vcs/git_test.go | 85 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 267 insertions(+), 23 deletions(-) create mode 100644 vcs/git_test.go diff --git a/.gitignore b/.gitignore index 129fe4de..da009bc4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /node_modules .DS_Store *.exe +/db +/data diff --git a/config-example.json b/config-example.json index 64729e13..1a14324a 100644 --- a/config-example.json +++ b/config-example.json @@ -3,6 +3,11 @@ "dbpath" : "data", "title" : "Hound", "health-check-uri" : "/healthz", + "vcs-config" : { + "git": { + "detect-ref" : true + } + }, "repos" : { "SomeGitRepo" : { "url" : "https://www.github.com/YourOrganization/RepoOne.git" @@ -12,13 +17,19 @@ "ms-between-poll": 10000, "exclude-dot-files": true }, + "GitRepoWithDetectRefDisabled" : { + "url" : "https://www.github.com/YourOrganization/RepoOne.git", + "vcs-config" : { + "detect-ref" : false + } + }, "SomeMercurialRepo" : { "url" : "https://www.example.com/foo/hg", "vcs" : "hg" }, "Subversion" : { "url" : "http://my-svn.com/repo", - "url-pattern" : { + "url-pattern" : { "base-url" : "{url}/{path}{anchor}" }, "vcs" : "svn" @@ -49,6 +60,9 @@ "url-pattern" : { "base-url" : "https://{url}/src/master/{path}{anchor}", "anchor" : "#{filename}-{line}" + }, + "vcs-config" : { + "ref" : "main" } }, "RepoWithPollingDisabled" : { diff --git a/config/config.go b/config/config.go index db35900b..ee9abab3 100644 --- a/config/config.go +++ b/config/config.go @@ -14,7 +14,7 @@ const ( defaultPollEnabled = true defaultTitle = "Hound" defaultVcs = "git" - defaultBaseUrl = "{url}/blob/master/{path}{anchor}" + defaultBaseUrl = "{url}/blob/{rev}/{path}{anchor}" defaultAnchor = "#L{line}" defaultHealthCheckURI = "/healthz" ) @@ -55,11 +55,12 @@ func (r *Repo) PushUpdatesEnabled() bool { } type Config struct { - DbPath string `json:"dbpath"` - Title string `json:"title"` - Repos map[string]*Repo `json:"repos"` - MaxConcurrentIndexers int `json:"max-concurrent-indexers"` - HealthCheckURI string `json:"health-check-uri"` + DbPath string `json:"dbpath"` + Title string `json:"title"` + Repos map[string]*Repo `json:"repos"` + MaxConcurrentIndexers int `json:"max-concurrent-indexers"` + HealthCheckURI string `json:"health-check-uri"` + VCSConfigMessages map[string]*SecretMessage `json:"vcs-config"` } // SecretMessage is just like json.RawMessage but it will not @@ -116,8 +117,9 @@ func initRepo(r *Repo) { } } -// Populate missing config values with default values. -func initConfig(c *Config) { +// Populate missing config values with default values and +// merge global VCS configs into repo level configs. +func initConfig(c *Config) error { if c.MaxConcurrentIndexers == 0 { c.MaxConcurrentIndexers = defaultMaxConcurrentIndexers } @@ -125,6 +127,57 @@ func initConfig(c *Config) { if c.HealthCheckURI == "" { c.HealthCheckURI = defaultHealthCheckURI } + + return mergeVCSConfigs(c) +} + +func mergeVCSConfigs(cfg *Config) error { + globalConfigLen := len(cfg.VCSConfigMessages) + if globalConfigLen == 0 { + return nil + } + + globalConfigVals := make(map[string]map[string]interface{}, globalConfigLen) + for vcs, configBytes := range cfg.VCSConfigMessages { + var configVals map[string]interface{} + if err := json.Unmarshal(*configBytes, &configVals); err != nil { + return err + } + + globalConfigVals[vcs] = configVals + } + + for _, repo := range cfg.Repos { + var globalVals map[string]interface{} + globalVals, valsExist := globalConfigVals[repo.Vcs] + if !valsExist { + continue + } + + repoBytes := repo.VcsConfig() + var repoVals map[string]interface{} + if len(repoBytes) == 0 { + repoVals = make(map[string]interface{}, len(globalVals)) + } else if err := json.Unmarshal(repoBytes, &repoVals); err != nil { + return err + } + + for name, val := range globalVals { + if _, ok := repoVals[name]; !ok { + repoVals[name] = val + } + } + + repoBytes, err := json.Marshal(&repoVals) + if err != nil { + return err + } + + repoMessage := SecretMessage(repoBytes) + repo.VcsConfigMessage = &repoMessage + } + + return nil } func (c *Config) LoadFromFile(filename string) error { @@ -155,9 +208,7 @@ func (c *Config) LoadFromFile(filename string) error { initRepo(repo) } - initConfig(c) - - return nil + return initConfig(c) } func (c *Config) ToJsonString() (string, error) { diff --git a/config/config_test.go b/config/config_test.go index d1e70d95..2f867abb 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -1,6 +1,7 @@ package config import ( + "encoding/json" "path/filepath" "runtime" "testing" @@ -34,4 +35,21 @@ func TestExampleConfigsAreValid(t *testing.T) { t.Fatal(err) } } + + // Ensure that global VCS config vals are merged + repo := cfg.Repos["SomeGitRepo"] + vcsConfigBytes := repo.VcsConfig() + var vcsConfigVals map[string]interface{} + json.Unmarshal(vcsConfigBytes, &vcsConfigVals) + if detectRef, ok := vcsConfigVals["detect-ref"]; !ok || !detectRef.(bool) { + t.Error("global detectRef vcs config setting not set for repo") + } + + repo = cfg.Repos["GitRepoWithDetectRefDisabled"] + vcsConfigBytes = repo.VcsConfig() + json.Unmarshal(vcsConfigBytes, &vcsConfigVals) + if detectRef, ok := vcsConfigVals["detect-ref"]; !ok || detectRef.(bool) { + t.Error("global detectRef vcs config setting not overriden by repo-level setting") + } + } diff --git a/vcs/git.go b/vcs/git.go index f8c66825..e2ebff18 100644 --- a/vcs/git.go +++ b/vcs/git.go @@ -2,24 +2,49 @@ package vcs import ( "bytes" + "encoding/json" "fmt" "io" "log" "os/exec" "path/filepath" + "regexp" "strings" ) const defaultRef = "master" +var headBranchRegexp = regexp.MustCompile(`HEAD branch: (?P.+)`) + func init() { Register(newGit, "git") } -type GitDriver struct{} +type GitDriver struct { + DetectRef bool `json:"detect-ref"` + Ref string `json:"ref"` + refDetetector refDetetector +} + +type refDetetector interface { + detectRef(dir string) string +} + +type headBranchDetector struct { +} func newGit(b []byte) (Driver, error) { - return &GitDriver{}, nil + var d GitDriver + + if b != nil { + if err := json.Unmarshal(b, &d); err != nil { + return nil, err + } + } + + d.refDetetector = &headBranchDetector{} + + return &d, nil } func (g *GitDriver) HeadRev(dir string) (string, error) { @@ -47,43 +72,61 @@ func (g *GitDriver) HeadRev(dir string) (string, error) { return strings.TrimSpace(buf.String()), cmd.Wait() } -func run(desc, dir, cmd string, args ...string) error { +func run(desc, dir, cmd string, args ...string) (string, error) { c := exec.Command(cmd, args...) c.Dir = dir - if out, err := c.CombinedOutput(); err != nil { + out, err := c.CombinedOutput() + if err != nil { log.Printf( "Failed to %s %s, see output below\n%sContinuing...", desc, dir, out) - return err } - return nil + + return string(out), nil } func (g *GitDriver) Pull(dir string) (string, error) { - if err := run("git fetch", dir, + targetRef := g.targetRef(dir) + + if _, err := run("git fetch", dir, "git", "fetch", "--prune", "--no-tags", "--depth", "1", "origin", - fmt.Sprintf("+%s:remotes/origin/%s", defaultRef, defaultRef)); err != nil { + fmt.Sprintf("+%s:remotes/origin/%s", targetRef, targetRef)); err != nil { return "", err } - if err := run("git reset", dir, + if _, err := run("git reset", dir, "git", "reset", "--hard", - fmt.Sprintf("origin/%s", defaultRef)); err != nil { + fmt.Sprintf("origin/%s", targetRef)); err != nil { return "", err } return g.HeadRev(dir) } +func (g *GitDriver) targetRef(dir string) string { + var targetRef string + if g.Ref != "" { + targetRef = g.Ref + } else if g.DetectRef { + targetRef = g.refDetetector.detectRef(dir) + } + + if targetRef == "" { + targetRef = defaultRef + } + + return targetRef +} + func (g *GitDriver) Clone(dir, url string) (string, error) { par, rep := filepath.Split(dir) cmd := exec.Command( @@ -99,7 +142,7 @@ func (g *GitDriver) Clone(dir, url string) (string, error) { return "", err } - return g.HeadRev(dir) + return g.Pull(dir) } func (g *GitDriver) SpecialFiles() []string { @@ -107,3 +150,34 @@ func (g *GitDriver) SpecialFiles() []string { ".git", } } + +func (d *headBranchDetector) detectRef(dir string) string { + output, err := run("git show remote info", dir, + "git", + "remote", + "show", + "origin", + ) + + if err != nil { + log.Printf( + "error occured when fetching info to determine target ref in %s: %s. Will fall back to default ref %s", + dir, + err, + defaultRef, + ) + return "" + } + + matches := headBranchRegexp.FindStringSubmatch(output) + if len(matches) != 2 { + log.Printf( + "could not determine target ref in %s. Will fall back to default ref %s", + dir, + defaultRef, + ) + return "" + } + + return matches[1] +} diff --git a/vcs/git_test.go b/vcs/git_test.go new file mode 100644 index 00000000..737b324b --- /dev/null +++ b/vcs/git_test.go @@ -0,0 +1,85 @@ +package vcs + +import ( + "fmt" + "testing" +) + +type testRefDetector struct { + result string +} + +func (d *testRefDetector) detectRef(dir string) string { + return d.result +} + +func TestTargetRef(t *testing.T) { + testCases := []struct { + explicitRef string + detectRefEnabled bool + detectRefResult string + expectedResult string + }{ + { + explicitRef: "", + detectRefEnabled: true, + detectRefResult: "detected-ref", + expectedResult: "detected-ref", + }, + { + explicitRef: "", + detectRefEnabled: true, + detectRefResult: "", + expectedResult: defaultRef, + }, + { + explicitRef: "explicit-ref", + detectRefEnabled: true, + detectRefResult: "detected-ref", + expectedResult: "explicit-ref", + }, + { + explicitRef: "explicit-ref", + detectRefEnabled: true, + detectRefResult: "", + expectedResult: "explicit-ref", + }, + { + explicitRef: "explicit-ref", + detectRefEnabled: false, + detectRefResult: "foo", + expectedResult: "explicit-ref", + }, + { + explicitRef: "", + detectRefEnabled: false, + detectRefResult: "", + expectedResult: defaultRef, + }, + { + explicitRef: "explicit-ref", + detectRefEnabled: false, + detectRefResult: "", + expectedResult: "explicit-ref", + }, + { + explicitRef: "explicit-ref", + detectRefEnabled: false, + detectRefResult: "detected-ref", + expectedResult: "explicit-ref", + }, + } + for idx, testCase := range testCases { + t.Run(fmt.Sprintf("test case %d", idx), func(t *testing.T) { + driver := &GitDriver{ + Ref: testCase.explicitRef, + DetectRef: testCase.detectRefEnabled, + refDetetector: &testRefDetector{result: testCase.detectRefResult}, + } + actualResult := driver.targetRef("dir") + if actualResult != testCase.expectedResult { + t.Errorf("expected target ref: %q, got: %q", testCase.expectedResult, actualResult) + } + }) + } +} From e14bb29c32b6690404ac0883b319afa233d4fe01 Mon Sep 17 00:00:00 2001 From: Vincent Rischmann Date: Sun, 27 Sep 2020 06:41:47 +0200 Subject: [PATCH 07/37] Exclude file path (#347) * index: add a search option to exclude files given a regexp * api: add the excludeFiles query parameter Set the index search options ExcludeFileRegexp with this parameter to allow excluding files from the search via a regexp. * js: add the excludeFiles search parameter * css: increase the label width to fit 'Exclude file path' * js: correctly check that advanced is empty --- api/api.go | 1 + index/index.go | 24 +++++++++++++++---- ui/assets/css/hound.css | 2 +- ui/assets/js/hound.js | 51 ++++++++++++++++++++++++++++++++++------- 4 files changed, 64 insertions(+), 14 deletions(-) diff --git a/api/api.go b/api/api.go index b0efc3a1..b6340487 100644 --- a/api/api.go +++ b/api/api.go @@ -178,6 +178,7 @@ func Setup(m *http.ServeMux, idx map[string]*searcher.Searcher) { query := r.FormValue("q") opt.Offset, opt.Limit = parseRangeValue(r.FormValue("rng")) opt.FileRegexp = r.FormValue("files") + opt.ExcludeFileRegexp = r.FormValue("excludeFiles") opt.IgnoreCase = parseAsBool(r.FormValue("i")) opt.LinesOfContext = parseAsUintValue( r.FormValue("ctx"), diff --git a/index/index.go b/index/index.go index afb650eb..626ec481 100644 --- a/index/index.go +++ b/index/index.go @@ -41,11 +41,12 @@ type IndexOptions struct { } type SearchOptions struct { - IgnoreCase bool - LinesOfContext uint - FileRegexp string - Offset int - Limit int + IgnoreCase bool + LinesOfContext uint + FileRegexp string + ExcludeFileRegexp string + Offset int + Limit int } type Match struct { @@ -167,6 +168,14 @@ func (n *Index) Search(pat string, opt *SearchOptions) (*SearchResponse, error) } } + var excludeFre *regexp.Regexp + if opt.ExcludeFileRegexp != "" { + excludeFre, err = regexp.Compile(opt.ExcludeFileRegexp) + if err != nil { + return nil, err + } + } + files := n.idx.PostingQuery(index.RegexpQuery(re.Syntax)) for _, file := range files { var matches []*Match @@ -178,6 +187,11 @@ func (n *Index) Search(pat string, opt *SearchOptions) (*SearchResponse, error) continue } + // reject files that match the exclude file pattern + if excludeFre != nil && excludeFre.MatchString(name, true, true) > 0 { + continue + } + filesOpened++ if err := g.grep2File(filepath.Join(n.Ref.dir, "raw", name), re, int(opt.LinesOfContext), func(line []byte, lineno int, before [][]byte, after [][]byte) (bool, error) { diff --git a/ui/assets/css/hound.css b/ui/assets/css/hound.css index c29e3afa..cd29df5c 100644 --- a/ui/assets/css/hound.css +++ b/ui/assets/css/hound.css @@ -126,7 +126,7 @@ button:focus { #adv > .field > label { /* Media object left */ float: left; - width: 90px; + width: 100px; color: #999; } diff --git a/ui/assets/js/hound.js b/ui/assets/js/hound.js index d9be0dad..da991261 100644 --- a/ui/assets/js/hound.js +++ b/ui/assets/js/hound.js @@ -76,6 +76,7 @@ var ParamsFromUrl = function(params) { q: '', i: 'nope', files: '', + excludeFiles: '', repos: '*' }; return ParamsFromQueryString(location.search, params); @@ -360,7 +361,7 @@ var SearchBar = React.createClass({ switch (event.keyCode) { case 38: // if advanced is empty, close it up. - if (this.refs.files.getDOMNode().value.trim() === '') { + if (this.isAdvancedEmpty()) { this.hideAdvanced(); } this.refs.q.getDOMNode().focus(); @@ -373,6 +374,23 @@ var SearchBar = React.createClass({ filesGotFocus: function(event) { this.showAdvanced(); }, + excludeFilesGotKeydown: function(event) { + switch (event.keyCode) { + case 38: + // if advanced is empty, close it up. + if (this.isAdvancedEmpty()) { + this.hideAdvanced(); + } + this.refs.q.getDOMNode().focus(); + break; + case 13: + this.submitQuery(); + break; + } + }, + excludeFilesGotFocus: function(event) { + this.showAdvanced(); + }, submitQuery: function() { this.props.onSearchRequested(this.getParams()); }, @@ -392,6 +410,7 @@ var SearchBar = React.createClass({ return { q : this.refs.q.getDOMNode().value.trim(), files : this.refs.files.getDOMNode().value.trim(), + excludeFiles : this.refs.excludeFiles.getDOMNode().value.trim(), repos : repos.join(','), i: this.refs.icase.getDOMNode().checked ? 'fosho' : 'nope' }; @@ -399,30 +418,32 @@ var SearchBar = React.createClass({ setParams: function(params) { var q = this.refs.q.getDOMNode(), i = this.refs.icase.getDOMNode(), - files = this.refs.files.getDOMNode(); + files = this.refs.files.getDOMNode(), + excludeFiles = this.refs.excludeFiles.getDOMNode(); q.value = params.q; i.checked = ParamValueToBool(params.i); files.value = params.files; + excludeFiles.value = params.excludeFiles; }, hasAdvancedValues: function() { - return this.refs.files.getDOMNode().value.trim() !== '' || this.refs.icase.getDOMNode().checked || this.refs.repos.getDOMNode().value !== ''; + return this.refs.files.getDOMNode().value.trim() !== '' || this.refs.excludeFiles.getDOMNode().value.trim() !== '' || this.refs.icase.getDOMNode().checked || this.refs.repos.getDOMNode().value !== ''; + }, + isAdvancedEmpty: function() { + return this.refs.files.getDOMNode().value.trim() === '' && this.refs.excludeFiles.getDOMNode().value.trim() === ''; }, showAdvanced: function() { var adv = this.refs.adv.getDOMNode(), ban = this.refs.ban.getDOMNode(), q = this.refs.q.getDOMNode(), - files = this.refs.files.getDOMNode(); + files = this.refs.files.getDOMNode(), + excludeFiles = this.refs.excludeFiles.getDOMNode(); css(adv, 'height', 'auto'); css(adv, 'padding', '10px 0'); css(ban, 'max-height', '0'); css(ban, 'opacity', '0'); - - if (q.value.trim() !== '') { - files.focus(); - } }, hideAdvanced: function() { var adv = this.refs.adv.getDOMNode(), @@ -499,6 +520,17 @@ var SearchBar = React.createClass({ onFocus={this.filesGotFocus} /> +
+ +
+ +
+
@@ -763,6 +795,7 @@ var App = React.createClass({ q: params.q, i: params.i, files: params.files, + excludeFiles: params.excludeFiles, repos: repos }); @@ -817,6 +850,7 @@ var App = React.createClass({ '?q=' + encodeURIComponent(params.q) + '&i=' + encodeURIComponent(params.i) + '&files=' + encodeURIComponent(params.files) + + '&excludeFiles=' + encodeURIComponent(params.excludeFiles) + '&repos=' + params.repos; history.pushState({path:path}, '', path); }, @@ -827,6 +861,7 @@ var App = React.createClass({ q={this.state.q} i={this.state.i} files={this.state.files} + excludeFiles={this.state.excludeFiles} repos={this.state.repos} onSearchRequested={this.onSearchRequested} /> From e3ba7137c041ad4d24e2188f33c65d81ee963fb6 Mon Sep 17 00:00:00 2001 From: Salem Date: Sun, 27 Sep 2020 18:25:17 -0400 Subject: [PATCH 08/37] Update README with contact info for maintainers. (#348) I don't think there's a clear way to see who has push privs to this repo from the public, and even if there is, the "Get In Touch" section should probably list the maintainers. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index bfd415ab..e6f8289a 100644 --- a/README.md +++ b/README.md @@ -160,3 +160,10 @@ Created at [Etsy](https://www.etsy.com) by: * [Kelly Norton](https://github.com/kellegous) * [Jonathan Klein](https://github.com/jklein) + +Hound is maintained by: + +* [David Schott](https://github.com/dschott68) +* [Jacob Rose](https://github.com/jacobrose) +* [Nick Sawyer](https://github.com/nickmoorman) +* [Salem Hilal](https://github.com/salemhilal) From 747eefd93d4e5d9afd1a0aa151c8548ab2318aa8 Mon Sep 17 00:00:00 2001 From: Blobb Ered <5307533+blobbered@users.noreply.github.com> Date: Fri, 16 Oct 2020 11:04:05 -0400 Subject: [PATCH 09/37] incorporate detailing around gopath in README's quick start instructions (#352) Co-authored-by: Rebecca Lau --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e6f8289a..72977369 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Hound is an extremely fast source code search engine. The core is based on this ### Using Go Tools -1. Use the Go tools to install Hound. The binaries `houndd` (server) and `hound` (cli) will be installed in your $GOPATH. +1. Use the Go tools to install Hound. The binaries `houndd` (server) and `hound` (cli) will be installed in your $GOPATH/bin directory. Your $GOPATH should be in your $PATH (`echo $PATH` to check). ``` go get github.com/hound-search/hound/cmds/... @@ -20,7 +20,7 @@ go get github.com/hound-search/hound/cmds/... 2. Create a [config.json](config-example.json) in a directory with your list of repositories. -3. Run the Hound server with `houndd` and you should see output similar to: +3. Run the Hound server with `$GOPATH/bin/houndd`. You should see output similar to: ``` 2015/03/13 09:07:42 Searcher started for statsd 2015/03/13 09:07:42 Searcher started for Hound From 268f2870ce0f8476435ea876505d0d203eab24ea Mon Sep 17 00:00:00 2001 From: Ruixi Fan Date: Sun, 18 Oct 2020 01:02:41 -0400 Subject: [PATCH 10/37] pin alpine version to make the docker pass --- Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3cd3de2a..236fc3ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,9 @@ -FROM alpine +FROM alpine:3.10 ENV GOPATH /go COPY . /go/src/github.com/hound-search/hound -COPY default-config.json /data/config.json - RUN apk update \ && apk add go git subversion libc-dev mercurial bzr openssh \ && go install github.com/hound-search/hound/cmds/houndd \ From b551906d77661961d8acf27f1e5884c2adb2d20a Mon Sep 17 00:00:00 2001 From: Ruixi Fan <69488297+rfan-debug@users.noreply.github.com> Date: Tue, 20 Oct 2020 22:29:16 -0400 Subject: [PATCH 11/37] Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 236fc3ee..8077c497 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.10 +FROM alpine:3.11.6 ENV GOPATH /go From 57d568c33333d3bbbfc9f52e6b5522349bf2d2ff Mon Sep 17 00:00:00 2001 From: Ruixi Fan <69488297+rfan-debug@users.noreply.github.com> Date: Wed, 21 Oct 2020 23:02:58 -0400 Subject: [PATCH 12/37] More detailed setup documents with less assumptions on users (#359) This commit updates the readme to be a little more verbose for people who don't necessarily have Go or Docker set up, but who want to contribute nonetheless. * Apply the old patch * add some figures * remove the idea code * get it untitled * remove * add .idea dev tools * remove simple config * get config back * detailing tests and simplifying the setup * Commit TLS support guide Co-authored-by: Salem * make the statement terser * delete unused img * rewording * back to the old path * Update README.md * Update README.md * Update README.md * Update README.md Co-authored-by: Salem --- .gitignore | 1 + README.md | 43 ++++++++++++++---- screen_capture.gif => imgs/screen_capture.gif | Bin 3 files changed, 36 insertions(+), 8 deletions(-) rename screen_capture.gif => imgs/screen_capture.gif (100%) diff --git a/.gitignore b/.gitignore index da009bc4..1d2a79ec 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ *.exe /db /data +/.idea diff --git a/README.md b/README.md index 72977369..cfc30c67 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,38 @@ Hound is an extremely fast source code search engine. The core is based on this [Regular Expression Matching with a Trigram Index](http://swtch.com/~rsc/regexp/regexp4.html). Hound itself is a static [React](http://facebook.github.io/react/) frontend that talks to a [Go](http://golang.org/) backend. The backend keeps an up-to-date index for each repository and answers searches through a minimal API. Here it is in action: -![Hound Screen Capture](screen_capture.gif) +![Hound Screen Capture](imgs/screen_capture.gif) ## Quick Start Guide ### Using Go Tools + +0. [Install Go](https://golang.org/doc/install) if you don't have it already. Hound requires version 1.4 or later. +You might also want to define a [`GOPATH`](https://github.com/golang/go/wiki/GOPATH) environment variable) +(it defaults to $HOME/go if you don't explicitly have one set). If everything is installed properly, `go version` should +print out the installed version of go. + 1. Use the Go tools to install Hound. The binaries `houndd` (server) and `hound` (cli) will be installed in your $GOPATH/bin directory. Your $GOPATH should be in your $PATH (`echo $PATH` to check). + ``` go get github.com/hound-search/hound/cmds/... ``` -2. Create a [config.json](config-example.json) in a directory with your list of repositories. +2. Create a config.json file and use it to list your repositories. Check out our [example-config.json](config-example.json) +to see how to set up various types of repositories. For example, we can configure Hound to search its own source code using +the config found in [default-config.json](default-config.json): +```json +{ + "dbpath" : "db", + "repos" : { + "Hound" : { "url" : "https://github.com/etsy/hound.git" } + } +} +``` -3. Run the Hound server with `$GOPATH/bin/houndd`. You should see output similar to: +3. Run the Hound server with `houndd` in the same directory as your `config.json`. You should see output similar to: ``` 2015/03/13 09:07:42 Searcher started for statsd 2015/03/13 09:07:42 Searcher started for Hound @@ -28,21 +45,27 @@ go get github.com/hound-search/hound/cmds/... 2015/03/13 09:07:42 running server at http://localhost:6080 ``` +4. By default, hound hosts a web ui at http://localhost:6080 . Open it in your browser, and start searching. + ### Using Docker (1.4+) -1. Create a [config.json](config-example.json) in a directory with your list of repositories. +0. [Install the docker](https://docs.docker.com/get-docker/) if you don't have it. We need at least `Docker >= 1.14`. + +1. Create a config.json file and use it to list your repositories. Check out our [example-config.json](config-example.json) +to see how to set up various types of repositories. For example, we can configure Hound to search its own source code using +the config found in [default-config.json](default-config.json). 2. Run ``` docker run -d -p 6080:6080 --name hound -v $(pwd):/data etsy/hound ``` -You should be able to navigate to [http://localhost:6080/](http://localhost:6080/) as usual. - +You should be able to navigate to [http://localhost:6080/](http://localhost:6080/) as usual. ## Running in Production -There are no special flags to run Hound in production. You can use the `--addr=:6880` flag to control the port to which the server binds. Currently, Hound does not support TLS as most users simply run Hound behind either Apache or nginx. Adding TLS support is pretty straight forward though if anyone wants to add it. +There are no special flags to run Hound in production. You can use the `--addr=:6880` flag to control the port to which the server binds. +Currently, Hound does not support TLS as most users simply run Hound behind either Apache or nginx. However, we are open to contributions to add TLS support. ## Why Another Code Search Tool? @@ -128,7 +151,11 @@ If you want to just run the JavaScript test suite, use: npm test ``` -Any Go files that end in `_test.go` are assumed to be test files. Similarly, any JavaScript files that ends in `.test.js` are automatically run by Jest, our test runner. Tests should live next to the files that they cover. [Check out Jest's docs](https://jestjs.io/docs/en/getting-started) for more details on writing Jest tests, and [check out Go's testing docs](https://golang.org/pkg/testing/) for more details on testing Go code. +Any Go files that end in `_test.go` are assumed to be test files. Similarly, any JavaScript files that ends in `.test.js` are automatically run by Jest, our test runner. Tests should live next to the files that they cover. +[Check out Jest's docs](https://jestjs.io/docs/en/getting-started) for more details on writing Jest tests, +and [check out Go's testing docs](https://golang.org/pkg/testing/) for more details on testing Go code. + +You need to install `Node.js >= 12` and install `jest` by `npm install jest` to run the JS tests. ### Working on the web UI diff --git a/screen_capture.gif b/imgs/screen_capture.gif similarity index 100% rename from screen_capture.gif rename to imgs/screen_capture.gif From cf9b30868539f455e95ca75c3ef70510d69778b1 Mon Sep 17 00:00:00 2001 From: Andreas Linz Date: Wed, 26 Feb 2020 14:50:21 +0100 Subject: [PATCH 13/37] Initialize Go Modules `go mod init github.com/hound-search/hound` --- go.mod | 5 +++++ go.sum | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 go.mod create mode 100644 go.sum diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..2fac68f1 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/hound-search/hound + +go 1.13 + +require github.com/jteeuwen/go-bindata v3.0.7+incompatible // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..966c763c --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts= +github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= From 8efbe5790b2627f0c4dab2e419afed446c7751a7 Mon Sep 17 00:00:00 2001 From: Andreas Linz Date: Thu, 27 Feb 2020 09:09:16 +0100 Subject: [PATCH 14/37] Replace jteeuwen/go-bindata with go-bindata/go-bindata The former package is unmainatained since a while and the replacement also fixes this bug I encountered when trying to build the package: https://github.com/jteeuwen/discussions/issues/6 --- Makefile | 2 +- go.mod | 2 +- go.sum | 5 +++-- ui/bindata.go | 61 +++++++++++++++++++++++++++++---------------------- 4 files changed, 40 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 2049b44e..fa3725a7 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ $(GOPATH)/bin/hound: ui/bindata.go $(SRCS) go install github.com/hound-search/hound/cmds/hound .build/bin/go-bindata: - GOPATH=`pwd`/.build go get github.com/jteeuwen/go-bindata/... + GOPATH=`pwd`/.build go get github.com/go-bindata/go-bindata/... ui/bindata.go: .build/bin/go-bindata node_modules $(wildcard ui/assets/**/*) rsync -r ui/assets/* .build/ui diff --git a/go.mod b/go.mod index 2fac68f1..aeb1cf23 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/hound-search/hound go 1.13 -require github.com/jteeuwen/go-bindata v3.0.7+incompatible // indirect +require github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect diff --git a/go.sum b/go.sum index 966c763c..19845fb4 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,3 @@ -github.com/jteeuwen/go-bindata v3.0.7+incompatible h1:91Uy4d9SYVr1kyTJ15wJsog+esAZZl7JmEfTkwmhJts= -github.com/jteeuwen/go-bindata v3.0.7+incompatible/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= +github.com/go-bindata/go-bindata v1.0.0 h1:DZ34txDXWn1DyWa+vQf7V9ANc2ILTtrEjtlsdJRF26M= +github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE= +github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= diff --git a/ui/bindata.go b/ui/bindata.go index d4fd7de7..4decc4dc 100644 --- a/ui/bindata.go +++ b/ui/bindata.go @@ -1,4 +1,4 @@ -// Code generated by go-bindata. +// Code generated for package ui by go-bindata DO NOT EDIT. (@generated) // sources: // .build/ui/css/hound.css // .build/ui/css/octicons/LICENSE.txt @@ -22,8 +22,6 @@ // .build/ui/js/jquery-2.1.3.min.js // .build/ui/js/react-0.12.2.min.js // .build/ui/open_search.tpl.xml -// DO NOT EDIT! - package ui import ( @@ -70,21 +68,32 @@ type bindataFileInfo struct { modTime time.Time } +// Name return file name func (fi bindataFileInfo) Name() string { return fi.name } + +// Size return file size func (fi bindataFileInfo) Size() int64 { return fi.size } + +// Mode return file mode func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } + +// Mode return file modify time func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } + +// IsDir return file whether a directory func (fi bindataFileInfo) IsDir() bool { - return false + return fi.mode&os.ModeDir != 0 } + +// Sys return file is sys mode func (fi bindataFileInfo) Sys() interface{} { return nil } @@ -104,7 +113,7 @@ func cssHoundCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/hound.css", size: 6037, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/hound.css", size: 6037, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -124,7 +133,7 @@ func cssOcticonsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -144,7 +153,7 @@ func cssOcticonsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -164,7 +173,7 @@ func cssOcticonsOcticonsLocalTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -184,7 +193,7 @@ func cssOcticonsOcticonsCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -204,7 +213,7 @@ func cssOcticonsOcticonsEot() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -224,7 +233,7 @@ func cssOcticonsOcticonsLess() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -244,7 +253,7 @@ func cssOcticonsOcticonsSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -264,7 +273,7 @@ func cssOcticonsOcticonsTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -284,7 +293,7 @@ func cssOcticonsOcticonsWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -304,7 +313,7 @@ func cssOcticonsSprocketsOcticonsScss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -324,7 +333,7 @@ func excluded_filesTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -344,7 +353,7 @@ func faviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -364,7 +373,7 @@ func imagesBusyGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -384,7 +393,7 @@ func indexTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -404,7 +413,7 @@ func jsJsxtransformer0122Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -424,7 +433,7 @@ func jsCommonJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.js", size: 1503, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "js/common.js", size: 1503, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -444,7 +453,7 @@ func jsExcluded_filesJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/excluded_files.js", size: 4048, mode: os.FileMode(420), modTime: time.Unix(1581467325, 0)} + info := bindataFileInfo{name: "js/excluded_files.js", size: 4048, mode: os.FileMode(420), modTime: time.Unix(1582790922, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -464,7 +473,7 @@ func jsHoundJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/hound.js", size: 13855, mode: os.FileMode(420), modTime: time.Unix(1581467325, 0)} + info := bindataFileInfo{name: "js/hound.js", size: 13855, mode: os.FileMode(420), modTime: time.Unix(1582790922, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -484,7 +493,7 @@ func jsJquery213MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -504,7 +513,7 @@ func jsReact0122MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -524,7 +533,7 @@ func open_searchTplXml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1581467322, 0)} + info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} a := &asset{bytes: bytes, info: info} return a, nil } From e876521116e639e0f2b91a6bed772ba2fa681895 Mon Sep 17 00:00:00 2001 From: Rebecca Lau Date: Fri, 23 Oct 2020 20:56:36 -0400 Subject: [PATCH 15/37] update Go version requirement in README file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfc30c67..8c46cf16 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ We've used many similar tools in the past, and most of them are either too slow, Which brings us to... ## Requirements -* Go 1.4+ +* Go 1.13+ Yup, that's it. You can proxy requests to the Go service through Apache/nginx/etc., but that's not required. From 06e14d9d6116bfaf74a20df445843018b3741578 Mon Sep 17 00:00:00 2001 From: Kartikay Shandil Date: Fri, 30 Oct 2020 20:30:07 +0530 Subject: [PATCH 16/37] Add a -version flag to Houndd (#362) This commit adds a `-version` flag to houndd. Running `houndd -version` prints the current version and exits. Co-authored-by: Kartikay Shandil --- cmds/houndd/main.go | 16 ++++++++++++++++ go.mod | 5 ++++- go.sum | 3 +++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/cmds/houndd/main.go b/cmds/houndd/main.go index cb1ef97d..43d4a304 100644 --- a/cmds/houndd/main.go +++ b/cmds/houndd/main.go @@ -3,6 +3,7 @@ package main import ( "encoding/json" "flag" + "fmt" "log" "net/http" "os" @@ -13,6 +14,7 @@ import ( "strings" "syscall" + "github.com/blang/semver" "github.com/hound-search/hound/api" "github.com/hound-search/hound/config" "github.com/hound-search/hound/searcher" @@ -113,6 +115,14 @@ func runHttp( return http.ListenAndServe(addr, m) } +func getVersion() semver.Version { + return semver.Version{ + Major: 0, + Minor: 3, + Patch: 0, + } +} + func main() { runtime.GOMAXPROCS(runtime.NumCPU()) info_log = log.New(os.Stdout, "", log.LstdFlags) @@ -121,9 +131,15 @@ func main() { flagConf := flag.String("conf", "config.json", "") flagAddr := flag.String("addr", ":6080", "") flagDev := flag.Bool("dev", false, "") + flagVer := flag.Bool("version", false, "Display version and exit") flag.Parse() + if *flagVer { + fmt.Printf("houndd v%s", getVersion()) + os.Exit(0) + } + var cfg config.Config if err := cfg.LoadFromFile(*flagConf); err != nil { panic(err) diff --git a/go.mod b/go.mod index aeb1cf23..275c0bcc 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module github.com/hound-search/hound go 1.13 -require github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect +require ( + github.com/blang/semver v3.5.1+incompatible + github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect +) diff --git a/go.sum b/go.sum index 19845fb4..44ac122f 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,6 @@ +github.com/blang/semver v1.1.0 h1:ol1rO7QQB5uy7umSNV7VAmLugfLRD+17sYJujRNYPhg= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/go-bindata/go-bindata v1.0.0 h1:DZ34txDXWn1DyWa+vQf7V9ANc2ILTtrEjtlsdJRF26M= github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE= github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= From d8695dee250637192c926bd61b746b8baae58bfe Mon Sep 17 00:00:00 2001 From: Blobb Ered <5307533+blobbered@users.noreply.github.com> Date: Fri, 30 Oct 2020 12:27:44 -0400 Subject: [PATCH 17/37] Add padding between advanced mode text inputs * add margin bottom to fields that are not last * update front end bundles Co-authored-by: Blobb Ered <@blobbered> --- package-lock.json | 270 ---------------------------------------- ui/assets/css/hound.css | 7 +- ui/bindata.go | 88 +++++++------ 3 files changed, 56 insertions(+), 309 deletions(-) diff --git a/package-lock.json b/package-lock.json index 727cfdb9..e915ed48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -935,15 +935,6 @@ "@babel/plugin-transform-react-jsx-source": "^7.8.3" } }, - "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", @@ -1742,12 +1733,6 @@ "integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA==", "dev": true }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, "@types/prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", @@ -3012,12 +2997,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -3181,19 +3160,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@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": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3645,15 +3611,6 @@ "prr": "~1.0.1" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, "es-abstract": { "version": "1.17.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", @@ -4202,15 +4159,6 @@ "locate-path": "^3.0.0" } }, - "find-versions": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", - "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", - "dev": true, - "requires": { - "semver-regex": "^2.0.0" - } - }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", @@ -5262,119 +5210,6 @@ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true }, - "husky": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.2.5.tgz", - "integrity": "sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^6.0.0", - "find-versions": "^3.2.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", - "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5402,24 +5237,6 @@ "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -5545,12 +5362,6 @@ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -7780,12 +7591,6 @@ "type-check": "~0.3.2" } }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -8495,12 +8300,6 @@ "mimic-fn": "^2.1.0" } }, - "opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", - "dev": true - }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -8630,15 +8429,6 @@ "readable-stream": "^2.1.5" } }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -8653,18 +8443,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -8737,12 +8515,6 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -8807,15 +8579,6 @@ "find-up": "^3.0.0" } }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -9310,12 +9073,6 @@ "regenerate": "^1.4.0" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, "regenerator-transform": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", @@ -9692,18 +9449,6 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "semver-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", - "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", - "dev": true - }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -11347,12 +11092,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11436,15 +11175,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "yaml": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", - "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.7" - } - }, "yargs": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", diff --git a/ui/assets/css/hound.css b/ui/assets/css/hound.css index cd29df5c..d2de2569 100644 --- a/ui/assets/css/hound.css +++ b/ui/assets/css/hound.css @@ -1,4 +1,3 @@ - body { margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; @@ -102,7 +101,7 @@ button:focus { box-shadow: 0 1px 6px rgba(0,0,0,0.2); color: #aaa; font-size: 12px; - line-height: 24px; + line-height: 1.5rem; background-color: #fff; } @@ -143,6 +142,10 @@ button:focus { color: #666; } +.field:not(:last-child) { + margin-bottom: 0.5rem; +} + .multiselect { box-sizing: border-box; width: 100%; diff --git a/ui/bindata.go b/ui/bindata.go index 4decc4dc..7e715932 100644 --- a/ui/bindata.go +++ b/ui/bindata.go @@ -1,4 +1,4 @@ -// Code generated for package ui by go-bindata DO NOT EDIT. (@generated) +// Code generated by go-bindata. // sources: // .build/ui/css/hound.css // .build/ui/css/octicons/LICENSE.txt @@ -17,11 +17,14 @@ // .build/ui/index.tpl.html // .build/ui/js/JSXTransformer-0.12.2.js // .build/ui/js/common.js +// .build/ui/js/common.test.js // .build/ui/js/excluded_files.js // .build/ui/js/hound.js // .build/ui/js/jquery-2.1.3.min.js // .build/ui/js/react-0.12.2.min.js // .build/ui/open_search.tpl.xml +// DO NOT EDIT! + package ui import ( @@ -68,37 +71,26 @@ type bindataFileInfo struct { modTime time.Time } -// Name return file name func (fi bindataFileInfo) Name() string { return fi.name } - -// Size return file size func (fi bindataFileInfo) Size() int64 { return fi.size } - -// Mode return file mode func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } - -// Mode return file modify time func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } - -// IsDir return file whether a directory func (fi bindataFileInfo) IsDir() bool { - return fi.mode&os.ModeDir != 0 + return false } - -// Sys return file is sys mode func (fi bindataFileInfo) Sys() interface{} { return nil } -var _cssHoundCss = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\x6b\x6f\xe2\x3a\x1a\xfe\xce\xaf\xb0\xa6\x3a\x9a\x33\x1d\x02\xe1\x5a\x9a\xea\x54\x0a\x29\x43\x29\xd3\x0b\x14\xda\xd2\xd5\x6a\xe5\x24\x4e\xe2\xe2\xc4\xa9\xe3\x00\xed\x68\xfe\xfb\xca\xb9\x40\x12\x42\xa7\xfb\x69\x85\xd4\x26\x8e\xdf\x8b\x9f\xf7\xee\x8a\x4e\xcd\x37\xf0\xab\x02\x80\x0b\x99\x8d\x3d\x05\xc8\x67\x15\x00\x2c\xea\x71\xc9\x82\x2e\x26\x6f\x0a\xf8\x7a\x89\xc8\x0a\x71\x6c\x40\x70\x83\x42\xf4\xb5\x0a\xb6\x0b\x55\xa0\x32\x0c\x49\x15\x04\xd0\x0b\xa4\x00\x31\x6c\x09\x72\x83\x12\xca\x14\x70\xd4\x6a\xb5\xc4\xab\x0e\x8d\xa5\xcd\x68\xe8\x99\x52\xfa\xc5\xb2\xac\xb3\xca\xef\x4a\x05\x46\xb2\xd3\x55\xf9\x34\x5e\xad\x11\xec\x2d\x25\x9b\xc1\x37\xf0\x6b\xfb\x11\x42\x08\x7e\x57\x2a\xd8\xf3\x43\x1e\x51\xe5\x94\xc4\x9e\x83\x18\xe6\x1f\x89\x03\x40\xa7\xcc\x44\x4c\x01\x0d\x7f\x03\x02\x4a\xb0\x09\x8e\x0c\xc3\x88\x44\x46\x6c\x15\x8b\x1a\x61\x10\x31\xa7\x21\x27\xd8\x43\x0a\xf0\xa8\x87\x76\xb4\x52\x4e\x55\xb1\xba\x91\x02\x07\x9a\x74\xad\x00\x19\xc8\xa0\xe3\x6f\x00\xb3\x75\xf8\xb7\x5c\x6d\x74\x5a\xd5\x66\xa7\x53\xad\x75\xbe\x45\x12\xf4\x90\x73\xea\x7d\xa8\x79\xb4\x1e\xe0\x77\xa4\x80\x46\xdb\xdf\x88\x25\x8e\x36\x5c\x82\x04\xdb\x9e\x02\x0c\xe4\x71\xc4\xc4\xaa\x89\x03\x9f\xc0\x88\x58\x68\x29\xe9\x84\x1a\xcb\x2c\xf2\xe9\x81\xf7\xa1\xd8\x2a\x1e\x43\x21\x67\xce\xc6\xa0\x89\xc3\x40\x01\xad\x58\xb4\x11\xb2\x40\x90\xf8\x14\xc7\x72\xb7\x87\xc8\xe0\x54\x04\xa0\x5b\x02\xc0\x49\x82\xc0\x11\xa3\x94\x27\xce\xb6\x91\xd6\xd8\xe4\x8e\x02\x4e\xbb\x72\x2c\x6e\xeb\x80\x00\x86\x9c\x8a\x15\x1f\x9a\x26\xf6\x6c\xb1\xd4\x94\xfd\xcd\xee\x4f\xc4\xad\x72\xb4\x73\x85\x98\x56\xe2\xd4\x57\x40\x3b\xc7\x4f\xd2\x29\xe7\xd4\x4d\x97\x7f\x57\x2a\xf5\x63\x70\x8f\x20\x33\x1c\x60\x50\x8f\x43\xec\x21\x06\x8e\xeb\x82\x5b\xec\x8c\x5b\x6c\x39\xd4\x49\x64\xfa\x44\xd3\x86\x2c\xff\x15\xa9\x45\x03\xcc\x31\xf5\x14\xc0\x10\x81\x1c\xaf\xa2\x4d\xef\x12\xf6\x4c\xb4\x51\x40\x63\xdf\x2f\x84\xbf\x65\x80\x89\x7e\xb5\xe6\xb7\x82\x3a\xf1\x71\x52\x55\xce\xc1\xee\x78\x0e\xc2\xb6\xc3\x15\xd0\xe9\xc4\x47\xcb\x00\x73\x12\xaf\xa4\x16\x8c\xf7\x1d\x30\x6a\x64\xa0\x56\x4a\xb0\x11\x9e\x16\x71\x49\x76\xea\x74\x93\x75\xa1\x6e\xb7\x5b\xf4\xc9\x5e\x4c\x1b\x2d\xad\x13\x9d\x5a\xb2\x7c\xb6\x87\x9a\x64\x20\x42\x4a\xa0\x5b\x21\x26\xd2\x06\x49\x3d\xda\xc5\xa6\x29\x30\xfe\x5d\x49\x0f\x5d\x8b\x3d\x4c\x82\xa6\x29\x25\xd1\x72\x80\xf5\x21\x5e\x3b\xa1\x7f\x15\x00\x0e\x42\xdd\xc5\x1c\x24\x81\x28\x80\x36\xa9\x09\x79\xe2\xc7\x39\xb4\x22\x9c\x62\xcc\xce\x4a\x0c\x90\x48\x38\x69\x26\x60\xee\xc2\x0c\xbb\xd0\x46\x0a\x08\x19\xf9\xdb\x84\x1c\x2a\xd1\x7b\xdd\xf7\xec\x33\x1d\x06\xa8\xdb\xae\xe2\x87\xfe\xed\x74\x2d\x8f\x87\x36\x55\x55\x55\xbd\xb9\x9f\x3b\x83\xb9\xad\xaa\xaa\x36\x12\xef\x58\x53\x17\xe2\x7f\x77\xba\x5e\x69\xaa\xaa\xf6\x1f\xe6\x64\x30\x79\x98\x2e\xd6\xdf\x9b\x8b\xc9\x74\x38\xb8\x56\x37\x3f\x96\x0f\xea\x15\x59\xa8\x83\x2b\x4d\xed\x6b\x73\x47\x9d\xe0\xc7\xc0\xb9\x7a\x54\xfb\xda\x74\xae\xda\x27\xdf\x9f\x02\x76\x3d\x5b\x62\xfd\xe6\xa2\x6f\x5e\xac\xb8\x87\x96\xb2\x75\x6f\xbd\xce\xe8\xe4\x6e\x72\x87\x06\x3d\x35\x1c\x77\x46\x17\xcb\xfe\x50\xd5\x7a\xea\xe0\xde\xe0\x93\xc1\x48\xbd\xdc\x3c\x8d\x67\xf3\x91\xdd\x3f\x51\x35\x26\x6b\xea\xa5\xc1\xb4\x91\x7a\x75\xe3\xca\xea\x77\xc2\xd5\x9f\x4b\xd5\x68\xbe\x3c\x92\x31\x1d\x2f\x0d\x4f\x1b\x6b\xa6\x36\x95\x71\xcb\x6f\x93\x1b\x97\xd1\xab\xf5\xdd\x74\x38\xb0\xb5\xee\x83\x33\xa4\x4d\x1b\xce\x9e\xe6\x93\xb9\xb3\x1e\x4c\xd8\xdb\x38\x70\xe7\xb7\xf0\x79\xde\x96\x1f\x07\xb7\x74\xb6\xec\x0d\xf4\x16\x9e\x0d\x17\xf6\xd0\x31\x6c\x38\x71\x8d\xe9\xe2\x67\xfb\x46\xee\xbf\x5c\x92\xef\x53\x6f\x84\x2e\xc2\x51\x03\xff\xb8\xea\x0d\xfa\x78\xa5\xc9\xb6\x7b\xa2\x4f\xb5\x60\xf8\xd2\x58\xf2\xf1\x68\x34\xdc\x74\x7d\xea\xdc\xbc\xdc\x3c\x9f\x4e\x17\x13\x6f\x43\xf0\xcc\xbe\x9c\x5e\x37\x60\xfd\x89\x5d\xb6\x97\xa3\xc1\xb3\x33\x78\x0f\xf8\x4c\x76\x6d\x34\x73\xfb\xfe\xd5\xf3\x3b\x72\xaf\x5e\xec\x65\xb7\xe3\xc1\xd9\xed\x29\x54\xef\x56\xb7\x3f\x38\x5c\xa9\x8f\xd7\xaf\x63\xf3\xe5\xf2\xcd\x31\x36\xa3\xc7\xd3\xd7\x70\x38\x7d\x78\xb8\x6d\x86\x4e\x9d\xcc\x58\xcf\x7a\xbc\x7e\xd5\x07\xeb\x86\xb1\x7a\x7f\xa8\xab\xe4\xe9\x09\x1b\xb4\x69\xf4\x7a\xed\x91\xbd\x7e\x76\xd4\x8b\xeb\x45\xf3\x7e\xd6\xbf\x99\x5c\x4c\xd6\xef\x73\x75\xe9\x8e\x17\xb6\x4a\x37\x2b\x8d\x8c\xd5\xe1\xf3\xeb\xc5\xf5\x45\x5f\xef\x9d\x8e\xd6\xd3\x17\x32\x92\xeb\x56\xfd\xf1\xfb\xe8\xa2\xc5\x27\x3f\x27\x77\x58\x6f\xbe\x4e\x84\x7d\xd5\xfb\xf9\xc3\xed\x74\xdc\xd1\x16\xa3\xd1\x3f\xdf\x0a\x4e\xc4\x90\x8f\x20\x17\xb5\x27\x79\x2c\x7c\xdf\x65\xa0\xb8\x24\x64\x2a\x43\x66\x57\x12\xb4\x27\x49\xde\x3b\xc2\x9e\xbe\x4b\xd9\xa5\xa1\x9f\xa6\xe4\xce\x5f\x7f\x48\xc8\x6d\x7f\x03\x92\x64\x50\x9e\x0d\x3f\x99\xff\x40\xb6\xba\x17\xb3\x4d\x12\x5c\x51\x81\x4b\x03\xb0\xd9\xde\x8b\xb8\x62\x4b\x71\x04\xcd\xd5\x1f\xce\x49\x57\x88\x59\x44\xe8\xe6\x60\xd3\x44\x5e\x36\xc4\xe5\x7c\x82\x8d\x6a\x30\x83\x5e\x7a\xc8\x78\x5b\x35\xdd\x01\xe4\x5a\x23\x00\x08\x06\x48\xc2\x9e\x44\x43\x1e\xf7\x2f\x0e\x36\x91\x94\xea\x91\xd4\xd1\x6c\x19\xad\x1f\x83\x6b\x64\x62\x08\xa8\xfe\x82\x0c\x0e\x0c\x82\x20\xb3\xf0\x26\x4a\x4a\x82\xee\x1c\xd4\x2c\x8c\x88\x19\xf7\x22\x7b\xea\xa6\xc7\xdc\x6e\x3b\x07\x04\xea\x88\x44\xdb\x8b\xcc\x09\xb2\xa2\xb2\x02\x80\x45\xa8\x70\x2b\xb1\x90\x35\x77\x52\x30\x53\x20\x4f\x4f\x4f\x4b\x25\xc4\x0f\xd2\xae\x2c\xd5\x8f\xc1\x0d\x5a\x83\xa8\xf9\x00\x16\x65\x2e\xe4\x5c\x60\x22\xea\x2a\xda\x70\xb1\x04\xdc\xac\x26\x91\x12\x9f\x38\x4d\x24\xe2\x5f\xfc\xcd\x47\xff\x08\x46\xff\x8e\xa4\x95\xfb\xc1\x9f\x7c\x79\x5b\xb4\x77\x25\xb3\x51\x38\x6f\x54\xe8\x84\xd5\xdc\x90\x70\x1c\x20\x22\x54\xfd\x54\xa0\xa4\xcc\x33\xed\x47\xa1\x42\x77\xb2\xe5\x79\xbf\xf1\xdc\x57\x22\x8a\x52\x51\x06\x61\x5c\xfc\xb2\xbe\x27\xba\xa6\xd4\xff\xa8\x0f\x0d\xcc\xdf\x4a\xfc\x0f\xa4\xdf\x92\x56\xa4\xcc\xd9\xcb\x5a\xbb\xac\xe4\x73\x80\xdc\x5d\xa7\x1a\xf0\x37\x12\x75\xc2\xcc\x85\x64\x2f\x68\x7f\x6f\x3b\xb1\x73\x50\x0b\x38\xe4\x71\x63\x98\xcf\x25\x25\x71\x9d\x4b\x26\x72\x79\xc2\x29\x0a\xaa\x1f\x03\x2d\x0d\x95\x44\xd6\x71\xbd\x12\x3f\x29\x3a\xb2\x28\x43\xd5\xf4\x15\x5a\x22\x33\xc6\xe3\x85\xc7\x91\xc7\x15\xf0\x05\x7c\xd9\xef\x55\x04\xe3\x7d\x12\x21\x45\x58\x9d\x3b\xb1\x6f\x44\x1b\xa4\x28\x94\x7e\x65\xe3\x08\xa4\xc4\x71\xef\xb5\xfb\x18\xbf\x96\x80\x53\x5b\x41\x52\xdd\x5b\x2d\xf4\x9e\xc5\xbe\x3e\x85\xa6\x93\x26\xf3\xa8\x34\x04\x21\xe1\xf9\xe1\x6d\x8b\x5c\x06\xf0\xe6\x87\xa3\x44\xb6\x75\x6e\xc8\x65\xa9\x20\xa1\x4c\xd3\xb9\xf0\xe1\x46\xd4\x4c\xee\x52\xee\x4e\x9b\x73\x60\xe2\x55\xc6\x75\x32\x26\xcf\x6d\xac\x21\xc6\x28\xcb\x4d\x7f\x3d\xd8\x35\x5b\xfa\xa1\xec\x6e\x58\x3d\xd4\x3a\x10\x4b\x16\x44\x7a\x1c\x4e\x5b\xa7\x12\x41\x7e\x78\xb8\x29\x53\xe5\x1c\x04\x9c\x51\xcf\xce\x0e\x14\x49\x3f\xdd\x48\x67\x87\x1a\x43\x3e\xcd\x6e\x48\xa7\x8b\x04\xb9\xed\x96\x73\x50\xe3\x98\x13\x94\x3b\xe0\x7e\x47\x9d\x9a\x26\x51\x7b\xcb\xae\x53\xce\xec\x1c\xd4\x3c\xe8\xc6\x4c\x8b\xed\x2f\xa7\xfe\x01\x12\x6a\x70\x6c\x50\x4f\xda\xea\x9e\xea\xa3\xeb\xfa\xd9\x07\x67\xb5\x30\x41\x81\x60\xe0\x52\xc8\x4a\xe7\x90\x52\x1d\x0a\xd9\x31\xe5\x94\xf3\xd3\xd8\x3a\xc9\x2c\x77\x68\xfe\x2c\x31\xb4\xd9\x13\xbf\x0c\xd3\x1c\xce\x79\xe3\xef\xfe\xa4\x62\xb6\xd1\xb5\x0d\xab\x5c\x4d\x69\xc9\x87\x7b\x8b\x8e\xf8\xc5\x72\x63\x79\x70\xdf\xb2\xa9\x52\xd2\xf6\x4e\xa5\x7e\x0c\x54\x42\xe8\x1a\x38\x94\xe1\x77\x31\x6d\x12\x10\x18\x8c\x12\x22\xca\x24\xf6\x80\x41\x4d\x54\x05\x01\x76\x31\x81\x0c\x70\x0a\x6c\xcc\x9d\x50\xaf\x19\xd4\x2d\x16\xcb\x38\xb0\xa3\x32\x05\xb9\xe1\x64\x87\x96\xd4\x6b\x9a\x99\x88\x90\xc5\x2f\xb3\x5f\xb1\x30\x0b\xb8\x64\x38\x38\x69\x2a\x12\xda\x38\xee\xcb\x11\x8e\x09\x09\x2c\xa3\xdb\x3a\xfe\x07\xa4\xc2\x3a\x02\xe1\xb8\x1e\x38\x98\x23\x29\xf0\xa1\x81\x14\xe0\x33\x54\xb6\x4f\xfc\xf7\x42\x77\xff\x8e\xe4\xeb\x3d\x0d\x99\x81\x80\x46\x4d\x04\xee\x18\xfd\x5a\x05\x2e\xf5\x68\xc4\x6d\xef\xbe\x4a\xa3\x5e\x40\x09\x0c\xaa\xe0\xcb\x4f\xac\x23\x06\x45\xf5\x04\xd7\xd4\xa3\x5f\xaa\xe0\x1a\x79\x84\x56\x81\x46\x43\x86\x11\x2b\xb0\x49\x1c\x37\xbd\x41\xc8\x26\xcc\x28\x3a\x72\x19\x46\x0c\x87\x9d\xec\x90\x98\x9f\xc1\x33\xc0\x20\x84\x3e\xbc\xb4\x29\xb9\xf6\x29\x16\xbe\x3c\x50\x59\x9b\x64\x31\x2b\xa6\x91\x5e\x1a\xca\x79\xea\xac\x2b\x94\x91\x47\x3e\x51\x4e\x9b\xee\x57\x1c\xe1\x99\x71\x87\x22\x50\x32\x91\x41\x63\xa0\x15\x10\x7a\x26\x62\x62\xf3\x81\x60\x8a\xe0\x28\xe7\xbc\x82\xe4\xff\x66\xfc\x9c\x61\xe5\xd4\xbc\x07\xec\xf3\x59\x6f\x16\x07\xfa\x43\x33\x95\xbb\x4d\xd1\x29\x31\x3f\x75\x83\x1a\x8d\x52\xcd\x4e\x27\xba\x61\x6b\xb4\xc5\x40\x95\xdc\xb2\xd5\x92\x6b\x92\xed\xe5\x56\xf4\x9e\xe9\xc9\xd2\xae\x75\x77\xa3\x49\xa0\x1f\x20\x05\xa4\x4f\x07\xd8\x24\x39\xe7\x80\x41\x0b\xe9\xb7\x18\x3f\xf1\xcc\x51\xc6\xb7\x46\x70\xc0\x01\x37\x73\x29\xfc\x70\xdf\x8c\x10\xfa\x80\x4d\x8d\x21\x18\x24\xf7\x46\x39\x1b\x79\x74\xcd\x60\xa6\x42\x4a\x99\xeb\xd8\xa4\x2a\xc5\xb7\xb7\x9d\x38\x9c\x0b\xfb\x6a\xf1\x58\x80\xcc\x03\x18\xd8\x0c\xbe\xc5\x6d\x05\xda\x18\x24\x34\x91\xf9\x9f\x9d\x6a\xff\xeb\x0d\xe5\x7f\x03\x00\x00\xff\xff\x33\x80\x92\xb0\x95\x17\x00\x00" +var _cssHoundCss = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\x6b\x73\xa2\xbe\x1a\x7f\xef\xa7\xc8\x6c\x67\x67\x77\xbb\xa2\xa8\xb5\xb5\x74\xfe\x9d\x41\xea\xb6\xd6\xed\x45\xab\xbd\x9d\x39\x73\x26\x40\x80\xd4\x40\x68\x08\x6a\xbb\xb3\xdf\xfd\x4c\x02\x28\x20\x76\xf7\xbc\x3a\xe3\x4c\x0b\x21\xcf\x25\xbf\xe7\x1e\x93\xda\x6f\xe0\x57\x0d\x00\x1f\x32\x17\x07\x1a\x50\x4f\x6a\x00\x38\x34\xe0\x8a\x03\x7d\x4c\xde\x34\xf0\xe5\x02\x91\x05\xe2\xd8\x82\xe0\x1a\xc5\xe8\x4b\x1d\xac\x17\xea\x40\x67\x18\x92\x3a\x88\x60\x10\x29\x11\x62\xd8\x11\xe4\x16\x25\x94\x69\x60\xaf\xd3\xe9\x88\x57\x13\x5a\x73\x97\xd1\x38\xb0\x95\xec\x8b\xe3\x38\x27\xb5\xdf\xb5\x1a\x94\xb2\xb3\x55\xf5\x38\x59\x6d\x10\x1c\xcc\x15\x97\xc1\x37\xf0\x6b\xfd\x11\x42\x08\x7e\xd7\x6a\x38\x08\x63\x2e\xa9\x0a\x4a\xe2\xc0\x43\x0c\xf3\x8f\xc4\x01\x60\x52\x66\x23\xa6\x81\x56\xb8\x02\x11\x25\xd8\x06\x7b\x96\x65\x49\x91\x92\xad\xe6\x50\x2b\x8e\x24\x73\x1a\x73\x82\x03\xa4\x81\x80\x06\x68\x43\xab\x14\x54\x15\xab\x2b\x25\xf2\xa0\x4d\x97\x1a\x50\x81\x0a\xba\xe1\x0a\x30\xd7\x84\x5f\xd5\x7a\xab\xdb\xa9\xb7\xbb\xdd\x7a\xa3\xfb\x4d\x4a\x30\x63\xce\x69\xf0\xa1\xe6\x72\x3d\xc2\xef\x48\x03\xad\x83\x70\x25\x96\x38\x5a\x71\x05\x12\xec\x06\x1a\xb0\x50\xc0\x11\x13\xab\x36\x8e\x42\x02\x25\xb1\xd0\x52\x31\x09\xb5\xe6\x79\xe4\xb3\x03\x6f\x43\xb1\x56\x3c\x81\x42\xcd\x9d\x8d\x41\x1b\xc7\x91\x06\x3a\x89\x68\x2b\x66\x91\x20\x09\x29\x4e\xe4\xae\x0f\x91\xc3\xa9\x0c\xc0\x61\x05\x00\x47\x29\x02\x7b\x8c\x52\x9e\x3a\xdb\x4a\x59\x62\x9b\x7b\x1a\x38\x3e\x54\x13\x71\x6b\x07\x04\x30\xe6\x54\xac\x84\xd0\xb6\x71\xe0\x8a\xa5\xb6\x1a\xae\x36\x7f\x24\xb7\xda\xde\xc6\x15\x12\x5a\x85\xd3\x50\x03\x07\x05\x7e\x8a\x49\x39\xa7\x7e\xb6\xfc\xbb\x56\x6b\xee\x83\x3b\x04\x99\xe5\x01\x8b\x06\x1c\xe2\x00\x31\xb0\xdf\x14\xdc\x12\x67\x5c\x63\xcb\xa1\x49\xa4\xe9\x53\x4d\x5b\xaa\xfa\x59\xaa\x45\x23\xcc\x31\x0d\x34\xc0\x10\x81\x1c\x2f\xe4\xa6\x77\x05\x07\x36\x5a\x69\xa0\xb5\xed\x17\xc2\xdf\x72\xc0\xc8\x5f\xa3\xfd\xad\xa4\x4e\x72\x9c\x4c\x95\x53\xb0\x39\x9e\x87\xb0\xeb\x71\x0d\x74\xbb\xc9\xd1\x72\xc0\x1c\x25\x2b\x99\x05\x93\x7d\x3b\x8c\x2a\x0d\xd4\xc9\x08\x56\xc2\xd3\x24\x97\x74\xa7\x49\x57\x79\x17\x3a\x3c\x3c\x2c\xfb\x64\x2f\xa1\x95\x4b\xcb\x54\xa7\x8e\xaa\x9e\x6c\xa1\xa6\x58\x88\x90\x0a\xe8\x16\x88\x89\xb4\x41\x32\x8f\xf6\xb1\x6d\x0b\x8c\x7f\xd7\xb2\x43\x37\x12\x0f\x53\xa0\x6d\x2b\x69\xb4\xec\x60\xbd\x8b\xd7\x46\xe8\xe7\x12\xc0\x51\x6c\xfa\x98\x83\x34\x10\x05\xd0\x36\xb5\x21\x4f\xfd\xb8\x80\x96\xc4\x29\xc1\xec\xa4\xc2\x00\xa9\x84\xa3\x76\x0a\xe6\x26\xcc\xb0\x0f\x5d\xa4\x81\x98\x91\xaf\x36\xe4\x50\x93\xef\xcd\x30\x70\x4f\x4c\x18\xa1\xc3\x83\x3a\xbe\xef\xdf\x4c\x96\xea\xe8\xdc\xa5\xba\xae\xeb\xd7\x77\x33\x6f\x30\x73\x75\x5d\x37\x86\xe2\x1d\x1b\xfa\x93\xf8\x7f\x38\x59\x2e\x0c\x5d\xd7\xfb\xf7\x33\x32\x18\xdf\x4f\x9e\x96\xdf\xdb\x4f\xe3\xc9\xf9\xe0\x4a\x5f\xfd\x98\xdf\xeb\x97\xe4\x49\x1f\x5c\x1a\x7a\xdf\x98\x79\xfa\x18\x3f\x44\xde\xe5\x83\xde\x37\x26\x33\xdd\x3d\xfa\xfe\x18\xb1\xab\xe9\x1c\x9b\xd7\x67\x7d\xfb\x6c\xc1\x03\x34\x57\x9d\x3b\xe7\x75\x4a\xc7\xb7\xe3\x5b\x34\xe8\xe9\xf1\xa8\x3b\x3c\x9b\xf7\xcf\x75\xa3\xa7\x0f\xee\x2c\x3e\x1e\x0c\xf5\x8b\xd5\xe3\x68\x3a\x1b\xba\xfd\x23\xdd\x60\xaa\xa1\x5f\x58\xcc\x18\xea\x97\xd7\xbe\xaa\x7f\x27\x5c\xff\x39\xd7\xad\xf6\xcb\x03\x19\xd1\xd1\xdc\x0a\x8c\x91\x61\x1b\x13\x15\x77\xc2\x03\x72\xed\x33\x7a\xb9\xbc\x9d\x9c\x0f\x5c\xe3\xf0\xde\x3b\xa7\x6d\x17\x4e\x1f\x67\xe3\x99\xb7\x1c\x8c\xd9\xdb\x28\xf2\x67\x37\xf0\x79\x76\xa0\x3e\x0c\x6e\xe8\x74\xde\x1b\x98\x1d\x3c\x3d\x7f\x72\xcf\x3d\xcb\x85\x63\xdf\x9a\x3c\xfd\x3c\xb8\x56\xfb\x2f\x17\xe4\xfb\x24\x18\xa2\xb3\x78\xd8\xc2\x3f\x2e\x7b\x83\x3e\x5e\x18\xaa\xeb\x1f\x99\x13\x23\x3a\x7f\x69\xcd\xf9\x68\x38\x3c\x5f\x1d\x86\xd4\xbb\x7e\xb9\x7e\x3e\x9e\x3c\x8d\x83\x15\xc1\x53\xf7\x62\x72\xd5\x82\xcd\x47\x76\x71\x30\x1f\x0e\x9e\xbd\xc1\x7b\xc4\xa7\xaa\xef\xa2\xa9\xdf\x0f\x2f\x9f\xdf\x91\x7f\xf9\xe2\xce\x0f\xbb\x01\x9c\xde\x1c\x43\xfd\x76\x71\xf3\x83\xc3\x85\xfe\x70\xf5\x3a\xb2\x5f\x2e\xde\x3c\x6b\x35\x7c\x38\x7e\x8d\xcf\x27\xf7\xf7\x37\xed\xd8\x6b\x92\x29\xeb\x39\x0f\x57\xaf\xe6\x60\xd9\xb2\x16\xef\xf7\x4d\x9d\x3c\x3e\x62\x8b\xb6\xad\x5e\xef\x60\xe8\x2e\x9f\x3d\xfd\xec\xea\xa9\x7d\x37\xed\x5f\x8f\xcf\xc6\xcb\xf7\x99\x3e\xf7\x47\x4f\xae\x4e\x57\x0b\x83\x8c\xf4\xf3\xe7\xd7\xb3\xab\xb3\xbe\xd9\x3b\x1e\x2e\x27\x2f\x64\xa8\x36\x9d\xe6\xc3\xf7\xe1\x59\x87\x8f\x7f\x8e\x6f\xb1\xd9\x7e\x1d\x0b\xfb\xea\x77\xb3\xfb\x9b\xc9\xa8\x6b\x3c\x0d\x87\xff\x7c\x2b\x39\x11\x43\x21\x82\x5c\xd4\x9e\xf4\xb1\xf4\x7d\x93\x81\x92\x92\x90\xab\x0c\xb9\x5d\x69\xd0\x1e\xa5\x79\x6f\x0f\x07\xe6\x26\x65\x57\x86\x7e\x96\x92\xbb\x9f\xff\x90\x90\x0f\xc2\x15\x48\x93\x41\x75\x36\xfc\xcb\xfc\x07\xf2\xd5\xbd\x9c\x6d\xd2\xe0\x92\x05\x2e\x0b\xc0\x56\xa3\xcb\x90\xff\x87\xa6\x62\x0f\xda\x8b\x3f\x9c\x94\x2e\x10\x73\x88\xd0\xce\xc3\xb6\x8d\x82\x7c\x90\xab\xc5\x14\x2b\xab\x30\x83\x41\x76\xcc\x64\x5b\x3d\xdb\x01\xd4\x46\x2b\x02\x08\x46\x48\xc1\x81\x42\x63\x9e\x74\x30\x1e\xb6\x91\x92\xe9\x91\x56\xd2\x7c\x21\x6d\xee\x83\x2b\x64\x63\x08\xa8\xf9\x82\x2c\x0e\x2c\x82\x20\x73\xf0\x4a\xa6\x25\x41\x77\x0a\x1a\x0e\x46\xc4\x4e\xba\x91\x2d\x75\xb3\x63\xae\xb7\x9d\x02\x02\x4d\x44\xe4\xf6\x32\x73\x82\x1c\x59\x58\x00\x70\x08\x15\x8e\x25\x16\x8a\xe9\x39\x2c\xe4\xfe\xe3\xe3\xe3\x4a\x11\xc9\x83\xb2\xa9\x4c\xcd\x7d\x70\x8d\x96\x40\xf6\x1f\xc0\xa1\xcc\x87\x9c\x0b\x50\x44\x69\x45\x2b\x2e\x96\x80\x9f\x57\x45\x6a\xf1\x17\xc7\x91\x22\xfe\xc5\xdf\x42\xf4\x8f\x60\xf4\x6f\x29\xad\xe0\x0a\xed\x83\x3f\x55\xb2\x72\xdd\xde\x54\xcd\x56\xe9\xbc\xb2\xd6\x09\xb3\x49\xe1\x5a\x40\xf9\x57\x8d\xc0\x88\x2b\x96\x87\x89\xfd\x2d\xdf\x63\x64\xfd\x84\x9a\x7a\xa2\xa0\xf2\x63\xc2\x71\x84\x88\x38\xe0\x5f\x45\x58\xa6\x52\xae\x6f\x29\x95\xf6\x6e\xbe\xae\x6f\x77\xac\xdb\xaa\xcb\xf0\x16\xf5\x13\x26\x55\x33\xef\xb2\xa2\xdd\xca\xdc\x96\x86\xd0\xc2\xfc\xad\xc2\x6d\x41\xf6\x2d\xed\x61\xaa\x62\xa4\xaa\x27\xcc\x4b\x3e\x05\xc8\xdf\xb4\xb8\x11\x7f\x23\xb2\x85\x66\x3e\x24\x5b\xd1\xfe\x7b\xdd\xc2\x9d\x82\x46\xc4\x21\x4f\x3a\xca\x62\x12\xaa\x48\x08\x85\x2c\xa4\x56\x67\xaa\xb2\xa0\xe6\x3e\x30\xb2\x08\x4b\x65\xed\x37\x6b\xc9\x93\x66\x22\x87\x32\x54\xcf\x5e\xa1\x23\x52\x6a\x32\x97\x04\x1c\x05\x5c\x03\x9f\xc0\xa7\xed\x26\x47\x30\xde\x26\x11\x52\x84\xd5\xb9\x97\xf8\x86\xdc\xa0\xc8\x08\xfc\x95\x0f\x3f\x90\x11\x27\x4d\xdb\xe6\x63\xf2\x5a\x01\x4e\x63\x01\x49\x7d\x6b\xb5\xd4\xb4\x96\x07\x82\x0c\x9a\x6e\x56\x05\x64\x4d\x89\x62\xc2\x8b\x53\xdf\x1a\xb9\x1c\xe0\xed\x0f\x67\x90\x7c\xcf\x5d\x9d\x40\x52\xca\xac\x0e\x08\x1f\x6e\xc9\x2e\x74\x93\xa9\x37\xda\x9c\x02\x1b\x2f\x72\xae\x93\x33\x79\x61\x63\x03\x31\x46\x59\x61\x6c\xec\xc1\x43\xbb\x63\xee\x2a\x0a\x96\xd3\x43\x9d\x1d\xb1\xe4\x40\x64\x26\xe1\xb4\x76\x2a\x91\x1a\x76\x4f\x45\x55\xaa\x9c\x82\x88\x33\x1a\xb8\xf9\x2c\x91\x36\xe2\xad\x6c\xe8\x68\x30\x14\xd2\xaa\x34\x92\x22\xb7\xde\x72\x0a\x1a\x1c\x73\x82\x0a\x07\xdc\x6e\xc5\x33\xd3\xa4\x6a\xaf\xd9\x75\xab\x99\x9d\x82\x46\x00\xfd\x84\x69\xb9\x6f\xe6\x34\xdc\x41\x42\x2d\x8e\x2d\x1a\x28\x6b\xdd\x33\x7d\x4c\xd3\x3c\xf9\xe0\xac\x0e\x26\x28\x12\x0c\x7c\x0a\x59\xe5\x00\x53\xa9\x43\x29\x3b\x66\x9c\x0a\x7e\x9a\x58\x27\x1d\x02\x77\x0d\xae\x15\x86\xb6\x7b\xe2\x97\x63\x5a\xc0\xb9\x68\xfc\xcd\x9f\x4c\xcc\x3a\xba\xd6\x61\x55\xa8\x44\x1d\x75\x6b\x0c\x58\x7b\x5f\x57\xfc\x12\xb9\x89\x3c\xb8\x6d\xd9\x4c\x29\x65\x7d\x19\xd3\xdc\x07\x3a\x21\x74\x09\x3c\xca\xf0\xbb\x18\x53\x09\x88\x2c\x46\x09\x11\xc5\x15\x07\xc0\xa2\x36\xaa\x83\x08\xfb\x98\x40\x06\x38\x05\x2e\xe6\x5e\x6c\x36\x2c\xea\x97\x4b\x6c\x12\xd8\xb2\x4c\x41\x6e\x79\xf9\x69\x27\xf3\x9a\x76\x2e\x22\x54\xf1\xcb\xed\xd7\x1c\xcc\xb2\x42\x98\xa7\x4d\xe2\xbe\x1a\xe1\x84\x70\x53\x40\xab\x64\x7e\x44\x2a\xac\x23\x10\x4e\xea\x81\x87\x39\x52\xa2\x10\x5a\x48\x03\x21\x43\x55\xfb\xc4\xff\x20\xf6\xb7\x2f\x57\xbe\xdc\xd1\x98\x59\x08\x18\xd4\x46\xe0\x96\xd1\x2f\x75\xe0\xd3\x80\x4a\x6e\x5b\x17\x5d\x06\x0d\x22\x4a\x60\x54\x07\x9f\x7e\x62\x13\x31\x28\xaa\x27\xb8\xa2\x01\xfd\x54\x07\x57\x28\x20\xb4\x0e\x0c\x1a\x33\x8c\x58\x89\x4d\xea\xb8\xd9\xd5\x43\x3e\x61\xca\xe8\x28\x64\x18\x31\x55\x76\xf3\xd3\x65\x71\x78\xcf\x01\x83\x10\xfa\xf0\xb6\xa7\xe2\xbe\xa8\x5c\xf8\x8a\x40\xe5\x6d\x92\xc7\xac\x9c\x46\x7a\x59\x28\x17\xa9\xf3\xae\x50\x45\x2e\x7d\xa2\x9a\x36\xdb\xaf\x79\xc2\x33\x93\x0e\x45\xa0\x64\x23\x8b\x26\x40\x6b\x20\x0e\x6c\xc4\xc4\xe6\x1d\xc1\x24\xe1\xa8\xe6\xbc\x80\xe4\xff\x66\xfc\x82\x61\xd5\xcc\xbc\x3b\xec\xf3\xb7\xde\x2c\x0e\xf4\x87\x66\xaa\x70\x0d\x63\x52\x62\xff\xd5\xd5\xab\x9c\xc1\xda\xdd\xae\xbc\x9a\x6b\x1d\x88\x49\x2c\xbd\x9e\x6b\xa4\xf7\x2b\xeb\x5b\x31\xf9\x9e\xeb\xc9\xb2\xae\x75\x73\x15\x4a\x60\x18\x21\x0d\x64\x4f\x3b\xd8\xa4\x39\x67\x87\x41\x4b\xe9\xb7\x1c\x3f\xc9\xa8\x52\xc5\xb7\x41\x70\xc4\x01\xb7\x0b\x29\x7c\x77\xdf\x8c\x10\xfa\x80\x4d\x83\x21\x18\xa5\x17\x4e\x05\x1b\x05\x74\xc9\x60\xae\x42\x2a\xb9\x7b\xdc\xb4\x2a\x25\xd7\xbe\xdd\x24\x9c\x4b\xfb\x1a\xc9\x58\x80\xec\x1d\x18\xb8\x0c\xbe\x25\x6d\x05\x5a\x59\x24\xb6\x91\xfd\x9f\x8d\x6a\xff\xeb\xd5\xe6\x7f\x03\x00\x00\xff\xff\xef\x93\x50\xef\xcd\x17\x00\x00" func cssHoundCssBytes() ([]byte, error) { return bindataRead( @@ -113,7 +105,7 @@ func cssHoundCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/hound.css", size: 6037, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/hound.css", size: 6093, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -133,7 +125,7 @@ func cssOcticonsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -153,7 +145,7 @@ func cssOcticonsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -173,7 +165,7 @@ func cssOcticonsOcticonsLocalTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -193,7 +185,7 @@ func cssOcticonsOcticonsCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -213,7 +205,7 @@ func cssOcticonsOcticonsEot() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -233,7 +225,7 @@ func cssOcticonsOcticonsLess() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -253,7 +245,7 @@ func cssOcticonsOcticonsSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -273,7 +265,7 @@ func cssOcticonsOcticonsTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -293,7 +285,7 @@ func cssOcticonsOcticonsWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -313,7 +305,7 @@ func cssOcticonsSprocketsOcticonsScss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -333,7 +325,7 @@ func excluded_filesTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -353,7 +345,7 @@ func faviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -373,7 +365,7 @@ func imagesBusyGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -393,7 +385,7 @@ func indexTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -413,7 +405,7 @@ func jsJsxtransformer0122Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -433,7 +425,27 @@ func jsCommonJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.js", size: 1503, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "js/common.js", size: 1503, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _jsCommonTestJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x90\xcd\x6a\xeb\x30\x10\x85\xf7\x7e\x8a\x83\x36\xd7\x06\x93\x4b\xb6\x09\xb9\x8b\x4b\x4b\xe9\x36\xb4\xdd\x2b\xf6\xa4\x16\xe8\x0f\x69\xec\x24\x18\xbf\x7b\x51\xfe\x1c\xdc\xd2\xb4\x03\xde\x98\x39\xf3\x1d\x7d\xca\x78\x17\x18\x3d\x1e\xf7\x5e\xda\xfa\x4d\x86\x58\xe2\x35\xe8\x17\xb7\x26\xef\x30\x60\x1b\x9c\x81\x98\xfd\xad\x9c\x31\xce\x8a\x65\x96\xd5\x14\xab\xa0\x36\x94\x8b\x31\x23\x4a\xe4\x05\x56\xff\xd0\x67\x00\xc0\x14\x39\x17\x6b\xf2\x5a\x56\x14\xc1\x64\xbc\x96\x4c\xe8\x64\x50\x72\xa3\x29\x62\xa7\xb8\x01\x37\xa4\x02\x3a\xa9\x5b\x9a\x5e\x48\x53\x39\x1b\x79\x0c\xaf\x20\x9e\x21\x0d\x38\x1c\x94\x7d\x07\x3b\xf4\x1d\x85\xcd\x00\x73\x40\x6f\x5d\x6b\x07\xb1\x9c\x64\x4f\xa7\xb1\x42\x8f\xb4\xba\x80\xd8\xc9\xd8\x88\x12\x69\x7d\x01\x51\xab\xd8\x50\x14\x18\xc6\x20\xed\x3d\x55\x9c\x8f\x4f\xcb\x2f\x05\xca\xf3\xb9\xa2\x98\xb1\xfb\x4f\xf9\x35\x92\x66\x5a\x2d\x71\x52\xb1\x33\xe1\xba\x5b\x9c\x48\x43\xb1\xcc\x6e\x4c\x3d\x38\x8a\xf6\x0f\x23\x9c\x8c\xa1\xb5\x5a\x45\xa6\x7a\x14\xf6\x23\x3d\x4f\xc4\xc9\x29\x7a\xda\x7b\x4d\xac\x3a\x1a\xe0\x5a\x86\xdb\xde\x75\x34\x3f\x4a\x3a\x6b\x89\x2c\x8d\x47\xe5\xb4\xa6\x8a\x95\xb3\x47\x41\xbf\x30\x34\xff\x5a\xd1\xf7\xf5\x3e\x41\xa7\xce\xee\xb1\xfb\xe1\x82\xbd\xfc\xbb\x91\x9d\xbe\x8f\x00\x00\x00\xff\xff\x59\x3a\x43\x8a\xec\x02\x00\x00" + +func jsCommonTestJsBytes() ([]byte, error) { + return bindataRead( + _jsCommonTestJs, + "js/common.test.js", + ) +} + +func jsCommonTestJs() (*asset, error) { + bytes, err := jsCommonTestJsBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "js/common.test.js", size: 748, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -453,12 +465,12 @@ func jsExcluded_filesJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/excluded_files.js", size: 4048, mode: os.FileMode(420), modTime: time.Unix(1582790922, 0)} + info := bindataFileInfo{name: "js/excluded_files.js", size: 4048, mode: os.FileMode(420), modTime: time.Unix(1603725451, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x3b\x6b\x8f\x1b\x37\x92\x7f\x45\x43\x04\x02\x19\x51\x1c\x29\x09\x0e\x41\xcb\xcc\x5c\x62\x3b\xbb\xbe\x8d\xe3\x3d\xdb\x9b\xfd\xa0\x08\x06\xa7\xbb\x24\x31\x6e\x91\x1a\x92\x9a\xc7\x69\x1a\xd8\x1f\x72\xf7\xe7\xf6\x97\x1c\xf8\xe8\x87\x5e\xf3\x08\xb2\x0b\x04\x99\x16\x59\x2c\xd6\x9b\x55\x2c\xfa\x6c\xbe\x51\xb9\x93\x5a\x61\x20\xdb\x6b\x61\x7a\x8e\x6f\xab\x49\x3d\xd8\x33\x58\x90\xad\x9c\x63\x37\x15\x33\x62\xc0\x6d\x8c\xea\xf9\x6f\x06\xb7\x6b\x6d\x9c\x9d\xf8\x25\x96\xfb\x21\xbe\x95\x99\xa0\x65\x76\x36\xa6\x69\x32\xdb\x56\xd5\x24\x2d\x02\xbf\x28\x17\x65\x89\x6d\xbd\x96\x5a\xda\x7e\x1b\x42\x2d\x2b\xf9\xd9\xa8\x1d\xab\x0c\x5b\x71\xa0\x86\xe5\xdc\x51\xc3\x0a\xde\x92\x4a\x1d\x15\x64\x6b\x98\xf6\x9f\xe4\xfe\xfe\xdd\xe5\x6f\x90\x3b\x56\xc0\x5c\x2a\xf8\xab\xd1\x6b\x30\xee\x2e\x80\x6d\x41\x6d\x56\x60\xc4\x65\x09\xd9\xd9\x88\x2e\xc0\x65\xa2\x22\x15\x35\xcc\xf0\x2e\xeb\x68\xa3\xe2\xea\x02\x9d\x71\x77\xb7\x06\x3d\xef\x7d\xb8\x5b\x5d\xea\xb2\xdf\x8f\x7f\x99\xd3\x1f\x9c\x91\x6a\xf1\x51\x2c\xfa\xfd\x53\x3b\x1e\xc2\xd2\xed\xb5\x28\x37\x90\xa1\xb7\xba\xd8\x94\x80\x2a\x42\x4f\x2d\x46\x9f\x3e\x81\x4d\x60\xf5\xb2\xb3\x51\x24\xd7\xed\xb0\x1f\x94\x32\xee\xbb\x7e\x1f\x03\x37\x18\x08\xa1\xdf\xf6\x5d\xad\x21\x98\xc8\x39\xfe\xc6\xcf\x22\x1d\xb6\x42\xbc\xe6\x09\xfa\x7d\xff\x1f\x6b\x77\x6a\x17\x79\x5d\x0a\x9e\x88\xcb\x0d\x08\x07\x58\x6d\xca\x92\x78\x74\x86\x79\x5b\x38\x41\xba\xa0\xa8\x80\xb9\xd8\x94\x0e\xed\x4b\x3c\x72\x01\x15\xa1\x5f\x05\x82\x6c\x90\x4b\x2b\x64\x20\x73\x6d\x70\x30\xa3\x9e\x54\x3d\x20\x86\x15\x58\x50\x4b\x1b\x76\x1d\xd9\x36\x46\xe4\x66\x15\xbb\x94\xaa\x08\x74\x51\x4b\x48\x6d\x5f\xc2\xcb\x48\xf1\x43\x6b\xde\xe3\xf6\xa2\x81\x68\xb1\xb2\x44\x7b\x95\x1d\x99\x6c\x2c\xd8\xd3\xe5\x28\x12\x88\x3a\x42\x9d\xdf\x4e\xef\xa9\x24\x01\x26\x11\xad\x8d\x76\xda\x33\xc9\x96\xc2\xbe\xbb\x51\xb5\xb0\xa2\x17\xf8\x05\x1e\xc7\x9a\x23\x44\x0d\x36\xcc\xf2\x31\xa9\xf0\x74\xc7\xc6\x8d\xb7\x4b\x0b\x3d\x2f\xb3\xdc\xa1\xd6\x2d\x45\xdc\xb0\x96\x9c\xf1\x92\x73\x04\x38\x30\x03\xeb\x52\xe4\x80\xd1\x16\x0d\xcc\x00\x55\x88\xba\xa9\x99\x35\x62\x82\xaa\xc1\x61\xe3\x16\xd4\x46\x49\x29\x0e\x6c\x63\xca\x06\xc1\xf9\xaf\x6c\x21\xdd\x17\xe7\x14\x21\x42\x25\x87\x29\xda\x98\x72\xb8\x16\xce\x81\x51\x68\x46\x35\x77\xcc\x6e\x2e\xa3\x3a\xb1\x63\xa5\xb0\xee\x8d\x2a\xe0\xf6\xdd\x1c\xa3\x73\x44\x06\x63\x42\x73\x6e\x2e\x04\x96\x4c\xa8\x7c\xa9\x0d\xdd\x96\x52\x41\x66\xe8\x5c\x96\xa0\xc4\x0a\x32\x5d\x91\x0c\xa1\xc9\xf9\xaf\xec\x46\x7e\x96\x5f\x9c\x33\xb8\x85\x1c\x2b\xd2\xef\x63\xc5\x55\x97\x14\x3f\x7f\x4e\xd1\xb9\xff\x8b\x08\x75\xdc\x75\x67\x57\x45\xa2\x33\xe7\x08\x91\x60\xc7\x25\x3f\xc7\x0b\xe9\xee\x97\x0b\xf2\x9f\x98\x7d\x79\x41\x70\x76\xff\xeb\x39\xc1\xec\x4b\xd2\x6c\x53\x0b\xa5\x0c\xfb\xa1\xf3\x73\x34\x28\xa7\x5f\xcd\x06\x28\x7c\x7c\x33\x23\x54\x60\x39\x45\x97\xc2\xc2\x70\x63\x4a\x34\xa3\xdb\x8d\x29\x33\x45\xd7\xc2\x2d\x33\x47\x0d\x5c\x67\x96\x46\xe6\xb2\xbc\x22\x55\x6b\x22\xf8\xd0\x92\x6c\x45\x48\x45\x1f\xd4\xaf\xf7\x31\x47\x92\x1f\x1a\x3c\x22\xd4\xf2\x0e\xa2\x6a\x62\x5b\xab\xe2\xdb\x52\x5a\x07\x0a\x8c\xcd\xa6\x33\xea\xc4\x3a\xeb\x1a\xbf\x5b\x4a\xcb\x1a\x08\xbe\xfb\x93\xd9\x52\xe6\xe0\xf1\xef\x8d\xaf\x37\x76\x89\x81\x54\x74\xa3\xf6\x11\x46\x6f\xda\x83\x97\x49\xe1\x40\x26\xc3\xf1\x19\xf7\xe1\xe8\xf7\x6d\x6c\xd7\x61\xc2\xd1\xb1\x17\x92\x11\xd2\x42\xd7\x19\xfd\xe6\xc0\xbf\x37\x46\xdc\x75\xfc\x2a\x20\x8b\xee\x24\xcc\x62\xb3\x02\xe5\x2c\x1d\x91\xc9\x1e\xee\xb9\x36\xaf\x45\xbe\xc4\xb8\x1b\x51\x1c\x13\xeb\x75\x79\x17\xc8\xa5\x40\xbc\x6e\xaa\x49\xf4\x83\x7d\x15\x01\xb3\xee\xae\x04\x66\xc1\x35\x01\xcf\x3b\x0e\x42\xa4\xa2\x72\x27\xe4\xd4\x0e\xe9\x38\x42\x03\x3c\xba\x07\x42\x0d\x9f\xce\x26\x8e\x95\xa0\x16\x6e\xf9\xdd\x68\x42\x0c\xdb\x28\xbb\x94\x73\x87\xf7\x1c\x28\x40\x0c\xbf\xa6\xf5\x27\x89\x76\xde\xc2\x8c\x68\x0b\x45\xda\xb0\xf4\x9b\x96\x0a\x23\xea\xa9\xd1\x3b\xd4\xd4\x3e\xcf\xe1\xfe\x7e\x7b\x95\x21\x44\x65\x86\x94\x5e\x03\x0a\x2e\x68\xfd\x88\x81\xb5\xb6\x19\xfa\x12\xed\x9a\x66\xb3\xd8\x71\x77\x7f\xbf\xad\x28\x5c\x60\xe8\x90\x32\x26\x41\x65\x0e\xa3\x3e\x22\x47\x24\x9c\x0c\xc6\x70\xa8\xe1\x38\x22\x93\xaf\x38\x37\x89\x83\x7e\x1f\x9b\xe9\x78\xc6\xfd\xff\x3a\xae\x3c\x38\x5f\x50\xd4\xf3\x1e\x3e\x2d\x20\xd7\x05\xfc\xed\xfd\x9b\x97\x7a\xb5\xd6\x0a\x94\xc3\x66\x3a\x9a\x91\x19\x3f\x3a\x33\x9e\x11\xaf\x45\xea\x48\xe6\x2a\x5c\xea\x5c\x78\x42\x98\x05\x61\xf2\xa5\xd7\x30\xcd\xf9\xf6\x46\x96\xe5\x87\x30\x92\x29\xb8\xe9\x59\x5a\xc8\x62\xe7\xb7\x07\xf8\x49\x8b\xe2\xad\x36\xd0\x82\x1c\x8e\xbc\x36\x46\x9b\x5d\x80\xf7\x41\x92\x71\xe8\x17\x51\xca\x34\x70\xc2\x87\x82\xdc\xa9\xf1\xc9\x56\x73\x0c\xcd\x65\xe9\xc0\x1c\x4a\x51\x70\x37\x85\x59\xbf\x7f\x66\xa6\x30\x6b\xf4\x3e\x85\x99\x4f\x97\x44\x08\x2b\x7e\xaf\x97\x7a\xa3\xdc\x91\x23\x2c\x9d\x47\x9f\xe1\xce\xe2\x76\x6f\x92\x14\x51\x51\x4f\xfc\xa1\xb3\x05\xc7\x70\x7c\x6f\xdc\x71\x8d\xc9\x04\x58\x97\x67\x16\xdc\x15\x03\x85\x84\x99\x22\x74\xc6\xb9\x63\x57\xfe\xe8\x8d\xe2\xc5\x8e\x54\x3e\x8b\x38\x96\x66\xbd\xd5\x05\x94\xaf\x84\x13\xb5\xcd\xfc\xd7\x87\x77\x3f\xb3\xb5\x30\x16\x70\x3b\x47\x45\x48\x4c\xbb\xb9\x82\x21\x62\x6a\xbd\x09\xd9\x46\x2a\x2d\x7f\x5c\xd0\x6b\x2d\x8b\x9e\xc3\xa4\xfa\x82\x89\xdf\xc4\x2d\x0e\xd1\x1b\x89\xb5\x3c\xbf\x1e\x9f\x07\x20\x44\x0b\xe1\xc4\xc7\xbb\x35\x64\xe8\x37\xab\x15\xa2\x76\x93\xe7\x60\x3b\x6a\x0b\x01\x20\x62\x34\xd4\x23\xa3\x10\x74\xbf\x1f\x25\x72\xad\xac\x2e\x81\x85\x59\x6c\x48\xe5\xd3\xb6\x64\x5b\x07\x81\xb9\xb5\xc3\x24\xbc\x14\x86\x26\xad\x85\x50\xc3\x5f\x09\x07\x4c\xe9\x1b\x1c\x12\x30\x84\x38\xe7\x18\xf8\x17\x0c\x6e\x1d\xa8\x02\x6f\xad\x13\xce\x66\x68\xae\xed\x52\x77\x3c\x99\x1a\xb5\xc8\x50\xf6\xd5\x08\x55\x14\x08\x89\xc4\xfb\x44\x31\xb1\x81\xbe\xf4\xfe\xe5\x05\x2c\x56\x96\x03\xf5\x88\x81\x5d\x35\xe9\x3d\x33\x60\x37\xa5\xb3\xdc\x1f\x2b\xf5\x8f\x1f\xee\xbc\xae\xf9\xb6\x4a\x52\x65\x8d\xe7\xd4\x1c\x50\xc7\xde\x47\x58\x32\x39\x26\xf0\xe8\x89\x51\xe2\x19\x50\x17\x84\xfe\xa7\xd7\x1f\x9f\xa0\x03\x08\xe9\x2e\xb0\xe0\x75\x24\xec\x1d\x3e\x9b\xad\xeb\xa9\x09\x94\x16\x92\xcf\x40\x4d\x0e\xb5\x1c\xd8\x07\x2f\x2b\xaa\x7c\x30\xae\x6d\x48\x7a\x1b\x12\x44\xce\xb1\x98\xca\x59\x34\x3e\xcd\xfd\xf7\x44\xc5\x93\x70\xeb\x79\xce\x24\x7d\x0f\xd7\x99\x66\xef\xe1\x5a\x5a\xa9\x15\x7d\x2b\x5c\xbe\x04\x9b\x69\x96\xbe\xe8\x8f\x3e\x9c\xfe\x5d\xba\x65\x18\xc8\x34\xdb\x1d\xa8\x48\xa5\x98\xd5\xc6\x75\x7d\xbb\x1b\x64\x6b\x44\x75\x78\x87\xbd\x81\xfb\x7b\xcf\xcd\x5a\x33\x1f\xd7\x4a\xf0\x71\x4f\x18\xc0\x2e\x0c\xfa\xb0\x17\x0c\x27\xf7\x1e\xa2\x8e\x47\xe3\x7c\x1a\x31\xcc\x38\x84\x28\xd9\x28\x59\x1d\xe8\x38\xa7\x8e\x05\xd3\xe2\xdb\x0f\x60\xae\xc1\x64\x96\xbd\xda\x98\x10\x4f\xe9\x47\xed\x44\x99\xb5\x96\x39\x34\x91\xf9\xcc\x46\x9e\xdf\xad\x41\x41\x51\xd1\xe3\x06\x92\x36\xaa\x37\x20\xd5\x11\x6f\x32\xbe\xb4\x3b\xd4\xb1\x77\x09\xf4\x71\x09\x3d\x1b\x68\xea\x5d\x1a\xfd\x19\x7a\x85\xbe\x51\x28\xfa\x5a\x13\xa4\x8f\x47\x5c\x6a\xea\xc0\xdb\xe1\x75\x0a\x33\x2a\xb8\xd9\x93\x36\xb5\xdc\xec\x69\x70\x28\xa8\xe2\x6f\x85\x5b\xb2\x95\x54\xf8\x2b\xf8\x9a\x5a\x9f\x15\x5b\xce\xd5\x05\x42\x19\x42\x03\x35\x71\xac\x7b\x7a\xec\x38\x36\xf5\x05\x8d\x8a\x5a\xd2\xad\x07\x07\x82\xa2\x1f\xd2\xad\xf7\x5a\x31\x40\x19\x1a\xc8\xe4\xcb\x50\x3d\xc1\x93\xf4\xb3\x3c\x29\x56\xf3\xe2\xb4\x27\x89\x03\x4f\xb2\x5c\xd4\x9e\x14\x8e\x9f\x5a\x58\x1d\xb1\xe5\x5a\xe5\xc2\x61\x5b\x0f\x90\xa8\xfe\x7d\x51\x50\x68\x4d\xe0\x0f\x55\xfd\xcf\x62\x05\x3f\x6a\x13\xbc\xf5\xa1\xf3\xd6\xd3\x2f\xe7\xf8\xcc\xed\xd6\xbc\x86\x3b\x5f\xfa\x04\x4b\xd8\x2f\x63\x3c\xbc\x78\x31\xda\x5d\xe0\x79\x6f\x73\x21\x31\x18\x93\xe3\x65\x93\x3a\x44\x48\xc5\x70\xdc\xe4\x6e\xea\xc5\xe8\xc2\x66\x5d\x5c\x6a\x30\xa6\x82\x0c\x50\xef\xbc\x87\x06\xb6\xa2\x7f\x33\xe5\x47\xbd\xc7\x57\x5d\xb5\xed\x1c\xef\x58\x30\x41\xf0\x0e\xab\x09\xae\xaa\x68\xc9\xdf\x83\x68\x6a\xfa\x97\xa5\xb0\x16\x6f\x0b\x69\xd7\xa5\xb8\xf3\xb2\xcb\x90\xdf\xe2\xdd\xda\xe3\xf7\x07\x89\x2a\xc0\x1c\x49\x24\xba\x48\x5e\x97\xe0\xf3\x6d\x8c\x74\x5a\x95\xae\x2b\xa2\x49\x1b\xbd\xb6\x2c\x0c\x50\x0b\x25\xe4\x0e\x8a\xee\x4c\x3d\x56\xd1\x7d\x70\xaf\x4f\xba\x79\x94\xdc\x18\x58\x7e\x10\x06\xd1\xbc\xce\x01\xff\x2e\xcb\xf2\xed\x7e\x0a\xd4\xe6\x32\x93\x7c\x37\x69\x71\x62\xdd\xad\x08\x52\xa2\x0f\xce\x1f\x14\x80\xb7\xa2\x2c\x63\xfe\xd6\xcd\x9e\x0c\xa9\x42\xa5\xd0\x6e\xfa\x4a\x16\x0f\xec\xc9\x0c\xcc\x2d\xbb\x62\x0b\x70\xaf\xde\xbd\xfd\x59\x17\x10\x92\x27\x0b\xee\x7b\xe7\x8c\xbc\xdc\x38\xc0\x48\x6c\x9c\xf6\xf8\x4a\x70\x80\x28\xd2\xf3\x39\x4a\xe5\x91\x2f\x38\x42\x70\xc0\xad\x98\xd2\xd4\x52\xd8\xef\x8b\x6b\xa1\x72\x28\x7e\xf1\x72\xb3\x98\xf4\xfb\x71\xd1\x52\xdf\xd4\x53\x98\x50\x60\x73\x9d\x6f\xac\xcf\x5b\x16\xe0\xde\x28\xe9\xa4\x28\x03\x8f\x87\x0a\x0e\x09\x05\x64\xe1\x6a\xa5\xe1\x7f\x3a\x4b\xd1\x68\x3a\xab\x2a\x7a\xb5\x01\x73\xf7\x27\xed\xfe\x02\x77\xde\xff\x76\xbc\xcd\xde\x48\x97\x2f\x31\x78\x59\xbd\xd4\x85\x3f\x74\x84\x85\xde\x37\xa3\xac\x95\x45\xa8\x3b\x76\xe4\x51\xd3\x37\xb9\x34\x20\x3e\x4f\xc2\x92\xaf\xbf\x8d\x4b\x96\xb2\x80\x96\x97\x2e\xc4\xf8\xeb\x08\x61\x37\x97\x2b\xe9\xfe\xdb\x53\x85\x49\x87\xbe\x1f\x3d\xd2\xc3\xbc\xeb\x88\xd8\xee\xef\x8f\x6c\x55\xc5\x02\xe9\x79\x8c\x7e\xfd\x6d\x16\x72\xb4\x07\xb9\x0d\x56\xce\x9c\x91\xab\x46\x63\xbb\x5b\xd3\x53\x86\x73\x4c\x50\xa7\xc4\x50\x53\x7f\x42\x0c\xbb\x36\x52\xd1\xce\xf2\xae\x55\x74\x9c\x53\xab\xe8\x72\xef\xe1\x6a\x03\xd6\x41\x3a\xbb\x16\x8d\x85\x92\x68\x60\xef\x61\xf1\xfa\x76\x7d\x24\x76\xf8\xba\x28\x4e\xe2\x93\x0c\x76\x65\xd3\x11\x83\xf4\xac\xee\x42\xe6\x4b\xc8\x3f\x43\x71\x81\xe4\x02\x65\x68\x81\xe2\xe6\x91\x94\x43\x57\xcc\x59\x5b\x8f\x75\x76\x0f\x66\x1d\x12\x11\x48\xc1\xa7\x2d\xc5\x62\x22\xc0\x79\xce\x9a\xca\xca\xeb\x0b\x03\x9f\xce\x08\xdd\x5e\x65\x4f\x63\x22\x96\xd9\x4f\x36\x88\xfa\xdc\x6f\x4b\x7a\x2a\xb3\xa7\x09\x22\x16\x01\xa9\xbc\xaf\x2a\x6a\x0f\xc5\x51\x1f\x88\x6d\x26\x74\x40\x3d\x15\xfc\xa1\xed\xa8\x7d\xd0\xb8\x27\x26\x72\xe3\xab\x09\x2a\x6a\xda\x78\xa2\x8d\x73\xec\xfc\x7f\xc0\x24\x61\x4e\xff\xa4\x6f\xc0\xbc\x14\x16\x30\x21\xf7\xf7\xc8\x99\x0d\x20\xce\xdd\xfd\x3d\x1a\xfb\xbf\xd4\x36\xb8\xc2\x46\x15\x3d\xf0\xdd\x43\x2b\x8b\x75\xe7\x53\xa5\x9d\x3c\xff\x11\xd1\xde\xdf\xef\x61\x8d\x66\x73\x88\xb5\xa2\x5d\xb7\x7a\xe8\x40\x10\xc5\xf5\xae\x58\x5d\x67\xf2\x52\xa8\xdd\xc9\x27\x6a\xeb\x88\x3a\x7c\xae\x80\x96\x20\x17\x4b\x87\x68\x38\x67\x7c\x4e\xe2\x07\xd7\xa2\x28\xa4\x5a\x20\x8a\xc6\xa3\xf5\x6d\x6f\x14\xc6\x1d\x45\x2b\x71\x3b\x6c\x16\x34\xa3\x7a\x2d\x72\xe9\xee\xd2\x50\x10\x87\xd9\x0b\x64\xa2\x3d\x66\xba\xe1\xec\xdf\x21\x85\x3d\x36\x47\x87\x3c\x1e\x67\x6f\x3c\x1a\xad\x6f\x0f\x59\x1c\x23\x42\x4d\xcb\xcd\x61\x32\xd4\xe1\x23\xc6\x8e\xfa\xa8\xac\xab\x07\xe7\x0b\xe7\x70\xb3\xd3\x01\x8a\x56\x73\xb4\x34\x4b\x37\x39\xa1\x2c\x3b\x82\xf5\xe8\x1a\x17\x0b\xd4\x63\x19\x59\x59\xa7\x62\x9d\xdc\xcb\x6f\x51\x91\xa6\x50\x14\x5d\xf2\x43\x25\x46\x2d\x47\xa8\xe9\xa5\xf4\xfb\xd8\xf2\xa3\xd9\x5e\x21\xaf\x11\xdd\xe6\x3e\x25\x8b\x99\x58\x58\x8d\x2a\xfa\x0c\xe8\x61\x09\x73\x77\x6a\x89\x40\x74\xbb\x34\x30\xcf\x10\xdc\xe6\xe5\xa6\x80\xe2\x53\xb4\xec\xa5\x5b\x95\x88\x76\x70\x95\x52\x7d\x1e\x2e\x8c\xb8\x43\x15\x45\xaf\x13\x70\x2f\x94\x6d\x88\x90\x67\x11\x64\x82\x49\x3c\x95\x89\x6b\x51\xa2\x8a\x4a\x2c\x58\x28\x86\x09\x45\x2b\xdb\x73\xfe\xd3\x7b\x47\xef\x1c\x3d\x1b\x4f\x2c\xb3\x23\xa2\x58\xe3\xfc\x1e\x4c\x22\xd6\xac\x14\xf5\xe6\x49\x08\x0f\x8b\x41\x16\x19\x92\x6a\xbd\x79\x84\xf3\x08\x26\x4e\x01\x45\x0c\x11\xec\x0a\xa5\x62\xd4\xc1\xad\x43\x34\x54\x44\x4b\x5d\x7a\x07\x4a\x29\x7b\xef\xf2\xce\xa7\x01\x70\xbb\xf6\x75\xc6\x3c\x2c\xe9\x26\xc0\x59\xc8\x7f\xa9\x56\x7f\x81\xbb\x57\x3e\xef\x0a\x86\xba\x97\x75\x52\xad\x62\x62\xb3\x33\x19\x86\xaa\xa7\x2a\xfe\x72\xe3\x9c\x56\x43\x51\x14\x43\xad\x4e\xf1\x16\x81\x12\x73\x85\x2e\x84\xf3\xa4\xbd\x2c\x65\xfe\xf9\x20\xef\xaa\x9e\x24\xed\xcb\xc7\x65\x2d\x8a\xeb\x24\x1b\xff\x75\x02\xdc\xae\x85\xda\x65\x48\xe7\x4e\xe6\x5a\xf5\xd2\xdf\x61\xbe\x84\x6b\xa3\xd5\x70\xb3\xee\xf9\x88\x3c\x0c\x68\x77\x88\xef\x06\xea\x27\xcb\x6d\x2e\xa1\x2c\x4e\x51\x55\x8a\x4b\x28\xbd\x03\xbb\x55\xf9\xa3\x36\x1e\xda\x1b\x62\x45\x91\xb7\xcc\xde\x5f\x85\x5b\xa2\x67\x6d\x34\x7c\xd0\x3e\x6b\xd3\xeb\xda\x9c\x97\x60\xdc\x75\xd7\xfc\x4c\xd7\xe8\x12\xc0\x9e\x95\xed\xa5\xfc\xbb\x56\xb6\x93\x51\x3f\xa6\xeb\xdf\x2d\x2f\xb9\x50\xda\xc0\xd0\x27\x23\x5e\x6a\x6f\xc2\xcf\x9e\xcf\x92\xfe\x15\x72\x0b\x26\xd9\xd9\x31\x39\x6f\x48\x7c\x2e\xf5\x6d\x12\x96\x8c\xd4\xfc\xc1\x2c\x77\xe0\x57\x9b\xd2\xc9\x78\x54\x7d\x4a\xd3\x8d\x40\xe2\x2d\x7d\x45\xd1\x87\x30\xdf\xf3\x47\xe2\x1f\x29\x8a\xb8\x6d\x92\x45\x6a\x09\x74\x31\x68\xb3\x1a\xe6\x5a\x39\xa3\xcb\x5e\x87\x4e\x44\xc3\x8f\x75\x7c\xe2\x60\xe5\xff\x40\xd6\x5c\x0e\x8e\xff\x83\x02\x89\xa2\xab\xa9\x77\x8f\x85\xe2\x6e\x60\x12\x2a\x09\x3e\x7c\xed\x86\x9b\x4e\x82\x79\x82\x21\x58\x21\x1a\x0a\x78\xd4\xe4\x60\xe1\x2c\x89\x7a\xee\x79\x5d\xd2\x5e\x6c\x34\xf9\x58\xbc\x16\x6e\x49\x7b\xd6\x6d\xe6\xf3\x5e\x29\x3f\x43\xcf\x2d\x85\x63\xfe\xfc\xb4\xe1\x2a\xa6\x38\xf2\xa2\x22\x64\x37\xc0\x7e\x92\x0a\x7e\xde\xac\x2e\xc1\x50\xc1\x81\xfd\x00\x73\x6d\xea\xc2\x69\x02\xec\xfb\xb9\x83\xba\xd9\xd7\xd6\x55\x09\xea\x48\x4e\x43\x6d\x93\xd5\x6c\x23\xda\xcc\x0c\xc5\xc0\xd2\x97\x5a\x39\x50\x2e\x83\x78\xef\x9e\x9d\x8d\xab\xd8\xe8\xdb\x03\x6e\x01\x03\x69\x35\xf4\xa8\x22\xb4\xa6\xe6\xd8\xb6\xe2\x70\xdb\x81\x18\x8c\x4f\x6f\x5b\xd1\x65\x23\x94\x1e\x60\xd7\x76\x3a\xa1\xed\xc9\xfa\x60\x94\x30\x84\xc7\x4b\x52\x29\x30\x7f\xfe\xf8\xf6\xa7\x6a\xb2\x64\xc0\x0b\x9d\x87\x76\xf5\x31\x6b\x88\x29\xda\xfc\xd1\x3b\xb0\x70\xd8\xff\x22\xe1\xc6\x1b\xc9\xd1\xcb\xef\x9c\xd5\xc3\x9d\x0b\xa4\x90\x89\x3e\x96\xd8\xd6\x90\xd7\x75\x52\xde\x2e\xad\x33\xf1\x7a\xc4\x87\xd5\xba\x10\x89\x63\xab\xd4\x14\xb1\xdd\xc1\x90\x1f\xd5\xed\x12\xc5\x05\x5b\xed\xdc\xbf\x89\xf6\x19\x4a\x4c\x63\x94\x58\xc1\xa9\xe6\x7a\x30\x3f\xbf\xbe\xf0\x25\xd0\x74\x46\x2d\x1f\xc5\xbb\xd6\x68\x6d\xf6\x85\x9a\xd8\xc1\x20\x22\x94\xa1\x3f\x48\x35\x77\x17\x6e\xda\xf4\xcf\xc7\x33\x96\xb4\x3d\x1c\x4f\xe4\x74\x54\xff\x7c\xc1\xf5\x85\x3c\x9e\x72\x43\x02\xf9\x4e\x5f\xb8\xfa\xa1\x44\xe6\xfa\xfd\xd4\xab\xe9\xf7\x71\x17\xff\x10\xeb\x61\xbd\x82\xcc\x22\x08\x3f\x1b\x79\x13\xca\xb0\xf3\x05\x53\x40\xe1\x7c\xd9\x23\x49\x55\x37\x82\xba\x13\xa2\xc2\xa2\xb9\x51\xdf\x97\x17\x69\xee\xe6\x4f\x4c\x1c\xbc\x16\x3b\x4b\x84\xd6\x57\xd9\x4b\x0c\x2c\x99\x28\x69\x7a\x62\x5e\xb2\x69\x30\x88\x76\x32\xf1\xee\xd1\xdc\x61\xf3\x51\xfd\xe0\x2f\xbe\xa1\x31\xe1\x7e\xfc\xcc\x92\x6d\x22\x7b\x89\x0d\x49\x37\x54\x55\x3b\xb4\xff\x86\xa1\x46\x37\xb4\x5e\xf2\xf5\x6b\x07\x42\xd3\x0a\xf4\x02\x56\xdf\xa1\xc1\x12\xfb\x69\x32\x40\x2f\xce\xfd\x6f\x5f\x03\x9a\xe3\x4f\x8e\x1a\xf9\x89\x74\x73\x82\x48\x85\x05\x35\xcd\x85\xce\xd3\x42\x6f\x29\x15\x3c\x5a\x97\xe4\xac\xb9\x93\xc7\x8e\x2a\x2a\x92\x92\x7d\xd0\xef\xe2\x52\x9b\x15\xa2\x4e\x98\x05\xb8\x0c\x7d\xba\x2c\x85\xfa\x1c\x72\xf4\x64\x12\x4f\x4d\xeb\x4a\x9f\xdb\xd3\x42\xa8\x05\x18\xbd\xb1\xe5\xdd\x07\x70\x6f\xea\x60\x92\x6d\x3f\x7d\xf2\x47\x65\x66\xab\x54\xdd\x3d\x8b\xdf\xe0\xa8\xa8\xf2\xa1\xfe\xb9\x4b\x7d\x3a\xf4\xe4\x82\xc9\x49\x77\x1a\xfa\x84\x60\x3b\x51\x20\x1c\x67\x40\xaa\xce\xd8\x33\x72\x91\x12\x86\x97\xba\xf0\x45\xa2\x8c\x0f\x44\x64\xb7\xd2\x4d\xc6\xf7\xc2\xf6\xfb\x58\x1e\x2f\x79\x9b\x22\xa0\x2b\x39\x2d\xcc\xde\xd9\xdc\xc6\xe0\x8a\x22\xff\xd9\x13\x65\xd9\x43\xd4\xd7\x63\x29\x22\xf6\xa4\xea\x21\x9a\xb3\x4e\xbb\x0a\xbb\xe7\xe4\x55\x31\x99\x56\x54\x86\xb3\x79\xfd\x84\xae\x8e\xdd\x94\x2e\x9e\x11\xcf\xe8\x93\x74\x5e\x27\x3c\xd2\x25\x49\xcd\xbc\xd8\x32\x08\x85\x58\x66\xd8\x55\x6a\x92\x3c\xde\x6f\xe8\x2e\xaf\x8e\x1d\x49\x72\x8e\x3b\x37\x15\xa1\x5f\x48\x1e\xb7\x53\x9f\xcb\x29\x3d\x8c\xd8\x77\xf2\xb9\x80\xe1\x64\x2e\xe8\x8c\x56\x8b\x3a\x7d\x7a\xfd\xfe\xfd\xbb\xf7\x19\xda\xb9\x93\x89\x04\xf8\x90\xe7\x61\xea\x5b\xc1\xfa\x82\x27\xf0\xd2\xef\x8f\xf8\xb1\xf1\x3a\xca\x3d\x97\xfa\x8a\xa2\x7f\xfe\xe3\x7f\x7f\xd6\x6e\x29\xd5\xa2\x37\xd7\xa6\x77\xa7\x37\xb4\xf7\x4a\xdc\x2c\xd8\x3f\xff\xf1\x7f\x0f\xdd\x10\x44\x3e\x46\xbd\x44\x01\x22\x0d\xe5\x47\x29\xac\xfb\x47\x61\x2c\xe8\xf2\x77\x10\x7b\xbc\xde\x58\x2d\x10\xdd\x5a\x93\x67\x48\xae\xc4\x02\xec\xf9\xe5\xc6\xde\xb1\x85\x9c\xa3\x07\xeb\xce\xc8\x40\xb4\x44\xa9\x16\x8c\xf9\xc4\x74\x72\x70\xff\x96\x72\x10\xc7\xf1\x21\x53\xf7\xf7\xd3\xd9\xfe\xd9\x19\xac\xf8\x59\xd1\xce\xe7\x3d\x7f\x4c\xb4\x3b\x0c\xf0\x2b\x58\x88\xe1\x7e\xf1\x1e\x37\x7c\xf2\x21\xe1\x43\x22\xaa\xf6\x23\x4b\x7c\x1c\x72\x22\xbc\xcc\xe9\x36\x45\xa5\xac\x79\x7d\x12\x1e\xb4\xfa\x65\xd7\xa1\x11\x91\x45\x0c\x34\xca\x37\x03\xda\xcd\xe1\x32\x77\xf0\xc6\xe5\x89\xa7\x48\xac\xb4\x92\xbd\xb8\x10\xc9\x56\x8f\x46\xb2\xef\xd7\xeb\xa7\x85\x30\x1d\x2e\x92\xe3\x93\xa6\x50\x7e\x5d\x4c\x67\x59\x7d\xfd\x9a\x9e\x22\x52\x94\xde\x88\xb6\x81\xec\x2a\x03\x76\x45\x65\x06\x4c\xa6\xa6\x4d\xea\x3b\xa4\x96\x8c\xab\x48\xfd\x54\xe0\xd1\x5e\x72\x48\xb8\xa0\xdb\x73\x32\xdd\x4b\x60\xd2\x34\x97\x60\xb7\xb9\x64\x76\x02\x6b\x6a\xb9\x86\x23\x2b\xef\x3c\xa6\xd9\xdf\x2b\x64\xce\x26\x5e\x8c\xdb\xba\x2d\xde\xc1\x14\x1f\x89\x75\xf8\xa0\xa6\xee\x63\xd4\x87\xc3\x91\x80\x2e\x6a\xad\x1f\x60\x6e\x9a\x7c\x98\xa4\x07\x1c\x21\x7a\xb7\x74\x36\xaf\x3e\x0e\xa4\x12\xff\xcd\xc6\xbf\x74\xf3\xf8\x6e\xe4\x88\x3e\x9e\xb2\x6f\x4c\x34\x02\x5a\x17\x71\xde\x48\x55\xe8\x1b\x26\x8a\xe2\xf5\x35\x28\xf7\x53\x7a\x53\x8c\xd1\x5a\xaf\x83\x4a\xbb\x2f\xbd\xa1\xfb\x44\xf2\x98\x46\xea\x66\xbe\xa7\xb5\x7d\x16\xe9\x8f\xca\x83\xf6\xea\x61\xcf\x76\xb3\x2e\x84\x83\x3f\x4b\xeb\xb4\xb9\xc3\xd0\xc5\xd1\x34\x46\x76\x04\xd5\x69\xcc\xee\xac\x3d\xf2\x42\xa6\x79\x2d\xbb\x16\x6e\xe9\x83\xc9\x00\x5d\x5c\x71\x34\x00\x75\xf0\xd0\x16\xd8\x15\x19\xa0\xbe\x3c\x35\x2b\xfd\x6c\xf0\x9c\x53\x10\x61\xd2\x43\xa5\xd7\x88\x83\xe4\x17\x93\x65\xa4\x2f\xd4\x00\x49\x33\xf1\xa1\x7d\x45\x11\x8a\xff\x5c\xe2\x59\x2f\x53\xda\x33\xe4\xd8\xf4\x86\x6e\xc3\x2d\x8b\x6d\x9f\x92\xa4\xae\x6e\x3a\x01\xeb\xd6\x6b\xfc\x29\xbb\xbd\xdc\x38\xb4\x13\x1f\xf6\x3a\x3d\x47\x34\x9a\xb2\xc4\xbd\xe1\x13\x41\x7e\x9d\xa8\x33\x9d\x0c\x6e\x97\xbc\xf0\x62\x9d\x4c\xe2\xe2\x28\x98\x56\xca\xc7\x50\xae\x82\x2c\x08\x6d\xee\x1e\x16\xe0\xd2\xdc\x0f\x77\x6f\x0a\x8c\x8c\xd6\x0e\x05\x47\xf2\x2e\x8c\x49\x35\x23\x93\xff\x0f\x00\x00\xff\xff\x98\x0c\x21\x7c\x1f\x36\x00\x00" +var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\xed\x8e\x1b\x37\x92\xaf\xa2\x21\x02\xa1\x19\x51\x1c\x29\x09\x0e\x8b\x96\x99\xb9\xc4\x76\x76\x7d\x1b\xc7\x7b\xb6\x37\xfb\x43\x11\x0c\x4e\x77\x49\x62\xdc\x22\x35\x24\x35\x1f\xa7\x69\x60\x1f\xe4\xee\xe5\xf6\x49\x0e\xfc\xe8\x2f\xa9\x35\x1f\x41\x72\x38\x20\x88\x5b\x64\xb1\x58\x55\xac\x2a\x56\xb1\x6a\xce\x96\x3b\x99\x59\xa1\x64\x02\x78\x7f\xcd\xf5\xc0\xb2\x7d\x39\xab\x06\x07\x26\xd1\x78\x2f\x96\x89\x9d\xeb\x05\xd6\x60\x77\x5a\x0e\xdc\x37\x85\xdb\xad\xd2\xd6\xcc\xdc\x12\xce\xdc\x10\xdb\x8b\x54\x93\x22\x3d\x9b\x92\x38\x99\xee\xcb\x72\x16\x17\x81\x5b\x94\xf1\xa2\x48\x78\xb5\x96\x70\xd2\x7c\x1b\x4c\x38\x2d\xd8\xd9\xa4\x19\x2b\x0d\xdd\x30\x20\x86\x66\xcc\x12\x43\x73\xd6\x90\x4a\x2c\xd1\x78\x6f\xa8\x72\x9f\xf8\xfe\xfe\xdd\xe5\xaf\x90\x59\x9a\xc3\x52\x48\xf8\x9b\x56\x5b\xd0\xf6\xce\x83\xed\x41\xee\x36\xa0\xf9\x65\x01\xe9\xd9\x84\xac\xc0\xa6\xba\xc4\x25\x31\x54\xb3\x36\xeb\x68\x27\xc3\xea\x1c\x9d\x31\x7b\xb7\x05\xb5\x1c\x7c\xb8\xdb\x5c\xaa\x62\x38\x0c\xff\x52\xab\x3e\x58\x2d\xe4\xea\x23\x5f\x0d\x87\xa7\x76\x3c\x86\x25\xfb\x6b\x5e\xec\x20\x45\x6f\x55\xbe\x2b\x00\x95\x98\x9c\x5a\x8c\x3e\x7d\x02\x13\xc1\xaa\x65\x67\x93\x40\xae\xed\xb0\xef\x0f\x65\x3a\xb4\xc3\x61\x02\xcc\x24\x80\x31\xf9\xd3\xd0\x56\x27\x04\x33\xb1\x4c\xbe\x71\xb3\x48\xf9\xad\x10\xab\x78\x82\xe1\xd0\xfd\x47\x9b\x9d\x9a\x45\xee\x2c\x35\x8b\xc4\x65\x1a\xb8\x85\x44\xee\x8a\x02\x3b\x74\x86\xea\x44\x9f\x22\x5d\x13\x94\xc3\x92\xef\x0a\x8b\x0e\x25\x1e\xb8\x80\x12\x93\xaf\x3c\x41\xc6\xcb\xa5\x11\x32\xe0\xa5\xd2\x89\x57\xa3\x81\x90\x03\xc0\x86\xe6\x89\x26\x9c\xd4\xec\x5a\xbc\xaf\x95\xc8\x2e\x4a\x7a\x29\x64\xee\xe9\x22\x1c\xe3\x4a\xbf\xb4\x93\x91\x64\xc7\xda\x7c\xc0\xed\x45\x0d\xd1\x60\xa5\x91\xf6\x32\xed\x99\xac\x35\xd8\xd1\x65\x09\xe2\x88\x58\x4c\xac\xdb\x4e\x1d\x1c\x49\x04\x8c\x22\xda\x6a\x65\x95\x63\x92\xae\xb9\x79\x77\x23\x2b\x61\x05\x2b\x70\x0b\x1c\x8e\x2d\x43\x88\x98\xc4\x50\xc3\xa6\xb8\x4c\xe6\x1d\x1d\x37\x4e\x2f\x0d\x0c\x9c\xcc\x32\x8b\x1a\xb3\xd4\x61\xc3\x4a\x72\xc6\x49\xce\x62\x60\x40\x35\x6c\x0b\x9e\x41\x82\xf6\x68\x64\x46\xa8\x44\xc4\xce\xcd\xa2\x16\x13\x94\x35\x0e\x1e\xb6\x20\x3c\x48\x4a\x32\xa0\x3b\x5d\xd4\x08\xce\x7f\xa1\x2b\x61\xbf\x38\x27\x08\x61\x22\x18\xcc\xd1\x4e\x17\xe3\x2d\xb7\x16\xb4\x44\x0b\xa2\x98\xa5\x66\x77\x19\x8e\x33\xb1\xb4\xe0\xc6\xbe\x91\x39\xdc\xbe\x5b\x26\xe8\x1c\xe1\xd1\x14\x93\x8c\x99\x0b\x9d\x08\xca\x65\xb6\x56\x9a\xec\x0b\x21\x21\x35\x64\x29\x0a\x90\x7c\x03\xa9\x2a\x71\x8a\xd0\xec\xfc\x17\x7a\x23\x3e\x8b\x2f\xce\x29\xdc\x42\x96\x48\x3c\x1c\x26\x92\xc9\x36\x29\x6e\xfe\x9c\xa0\x73\xf7\x2f\xc2\xc4\x32\xdb\x9e\xdd\xe4\x91\xce\x8c\x21\x84\xbd\x1e\x17\xec\x3c\x59\x09\x7b\xbf\x5e\xe1\x7f\x4f\xe8\x97\x17\x38\x49\xef\x7f\x39\xc7\x09\xfd\x12\xd7\xdb\x54\x42\x29\xfc\x7e\xe8\xfc\x1c\x8d\x8a\xf9\x57\x8b\x11\xf2\x1f\xdf\x2c\x30\xd1\x89\x98\xa3\x4b\x6e\x60\xbc\xd3\x05\x5a\x90\xfd\x4e\x17\xa9\x24\x5b\x6e\xd7\xa9\x25\x1a\xae\x53\x4e\x02\x73\x69\x56\xe2\xb2\x51\x91\xe4\x58\x93\x78\x89\x71\x49\x1e\x3c\x5f\x67\x63\x16\x47\x3b\x34\xc9\x04\x13\xce\x5a\x88\xca\x19\x6f\xb4\x8a\xed\x0b\x61\x2c\x48\xd0\x26\x9d\x2f\x88\xe5\xdb\xb4\xad\xfc\x76\x2d\x0c\xad\x21\x58\xf7\x27\x35\x85\xc8\xc0\xe1\x3f\x18\xdf\xee\xcc\x3a\x01\x5c\x92\x9d\x3c\x44\x18\xac\xe9\x00\x5e\xc4\x03\x07\x3c\x1b\x4f\xcf\x98\x73\x47\xbf\x6d\x63\xb3\xf5\x13\x96\x4c\x9d\x90\x34\x17\x06\xda\xc6\xe8\x36\x07\xf6\x9d\xd6\xfc\xae\x65\x57\x1e\x59\xbc\x54\xf4\x6a\xb7\x01\x69\x0d\x99\xe0\xd9\x01\xee\xa5\xd2\xaf\x79\xb6\x4e\x92\xb6\x47\xb1\x94\x6f\xb7\xc5\x9d\x27\x97\x00\x76\x67\x53\xce\x82\x1d\x1c\x1e\x11\x50\x63\xef\x0a\xa0\x06\x6c\xed\xf0\x9c\xe1\x20\x84\x4b\x22\x3a\x2e\xa7\x32\x48\xcb\x10\x1a\x25\x93\x7b\xc0\xc4\xb0\xf9\x62\x66\x69\x01\x72\x65\xd7\xdf\x4e\x66\xd8\xd0\x9d\x34\x6b\xb1\xb4\xc9\x81\x01\x79\x88\xf1\xd7\xa4\xfa\xc4\x41\xcf\x1b\x98\x09\x69\xa0\x70\xe3\x96\x7e\x55\x42\x26\x88\x38\x6a\x54\x87\x9a\xca\xe6\x19\xdc\xdf\xef\xaf\x52\x84\x88\x48\x91\x54\x5b\x40\xde\x04\x8d\x1b\x81\xdb\xac\xd8\xe5\xf0\x43\xf5\x5b\xc3\x56\x99\x14\x7d\x89\xba\xaa\x5a\x23\xb3\xcc\xde\xdf\xef\x4b\x02\x17\x09\xb4\x48\x9b\x62\x7f\x84\x36\x41\x43\x84\x7b\x24\x1e\x15\xc8\x30\xa8\xe0\x18\xc2\xb3\xaf\x18\x33\x91\xa3\xe1\x30\x31\xf3\xe9\x82\xb9\xff\xb5\x4c\x7b\x74\xbe\x22\x68\xe0\x2c\x7e\x9e\x43\xa6\x72\xf8\xfb\xfb\x37\x2f\xd5\x66\xab\x24\x48\x9b\x98\xf9\x64\x81\x17\xac\x77\x66\xba\xc0\xee\x54\x89\xc5\xa9\x2d\x93\x42\x65\xdc\x11\x42\x0d\x70\x9d\xad\xdd\x89\x93\x8c\xed\x6f\x44\x51\x7c\xf0\x23\xa9\x84\x9b\x01\x27\xb9\xc8\x3b\xbf\x1d\xc0\x8f\x8a\xe7\x6f\x95\x86\x06\xe4\x78\xe4\xb5\xd6\x4a\x77\x01\xde\x7b\x49\x86\xa1\x9f\x79\x21\xe2\xc0\x09\x9b\xf2\x72\x27\xc6\x05\x5f\xf5\xb5\xb4\x14\x85\x05\x7d\x2c\x45\xcd\xec\x1c\x16\xc3\xe1\x99\x99\xc3\xa2\xd6\x83\x39\x2c\x5c\xf8\xa4\xbd\x9b\x71\x7b\xbd\x54\x3b\x69\x7b\xae\xb4\x78\x3f\x7d\x86\x3b\x93\x34\x7b\xe3\x78\x10\x25\x71\xc4\x1f\x1b\x9f\x37\x14\xcb\x0e\xc6\x2d\x53\x09\x9e\x01\x6d\xf3\x4c\xbd\xf9\x26\x40\x20\x62\x26\x08\x9d\x31\x66\xe9\x95\xbb\x8a\x83\x78\x13\x8b\x4b\x17\x55\xf4\x85\x5d\x6f\x55\x0e\xc5\x2b\x6e\x79\xa5\x33\xff\xf1\xe1\xdd\x4f\x74\xcb\xb5\x81\xa4\x99\x23\xda\x07\xaa\xed\xd8\xc1\x60\x3d\xe7\x4e\x85\x78\x2d\x95\x86\x3f\xa6\xc9\xb5\x12\xf9\xc0\x26\xb8\xfc\x82\xf2\x5f\xf9\x6d\xe2\xbd\x39\xe2\x5b\x71\x7e\x3d\x3d\xf7\x40\x88\xe4\xdc\xf2\x8f\x77\x5b\x48\xd1\xaf\x46\x49\x44\xcc\x2e\xcb\xc0\xb4\x8e\xcd\x3b\x84\x80\xd1\x10\x87\x8c\x80\x3f\xfb\x43\xaf\x91\x29\x69\x54\x01\xd4\xcf\x26\x06\x97\x2e\x8c\x8b\xba\x75\xe4\xa8\x1b\x3d\x8c\xc2\x8b\x6e\x69\xd6\x68\x08\x31\xec\x15\xb7\x40\xa5\xba\x49\x7c\x40\x86\x10\x63\x2c\x01\xf6\x05\x85\x5b\x0b\x32\x4f\xf6\xc6\x72\x6b\x52\xb4\x54\x66\xad\x5a\x96\x4c\xb4\x5c\xa5\x28\xfd\x6a\x82\x4a\x02\x18\x07\xe2\x5d\xe0\x18\xd9\x40\x5f\x3a\xfb\x72\x02\xe6\x1b\xc3\x80\x38\xc4\x40\xaf\xea\x70\x9f\x6a\x30\xbb\xc2\x3a\x47\x46\xea\x1f\xdf\xdf\xb9\xb3\x66\xfb\x32\x4a\x95\xd6\x96\x53\x71\x40\x2c\x7d\x1f\x60\xf1\xac\x4f\xe0\xc1\x12\x83\xc4\x53\x20\xd6\x0b\xfd\xcf\xaf\x3f\x3e\xe1\x0c\xc0\x87\xbf\x40\xbd\xd5\x61\xbf\xb7\xff\xac\xb7\xae\xa6\x66\x50\x18\x88\x36\x03\x15\x39\x84\x33\xa0\x1f\x9c\xac\x88\x74\xce\xb9\xd2\x21\xe1\x74\x48\x63\xb1\x4c\xf4\x5c\x2c\x82\xf2\x29\xe6\xbe\x67\x32\xdc\x8c\x7b\xc7\x73\x2a\xc8\x7b\xb8\x4e\x15\x7d\x0f\xd7\xc2\x08\x25\xc9\x5b\x6e\xb3\x35\x98\x54\xd1\xf8\x45\xbc\x3b\xfd\x87\xb0\x6b\x3f\x90\x2a\xda\x1d\x28\x71\x29\xa9\x51\xda\xb6\x6d\xbb\xed\x64\x2b\x44\x95\xbb\x87\x83\x81\xfb\x7b\xc7\xcd\x56\x51\xe7\xd7\x0a\x70\x7e\x8f\x6b\x48\xac\x1f\x74\x6e\xcf\x2b\x4e\xe6\x2c\x44\xf6\x7b\xe3\x6c\x1e\x30\x2c\x18\x78\x2f\x59\x1f\xb2\x3c\x3a\xe3\x8c\x58\xea\x55\x8b\xed\x3f\x80\xbe\x06\x9d\x72\xfa\x6a\xa7\xbd\x3f\x25\x1f\x95\xe5\x45\xda\x68\xe6\x38\x32\x9f\xf2\xc0\xf3\xbb\x2d\x48\xc8\x4b\xd2\xaf\x20\x71\xa3\x6a\x03\x5c\xf6\x58\x93\x71\xa9\xde\xf1\x19\x3b\x93\x40\x1f\xd7\x30\x30\x9e\xa6\xc1\xa5\x56\x9f\x61\x90\xab\x1b\x89\x82\xad\xd5\x4e\xba\xdf\xe3\x12\x53\x39\xde\x16\xaf\x73\x58\x10\xcd\xcc\x81\xb4\x09\x67\xe6\xe0\x04\xc7\x9a\x48\xf6\x96\xdb\x35\xdd\x08\x99\x7c\x05\x5f\x13\xee\xa2\x64\xce\x98\xbc\x40\x28\x45\x68\x24\x67\x96\xb6\x6f\x8f\x8e\x61\x13\x97\xe0\xc8\x70\x4a\xaa\xb1\x60\x4f\x50\xb0\x43\xb2\x77\x56\xab\x47\x28\x45\x23\x11\x6d\x19\xca\x27\x58\x92\x7a\x96\x25\x85\xec\x5e\x9f\xb6\x24\x7d\x64\x49\x9c\xe9\xca\x92\xdc\xf5\x53\x0b\xab\x25\xb6\x4c\xc9\x8c\xdb\x84\x57\x03\x38\x1c\xff\xa1\x28\x08\x34\x2a\xf0\xbb\x1e\xfd\x4f\x7c\x03\x3f\x28\xed\xad\xf5\xa1\xfb\xd6\xd1\x2f\x96\xc9\x99\xed\xe6\xc0\x86\x59\x97\x0a\x79\x4d\x38\x4c\x6b\x1c\xbc\x7e\x31\xe9\x2e\x70\xfa\xd1\xc4\x42\x7a\x34\xc5\xfd\x69\x94\x3c\x46\x48\xf4\x78\x5a\xc7\x72\xf2\xc5\xe4\x82\xa7\x6d\x5c\x72\x34\x25\x1a\x8f\xd0\xe0\x7c\x80\x46\xbc\x24\x7f\xd7\xc5\x47\x75\xc0\x57\x95\xc5\x75\xae\xf7\x44\x53\x8e\x93\x0e\xab\x11\xae\x2c\x49\xc1\xde\x03\xaf\x73\xfc\x97\x05\x37\x26\xd9\xe7\xc2\x6c\x0b\x7e\xe7\x64\x97\x22\xb7\xc5\xbb\xad\xc3\xef\x2e\x12\x99\x83\xee\x09\x24\xda\x48\x5e\x17\xe0\xe2\xef\x04\xa9\xb8\x2a\x3e\x5f\x04\x95\xd6\x6a\x6b\xa8\x1f\x20\x06\x0a\xc8\x2c\xe4\xed\x99\x6a\xac\x24\x87\xe0\xee\x3c\xc9\xee\x51\x72\x83\x63\xf9\x9e\x6b\x44\xb2\x2a\x06\xfc\x87\x28\x8a\xb7\x87\x21\x50\x13\xcb\xcc\xb2\x6e\xd0\x62\xf9\xb6\x9d\x21\xc4\xc0\x1f\xac\xbb\x28\x20\xd9\xf3\xa2\x08\xf1\x5b\x3b\x7a\x32\xb8\xf4\x99\x43\xb3\xe9\x2b\x91\x3f\xb0\x27\xd5\xb0\x34\xf4\x8a\xae\xc0\xbe\x7a\xf7\xf6\x27\x95\x83\x0f\x9e\x0c\xd8\xef\xac\xd5\xe2\x72\x67\x21\x41\x7c\x67\x95\xc3\x57\x80\x05\x44\x90\x5a\x2e\x51\x4c\x97\x5c\x02\xe2\x9d\x43\xd2\x88\x29\x4e\xad\xb9\xf9\x2e\xbf\xe6\x32\x83\xfc\x67\x27\x37\x93\xe0\xe1\x30\x2c\x5a\xab\x9b\x6a\x2a\xc1\x04\xe8\x52\x65\x3b\xe3\xe2\x96\x15\xd8\x37\x52\x58\xc1\x0b\xcf\xe3\xf1\x01\xfb\x80\x02\xd2\xf0\xd4\x52\xf1\x3f\x5f\x44\x6f\x34\x5f\x94\x25\xb9\xda\x81\xbe\xfb\xb3\xb2\x7f\x85\x3b\x67\x7f\x1d\x6b\x33\x37\xc2\x66\xeb\x04\x9c\xac\x5e\xaa\xdc\x5d\x3a\xdc\xc0\xe0\x9b\x49\xda\xc8\xc2\xe7\x21\x1d\x79\x54\xf4\xcd\x2e\x35\xf0\xcf\x33\xbf\xe4\xeb\x3f\x85\x25\x6b\x91\x43\xc3\x4b\x1b\x62\xfa\x75\x80\x30\xbb\xcb\x8d\xb0\xff\xe9\xa8\x4a\x70\x8b\xbe\x1f\x1c\xd2\xe3\xb8\xab\x47\x6c\xf7\xf7\x3d\x5b\x95\x21\x61\x7a\x1e\xa3\x15\xd5\xa2\xde\xe3\xf5\x66\x6b\xef\xea\x93\xe9\x6e\x41\x4e\x29\x48\x9f\x40\x4e\xb1\x5b\x51\x79\x82\xdd\xae\x2e\x94\x9d\xe4\xef\xff\x3d\x6f\x07\xc4\x3e\x91\xc5\x16\x96\xb6\x82\xb7\xfc\x8c\x92\xc1\x7b\xbc\x87\xab\x1d\x18\x0b\xf1\x1a\x5e\xd5\xc6\x86\x83\xad\xbc\x87\xd5\xeb\xdb\x6d\x8f\x1b\x74\x29\x5e\x98\x4c\x4e\xf2\xe9\x9d\x19\xb5\x5a\x6c\x3a\xd2\x10\x8e\xe3\x2e\x64\xb6\x86\xec\x33\xe4\x17\x48\xac\x50\x8a\x56\x28\x6c\x1e\x48\x39\xf6\x2a\x19\x6d\x52\xcb\xd6\xee\xde\x42\x7d\x4c\x05\xd1\x8f\x36\x59\x65\x88\x69\x18\xcb\x68\x9d\x24\xba\x63\x4b\x80\xcd\x17\x98\xec\xaf\xd2\xa7\x31\x11\x5e\x10\x1e\xb4\xe4\x0e\x7c\xe7\xa1\xa1\x59\xd6\x1e\x7e\x60\x75\x0c\x80\x9a\xb7\x0e\x22\xd2\xa7\x89\x31\x64\x43\xf1\xdd\xa3\x2c\x89\x39\x16\x66\x15\x19\x34\x21\xe1\x11\xef\x44\xb3\x87\xb6\x23\x9c\x3d\x24\x09\x22\xd9\x13\x38\x9e\xc5\x3b\xcf\x25\x5f\x44\x57\x1c\xb0\xc8\x01\x63\x89\x75\xff\x01\x15\x98\x5a\xf5\xa3\xba\x01\xfd\x92\x1b\x48\x30\xbe\xbf\x47\x56\xef\x00\x31\x66\xef\xef\xd1\xd4\xfd\x4b\x78\x8d\xcb\x93\x43\x64\xfd\xbb\xbd\x7f\x49\x8e\x3c\xe0\xb1\x82\x87\xec\xfd\xa9\x07\x7d\x7f\x7f\x00\xff\xb4\x13\x8e\x6e\xf7\x91\xe3\x3c\x42\x1e\x14\xfd\x18\x6b\x49\x0e\x3c\x53\x1f\x5b\xec\x19\x6c\x0d\x87\x07\xf0\x4f\x63\xab\x24\x6d\x87\xf4\x50\x54\xc0\xf3\xeb\xae\xce\xd8\xd6\xe4\x25\x97\x5d\x55\x39\xa9\xa7\x0f\xaa\xe1\x53\x94\xd0\x05\x94\x68\x0d\x62\xb5\xb6\x88\xf8\x60\xc4\x05\xae\x6e\x70\xcb\xf3\x5c\xc8\x15\x22\x68\x3a\xd9\xde\x0e\x26\x7e\xdc\x12\xb4\xe1\xb7\xe3\x7a\x41\x3d\xaa\xb6\x3c\x13\xf6\x2e\x0c\x95\xa4\x7d\x21\xfc\x6e\x62\x78\xc0\x60\x0f\xf8\x98\x1c\x33\xd1\x4f\xff\x74\x32\xd9\xde\x1e\xf3\x30\x45\x98\x98\x26\x74\x3a\x0e\x89\x5b\x7c\x04\xb7\x5b\x05\x4c\x55\x0e\x69\xd9\x7c\x11\xde\xf7\x5a\x40\x41\x7d\x7b\x13\xf4\xf8\x9e\xe7\x93\xf3\x1e\xac\xbd\x6b\x6c\x78\xa6\xe8\x8b\xcb\x8b\x2a\x20\x6f\x45\xe0\x6e\x8b\x12\xd7\xcf\x05\xba\x4d\xbe\xcf\xc7\x09\x67\x08\xd5\x15\xb6\xe1\x30\xe1\xac\x37\xe6\xcf\xc5\x35\x22\xfb\xcc\x05\xe6\x21\x1e\xf7\xab\x51\x49\x9e\x01\x3d\x2e\x60\x69\x4f\x2d\xe1\x88\xec\xd7\x1a\x96\x29\x8a\x8a\x9b\x7f\x0a\xea\xbd\xb6\x9b\x02\x91\x16\xae\x42\xc8\xcf\xe3\x95\xe6\x77\xa8\x24\xe8\x75\x04\x1e\x78\x3d\x47\x18\x3f\x8b\x20\xed\x55\xe2\xa9\x4c\x5c\xf3\x02\x95\x44\x24\x9a\xfa\x27\x11\x4c\xd0\xc6\x0c\xac\xfb\x44\x98\xa0\xc1\x39\x7a\x36\x9e\xf0\xd8\x12\x10\x85\x4c\xf7\xb7\x60\xd2\xe1\xe5\x82\xa0\xc1\x32\x0a\xe1\x61\x31\x88\x3c\x45\x42\x6e\x77\x8f\x70\x1e\xc0\xf8\x29\xa0\x80\x21\x80\x5d\xa1\xf8\x24\x61\xe1\xd6\x22\xe2\xf3\xe2\xb5\x2a\x9c\x01\xc5\xc4\x6d\x70\x79\xe7\x22\x28\xb8\xdd\xba\x6c\x73\xe9\x97\xb4\xd3\xa0\xd4\x67\x41\x44\xc9\xbf\xc2\xdd\x2b\x17\xa1\x7a\x45\x3d\xc8\x3d\x88\x92\x21\x26\xec\x4c\xfa\xa1\xf2\xa9\x07\x7f\xb9\xb3\x56\xc9\x31\xcf\xf3\xb1\x92\xa7\x78\x0b\x40\x91\xb9\x5c\xe5\xdc\x3a\xd2\x5e\x16\x22\xfb\x7c\x14\xb9\x96\x4f\x92\xf6\xe5\xe3\xb2\xe6\xf9\x75\x94\x8d\xfb\x3a\x01\x6e\xb6\x5c\x76\x19\x52\x99\x15\x99\x92\x83\xf8\xef\x38\x5b\xc3\xb5\x56\x72\xbc\xdb\x0e\x9c\x47\x1e\x7b\xb4\x1d\xe2\xdb\x8e\xfa\xc9\x72\x5b\x0a\x28\xf2\x53\x54\x15\xfc\x12\x0a\x67\xc0\x76\x53\xfc\xa0\xb4\x83\x76\x8a\x58\x12\xe4\x34\x73\xf0\x37\x6e\xd7\xe8\x59\x1b\x8d\x1f\xd4\xcf\x4a\xf5\xda\x3a\xe7\x24\x18\x76\xed\xaa\x9f\x6e\x2b\x5d\x04\x38\xd0\xb2\x83\xc4\xaf\xab\x65\x9d\x7c\xeb\xb1\xb3\xfe\xcd\xf2\x6a\x5f\xd6\x2d\xb7\x36\xf8\x3f\x15\x5f\x87\x88\x07\xa4\xd8\x85\x3b\x10\x66\x7f\xc2\xd9\x95\x69\x5f\x9e\xf7\x87\x89\x56\xac\xa4\xd2\x30\x76\x01\xa7\x93\xec\x1b\xff\x73\xe0\xe2\xea\x3f\x42\xa6\xde\xda\x5b\x3b\x46\xbf\xe8\x83\xdb\x4b\x75\x1b\x25\x28\x02\x35\xbf\x33\xcb\x2d\xf8\xcd\xae\xb0\x22\x44\x01\x9f\xe2\x74\x2d\x90\x50\x06\x2b\x09\xfa\xe0\xe7\x07\x2e\xda\xf8\x3d\x45\x11\xb6\x8d\xb2\x88\x35\xb7\x36\x06\xa5\x37\xe3\x4c\x49\xab\x55\x31\x68\xd1\x89\x88\xff\xb1\x0d\x3d\x45\x46\xfc\x17\xa4\xf5\xeb\xfb\xf4\xdf\x08\xe0\x20\xba\x8a\x7a\xfb\xd8\x2d\xd7\xf6\xf9\x5c\x46\xc1\xfb\xaf\xae\x27\x6f\x05\xef\x27\x18\x82\x0d\x22\xfe\x85\x0c\xd5\xe1\xad\xbf\xa6\xc3\x39\x0f\xdc\x59\x92\x41\xa8\xe4\xba\x6b\x6e\xcb\xed\x9a\x0c\x8c\xdd\x2d\x97\x83\x42\x7c\x86\x81\x5d\x73\x4b\x5d\x68\xc2\xfd\x5b\x67\xde\xd3\xc2\xe4\x03\x47\xa0\x3f\x0a\x09\x3f\xed\x36\x97\xa0\x89\x66\x40\xbf\x87\xa5\xd2\x55\x3a\x3f\x03\xfa\xdd\xd2\x82\xae\x7e\xd6\xd9\x7e\x84\xea\x09\x17\x09\xaf\x03\xc6\x7d\x40\x9b\x9a\xb1\x1e\x71\xf2\x52\x49\x0b\xd2\xa6\x10\x0a\x5b\xe9\xd9\xb4\x0c\x95\xf4\x03\xe0\x06\xd0\x93\x56\x41\x4f\x4a\x4c\x2a\x6a\xfa\xb6\xd5\xc7\xdb\x8e\xf4\x68\x7a\x7a\xdb\x92\xac\x6b\xa1\x0c\x20\xb1\x4d\x2b\x01\x34\x4d\x10\xce\x51\x45\x0c\xbe\x5b\x50\x48\x09\xfa\x2f\x1f\xdf\xfe\x58\xce\xd6\x14\x58\xae\x32\xdf\x1f\xd2\xa7\x0d\x21\xfa\x5d\x3e\xfa\xc8\xec\x3d\xd2\xcf\x02\x6e\x9c\x92\xf4\x56\x97\x32\x5a\x0d\xb7\x5e\x68\x7d\x90\xff\x58\xce\x50\x41\x5e\x57\xf9\x4e\xb3\xb4\x4a\x72\xaa\x11\xe7\x6b\xab\xe7\x88\x30\xb6\x89\x55\x47\xde\x1e\xf4\xa1\x67\x55\x8f\x94\x4c\xd3\x4d\xe7\x81\x5b\x37\x7d\x5f\x21\x42\x94\x7c\x03\xa7\xba\x59\xbc\xfa\xb9\xf5\x39\x26\xda\xa9\x23\x67\x93\x50\xcc\x08\xda\xc6\x5f\xc8\x19\x1f\x8d\x02\x42\xe1\x0b\xf0\x44\x31\x7b\x61\xe7\x75\xc3\xca\x74\x41\xe3\x69\x8f\xa7\x33\x31\x9f\x54\x3f\x5f\x30\x75\x21\xfa\xb3\x19\x88\x20\xdf\xaa\x0b\x5b\x75\x26\xa5\x76\x38\x8c\xc5\xd0\xe1\x30\x69\xe3\x1f\x27\x6a\x5c\xad\xc0\x8b\x00\xc2\xce\x26\x4e\x85\xd2\xc4\x0e\x87\x3a\xa0\xb0\x2e\xa3\x14\xb8\xac\x2a\xad\xed\x09\x5d\x26\xba\x2e\x59\x1d\xca\x0b\xd7\xc5\xaf\x13\x13\x47\xed\x99\x67\x91\xd0\xaa\x56\xb4\x4e\x80\x46\x15\xc5\x75\xd1\xd9\x49\x36\x0e\x7a\xd1\xce\x66\xce\x3c\xea\x22\x11\x9b\x54\x1d\xb6\xa1\x69\xcd\xf8\x02\xd4\x19\xc7\xfb\x48\xf6\x3a\x31\x38\x3e\x9f\x96\xcd\xd0\x61\xd3\x50\x85\x6e\xcc\x9d\xe4\xab\xf6\x22\x4c\xe2\x0a\xf4\x02\x36\xdf\xa2\xd1\x3a\x71\xd3\x78\x84\x5e\x9c\xbb\xdf\x2e\xbd\x36\xfd\x3d\x7e\xb5\xfc\x74\x7c\x91\x43\xb8\x4c\x34\x31\xf5\x33\xe3\xd3\x5c\x6f\x21\x24\x3c\x9a\xf2\x65\xb4\x2e\x7a\x25\x96\x48\xa2\xe3\x21\x3b\xa7\xdf\xc6\x25\x77\x1b\x44\x2c\xd7\x2b\xb0\x29\xfa\x74\x59\x70\xf9\xd9\xa7\x3f\x51\x25\x9e\x1a\x31\x17\x2e\x6d\x22\x39\x97\x2b\xd0\x6a\x67\x8a\xbb\x0f\x60\xdf\x54\xce\x24\xdd\x7f\xfa\xe4\xae\xca\x94\x97\x31\x71\x7e\x16\xbf\xde\x50\x51\xe9\x5c\xfd\x73\x97\xba\x48\xf3\xc9\xb9\xa8\x15\xf6\x34\xf4\x09\xc1\xb6\xbc\x80\xbf\xce\x00\x97\xad\xb1\x67\xc4\x22\x05\x8c\x2f\x55\xee\xf2\x6f\x11\x3a\xb0\x44\xfb\x11\x21\x2a\xdf\x0b\x3e\x1c\x26\xa2\xff\x35\xa1\xce\xaf\xda\x92\x53\x5c\x1f\xdc\xcd\x8d\x0f\x2e\x09\x72\x9f\x03\x5e\x14\x03\x44\x38\x41\x83\xe8\x11\x07\x42\x0e\x10\xc9\x68\xab\x1e\x9c\xd8\xe7\xc4\x55\x21\xe0\x96\x44\xf8\xbb\x79\xfb\x84\xb2\xa9\xd9\x15\x36\xdc\x11\xcf\x28\x44\xb6\xda\x7f\x1e\x29\x43\xc6\x6a\x79\xa8\xc9\xf9\x1c\x37\x35\xf4\x2a\x56\x21\x1f\x2f\xe8\xb5\x97\x97\x7d\x57\x92\x58\x26\xad\x47\x20\x5f\x90\xc7\x8f\xeb\xa9\x8b\xe5\xa4\x1a\x07\xec\x9d\x78\xce\x63\x38\x19\x0b\x5a\xad\xe4\xaa\x0a\x9f\x5e\xbf\x7f\xff\xee\x7d\x8a\x3a\xcf\x5d\x81\x00\xe7\xf2\x1c\x4c\xf5\xf2\x5b\xbd\x9d\x79\x5e\x86\xc3\x09\xeb\x1b\xaf\xbc\xdc\x73\xa9\x2f\x09\xfa\xd7\x3f\xff\xfb\x27\x65\xd7\x42\xae\x06\x4b\xa5\x07\x77\x6a\x47\x06\xaf\xf8\xcd\x8a\xfe\xeb\x9f\xff\xf3\xd0\xe3\x4b\xe0\x63\x32\x88\x14\x20\x5c\x53\xde\x4b\x61\x55\xa0\xf5\x63\xfe\x2c\x7f\x03\xb1\xfd\xf9\xc6\x66\x85\xc8\xde\xe8\x2c\x45\x62\xc3\x57\x60\xce\x2f\x77\xe6\x8e\xae\xc4\x12\x3d\x98\xd2\x07\x06\x82\x26\x0a\xb9\xa2\xd4\x05\xa6\xb3\xa3\xa7\xcd\x18\x83\x58\x96\x1c\x33\x75\x7f\x3f\x5f\x1c\xde\x9d\x5e\x8b\x9f\xe5\xed\x5c\xdc\xf3\xfb\x78\xbb\x63\x07\xbf\x81\x15\x1f\x1f\xbe\x8b\x84\x0d\x9f\x7c\x49\x38\x97\x88\xca\x43\xcf\x12\xba\xaf\x4e\xb8\x97\x25\xd9\x47\xaf\x94\xd6\xed\x5d\xbe\x83\xdc\x2d\xbb\xf6\x05\xae\x34\x60\x20\x41\xbe\x29\x90\x76\x0c\x97\xda\xa3\x26\xb2\x27\xde\x22\x21\xd3\x8a\xfa\x62\xbd\x27\xdb\x3c\xea\xc9\xbe\xdb\x6e\x9f\xe6\xc2\x94\x7f\xa3\x0f\x3d\x83\x3e\xfd\xba\x98\x2f\xd2\xea\x65\x3b\xf6\xfa\x12\x14\x2b\x16\x8d\x23\xbb\x4a\x81\x5e\x11\x91\x02\x15\xb1\x94\x58\x55\xaa\x3a\x85\xc2\x6e\xb9\x2a\x96\x01\x6d\x89\xab\x3e\x9d\x47\x1b\x39\x7c\x30\x06\xed\x2a\x69\xe7\xed\x1d\xd7\xe5\x50\xe8\x96\x43\x4d\xc7\xe9\xc6\x7e\x07\x7f\x9d\x65\xad\x4e\xb6\xc3\xbd\x7c\x54\x1d\xeb\x11\xa6\xea\x49\x69\x61\x0a\x1d\x9a\xbc\xe1\x83\xd4\x75\xac\xea\xe2\xe8\x71\xf6\xba\xd2\x88\x23\xcc\x75\x59\x3a\xc1\xb1\x7b\xca\x7b\xf6\x86\xce\xba\xe5\xea\x48\x2a\xe1\x0f\xa8\xfe\xd0\xcd\x43\xd3\x56\xcf\x79\x3c\x65\xdf\x10\x84\x78\xb4\x36\xe0\xbc\x11\x32\x57\x37\x94\xe7\xf9\xeb\x6b\x90\xf6\xc7\xd8\xe0\x9f\xa0\xad\xda\xfa\x23\x6d\xff\xd9\x05\xb4\xfb\x93\xfb\x4e\xa4\xea\xa4\x71\xb4\x36\x3d\xc9\xee\x1a\x3d\x6a\x08\x38\xee\x32\xd8\x6d\x73\x6e\xe1\x2f\xc2\x58\xa5\xef\x12\x68\xe3\xa8\xeb\x51\x1d\x41\xb5\x5a\x09\x3a\x6b\x7b\xda\xd3\xea\x56\xf5\x2d\xb7\x6b\xe7\x68\x46\xe8\xe2\x8a\xa1\x11\xc8\xa3\x2e\x77\xa0\x57\x78\x84\x86\xe2\xd4\xac\x70\xb3\xde\xaa\x4e\x41\xf8\x49\x07\xd5\x36\xb3\x53\xc0\x6d\x18\xb7\x26\xb6\x0f\x8f\xa2\x2d\xcd\xd6\x81\x27\x9f\x53\xc4\xd3\x0c\x7f\x29\x53\x12\x84\xfc\xdf\x3b\x3d\xaf\x95\xac\xb9\x93\xfa\xa6\x77\x64\xef\x5f\x6d\x4c\xd3\xfb\x15\x7b\x17\xe2\x8d\x5a\xb5\x08\x84\x9f\xa2\xdd\xb1\x10\x86\x7a\xfc\x4d\x3b\xf6\xe8\x71\x3c\x07\x95\xbb\x1e\x55\x89\xa1\xe9\xc1\xf0\x89\x9b\x65\x1b\x59\xd0\xad\xb0\xb1\xcb\x83\xff\xbb\x14\x3c\x0b\x8b\x83\xf4\x9a\x13\xe9\x43\xb9\xf1\x02\xc3\xa4\x7e\xf0\x58\x81\x8d\x73\xdf\xdf\xbd\xc9\x13\xa4\x95\xb2\xc8\x5b\xa8\xf3\x0d\x09\x2e\x17\x78\xf6\xbf\x01\x00\x00\xff\xff\xe8\xf7\x8a\x0a\x05\x3a\x00\x00" func jsHoundJsBytes() ([]byte, error) { return bindataRead( @@ -473,7 +485,7 @@ func jsHoundJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/hound.js", size: 13855, mode: os.FileMode(420), modTime: time.Unix(1582790922, 0)} + info := bindataFileInfo{name: "js/hound.js", size: 14853, mode: os.FileMode(420), modTime: time.Unix(1603725451, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -493,7 +505,7 @@ func jsJquery213MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -513,7 +525,7 @@ func jsReact0122MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -533,7 +545,7 @@ func open_searchTplXml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1582790920, 0)} + info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -607,6 +619,7 @@ var _bindata = map[string]func() (*asset, error){ "index.tpl.html": indexTplHtml, "js/JSXTransformer-0.12.2.js": jsJsxtransformer0122Js, "js/common.js": jsCommonJs, + "js/common.test.js": jsCommonTestJs, "js/excluded_files.js": jsExcluded_filesJs, "js/hound.js": jsHoundJs, "js/jquery-2.1.3.min.js": jsJquery213MinJs, @@ -678,6 +691,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "js": &bintree{nil, map[string]*bintree{ "JSXTransformer-0.12.2.js": &bintree{jsJsxtransformer0122Js, map[string]*bintree{}}, "common.js": &bintree{jsCommonJs, map[string]*bintree{}}, + "common.test.js": &bintree{jsCommonTestJs, map[string]*bintree{}}, "excluded_files.js": &bintree{jsExcluded_filesJs, map[string]*bintree{}}, "hound.js": &bintree{jsHoundJs, map[string]*bintree{}}, "jquery-2.1.3.min.js": &bintree{jsJquery213MinJs, map[string]*bintree{}}, From f83e10833df1c8df6ecf6e8a97e0e684b08bdeda Mon Sep 17 00:00:00 2001 From: Blobb Ered <5307533+blobbered@users.noreply.github.com> Date: Tue, 10 Nov 2020 20:46:25 -0500 Subject: [PATCH 18/37] Setup Github Actions CI (#354) * Setup Github Actions CI Replaces Travis CI with Github Actions for better integration. Jobs are run against more recent Go versions, namely 1.12 to 1.14 . . For further documentation see - https://github.com/actions/setup-go - and https://help.github.com/en/actions This adds `-race` flag to the Go tests and will run a meta linter (golangci-lint). * keep travis in until github workflows is tested * tidy go mods * remove lint command from github workflow * add back go-bindata to go modules list * up version of actions checkout to fix deprecation errors * return go bindata to the go.sum file as well Co-authored-by: Andreas Linz --- .github/workflows/go.yaml | 33 +++++++++++++++++++++++++++++++++ README.md | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/go.yaml diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml new file mode 100644 index 00000000..c49d2824 --- /dev/null +++ b/.github/workflows/go.yaml @@ -0,0 +1,33 @@ +on: [push] +jobs: + go-build: + runs-on: ubuntu-latest + strategy: + matrix: + go: ["1.14", "1.13", "1.12"] + steps: + - uses: actions/checkout@v2.3.4 + - uses: actions/setup-go@v2-beta + with: + go-version: ${{ matrix.go }} + - run: go build -x -work ./cmds/... + node-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - uses: actions/setup-node@v1 + with: + node-version: "10.x" + - run: npm install + go-test: + runs-on: ubuntu-latest + strategy: + matrix: + go: ["1.14", "1.13", "1.12"] + steps: + - uses: actions/checkout@v2.3.4 + - uses: actions/setup-go@v2-beta + with: + go-version: ${{ matrix.go }} + - run: go test -race ./... + # There are no npm tests, yet. diff --git a/README.md b/README.md index 8c46cf16..76991928 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Hound -[![Build Status](https://travis-ci.org/hound-search/hound.svg?branch=master)](https://travis-ci.org/hound-search/hound) +[![Build Status](https://travis-ci.org/hound-search/hound.svg?branch=master)](https://travis-ci.org/hound-search/hound) Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox: [Regular Expression Matching with a Trigram Index](http://swtch.com/~rsc/regexp/regexp4.html). Hound itself is a static From a8ca3e8181ebb7d847cdb9759a9e0a9e3861db0a Mon Sep 17 00:00:00 2001 From: Salem Date: Tue, 10 Nov 2020 20:50:18 -0500 Subject: [PATCH 19/37] Add a github actions badge Thanks again @klingtnet and @blobbered for making this possible! --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 76991928..02b47d06 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Hound [![Build Status](https://travis-ci.org/hound-search/hound.svg?branch=master)](https://travis-ci.org/hound-search/hound) +[![.github/workflows/go.yaml](https://github.com/hound-search/hound/workflows/.github/workflows/go.yaml/badge.svg)](https://github.com/hound-search/hound/actions) Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox: [Regular Expression Matching with a Trigram Index](http://swtch.com/~rsc/regexp/regexp4.html). Hound itself is a static From 1702bcf5d1932743eda84c73e6bd031d4166dec0 Mon Sep 17 00:00:00 2001 From: Ashley Roach Date: Thu, 3 Dec 2020 13:14:28 -0700 Subject: [PATCH 20/37] Update README.md (#369) Add clarification of using file:// protocol for accessing locally pulled repos --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02b47d06..69a126eb 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ See [config-example.json](config-example.json) for examples of how to use each V There are a couple of ways to get Hound to index private repositories: * Use the `file://` protocol. This allows you to index a local clone of a repository. The downside here is that the polling to keep the repo up to date will -not work. (This also doesn't work on local folders that are not of a supported repository type.) +not work. (This also doesn't work on local folders that are not of a supported repository type.) If you're using Docker, you must mount a volume to your repository (e.g., `-v $(pwd)/src:/src`) and use the relative path to the repo in your configuration. * Use SSH style URLs in the config: `"url" : "git@github.com:foo/bar.git"`. As long as you have your [SSH keys](https://help.github.com/articles/generating-ssh-keys/) set up on the box where Hound is running this will work. From 5b702c4a979cd1e4b2893ceb1f0ff865b6ad974e Mon Sep 17 00:00:00 2001 From: karthick Date: Sun, 24 Jan 2021 21:17:36 +0000 Subject: [PATCH 21/37] Added new folder docs with config-options description on options. (#370) * Added new folder docs with config-options description on options. * Peer review comment update updated formatting for config options documentation and added link in readme. * readme link update * link update * Minor edits from code review Co-authored-by: kayyapil Co-authored-by: ehrktia Co-authored-by: Salem --- README.md | 3 +++ docs/config-options.md | 48 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 docs/config-options.md diff --git a/README.md b/README.md index 69a126eb..cb5d6951 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ go get github.com/hound-search/hound/cmds/... 2. Create a config.json file and use it to list your repositories. Check out our [example-config.json](config-example.json) to see how to set up various types of repositories. For example, we can configure Hound to search its own source code using the config found in [default-config.json](default-config.json): + ```json { "dbpath" : "db", @@ -38,6 +39,8 @@ the config found in [default-config.json](default-config.json): } ``` + +A complete list of available config options can be found [here](docs/config-options.md). 3. Run the Hound server with `houndd` in the same directory as your `config.json`. You should see output similar to: ``` 2015/03/13 09:07:42 Searcher started for statsd diff --git a/docs/config-options.md b/docs/config-options.md new file mode 100644 index 00000000..25d3599a --- /dev/null +++ b/docs/config-options.md @@ -0,0 +1,48 @@ +- [ConfigOptions](#configoptions) + * [Git options](#git-options) + * [SVN options](#svn-options) + * [URL options](#url-options) + + + +# Config Options +Most of Hound's behavior is defined by a single `config.json` configuration file. A list of its available options are provided below, along with their defaults. +keys used in the config json file are the options,description provides details about keys.Default values gives idea about value which can be used for the option. + + +ConfigOption | Description | Default Values +:------ | :----- | :----- +max-concurrent-indexers | defines the total number of indexers required to be used for indexing code | 2 +health-check-uri | health check url for hound | `/healthz` +dbpath | absolute file path where the `config.json` file exists| `data` +title | Title used for the application | Hound +url-pattern | composed of base url and anchor values in form of key value pairs | n/a +vcs-config | holds the version control config, default VCS used in Hound is git.Other options for VCS are svn,mercurial,bitbucket,hg, etc.Refer to `config-example.json` to get the list of vcs and usage. Below tables provide detailed options list of each type of vcs | git +repos | holds the list of repos which are required to be indexed by Hound . Each Repo is added with reponame as a Json Key with options associated with repo as values similar to example provided in `config-example.json` | n/a + +## Git Options +List of options associated with git vcs in repos + +GitOptions | Description | Default Values +:------ | :----- | :----- +ms-between-polls | time interval to poll the repo url | 30s +detect-ref | used to determine branch | master branch +ref | used to provide reference for the branch for repo| n/a + +## SVN Options + +List of options available for SVN vcs in repos + +SvnOptions | Descriptions| Default Values +:------ | :-----| :----- +username | user name for the svn repo | n/a +password | password to authenticate use for svn repo | n/a + + +## URL Options +Options for url used for repo link under repos + +URLOptions | Description | Default Values +:------ | :--- | :----- +url-pattern | when provided used by Hound for config|`{url}/blob/{rev}/{path}{anchor}` +anchor | when provided used for vcs config| `#L{line}` From 285018958c3f738568a8b02a98f9b794c1c5ac78 Mon Sep 17 00:00:00 2001 From: Blobb Ered <5307533+blobbered@users.noreply.github.com> Date: Mon, 25 Jan 2021 17:12:31 -0500 Subject: [PATCH 22/37] Test windows * Run Go build and test on Ubuntu Linux and Windows * Add lint --- .github/workflows/go.yaml | 21 ++++++++++++++++++--- Makefile | 7 +++++++ ansi/ansi_test.go | 2 +- ansi/tty_linux.go | 2 +- api/api.go | 2 +- client/coalesce.go | 4 ++-- cmds/houndd/main.go | 6 +++--- codesearch/index/merge.go | 12 ++++++------ codesearch/index/read.go | 4 ++-- codesearch/index/regexp.go | 8 ++++---- codesearch/index/write.go | 20 ++++++++++---------- codesearch/regexp/copy.go | 16 ++++++++-------- codesearch/regexp/match.go | 4 ++-- codesearch/regexp/utf.go | 2 +- config/config_test.go | 4 ++-- index/grep.go | 6 +++--- index/index.go | 4 ++-- index/index_test.go | 4 ++-- searcher/searcher.go | 2 +- ui/content.go | 2 +- vcs/vcs_test.go | 2 +- 21 files changed, 78 insertions(+), 56 deletions(-) diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml index c49d2824..d4da547f 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/go.yaml @@ -7,7 +7,7 @@ jobs: go: ["1.14", "1.13", "1.12"] steps: - uses: actions/checkout@v2.3.4 - - uses: actions/setup-go@v2-beta + - uses: actions/setup-go@v2 with: go-version: ${{ matrix.go }} - run: go build -x -work ./cmds/... @@ -19,14 +19,29 @@ jobs: with: node-version: "10.x" - run: npm install + golangci: + name: lint + strategy: + matrix: + go: ["1.14"] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2.3.4 + - name: golangci-lint + uses: golangci/golangci-lint-action@v2.3.0 + with: + # the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. + version: v1.35.2 go-test: - runs-on: ubuntu-latest strategy: matrix: go: ["1.14", "1.13", "1.12"] + os: [windows-latest, ubuntu-latest] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2.3.4 - - uses: actions/setup-go@v2-beta + - uses: actions/setup-go@v2 with: go-version: ${{ matrix.go }} - run: go test -race ./... diff --git a/Makefile b/Makefile index fa3725a7..535ec866 100644 --- a/Makefile +++ b/Makefile @@ -35,5 +35,12 @@ test: go test github.com/hound-search/hound/... npm test +lint: + export GO111MODULE=on + go get github.com/golangci/golangci-lint/cmd/golangci-lint + export GOPATH=/tmp/gopath + export PATH=$GOPATH/bin:$PATH + golangci-lint run ./... + clean: rm -rf .build node_modules diff --git a/ansi/ansi_test.go b/ansi/ansi_test.go index efe6ae7a..10456c13 100644 --- a/ansi/ansi_test.go +++ b/ansi/ansi_test.go @@ -11,7 +11,7 @@ var ( printTests = false ) -func makeReal(s string) string { +func makeReal(s string) string { //nolint return strings.Replace(s, "~", "\x1b", -1) } diff --git a/ansi/tty_linux.go b/ansi/tty_linux.go index d6fad23e..321978bf 100644 --- a/ansi/tty_linux.go +++ b/ansi/tty_linux.go @@ -1,4 +1,4 @@ package ansi const ioctlReadTermios = 0x5401 // syscall.TCGETS -const ioctlWriteTermios = 0x5402 // syscall.TCSETS +const ioctlWriteTermios = 0x5402 //nolint syscall.TCSETS diff --git a/api/api.go b/api/api.go index b6340487..4f686beb 100644 --- a/api/api.go +++ b/api/api.go @@ -89,7 +89,7 @@ func searchAll( *filesOpened += r.res.FilesOpened } - *duration = int(time.Now().Sub(startedAt).Seconds() * 1000) + *duration = int(time.Now().Sub(startedAt).Seconds() * 1000) //nolint return res, nil } diff --git a/client/coalesce.go b/client/coalesce.go index 69d085ac..0c55794c 100644 --- a/client/coalesce.go +++ b/client/coalesce.go @@ -30,13 +30,13 @@ func matchToBlock(m *index.Match) *Block { v[b] = true - for _, line := range m.Before { + for _, line := range m.Before { //nolint l = append(l, line) } l = append(l, m.Line) - for _, line := range m.After { + for _, line := range m.After { //nolint l = append(l, line) } diff --git a/cmds/houndd/main.go b/cmds/houndd/main.go index 43d4a304..9d2d79e5 100644 --- a/cmds/houndd/main.go +++ b/cmds/houndd/main.go @@ -47,7 +47,7 @@ func makeSearchers(cfg *config.Config) (map[string]*searcher.Searcher, bool, err if len(errs) > 0 { // NOTE: This mutates the original config so the repos // are not even seen by other code paths. - for name, _ := range errs { + for name, _ := range errs { //nolint delete(cfg.Repos, name) } @@ -79,7 +79,7 @@ func registerShutdownSignal() <-chan os.Signal { return shutdownCh } -func makeTemplateData(cfg *config.Config) (interface{}, error) { +func makeTemplateData(cfg *config.Config) (interface{}, error) { //nolint var data struct { ReposAsJson string } @@ -98,7 +98,7 @@ func makeTemplateData(cfg *config.Config) (interface{}, error) { return &data, nil } -func runHttp( +func runHttp( //nolint addr string, dev bool, cfg *config.Config, diff --git a/codesearch/index/merge.go b/codesearch/index/merge.go index 708a531b..01a0c47a 100644 --- a/codesearch/index/merge.go +++ b/codesearch/index/merge.go @@ -41,10 +41,10 @@ type idrange struct { lo, hi, new uint32 } -type postIndex struct { - tri uint32 - count uint32 - offset uint32 +type postIndex struct { //nolint + tri uint32 //nolint + count uint32 //nolint + offset uint32 //nolint } // Merge creates a new index in the file dst that corresponds to merging @@ -70,7 +70,7 @@ func Merge(dst, src1, src2 string) { for i1 < uint32(ix1.numName) && ix1.Name(i1) < limit { i1++ } - hi := i1 + hi := i1 //nolint // Record range before the shadow. if old < lo { @@ -304,7 +304,7 @@ func (r *postMapReader) nextId() bool { type postDataWriter struct { out *bufWriter postIndexFile *bufWriter - buf [10]byte + buf [10]byte //nolint base uint32 count, offset uint32 last uint32 diff --git a/codesearch/index/read.go b/codesearch/index/read.go index 3ee05194..5234266e 100644 --- a/codesearch/index/read.go +++ b/codesearch/index/read.go @@ -133,7 +133,7 @@ func (ix *Index) Close() error { } // uvarint returns the varint value at the given offset in the index data. -func (ix *Index) uvarint(off uint32) uint32 { +func (ix *Index) uvarint(off uint32) uint32 { //nolint v, n := binary.Uvarint(ix.slice(off, -1)) if n <= 0 { corrupt(ix.data.f) @@ -185,7 +185,7 @@ func (ix *Index) listAt(off uint32) (trigram, count, offset uint32) { return } -func (ix *Index) dumpPosting() { +func (ix *Index) dumpPosting() { //nolint d := ix.slice(ix.postIndex, postEntrySize*ix.numPost) for i := 0; i < ix.numPost; i++ { j := i * postEntrySize diff --git a/codesearch/index/regexp.go b/codesearch/index/regexp.go index 4f336fea..82cf1989 100644 --- a/codesearch/index/regexp.go +++ b/codesearch/index/regexp.go @@ -226,7 +226,7 @@ func trigramsImply(t []string, q *Query) bool { // maybeRewrite rewrites q to use op if it is possible to do so // without changing the meaning. It also simplifies if the node // is an empty OR or AND. -func (q *Query) maybeRewrite(op QueryOp) { +func (q *Query) maybeRewrite(op QueryOp) { //nolint if q.Op != QAnd && q.Op != QOr { return } @@ -736,7 +736,7 @@ func (s stringSet) have() bool { } // contains reports whether s contains str. -func (s stringSet) contains(str string) bool { +func (s stringSet) contains(str string) bool { //nolint for _, ss := range s { if ss == str { return true @@ -814,7 +814,7 @@ func (s stringSet) minLen() int { } // maxLen returns the length of the longest string in s. -func (s stringSet) maxLen() int { +func (s stringSet) maxLen() int { //nolint if len(s) == 0 { return 0 } @@ -847,7 +847,7 @@ func (s stringSet) cross(t stringSet, isSuffix bool) stringSet { } // clear empties the set but preserves the storage. -func (s *stringSet) clear() { +func (s *stringSet) clear() { //nolint *s = (*s)[:0] } diff --git a/codesearch/index/write.go b/codesearch/index/write.go index c8eddb32..f056e35e 100644 --- a/codesearch/index/write.go +++ b/codesearch/index/write.go @@ -43,7 +43,7 @@ type IndexWriter struct { paths []string nameData *bufWriter // temp file holding list of names - nameLen uint32 // number of bytes written to nameData + nameLen uint32 //nolint number of bytes written to nameData nameIndex *bufWriter // temp file holding name index numName int // number of names written totalBytes int64 @@ -123,7 +123,7 @@ func (ix *IndexWriter) AddFile(name string) { func (ix *IndexWriter) Add(name string, f io.Reader) string { ix.trigram.Reset() var ( - c = byte(0) + c = byte(0) //nolint i = 0 buf = ix.inbuf[:0] tv = uint32(0) @@ -131,7 +131,7 @@ func (ix *IndexWriter) Add(name string, f io.Reader) string { linelen = 0 numLines = 0 longLines = 0 - skipReason = "" + skipReason = "" //nolint ) for { @@ -246,7 +246,7 @@ func (ix *IndexWriter) Flush() { os.Remove(ix.nameData.name) for _, d := range ix.postData { - unmmap(d) + unmmap(d) //nolint } for _, f := range ix.postFile { f.Close() @@ -310,7 +310,7 @@ func (ix *IndexWriter) flushPost() { } ix.post = ix.post[:0] - w.Seek(0, 0) + w.Seek(0, 0) //nolint ix.postFile = append(ix.postFile, w) } @@ -368,7 +368,7 @@ type postChunk struct { m []postEntry // remaining entries after e } -const postBuf = 4096 +const postBuf = 4096 //nolint // A postHeap is a heap (priority queue) of postChunks. type postHeap struct { @@ -388,7 +388,7 @@ func (h *postHeap) addMem(x []postEntry) { // step reads the next entry from ch and saves it in ch.e. // It returns false if ch is over. -func (h *postHeap) step(ch *postChunk) bool { +func (h *postHeap) step(ch *postChunk) bool { //nolint old := ch.e m := ch.m if len(m) == 0 { @@ -414,7 +414,7 @@ func (h *postHeap) add(ch *postChunk) { } // empty reports whether the postHeap is empty. -func (h *postHeap) empty() bool { +func (h *postHeap) empty() bool { //nolint return len(h.ch) == 0 } @@ -492,7 +492,7 @@ type bufWriter struct { name string file *os.File buf []byte - tmp [8]byte + tmp [8]byte //nolint } // bufCreate creates a new file with the given name and returns a @@ -578,7 +578,7 @@ func (b *bufWriter) flush() { func (b *bufWriter) finish() *os.File { b.flush() f := b.file - f.Seek(0, 0) + f.Seek(0, 0) //nolint return f } diff --git a/codesearch/regexp/copy.go b/codesearch/regexp/copy.go index 9be19874..c46e87a4 100644 --- a/codesearch/regexp/copy.go +++ b/codesearch/regexp/copy.go @@ -18,7 +18,7 @@ import ( // cleanClass sorts the ranges (pairs of elements of r), // merges them, and eliminates duplicates. -func cleanClass(rp *[]rune) []rune { +func cleanClass(rp *[]rune) []rune { //nolint // Sort by lo increasing, hi decreasing to break ties. sort.Sort(ranges{rp}) @@ -119,7 +119,7 @@ func appendFoldedRange(r []rune, lo, hi rune) []rune { // The choice of receiver type definition is strange // but avoids an allocation since we already have // a *[]rune. -type ranges struct { +type ranges struct { //nolint p *[]rune } @@ -141,25 +141,25 @@ func (ra ranges) Swap(i, j int) { p[i], p[i+1], p[j], p[j+1] = p[j], p[j+1], p[i], p[i+1] } -func progString(p *syntax.Prog) string { +func progString(p *syntax.Prog) string { //nolint var b bytes.Buffer dumpProg(&b, p) return b.String() } -func instString(i *syntax.Inst) string { +func instString(i *syntax.Inst) string { //nolint var b bytes.Buffer dumpInst(&b, i) return b.String() } -func bw(b *bytes.Buffer, args ...string) { +func bw(b *bytes.Buffer, args ...string) { //nolint for _, s := range args { b.WriteString(s) } } -func dumpProg(b *bytes.Buffer, p *syntax.Prog) { +func dumpProg(b *bytes.Buffer, p *syntax.Prog) { //nolint for j := range p.Inst { i := &p.Inst[j] pc := strconv.Itoa(j) @@ -175,11 +175,11 @@ func dumpProg(b *bytes.Buffer, p *syntax.Prog) { } } -func u32(i uint32) string { +func u32(i uint32) string { //nolint return strconv.FormatUint(uint64(i), 10) } -func dumpInst(b *bytes.Buffer, i *syntax.Inst) { +func dumpInst(b *bytes.Buffer, i *syntax.Inst) { //nolint switch i.Op { case syntax.InstAlt: bw(b, "alt -> ", u32(i.Out), ", ", u32(i.Arg)) diff --git a/codesearch/regexp/match.go b/codesearch/regexp/match.go index f1ff2361..480f9109 100644 --- a/codesearch/regexp/match.go +++ b/codesearch/regexp/match.go @@ -38,9 +38,9 @@ type flags uint32 const ( flagBOL flags = 1 << iota // beginning of line - flagEOL // end of line + flagEOL //nolint end of line flagBOT // beginning of text - flagEOT // end of text + flagEOT //nolint end of text flagWord // last byte was word byte ) diff --git a/codesearch/regexp/utf.go b/codesearch/regexp/utf.go index d587eaaf..858c83c1 100644 --- a/codesearch/regexp/utf.go +++ b/codesearch/regexp/utf.go @@ -216,7 +216,7 @@ func (b *runeBuilder) addRange(lo, hi rune, fold bool) { } // TODO: Pick off 80-10FFFF for special handling? - if lo == 0x80 && hi == 0x10FFFF { + if lo == 0x80 && hi == 0x10FFFF { //nolint } // Split range into same-length sized ranges. diff --git a/config/config_test.go b/config/config_test.go index 2f867abb..fd680d6f 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -40,14 +40,14 @@ func TestExampleConfigsAreValid(t *testing.T) { repo := cfg.Repos["SomeGitRepo"] vcsConfigBytes := repo.VcsConfig() var vcsConfigVals map[string]interface{} - json.Unmarshal(vcsConfigBytes, &vcsConfigVals) + json.Unmarshal(vcsConfigBytes, &vcsConfigVals) //nolint if detectRef, ok := vcsConfigVals["detect-ref"]; !ok || !detectRef.(bool) { t.Error("global detectRef vcs config setting not set for repo") } repo = cfg.Repos["GitRepoWithDetectRefDisabled"] vcsConfigBytes = repo.VcsConfig() - json.Unmarshal(vcsConfigBytes, &vcsConfigVals) + json.Unmarshal(vcsConfigBytes, &vcsConfigVals) //nolint if detectRef, ok := vcsConfigVals["detect-ref"]; !ok || detectRef.(bool) { t.Error("global detectRef vcs config setting not overriden by repo-level setting") } diff --git a/index/grep.go b/index/grep.go index dcdf2e76..d8af1640 100644 --- a/index/grep.go +++ b/index/grep.go @@ -28,7 +28,7 @@ func countLines(b []byte) int { return n } -func (g *grepper) grepFile(filename string, re *regexp.Regexp, +func (g *grepper) grepFile(filename string, re *regexp.Regexp, //nolint fn func(line []byte, lineno int) (bool, error)) error { r, err := os.Open(filename) if err != nil { @@ -189,7 +189,7 @@ func (g *grepper) grep2( // This nonsense is adapted from https://code.google.com/p/codesearch/source/browse/regexp/match.go#399 // and I assume it is a mess to make it faster, but I would like to try a much simpler cleaner version. -func (g *grepper) grep(r io.Reader, re *regexp.Regexp, fn func(line []byte, lineno int) (bool, error)) error { +func (g *grepper) grep(r io.Reader, re *regexp.Regexp, fn func(line []byte, lineno int) (bool, error)) error { //nolint if g.buf == nil { g.buf = make([]byte, 1<<20) } @@ -248,5 +248,5 @@ func (g *grepper) grep(r io.Reader, re *regexp.Regexp, fn func(line []byte, line } } - return nil + return nil //nolint } diff --git a/index/index.go b/index/index.go index 626ec481..d956f3eb 100644 --- a/index/index.go +++ b/index/index.go @@ -236,7 +236,7 @@ func (n *Index) Search(pat string, opt *SearchOptions) (*SearchResponse, error) Matches: results, FilesWithMatch: filesFound, FilesOpened: filesOpened, - Duration: time.Now().Sub(startedAt), + Duration: time.Now().Sub(startedAt), //nolint Revision: n.Ref.Rev, }, nil } @@ -364,7 +364,7 @@ func indexAllFiles(opt *IndexOptions, dst, src string) error { } defer fileHandle.Close() - if err := filepath.Walk(src, func(path string, info os.FileInfo, err error) error { + if err := filepath.Walk(src, func(path string, info os.FileInfo, err error) error { //nolint name := info.Name() rel, err := filepath.Rel(src, path) if err != nil { diff --git a/index/index_test.go b/index/index_test.go index 716e77da..e2920ee2 100644 --- a/index/index_test.go +++ b/index/index_test.go @@ -35,7 +35,7 @@ func TestSearch(t *testing.T) { if err != nil { t.Fatal(err) } - defer ref.Remove() + defer ref.Remove() //nolint // Make sure the metadata in the ref is good. if ref.Rev != rev { @@ -79,7 +79,7 @@ func TestRead(t *testing.T) { if err != nil { t.Fatal(err) } - defer ref.Remove() + defer ref.Remove() //nolint r, err := Read(ref.Dir()) if err != nil { diff --git a/searcher/searcher.go b/searcher/searcher.go index 67727b9d..e2f9b350 100644 --- a/searcher/searcher.go +++ b/searcher/searcher.go @@ -264,7 +264,7 @@ func reportOnMemory() { // Utility function for producing a hex encoded sha1 hash for a string. func hashFor(name string) string { h := sha1.New() - h.Write([]byte(name)) + h.Write([]byte(name)) //nolint return hex.EncodeToString(h.Sum(nil)) } diff --git a/ui/content.go b/ui/content.go index c4f34900..67105215 100644 --- a/ui/content.go +++ b/ui/content.go @@ -22,7 +22,7 @@ type renderer interface { type content struct { // The uri for accessing this asset - uri string + uri string //nolint // The filename of the template relative to the asset directory template string diff --git a/vcs/vcs_test.go b/vcs/vcs_test.go index f965f250..5ef41e6b 100644 --- a/vcs/vcs_test.go +++ b/vcs/vcs_test.go @@ -8,7 +8,7 @@ import ( // Just make sure all drivers are tolerant of nil func TestNilConfigs(t *testing.T) { - for name, _ := range drivers { + for name, _ := range drivers { //nolint d, err := New(name, nil) if err != nil { t.Fatal(err) From b88fc1f79d668e6671a478ddf4fb3e73a63067b9 Mon Sep 17 00:00:00 2001 From: David Kolossa Date: Fri, 22 Jan 2021 20:06:52 +0100 Subject: [PATCH 23/37] Install dependencies in Dockerfile --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8077c497..3c361058 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.11.6 +FROM alpine:3.11.7 ENV GOPATH /go @@ -6,6 +6,8 @@ COPY . /go/src/github.com/hound-search/hound RUN apk update \ && apk add go git subversion libc-dev mercurial bzr openssh \ + && cd /go/src/github.com/hound-search/hound \ + && go mod download \ && go install github.com/hound-search/hound/cmds/houndd \ && apk del go \ && rm -f /var/cache/apk/* \ From ac17eac3dbd2171d0195e85f047cb5e43ea22bb8 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 10 Feb 2021 12:58:51 +0100 Subject: [PATCH 24/37] Fix typo --- docs/config-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config-options.md b/docs/config-options.md index 25d3599a..b2ff18b3 100644 --- a/docs/config-options.md +++ b/docs/config-options.md @@ -25,7 +25,7 @@ List of options associated with git vcs in repos GitOptions | Description | Default Values :------ | :----- | :----- -ms-between-polls | time interval to poll the repo url | 30s +ms-between-poll | time interval to poll the repo url | 30s detect-ref | used to determine branch | master branch ref | used to provide reference for the branch for repo| n/a From ec8252548187fa238e5799bc3bc40831071d75ea Mon Sep 17 00:00:00 2001 From: Andrew Stanton Date: Mon, 15 Feb 2021 09:58:48 -0500 Subject: [PATCH 25/37] Adding a tip for windows users (#379) * Adding a tip for windows users * Update README.md Co-authored-by: Salem Co-authored-by: Salem --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb5d6951..7cdd3c1d 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Yup, that's it. You can proxy requests to the Go service through Apache/nginx/et ## Support -Currently Hound is only tested on MacOS and CentOS, but it should work on any *nix system. Hound on Windows is not supported but we've heard it compiles and runs just fine. +Currently Hound is only tested on MacOS and CentOS, but it should work on any *nix system. Hound on Windows is not supported but we've heard it compiles and runs just fine (although it helps to to exclude your data folder from Windows Search Indexer). Hound supports the following version control systems: From 707ab91baff3ae53f5babd32421964f9c71b00ac Mon Sep 17 00:00:00 2001 From: David Kolossa Date: Tue, 16 Feb 2021 02:34:57 +0100 Subject: [PATCH 26/37] Use tini as default entry point (#376) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3c361058..25d80540 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ ENV GOPATH /go COPY . /go/src/github.com/hound-search/hound RUN apk update \ - && apk add go git subversion libc-dev mercurial bzr openssh \ + && apk add go git subversion libc-dev mercurial bzr openssh tini \ && cd /go/src/github.com/hound-search/hound \ && go mod download \ && go install github.com/hound-search/hound/cmds/houndd \ @@ -17,4 +17,4 @@ VOLUME ["/data"] EXPOSE 6080 -ENTRYPOINT ["/go/bin/houndd", "-conf", "/data/config.json"] +ENTRYPOINT ["/sbin/tini", "--", "/go/bin/houndd", "-conf", "/data/config.json"] From 2ebb422ad5ac88859a604cc1b6e691d0479d3271 Mon Sep 17 00:00:00 2001 From: Salem Date: Wed, 17 Feb 2021 14:24:29 -0500 Subject: [PATCH 27/37] Add a warning for the default branch rename (#380) * Add a warning for the default branch rename * Add a link to Github's renaming documentation. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7cdd3c1d..f16e2243 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ [![Build Status](https://travis-ci.org/hound-search/hound.svg?branch=master)](https://travis-ci.org/hound-search/hound) [![.github/workflows/go.yaml](https://github.com/hound-search/hound/workflows/.github/workflows/go.yaml/badge.svg)](https://github.com/hound-search/hound/actions) +> ## :warning: Hound's default branch name is changing! :warning: +> **We are renaming our default branch from `master` to `main` on February 24, 2021**. We will be using [Github's branch renaming feature](https://github.com/github/renaming/#renaming-existing-branches), which means that any open pull requests should be automatically re-targeted, and web requests pointing to code on the `master` branch should redirect as expected. This change should mostly be invisible, but you will need to update any code that explicitly relies on the existence of Hound's `master` branch. + Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox: [Regular Expression Matching with a Trigram Index](http://swtch.com/~rsc/regexp/regexp4.html). Hound itself is a static [React](http://facebook.github.io/react/) frontend that talks to a [Go](http://golang.org/) backend. The backend keeps an up-to-date index for each repository and answers searches through a minimal API. Here it is in action: From 41d085a8945ed1407fff80a2f7a9bfcc8f982ac6 Mon Sep 17 00:00:00 2001 From: Salem Date: Wed, 24 Feb 2021 13:08:57 -0500 Subject: [PATCH 28/37] Update README to reflect branch rename. (#384) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f16e2243..4657ebd6 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ [![Build Status](https://travis-ci.org/hound-search/hound.svg?branch=master)](https://travis-ci.org/hound-search/hound) [![.github/workflows/go.yaml](https://github.com/hound-search/hound/workflows/.github/workflows/go.yaml/badge.svg)](https://github.com/hound-search/hound/actions) -> ## :warning: Hound's default branch name is changing! :warning: -> **We are renaming our default branch from `master` to `main` on February 24, 2021**. We will be using [Github's branch renaming feature](https://github.com/github/renaming/#renaming-existing-branches), which means that any open pull requests should be automatically re-targeted, and web requests pointing to code on the `master` branch should redirect as expected. This change should mostly be invisible, but you will need to update any code that explicitly relies on the existence of Hound's `master` branch. +> ## :warning: Hound's default branch name has changed! :warning: +> **We renamed our default branch from `master` to `main` on February 24, 2021**. We used [Github's branch renaming feature](https://github.com/github/renaming/#renaming-existing-branches), which means that any open pull requests should be automatically re-targeted, and web requests pointing to code on the `master` branch should redirect as expected. This change should mostly be invisible, but you will need to update any code that explicitly relies on the existence of Hound's `master` branch. Hound is an extremely fast source code search engine. The core is based on this article (and code) from Russ Cox: [Regular Expression Matching with a Trigram Index](http://swtch.com/~rsc/regexp/regexp4.html). Hound itself is a static From 6249481bf30558022f967f8f6a6fc21b89938026 Mon Sep 17 00:00:00 2001 From: David Schott Date: Thu, 25 Feb 2021 14:36:42 -0800 Subject: [PATCH 29/37] Update version in main.go --- cmds/houndd/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmds/houndd/main.go b/cmds/houndd/main.go index 9d2d79e5..f6788d5d 100644 --- a/cmds/houndd/main.go +++ b/cmds/houndd/main.go @@ -118,7 +118,7 @@ func runHttp( //nolint func getVersion() semver.Version { return semver.Version{ Major: 0, - Minor: 3, + Minor: 4, Patch: 0, } } From 43df2e1458e0b9d2c8a6003e086e1a9f6c4ce576 Mon Sep 17 00:00:00 2001 From: Cor Bosman Date: Mon, 8 Mar 2021 15:44:22 +0100 Subject: [PATCH 30/37] support github webhook --- api/api.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/api/api.go b/api/api.go index 4f686beb..75f0e6f5 100644 --- a/api/api.go +++ b/api/api.go @@ -250,4 +250,51 @@ func Setup(m *http.ServeMux, idx map[string]*searcher.Searcher) { writeResp(w, "ok") }) + + m.HandleFunc("/api/v1/github-webhook", func(w http.ResponseWriter, r *http.Request) { + if r.Method != "POST" { + writeError(w, + errors.New(http.StatusText(http.StatusMethodNotAllowed)), + http.StatusMethodNotAllowed) + return + } + + type Webhook struct { + Repository struct { + Name string + Full_name string + } + } + + var h Webhook + + err := json.NewDecoder(r.Body).Decode(&h) + + if err != nil { + writeError(w, + errors.New(http.StatusText(http.StatusBadRequest)), + http.StatusBadRequest) + return + } + + repo := h.Repository.Full_name + + searcher := idx[h.Repository.Full_name] + + if searcher == nil { + writeError(w, + fmt.Errorf("No such repository: %s", repo), + http.StatusNotFound) + return + } + + if !searcher.Update() { + writeError(w, + fmt.Errorf("Push updates are not enabled for repository %s", repo), + http.StatusForbidden) + return + } + + writeResp(w, "ok") + }) } From 60b810419e3752d7cbb80e65f48d10d99f14e0db Mon Sep 17 00:00:00 2001 From: Alexander Chiu Date: Mon, 12 Apr 2021 15:06:27 +0200 Subject: [PATCH 31/37] Omit ports in constructed URL (#383) --- config-example.json | 10 +++ ui/assets/js/common.js | 23 ++++++- ui/assets/js/common.test.js | 104 ++++++++++++++++++++++++++++ ui/bindata.go | 132 ++++++++++++++++++------------------ 4 files changed, 200 insertions(+), 69 deletions(-) diff --git a/config-example.json b/config-example.json index 1a14324a..3c756bab 100644 --- a/config-example.json +++ b/config-example.json @@ -78,6 +78,16 @@ "url-pattern" : { "base-url" : "{url}/{path}" } + }, + "BitbucketServerUrl" : { + "url" : "git@bitbucket.internal.org:7999:organization/project.git", + "url-pattern" : { + "base-url" : "https://{hostname}/projects/{project}/repos/{repo}/browse/{path}?at={rev}{anchor}", + "anchor" : "#{line}" + }, + "vcs-config" : { + "ref" : "main" + } } } } diff --git a/ui/assets/js/common.js b/ui/assets/js/common.js index 683ff7bc..35216a4f 100644 --- a/ui/assets/js/common.js +++ b/ui/assets/js/common.js @@ -8,6 +8,10 @@ export function ExpandVars(template, values) { export function UrlToRepo(repo, path, line, rev) { var url = repo.url.replace(/\.git$/, ''), pattern = repo['url-pattern'], + hostname = '', + project = '', + repoName = '', + port = '', filename = path.substring(path.lastIndexOf('/') + 1), anchor = line ? ExpandVars(pattern.anchor, { line : line, filename : filename }) : ''; @@ -25,15 +29,28 @@ export function UrlToRepo(repo, path, line, rev) { // Regex explained: Match either `git` or `hg` followed by an `@`. // Next, slurp up the hostname by reading until either a `:` or `/` is found. - // Finally, grab all remaining characters. - var sshParts = /(git|hg)@(.*?)(:|\/)(.*)/.exec(url); + // If a port is specified, slurp that up too. Finally, grab the project and + // repo names. + var sshParts = /(git|hg)@(.*?)(:[0-9]+)?(:|\/)(.*)(\/)(.*)/.exec(url); if (sshParts) { - url = '//' + sshParts[2] + '/' + sshParts[4]; + hostname = '//' + sshParts[2] + project = sshParts[5] + repoName = sshParts[7] + // Port is omitted in most cases. Bitbucket Server is special: + // ssh://git@bitbucket.atlassian.com:7999/ATLASSIAN/jira.git + if(sshParts[3]){ + port = sshParts[3] + } + url = hostname + port + '/' + project + '/' + repoName; } // I'm sure there is a nicer React/jsx way to do this: return ExpandVars(pattern['base-url'], { url : url, + hostname: hostname, + port: port, + project: project, + 'repo': repoName, path: path, rev: rev, anchor: anchor diff --git a/ui/assets/js/common.test.js b/ui/assets/js/common.test.js index 5196ceeb..6a350590 100644 --- a/ui/assets/js/common.test.js +++ b/ui/assets/js/common.test.js @@ -19,3 +19,107 @@ describe("ExpandVars", () => { expect(ExpandVars(template, {})).toBe(template); }); }); + +describe("UrlToRepo", () => { + test("Generate url from repo with default values", () => { + const repo = { + url: "https://www.github.com/YourOrganization/RepoOne.git", + "url-pattern": + { + "base-url": "{url}/blob/{rev}/{path}{anchor}", + anchor: "#L{line}" + } + }; + const path = "test.txt" + const line = null + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "https://www.github.com/YourOrganization/RepoOne/blob/main/test.txt" + ); + }); + + test("Generate url from repo with default values and line", () => { + const repo = { + url: "https://www.github.com/YourOrganization/RepoOne.git", + "url-pattern": + { + "base-url": "{url}/blob/{rev}/{path}{anchor}", + anchor: "#L{line}" + } + }; + const path = "test.txt" + const line = "12" + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "https://www.github.com/YourOrganization/RepoOne/blob/main/test.txt#L12" + ); + }); + + test("Generate url for ssh style repo with default values", () => { + const repo = { + url: "git@github.com:YourOrganization/RepoOne.git", + "url-pattern": + { + "base-url": "{url}/blob/{rev}/{path}{anchor}", + anchor: "#L{line}" + } + }; + const path = "test.txt" + const line = null + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "//github.com/YourOrganization/RepoOne/blob/main/test.txt" + ); + }); + + test("Generate url for ssh bitbucket mercurial style repo", () => { + const repo = { + url: "ssh://hg@bitbucket.org/YourOrganization/RepoOne", + "url-pattern": + { + "base-url" : "{url}/src/main/{path}{anchor}", + "anchor" : "#{filename}-{line}" + } + }; + const path = "test.txt" + const line = null + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "//bitbucket.org/YourOrganization/RepoOne/src/main/test.txt" + ); + }); + + test("Generate url for ssh bitbucket style repo with port", () => { + const repo = { + url: "ssh://git@bitbucket.org:7999/YourOrganization/RepoOne", + "url-pattern": + { + "base-url" : "{url}/src/main/{path}{anchor}", + "anchor" : "#{filename}-{line}" + } + }; + const path = "test.txt" + const line = null + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "//bitbucket.org:7999/YourOrganization/RepoOne/src/main/test.txt" + ); + }); + + test("Generate url for ssh bitbucket server style repo", () => { + const repo = { + url: "ssh://git@bitbucket.internal.com:7999/YourOrganization/RepoOne", + "url-pattern": + { + "base-url" : "{hostname}/projects/{project}/repos/{repo}/browse/{path}?at={rev}{anchor}", + "anchor" : "#{line}", + } + }; + const path = "test.txt" + const line = 10 + const rev = "main" + expect(UrlToRepo(repo, path, line, rev)).toBe( + "//bitbucket.internal.com/projects/YourOrganization/repos/RepoOne/browse/test.txt?at=main#10" + ); + }); +}); diff --git a/ui/bindata.go b/ui/bindata.go index 7e715932..ccc8fc33 100644 --- a/ui/bindata.go +++ b/ui/bindata.go @@ -105,7 +105,7 @@ func cssHoundCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/hound.css", size: 6093, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/hound.css", size: 6093, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -125,7 +125,7 @@ func cssOcticonsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -145,7 +145,7 @@ func cssOcticonsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -165,7 +165,7 @@ func cssOcticonsOcticonsLocalTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -185,7 +185,7 @@ func cssOcticonsOcticonsCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -205,7 +205,7 @@ func cssOcticonsOcticonsEot() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -225,7 +225,7 @@ func cssOcticonsOcticonsLess() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -245,7 +245,7 @@ func cssOcticonsOcticonsSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -265,7 +265,7 @@ func cssOcticonsOcticonsTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -285,7 +285,7 @@ func cssOcticonsOcticonsWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -305,7 +305,7 @@ func cssOcticonsSprocketsOcticonsScss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -325,7 +325,7 @@ func excluded_filesTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -345,7 +345,7 @@ func faviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -365,7 +365,7 @@ func imagesBusyGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -385,7 +385,7 @@ func indexTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -405,12 +405,12 @@ func jsJsxtransformer0122Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsCommonJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x54\x4b\x6f\xdb\x38\x17\xdd\xfb\x57\x9c\x45\x01\x4a\x8d\x2a\x7d\xdf\x20\x2b\x19\x41\xb3\x98\xe9\xa4\xc0\xbc\x90\x36\xb3\x49\x8c\x9a\x92\xae\x45\x8e\x69\x52\xe0\x23\xb6\x91\xfa\xbf\x0f\xa8\x57\x1d\x67\xbc\xa0\x49\xea\xdc\xc3\x7b\x0f\x0f\x2f\x1d\x3a\x63\x3d\x36\x41\xd7\x5e\x1a\x8d\x5f\x0e\x1d\xd7\xcd\xdf\xdc\xba\xc4\xd3\xae\x53\xdc\x53\x86\x67\xae\x02\xb9\x14\x2f\x0b\x00\xd8\x18\x8b\xe4\x99\x5b\x68\xbe\x23\x48\x7d\xf1\x39\xfe\xa6\x50\xdc\xcc\xd3\xdc\x52\xa7\x78\x4d\x09\x7b\x61\xb8\x1a\x62\xaf\xc0\x4e\x6c\xa2\x7f\x8c\x5b\xab\x74\xd9\x93\x9c\xfa\xd1\x92\x0f\x56\xcf\x14\xcb\xc5\x69\xb9\x58\x5c\x66\xfc\x60\xd5\x57\x73\x4f\x9d\x49\x2c\x75\x26\x43\xc7\xbd\xc8\xa0\xa4\xa6\x0c\x96\x9e\xa7\xb4\x62\xc2\xc1\x2a\xdc\x20\xc2\xf2\x60\xd5\x9c\x51\xf1\x94\xb7\xd2\xbf\x2b\x32\x30\x96\x66\x73\x11\x1d\xf7\x9e\xac\x1e\x23\x1e\x59\xb0\xea\xc3\xb8\xc7\x56\x3f\x60\x1b\xa9\xa8\xaf\xe6\xa6\x3f\x3a\x77\xa1\x72\xde\x4a\xdd\x26\xfd\x52\x71\xe7\x3f\xeb\x86\x0e\x7f\x6e\x12\x56\xb0\x14\x57\xf8\xff\xd9\x21\x5c\xd7\xc2\x58\xdc\xf4\x09\xe3\xe3\xb9\xfe\xe3\x59\xf9\x00\xc9\xf0\x32\x60\xca\xb1\xb6\xf9\xdc\xf2\xc7\xf4\x94\xa2\x04\x63\xcb\x45\xcf\x5f\x14\xf8\x99\x3c\xd9\x5d\x0c\x93\x1b\x78\x41\x78\xb8\xff\x0d\x1d\x77\x8e\x1a\x48\x07\x8e\x5f\xa5\xbf\x0b\x15\xf6\x72\x2b\x67\x99\xe2\xe2\xa1\x97\xaa\x78\xca\xe3\xe2\x5d\x91\xd3\x81\xea\x24\x58\x35\xde\x8f\xdc\x20\x19\x61\xe7\xf7\x3e\x08\x7c\xa1\x6d\xc4\x45\x6d\x8b\x38\x61\xe9\xb9\xbe\x62\x12\xed\x0c\xbe\x6b\xc6\x9b\x78\xab\x11\x63\xb1\xa6\x48\xe3\xd0\x18\x68\xe3\xe1\x42\xd7\xdb\xa1\x91\x96\x6a\x3f\x28\xa4\xa4\xde\x4a\xdd\x8e\x46\x9a\xa4\xb8\xe3\xf5\xf6\x08\x67\x54\xe8\x6d\xe3\x0d\x36\xf2\x80\x6f\xce\xec\x08\x3b\x63\xe9\x1b\xcc\x20\xd1\xf5\xff\xae\x99\xc3\x5e\x90\x46\x70\x52\xb7\xf8\xf2\xe5\x0e\xce\x1f\x55\xaf\x9e\xcb\x27\xc2\xaf\x42\x3a\xec\x8d\xdd\xba\xfe\x49\x54\xc6\x0b\xb4\xd2\x8b\x50\x9d\xa1\x91\xb4\xd2\xdf\x0e\xdb\x79\x6d\x76\x65\x70\x64\xe3\x5d\x15\x9f\x8c\x89\xb6\x4b\xc1\x75\x33\x51\x56\xd2\x57\xa1\xde\x92\x7f\xc5\xe0\x9c\x28\x8b\x42\xb4\xb7\xf3\xe7\xdc\xd8\xb6\x38\x67\x4a\xf3\xb9\xce\x7b\x6a\xe9\x00\x3a\x74\x8a\x4b\x4d\x4d\x89\xdf\xb9\xaf\x05\x48\x7a\x41\x16\xeb\x56\xfa\x35\x8c\xc5\x5a\xb4\x6b\x6c\x8c\x52\x66\x4f\x0d\xaa\x23\xb8\xc6\xfa\x76\x3d\x57\xf7\x07\x1d\x7c\x06\xa7\x82\xed\x10\xba\x5e\x18\x61\x9c\xef\x6d\x56\x1d\x61\x89\x37\x51\x9b\xa0\xbd\x54\x13\x39\xc7\xba\x1c\xc8\x8b\x75\xb4\xd7\xc6\x04\xdd\xcc\x8c\x9f\xa4\xe6\x4a\x1d\x33\xb4\x96\x57\xe0\x4a\xc1\xd2\x8e\x4b\x1d\x69\x6a\xc1\x2d\xaf\x3d\xd9\x51\xde\x68\x43\xe7\xc4\x5f\xdc\x7a\x17\x7d\x18\x55\xfc\x2e\xda\xf4\x36\xc9\xdf\x7f\x4c\x93\xf2\xfb\x53\x91\x26\xf9\xfb\xf4\x3f\x8d\x39\x05\xbe\x75\x26\x2b\x8a\xd8\x7c\x26\xc0\xe3\x4f\xab\xd8\x83\x5e\xef\x5d\xaf\x96\x17\xce\xf9\xcc\x76\x70\xc1\x52\x14\xc1\xd2\xf0\x6e\xb4\xac\xc9\xe2\x9e\x78\xed\x8b\x7f\xdc\x01\x7b\x7e\x8c\x96\x6a\x0c\xbc\x90\xae\x3c\x6f\x5f\x6f\x9f\xf4\x23\xab\xb8\xa3\x0f\xc1\x2a\xb6\xca\x2e\x92\x2c\xe3\xf8\xaa\x09\x89\x72\xe8\x69\xf3\x9e\xa5\xe7\x32\x0e\x97\x5d\xa4\x1c\xff\x87\xf4\xd3\xe5\xe2\xb4\xf8\x37\x00\x00\xff\xff\xe8\xc2\x90\xb9\xdf\x05\x00\x00" +var _jsCommonJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x55\x59\x6f\xe3\x36\x10\x7e\xf7\xaf\x98\x87\x05\x28\xad\x1d\x71\xdb\x6e\xb1\x88\x8c\x20\x49\xd1\x6e\x13\x60\x9b\x2e\x72\xf4\xc5\x31\xd6\xb4\x34\x92\x98\xd0\xa4\xc0\xc3\x07\xb2\xfe\xef\x05\x75\xd0\x8a\x13\x3f\xc8\x3c\x86\x1f\x39\xdf\x7c\x33\x83\xdb\x5a\x69\x0b\x85\x93\x99\xe5\x4a\xc2\x5f\xdb\x9a\xc9\xfc\x3f\xa6\x4d\x64\x71\x55\x0b\x66\x71\x02\x6b\x26\x1c\x9a\x18\x5e\x46\x00\x00\x85\xd2\x10\xad\x99\x06\xc9\x56\x08\x5c\x1e\x6d\xfb\x5f\x7f\x14\xce\xc2\x30\xd1\x58\x0b\x96\x61\x44\x5e\x08\x8c\xdb\xb3\x63\x20\x7b\xd2\xc3\xcf\xfc\xd2\x3c\x9e\x36\x20\xfb\xe6\xab\xd1\x3a\x2d\x03\xc4\x74\xb4\x9f\x8e\x46\xc7\x2f\x7e\xd0\xe2\x5e\xdd\x62\xad\x22\x8d\xb5\x9a\x40\xcd\x6c\x35\x01\xc1\x25\x4e\x40\xe3\xba\x7f\x96\x7f\xb0\xd3\x02\xce\xc0\x9b\x25\x4e\x8b\xf0\x22\xfa\x98\x94\xdc\x7e\xa0\x13\x20\x24\x9e\x04\x27\x6a\x66\x2d\x6a\xd9\x9d\x98\x11\xa7\xc5\x49\xb7\x46\xe6\x07\xb3\x4a\x19\xdb\x78\x73\x06\x84\x0c\x4e\x6b\xf5\x84\x99\x3d\x5a\xf5\x48\x37\xef\x18\x7b\x8f\x5e\x2f\x15\x5c\x60\x07\xeb\x3d\x4a\x8c\x5b\x1a\xab\xb9\x2c\xa3\x66\x2a\x98\xb1\xd7\x32\xc7\xed\xbf\x45\x44\x28\x89\x61\x0c\xbf\x0c\xde\xce\x64\x56\x29\x0d\x67\x0d\x0f\x70\x3e\x0c\x6b\xe7\x42\xd2\x9a\x4c\xe0\xa5\xb5\x49\x3b\xca\xc2\xbd\xe9\x61\xb8\x8f\x21\x05\x42\xa6\xa3\x06\x9f\x52\xf8\x13\x2d\xea\x95\x3f\xc6\x0b\xb0\x15\xc2\xc3\xed\x37\xa8\x99\x31\x98\x03\x37\xc0\xe0\x6f\x6e\xaf\xdc\x12\x36\xfc\x99\x07\xf6\xfd\xe4\xa1\x89\x00\x7d\x4c\xfc\xe4\x03\x4d\x70\x8b\x59\xe4\xb4\xe8\xc2\xce\x0b\x88\x3a\xb3\xa1\x9c\xda\xb8\x1d\x85\xcc\xdb\xf9\x90\x51\x3f\x20\xf1\x30\x6c\x55\x4f\xda\xc0\x7c\x95\x77\x01\x7e\xcb\x11\x21\xde\x27\x0f\x63\x20\x57\x20\x95\x05\xe3\xea\x26\x26\x39\xd7\x3e\x88\x0d\x43\x82\xcb\x67\x2e\xcb\x4e\x9f\x3d\x15\x57\x2c\x7b\xde\x81\x51\xc2\x35\x6a\xb4\x0a\x0a\xbe\x85\x1f\x46\xad\x10\x56\x4a\xe3\x0f\x50\x2d\x45\x9f\x3f\x7d\x26\x06\x36\x15\x4a\x70\x86\xcb\x12\xee\xee\xae\xc0\xd8\x9d\x68\xd8\x33\x49\x0f\x78\x5f\x71\x03\x1b\xa5\x9f\x4d\x93\x69\x4b\x65\x2b\x28\xb9\xad\xdc\x72\x60\x0d\x51\xc9\xed\x45\xbb\x9c\x64\x6a\x95\x3a\x83\xda\xc7\x8a\x7e\x55\xca\xab\x39\x06\x26\xf3\x1e\x72\xc9\xed\xd2\x65\xcf\x68\x5f\x21\x18\x53\xa5\x94\x56\xe5\x45\xd8\x4e\x94\x2e\xe9\x10\x29\x4e\x82\x9f\xb7\x58\xe2\x16\x70\x5b\x0b\xc6\x25\xe6\x29\xfc\xc3\x6c\x56\x01\x72\x5b\xa1\x86\x45\xc9\xed\x02\x94\x86\x45\x55\x2e\xa0\x50\x42\xa8\x0d\xe6\xb0\xdc\x01\x93\xb0\xb8\x58\x04\xef\x6e\x70\x6b\x27\x60\x84\xd3\x35\xb8\xba\x21\x26\x24\xd0\x72\x07\x1a\x59\xee\xb9\x71\xd2\x72\xd1\x83\x33\x58\xa4\x2d\x38\x5d\x78\x79\x15\xca\xc9\x3c\x20\x5e\x17\xc0\xda\x04\xe2\x06\x4c\x8d\x19\x2f\x38\xe6\xfd\x1d\xb6\x62\xb6\xb9\x48\xa9\x04\xbe\x72\xc9\x84\xd8\x4d\xa0\xd4\x6c\xd9\xdc\xdd\x67\xe9\x80\x2c\x9f\xa2\x4d\x79\xea\x42\xe2\xa5\x6b\x4c\xf5\x9d\x69\x6b\xbc\x76\x3d\xf3\x3f\xab\x32\xbe\x88\x92\x8f\xe7\x71\x94\xce\x3e\x9d\x9c\xce\xc7\xf1\x79\x94\xfe\x7c\xa4\x71\x94\x7c\x8c\xa3\xee\xff\x5d\x79\xf7\x50\x43\x7d\x0f\x4b\x08\xa5\xbe\x3c\xf6\x56\xb3\x5f\xe7\xef\x54\x94\xb0\xfb\xfb\xfc\xbd\xca\x12\xb6\xbf\x1c\xb6\x29\x85\xef\x1d\x47\x6a\xc5\xad\xf5\x89\x2a\x61\xa5\x8c\x85\x8c\x19\x34\x09\xfc\x11\x44\x72\x87\x7a\x8d\x3a\xd0\xc9\x44\x3a\x84\x69\x65\xe3\xe5\x77\xd0\x0d\xb3\x82\x19\xc3\x99\x6c\xb4\xf8\xe5\xf4\xf4\x94\x5e\xde\x7f\xbb\xbc\xbb\xbb\xbe\xbc\xa1\x4f\x5c\x33\x2f\xc9\x00\xc2\x8b\xc0\xc2\xec\xb7\x79\x7c\xe0\x61\x50\x0a\x07\x06\x61\x7b\x7f\x54\x10\x02\x6d\xe3\xf6\xd4\x18\x48\x43\x5e\x4f\x54\x3f\xef\xa9\x99\x1e\xa5\xee\x35\x59\x81\x71\x1a\xbd\x12\x34\xb6\x85\x4b\xf2\x0c\x35\xdc\x22\xcb\x2c\x7d\x32\x5b\xd8\xb0\x9d\xcf\xe9\x5c\x81\xad\xb8\x49\x87\x6d\xe9\x6d\x4d\x9d\x91\x25\x33\x78\xe2\xb4\x20\xf3\xc9\x51\xfd\x4a\xfd\xf7\x6d\xd7\x48\xc3\xe8\x75\x37\x48\x9b\xef\x9b\x76\x92\xf6\x83\xc3\x0e\xf1\xee\x91\x34\x78\xf9\xaa\x81\x55\x69\xdb\x0f\x07\x32\x59\x7b\xd3\xf5\x71\xab\x48\xbb\xff\x96\xa2\x78\x3a\xda\x8f\xfe\x0f\x00\x00\xff\xff\x28\xf1\xb5\x48\x1b\x08\x00\x00" func jsCommonJsBytes() ([]byte, error) { return bindataRead( @@ -425,12 +425,12 @@ func jsCommonJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.js", size: 1503, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "js/common.js", size: 2075, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsCommonTestJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x90\xcd\x6a\xeb\x30\x10\x85\xf7\x7e\x8a\x83\x36\xd7\x06\x93\x4b\xb6\x09\xb9\x8b\x4b\x4b\xe9\x36\xb4\xdd\x2b\xf6\xa4\x16\xe8\x0f\x69\xec\x24\x18\xbf\x7b\x51\xfe\x1c\xdc\xd2\xb4\x03\xde\x98\x39\xf3\x1d\x7d\xca\x78\x17\x18\x3d\x1e\xf7\x5e\xda\xfa\x4d\x86\x58\xe2\x35\xe8\x17\xb7\x26\xef\x30\x60\x1b\x9c\x81\x98\xfd\xad\x9c\x31\xce\x8a\x65\x96\xd5\x14\xab\xa0\x36\x94\x8b\x31\x23\x4a\xe4\x05\x56\xff\xd0\x67\x00\xc0\x14\x39\x17\x6b\xf2\x5a\x56\x14\xc1\x64\xbc\x96\x4c\xe8\x64\x50\x72\xa3\x29\x62\xa7\xb8\x01\x37\xa4\x02\x3a\xa9\x5b\x9a\x5e\x48\x53\x39\x1b\x79\x0c\xaf\x20\x9e\x21\x0d\x38\x1c\x94\x7d\x07\x3b\xf4\x1d\x85\xcd\x00\x73\x40\x6f\x5d\x6b\x07\xb1\x9c\x64\x4f\xa7\xb1\x42\x8f\xb4\xba\x80\xd8\xc9\xd8\x88\x12\x69\x7d\x01\x51\xab\xd8\x50\x14\x18\xc6\x20\xed\x3d\x55\x9c\x8f\x4f\xcb\x2f\x05\xca\xf3\xb9\xa2\x98\xb1\xfb\x4f\xf9\x35\x92\x66\x5a\x2d\x71\x52\xb1\x33\xe1\xba\x5b\x9c\x48\x43\xb1\xcc\x6e\x4c\x3d\x38\x8a\xf6\x0f\x23\x9c\x8c\xa1\xb5\x5a\x45\xa6\x7a\x14\xf6\x23\x3d\x4f\xc4\xc9\x29\x7a\xda\x7b\x4d\xac\x3a\x1a\xe0\x5a\x86\xdb\xde\x75\x34\x3f\x4a\x3a\x6b\x89\x2c\x8d\x47\xe5\xb4\xa6\x8a\x95\xb3\x47\x41\xbf\x30\x34\xff\x5a\xd1\xf7\xf5\x3e\x41\xa7\xce\xee\xb1\xfb\xe1\x82\xbd\xfc\xbb\x91\x9d\xbe\x8f\x00\x00\x00\xff\xff\x59\x3a\x43\x8a\xec\x02\x00\x00" +var _jsCommonTestJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x97\x51\x8b\x2a\x37\x14\x80\xdf\xfd\x15\x87\xf8\x50\x85\x59\x73\xed\x4b\xd9\x59\x6c\x2f\xa5\xe5\x52\xb8\xb0\xb0\xb4\x85\x3e\x66\xc6\xa3\x93\x36\x93\x0c\xc9\x19\x75\x3b\xe4\xbf\x97\xcc\xe8\x8c\x8e\x76\x75\xb7\x56\x5a\xee\x06\x04\x9d\xe4\xe4\x9c\x7c\xf9\x26\x41\x99\x17\xc6\x12\x54\xf0\xe3\xa6\x10\x7a\xfe\xab\xb0\x2e\x82\x5f\xac\xfa\xd9\x3c\x61\x61\xc0\xc3\xc2\x9a\x1c\xd8\x84\xa7\x26\xcf\x8d\x66\x0f\x83\xc1\x1c\x5d\x6a\x65\x82\x23\xd6\xc5\xb0\x08\x46\x63\x98\x7d\x0b\xd5\x00\x00\x80\xd0\xd1\x88\x3d\x61\xa1\x44\x8a\x0e\x08\xf3\x42\x09\x42\x58\x09\x2b\x45\xa2\xd0\xc1\x5a\x52\x06\x94\xa1\xb4\xb0\x12\xaa\xc4\xfe\x0c\xa1\xa5\x46\x3b\xea\x82\x67\xc0\x7e\x02\x91\x03\xd9\x67\xa9\x97\x40\x06\xaa\x15\xda\xc4\x43\xfe\x0c\x95\x36\xa5\xf6\xec\xa1\x17\xdb\x4c\x0d\x33\xa8\x20\x0c\x8d\x81\xad\x85\xcb\x58\x04\x61\x78\x0c\x6c\x2e\x5d\x86\x8e\x81\xef\x02\x71\x53\x60\x4a\xa3\x6e\x69\xa3\x5d\x01\xd1\x76\xba\xf1\x78\x42\xe6\x7b\x1c\xb5\x21\xa1\xf5\x4b\x0b\x79\x42\x61\xdb\x0c\xed\xd8\x71\x93\xc9\x8f\x1f\x06\x7b\xa4\x7e\x30\xe8\xf4\x57\x04\xb6\x21\x06\xa5\x56\xd2\x11\xce\x3b\x60\x17\xe1\xf9\x84\x14\x98\x42\x85\x9b\x42\x21\xc9\x15\x7a\x30\x25\x81\x59\x9c\x65\x34\xad\x21\x6d\xb1\x38\x12\x79\x01\xa9\x51\x0a\x53\x92\x46\xd7\x80\x5e\x41\x68\x7a\x1a\xd1\xcb\xe5\x1d\x25\xed\x33\x3b\x97\xbb\xf2\xbb\xb4\xbb\x67\x7b\xb0\x6b\xe0\x9d\xb9\xad\xe1\x27\xc5\xfd\x84\x1a\x6d\x60\x5a\x5a\xd5\xbc\x00\x36\xbc\x0c\xb5\xb3\x73\x5c\x88\x52\xd1\x39\x6b\xeb\x80\xd9\xde\xe3\xd0\x4a\xab\x62\x60\x19\x51\xe1\x62\xce\xd7\xeb\xf5\x64\x29\x29\x2b\x93\x49\x6a\x72\xfe\x9b\x29\xed\xa3\x5d\x0a\x2d\xff\x14\x61\xfd\x3c\x94\xf7\xa8\x31\x8c\x61\xd1\x21\xc9\xd2\xaa\xbb\x42\x10\xa1\xd5\x2c\x3e\xe8\x3a\x4c\x58\x0f\x4e\x84\xc3\xbb\xd2\x2a\x16\x03\xab\x4a\xab\x3c\x4f\x94\x49\x78\x65\x71\xe5\x79\x55\x08\xca\x7c\x25\x74\x9a\x19\xeb\x7b\x79\x42\x6b\x7a\x62\x60\xc3\xcf\x95\x92\x1a\x3d\x3b\x18\xe2\xdb\x5f\xbe\x2f\x56\x98\x39\x58\x19\x98\x4e\x68\x43\xac\xd7\x1f\x66\x83\x19\xe8\x52\xa9\x23\x78\xab\x10\x98\x0b\xb9\x67\xc1\x76\xeb\xdb\x9d\x1b\x05\xc4\x51\x9d\x25\xaa\xe7\x8a\x42\xdc\x69\xf3\x5e\x89\xbc\x01\x14\xd2\xf3\xe3\xe2\x4f\xbf\xc1\x97\x2b\x03\x42\xcf\xeb\x7a\xdf\xdd\xf9\xc7\xee\xb0\xe9\xd7\xfd\x9e\xff\xa0\x3b\xc3\xcf\xfb\x65\x5e\xea\xcf\xc2\x58\x70\x2e\x03\x47\xcf\x0a\xaf\x7a\x00\x2d\x25\x7d\xec\x56\x12\x7f\xa9\xf2\xdc\xe2\xe0\xe1\xfc\x56\xc7\xcd\x4e\x97\x44\x52\x52\xa6\x7f\x20\x41\x8e\x36\x2d\xad\x14\x6a\x4f\xa1\xb7\xe8\xe2\x5c\x16\x73\x9e\x2d\x3f\xb6\x53\x4f\x8c\x5d\xfe\xed\x6a\xae\xa3\x0c\xb4\xce\x38\x9b\x36\x6c\xce\x1a\xc3\x9a\xae\x3a\x76\x58\x2d\xa4\x42\x2d\x72\xf4\x77\xff\x67\x7d\x2e\x63\xde\x41\xba\xa6\x40\xfd\x93\x27\xfc\x53\x78\xbb\x40\xe1\xd4\x39\x58\x4d\xfc\xcd\xfd\xfd\xfd\xbb\x46\xb7\xd7\xe8\x65\xf0\xff\x92\x4b\x68\x57\x68\xaf\x72\x12\x1d\x8a\x24\x75\x50\x42\xa8\xfa\x2a\xbb\x95\x51\x99\x71\x54\x4b\xc1\x0b\x6b\x7e\xc7\x94\x1c\xaf\xb6\xdf\x3c\x0f\x0b\x70\xe1\x96\x2b\x8c\xe7\x89\x35\x6b\x87\x5b\xe9\xbe\x13\x34\xab\x6f\xbf\x8b\xed\x6b\x94\x8b\xae\xec\xdc\xf4\xc3\x2d\x8d\xdb\xdf\xa1\x8e\xd7\xd1\x2e\x35\xd8\xda\x2b\xb1\xe1\xb6\x5b\x48\x20\x17\xaa\x1b\x4e\x3f\x9c\xb4\x31\x7c\xfe\x0a\x00\x00\xff\xff\x57\xce\x40\x30\xcb\x10\x00\x00" func jsCommonTestJsBytes() ([]byte, error) { return bindataRead( @@ -445,12 +445,12 @@ func jsCommonTestJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.test.js", size: 748, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "js/common.test.js", size: 4299, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsExcluded_filesJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\x6f\x6f\xdb\xbc\x11\xff\x2a\xce\xa1\x30\xc8\x27\x17\xba\x29\x9e\x17\x83\x02\xa1\xc3\x53\xb4\x5b\x81\x6d\x1d\x92\xbc\x73\x8d\x82\x96\xce\x36\x5b\x9a\x34\x48\x2a\x8d\xa1\xe8\xbb\x0f\xa4\x24\x5b\x49\xac\x24\x03\x02\x58\xe1\xf1\xfe\xfd\xee\x77\x77\x3c\x5b\x55\xa6\x08\xca\x1a\x46\xbc\xbe\x93\x6e\x12\xf2\xba\xb9\xea\x0f\x27\x8e\x19\x5e\xab\x15\x0b\x73\xb3\xe0\x8e\x42\xe5\xcc\x24\x7e\x0b\xba\xdf\x59\x17\xfc\x55\x54\x91\x79\x3c\xca\x6b\x95\x19\xd4\xd9\xd9\x25\x76\xc2\xac\x6e\x9a\xab\x4e\x89\xa2\x52\x21\xb5\x66\xb2\xd7\x45\x89\xc7\x6f\xc7\x51\x0a\x9d\x9f\xbd\x3f\x9e\x35\x4e\x6c\x73\x42\x27\x8a\x3c\xa0\x13\x65\x7e\x0c\x15\x03\x1a\x5e\x3b\x61\xe3\x27\x7f\x78\xf8\xb6\xfc\x49\x45\x10\x25\xad\x94\xa1\xff\x3a\xbb\x23\x17\xf6\xe9\x5a\x4d\xa6\xda\x92\x93\x4b\x4d\xd9\xd9\x7b\x5c\x53\xc8\x4c\xc3\x1b\x74\xc2\xe5\xc3\xd4\xa1\x32\xad\x76\x09\x67\x79\xd8\xef\xc8\xae\x26\x37\xfb\xed\xd2\xea\xe9\xb4\xfd\x15\xc1\xde\x04\xa7\xcc\xfa\x56\xae\xa7\xd3\x31\x8f\xcf\xef\x62\x7d\x27\x75\x45\x19\xfc\xdb\x96\x95\x26\x68\x38\x8e\x29\xc3\x8f\x1f\xe4\xbb\x6b\xbd\xda\xd9\xfb\x36\xdc\xf0\x28\xfd\x54\x94\xcb\x69\x98\x4e\x19\xe5\x8e\x11\xe7\xf8\xb7\x69\xe8\x2b\x44\x57\x6a\xc5\xfe\x8c\x52\xb0\xc9\x15\xe4\x7d\x4e\x34\x9d\xc6\x3f\x71\xf4\x74\x54\x8a\xb5\x34\x79\x17\x5c\xe1\x48\x06\x62\xa6\xd2\x9a\x47\x73\x4e\x44\x2e\x8c\x84\x6e\x10\x4a\x5a\xc9\x4a\x07\x78\x8a\x78\x9b\x05\x35\x1c\x3f\xa4\x80\x7c\xc2\xe5\x08\x32\xf1\x95\x75\x2c\xd1\x68\xa2\xcc\x84\xb8\x13\x25\x33\x28\xf1\x90\x6e\xe0\xf5\x81\x44\x61\xd1\x88\xa5\x32\x65\x8a\x0b\x25\xe7\x3d\xbf\x4c\xc4\xc8\xe4\xcf\xd9\xfc\x24\xdb\x8f\x87\x1b\x47\xab\xa2\x8b\xbd\xc9\x4e\x08\x0f\x0c\x8e\x71\x05\x04\x09\x18\x38\x86\xe8\xce\x3e\x29\x49\x77\xb1\x83\x68\xe7\x6c\xb0\x31\x49\xb1\x91\xfe\xdb\x6f\xd3\x83\xd5\x76\x41\x54\x88\x36\x76\x39\x00\x3a\xe6\x84\xcf\x3f\xf0\x86\xcd\x1f\x71\xdc\x45\x5e\x7a\x9a\x44\xcc\x8a\x00\xc7\xb6\xec\x1c\xf6\xc8\xb9\x88\x5c\xe0\x94\x93\x70\xb4\xd3\xb2\x20\x06\x35\x9c\xbb\x73\x68\x00\xc3\xdc\x2d\x0e\x30\x51\x73\xb0\x21\x5b\x17\x28\x5b\xa4\x8a\x9c\x44\xe5\xf4\xc1\xc0\xec\xbb\x58\xab\xf0\x6e\x86\x00\x1c\x6d\x4e\x73\xa8\x9c\xbe\xd8\xc9\x10\xc8\x19\x58\xa0\xca\x83\xf0\xd5\xb2\x2d\x27\x0b\x42\x4b\x1f\xbe\x9a\x92\xee\xbf\xad\x18\xcc\x80\x9f\x5f\x72\xd4\xb9\xfb\x68\x98\x15\xd2\x14\x1b\xeb\xb0\xd6\xca\x50\xe6\x70\xa5\x34\x19\xb9\xa5\x4c\x35\x3c\x03\xb8\x9a\x7d\x17\xbf\xd5\x2f\xf5\x6e\x26\xe8\x9e\x0a\x56\xf0\xe9\x94\x15\x79\x31\x0c\x25\xca\x67\x08\xb3\xf8\x0b\x1c\x43\x1e\x86\xd2\x6d\xd9\xc5\xa9\x73\x00\x9e\x78\xec\xf3\x19\x5b\xab\xf0\xb0\x59\xf3\xbf\x33\xf1\xc7\x47\xce\xb2\x87\xef\x33\xce\xc4\x1f\xfc\xe0\xa6\x07\xc5\x27\x7f\x30\x9b\xc1\xb9\x9f\x7f\x58\x9c\x43\xfa\xf8\x73\xc1\xd1\x30\x3b\x87\xa5\xf4\x74\x51\x39\x0d\x0b\xac\x2b\xa7\xb3\x02\x77\x32\x6c\xb2\x80\x8e\xee\x32\x89\x6d\x72\x99\x6e\x78\x73\xa4\x08\x7b\xce\x24\xd9\x70\xde\x20\xbe\x58\xe0\xd8\x64\x81\x77\x8d\xe8\xd8\x7b\x8e\x32\xbf\x26\x79\x68\xc7\x4f\x5a\x7a\xcf\xea\x52\xf9\x9d\x96\xfb\xff\x44\x0c\xe1\xf3\x7d\xa1\xab\x92\xca\x6b\xfb\x1b\xd0\x91\x29\xc9\x0d\x79\x1c\x6d\x51\xd7\xd4\xcc\x08\xc9\x59\xd8\x28\x1f\xd9\xb9\xf3\x11\x43\x8b\x83\xff\x63\x65\xc4\x97\xae\x3c\xf8\xe8\xe2\xdd\x01\xae\x61\x40\x9f\x35\x6d\xc9\x04\x06\xc1\x01\xa6\x9e\x3c\x2d\x2d\x01\xeb\x22\x06\xdf\xc6\x1c\xcd\x43\x73\xfa\xae\x04\xac\x37\x8e\x56\x19\x35\xa3\xa1\x71\xfe\x36\x3f\x8e\xa4\xb7\x06\x9e\x1b\xba\x4e\x02\xce\x9b\x86\x63\xf1\x66\x88\x6f\xe3\x50\x1b\x07\x39\x3a\x89\xa3\x72\xe0\xcc\x93\x74\xc5\x46\x99\x35\x7f\x09\xbc\x52\xdd\x01\xd6\xaa\xcc\xc0\xd8\x0b\x47\x3e\xce\xd1\x11\x74\xd4\x76\x0d\x58\x7b\x57\x64\xa0\xb6\x72\x4d\x7e\xb6\xac\xfc\x5e\xac\xd5\x2a\x2e\x96\x71\xeb\xa9\x36\x70\xd3\x87\x23\x84\x00\xde\x12\x2d\xe4\xf3\x45\x5f\xda\x27\x30\x79\xb1\xb2\xee\xb3\x2c\x36\xec\xc8\x67\xc7\xeb\x20\x76\x95\xdf\xb0\x53\xce\x24\xd6\x51\x31\x73\x18\xa9\x95\xd1\x80\x67\x91\xfe\xa3\x75\x6b\x81\x7d\x81\x40\x1b\x92\xe5\x8b\x17\x5e\xe6\xdf\xa6\x47\xa0\x67\x10\x8c\x45\x72\xb8\xd9\x52\x04\xf8\x68\xcc\x4b\x5b\xee\x1f\xd3\x4d\x2b\x1f\x0b\x17\x5a\x5e\xd9\x57\x79\x75\x4d\x3b\xfb\x57\x15\x82\x35\x80\x1b\x69\x4a\x4d\x9f\xb4\x2a\x7e\x65\xc3\x2d\x36\x28\x89\x35\x51\x21\x5d\x61\x14\xb7\xc7\x08\x0f\x21\xc2\x7d\xb1\x6c\x0d\x9f\x28\x6d\x51\x39\x47\x26\x44\x63\x79\x9e\x3f\x19\x07\xf1\x45\x71\x9e\xc3\xc4\x93\xa6\x22\x50\x39\x06\x54\x67\x1e\x6b\x6b\xda\xa0\x93\x9d\x41\x16\xed\x9e\x8e\xa7\xf8\xc4\x05\xc7\x23\x66\x8f\x9b\x3c\x49\x23\x76\xea\x4d\xd8\xfd\x2b\xe2\x3d\x0a\xc3\x7c\x11\xf7\x44\xec\xc9\xe7\x10\x44\x47\x23\xec\xa6\x71\x76\x5b\xac\x13\xad\x1d\x0e\x4a\x91\x85\xe7\xe5\xc1\x01\xc4\x07\xf9\x6b\x4d\x70\x9c\x02\xf1\x66\xc7\x25\x4a\x70\xe8\x57\xe1\xf8\xa2\x74\x68\x1f\x5d\xfd\xb0\x8a\x4c\xf7\x10\x5f\xbc\x5f\x8d\x0a\x4a\xea\x9b\x20\x03\x8d\x4c\xad\x0e\xa1\x77\x42\xfe\x94\xf7\x2c\xad\x39\x90\x3b\x35\xbb\xbb\x9c\x25\xa8\x00\x4b\x19\xe4\xed\x7e\x47\x19\xfc\x8c\x6d\x81\xbe\x2a\x0a\xf2\x3e\x1b\x3e\xd3\x48\x78\x0a\xc9\x0d\x4b\x40\xf9\x2c\xc4\xc7\x2b\x39\x67\x07\xf5\xe9\x16\x5f\x61\x8d\xb7\x9a\x44\x92\x32\x97\xf2\x4c\xc3\xc3\x67\xf3\x05\xb6\xea\xdd\x47\x16\x3b\xb2\x69\x1e\xa1\xfe\xfc\xa5\x97\x12\x09\x83\x10\x0e\xc3\x37\xbe\x43\x93\x9d\xc4\x00\x1f\xa5\x2d\x03\xe6\xb4\x68\x38\x9e\xca\x9a\x5a\x14\xbb\xc4\xb3\xb6\xee\x91\xac\x09\x82\x7f\x7c\xbe\x7d\x03\x22\xb1\x7b\x07\xe1\xb4\xb9\x11\x0e\xc2\xba\xfc\xbf\xe0\x39\xd5\xf1\x6f\x5b\x2b\x5d\x36\xe5\x8f\xc2\x9a\x20\x95\x21\xf7\xea\xf6\x85\x19\x34\x08\xff\xb4\xe3\xa3\x72\x73\xd9\x8f\xca\x9e\x72\x93\x96\x73\xaf\xf2\xfb\x10\xce\xaa\xe5\xe8\x60\x84\xa6\x4d\x70\xf1\x5a\x98\x0a\x3b\x7e\x75\x6f\xed\x5f\xb4\xf7\xec\x69\x71\xf9\xe3\x2e\x8d\xd2\x61\x8b\x9e\x22\xc4\xc8\x0a\x2d\x7a\x62\x0e\xae\xa7\x83\x41\x2d\x07\xa2\xc3\xe1\x88\x8f\xb4\x1e\xae\x5a\x47\x6d\x45\x3f\xd9\xed\xce\x9a\xe8\xea\x94\x7b\x9d\x60\xe6\x58\xda\xa2\x8a\x07\x62\x4d\xa1\x93\xfd\xb5\xff\x5a\x32\x70\xd6\x06\xe0\xbc\x59\xf0\xab\xff\x05\x00\x00\xff\xff\x2a\x92\xaf\xda\xd0\x0f\x00\x00" +var _jsExcluded_filesJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\xf1\x6f\xdb\xba\x11\xfe\x57\x1c\xa2\x30\xc8\xe7\x0b\x9d\x74\x1b\xb6\x29\x20\x3a\xbc\xa2\xdd\x0a\x6c\xeb\xd0\xf6\x37\xd7\x28\x68\xe9\x64\xb3\xa5\x49\x81\xa4\xd2\x18\xaa\xfe\xf7\x81\x94\x64\x2b\x89\x95\xe4\x01\x81\xa5\xe8\xc8\xbb\xef\xbe\xfb\xee\xc8\x8b\xb2\x36\x79\x50\xd6\x50\x64\xcd\xad\x74\xb3\x20\x9a\xf6\x66\xf8\x38\x73\xd4\xb0\x46\x95\x34\xac\xcc\x9a\x39\x0c\xb5\x33\xb3\xf8\xce\xf1\xae\xb2\x2e\xf8\x9b\xb8\x45\x8a\xf8\x49\x34\x2a\x33\xa0\xb3\x8b\x6b\xe8\x8d\x59\xd3\xb6\x37\xfd\x26\x8c\x9b\x72\xa9\x35\x95\xc3\x5e\x90\x70\x7a\x77\x0c\x24\xd7\xe2\xe2\xea\xf4\xad\x75\x7c\x2f\x10\x1c\xcf\x45\x00\xc7\x0b\x71\x82\x0a\x01\x0c\x6b\x1c\xb7\xf1\x95\xfd\xfa\xf5\x71\xf3\x1d\xf3\xc0\x0b\x2c\x95\xc1\xff\x39\x5b\xa1\x0b\x87\xb4\xac\x41\x53\xef\xd1\xc9\x8d\xc6\xec\xe2\x0a\xb6\x18\x32\xd3\xb2\x16\x1c\x77\x62\x9c\x3a\xa9\x4d\xb7\xbb\x20\x17\x22\x1c\x2a\xb4\xe5\xec\xf3\x61\xbf\xb1\x7a\x3e\xef\x9e\x3c\xd8\xcf\xc1\x29\xb3\xfd\x22\xb7\xf3\xf9\x54\xc4\xc7\x6b\xa1\xb9\x95\xba\xc6\x8c\xfc\xc7\x16\xb5\x46\xd2\x32\x98\xda\x4c\xbe\x7d\x43\xdf\x2f\x1b\xb6\x5d\x5c\x75\x70\xc3\xbd\xf4\x53\x51\xae\xe7\x61\x3e\xa7\x28\x1c\x45\xc6\xe0\x6f\xf3\x30\x54\x08\x6f\x54\x49\xff\x1c\xad\xc4\xa6\x50\x44\x0c\x39\xe1\x7c\x1e\xff\xf8\x29\xd2\x69\x53\xac\xa5\x11\x3d\xb8\xdc\xa1\x0c\x48\x4d\xad\x35\x8b\xee\x1c\x8f\x5a\x98\x80\x6e\x80\x14\x58\xca\x5a\x07\xf2\x90\xf1\x2e\x0b\x6c\x19\xbc\x4e\x80\x7c\xe2\xe5\x44\x32\xb2\xd2\x3a\x9a\x64\x34\x53\x66\x86\xcc\xf1\x82\x1a\x90\x70\x4c\x37\xb0\xe6\x28\xa2\xb0\x6e\xf9\x46\x99\x22\xe1\x02\xc9\xd8\xa0\x2f\x13\x39\x32\xe2\xb1\x9a\x1f\x64\xfb\xe6\xb8\xe2\xe4\x95\xf7\xd8\xdb\xec\x8c\xf1\xa8\xe0\x88\x2b\x00\x91\x04\x02\x83\x10\xc3\xd9\x07\x25\xe9\x17\xf6\x14\x55\xce\x06\x1b\x93\xe4\x3b\xe9\x3f\xfe\x34\x03\x59\x5d\x17\xc4\x0d\xd1\x47\x25\x08\x01\x47\x1d\xf7\xe2\x35\x6b\xe9\xea\x9e\xc6\x5d\xd4\xa5\xc7\x59\xe4\x2c\x0f\xe4\xd4\x96\x7d\xc0\x81\x39\x17\x99\x0b\x0c\x05\x72\x87\x95\x96\x39\x52\xd2\x90\x85\x5b\x90\x96\x40\x58\xb9\xf5\x91\x26\x6c\x8f\x3e\x64\x17\x02\x64\xc7\x54\x2e\x90\xd7\x4e\x1f\x1d\x2c\xbf\xf2\xad\x0a\xaf\x96\x40\x08\x03\x2b\x70\x45\x6a\xa7\x2f\x2b\x19\x02\x3a\x43\xd6\xa0\x22\x70\x1d\x7f\x7c\xfc\x49\x79\xd4\x22\x70\x5f\x6f\xba\x12\xd3\xc0\xb5\xf4\xe1\x83\x29\xf0\xee\x63\x49\xc9\x92\xb0\xc5\x35\x83\x42\xb8\x37\x86\x5a\x2e\x4d\xbe\xb3\x0e\x1a\xad\x0c\x66\x0e\x4a\xa5\xd1\xc8\x3d\x66\x75\xcb\x32\x42\x6e\x96\x5f\xf9\x4f\xf5\x43\xbd\x5a\x72\xbc\xc3\x9c\xe6\x6c\x3e\xa7\xb9\xc8\xc7\xf0\xa2\x7d\x09\x64\x19\x9f\x84\x41\x10\x61\x6c\xdd\x17\x3d\xf6\x42\x10\xc2\x92\xb6\x4b\xb1\xa4\x5b\x15\x7e\xed\xb6\xec\x1f\x94\xff\xf6\x86\xd1\x6c\x75\x75\xf9\xf7\xf5\x82\xbd\xa1\xd9\xaf\xaf\x4b\x46\xf9\x6f\x8c\xf6\xcf\x63\xe0\x81\xba\x72\x3e\xa7\x4a\x90\xe5\x92\x2c\xca\xd5\xeb\x35\x68\x51\xae\xfe\xb2\x06\x2f\xca\xd5\x5f\xd7\x50\xae\xfe\xb4\x9e\xcf\x69\x25\xe2\x0b\x83\x5c\xa8\x45\xb5\x20\x4b\xb2\xd0\xe9\xd7\x33\x30\xd4\xae\xc8\x46\x7a\xbc\xac\x9d\x26\x6b\x68\x6a\xa7\xb3\x1c\x76\xd6\x87\x94\xb8\x82\x38\xf5\xb2\x0a\x2a\x67\xa3\x80\x32\x0d\x0e\x2b\x9b\x79\xa8\x64\xd8\x65\x01\x1c\xde\x66\x12\x3a\xde\xb2\xa2\x65\xed\x49\x91\xf4\xb1\x70\x65\xcb\x58\x0b\xf0\xa4\x9e\x62\x4f\x07\xd6\xf7\xbd\xa3\x57\x0c\xa4\xf8\x84\xf2\xd8\xfd\x6f\xb5\xf4\x9e\x36\x85\xf2\x95\x96\x87\xff\x46\x94\xe4\xdd\x5d\xae\xeb\x02\x8b\x4f\xf6\x27\x01\x87\xa6\x40\x37\x6e\x9b\xe8\x0b\xfb\x19\x42\x0d\x97\x8c\x86\x9d\xf2\xb1\x19\x2a\x1f\xcb\x63\x61\xf4\x7f\x2c\x3a\x7f\xdf\x57\x1e\xee\x2d\xbc\x3d\xf2\x3e\x06\xf4\x4e\xe3\x1e\x4d\xa0\x24\x38\x02\x69\x04\x9c\xb7\x16\x04\x9a\x3c\x82\xef\x30\x47\xf7\xa4\x3d\xbf\x56\x12\x68\x76\x0e\xcb\x0c\xdb\x49\x68\x8c\xbd\x2c\x8e\x43\xe9\xad\x21\x8f\x1d\x7d\x4a\x06\xc6\xda\x36\x4a\xe3\xa5\x14\x7f\x89\x33\x74\x9a\xe4\x18\x24\x4e\xe6\x51\x30\x8f\xd2\xe5\x3b\x65\xb6\xec\x29\xf2\x0a\x75\x4b\xa0\x51\x45\x46\x8c\xbd\x74\xe8\xe3\xd8\x9e\x60\x47\xed\xb7\x04\x1a\xef\xf2\x8c\xa8\xbd\xdc\xa2\x5f\x6e\x6a\x7f\xe0\x5b\x55\xc6\x73\x6c\xda\x7b\xaa\x0d\xf9\x3c\xc0\xe1\x9c\x13\xd6\x09\x2d\x88\xd5\x7a\x28\xed\x03\x9a\x3c\x2f\xad\x7b\x27\xf3\x1d\x3d\xe9\xd9\xb1\x26\xf0\xaa\xf6\x3b\x7a\x2e\x98\x84\x26\x6e\xcc\x5c\xd7\x2a\x38\xd2\x59\x94\xff\x64\xdd\x3a\x62\x9f\x10\xd0\x0e\x65\xf1\xe4\x82\xa7\xf5\xb7\x1b\x18\x18\x14\x44\xa6\x90\x1c\x57\x76\x12\x21\x6c\x12\xf3\xc6\x16\x87\xfb\x72\xd3\xca\xc7\xc2\x85\x4e\x57\xf6\x59\x5d\x7d\xc2\xca\xfe\x5e\x87\x60\x0d\x81\x9d\x34\x85\xc6\xb7\x5a\xe5\x3f\xb2\xf1\xa1\x39\x2a\x89\x35\x71\x43\x5a\x42\x31\x1e\x56\x13\x3a\x24\x91\xee\xcb\x4d\xe7\xf8\x4c\x69\xf3\xda\x39\x34\x21\x3a\x13\x42\x3c\x18\x07\xf1\x02\xb3\x10\x64\xe6\x51\x63\x1e\xb0\x98\x22\xaa\x77\x0f\x8d\x35\x1d\xe8\xe4\x67\x94\x45\x77\x2d\x88\x5f\xe1\x41\x08\x06\x27\xce\xee\x37\x79\xb2\x46\xee\xd4\x8b\xb8\xfb\x77\xe4\x7b\x92\x86\xd5\x3a\x1e\x41\xb1\x27\x1f\x53\x10\x03\x4d\xa8\x1b\xa7\xd5\x6d\xa1\x49\xb2\x76\x30\x2a\x45\x16\x1e\x97\x07\x46\x14\x1f\xed\xcf\x35\xc1\x69\x0a\xc4\x95\xbd\x96\x30\xd1\xa1\x9f\xa5\xe3\xbd\xd2\xa1\xbb\xe3\x0d\xc3\x2a\x2a\xdd\x93\x78\xc1\xfe\x60\x54\x50\x52\x7f\x0e\x32\xe0\xc4\xd4\xea\x19\x7a\xc5\xe5\x77\x79\x47\xd3\x49\x48\x64\xa5\x96\xb7\xd7\xcb\x44\x15\x81\x42\x06\xf9\xe5\x50\x61\x46\xbe\xc7\xb6\x00\x5f\xe7\x39\x7a\x9f\x8d\x6f\x85\xc8\x3d\x86\x14\x86\x26\xa2\x7c\x16\xe2\x5d\x19\x9d\xb3\xa3\xfa\xf4\x07\x5f\x6e\x8d\xb7\x1a\x79\xb2\x52\x97\xf2\x4c\xc3\xc3\x67\xab\x35\x74\xdb\xfb\x97\x2c\x76\x64\xdb\xde\x63\xfd\xf1\xc5\x32\x25\x12\x46\x10\x8e\xc3\x37\x5e\x7b\x93\x9f\xa4\x00\x1f\xad\x9d\x02\x56\xb8\x6e\x19\x9c\xcb\x1a\x3b\x16\xfb\xc4\xb3\xae\xee\x51\xac\x89\x82\x7f\xbe\xfb\xf2\x02\x46\x62\xf7\x8e\xe0\x74\xb9\x21\x8c\x60\x5d\xff\x21\x7a\xce\x75\xfc\xcb\x8e\x95\x3e\x9b\xe2\x5b\x6e\x4d\x90\xca\xa0\x7b\xf6\xf4\x25\x4b\xd2\x02\xf9\x97\x9d\x1e\x95\xbb\xeb\x61\x54\x0e\x92\x9b\x75\x9a\x7b\x56\xdf\x47\x38\x65\xa7\xd1\xd1\x08\x4d\x27\xc1\xe5\x73\x30\x15\xf4\xfa\xea\xaf\xf6\x3f\xf0\xe0\xe9\xc3\xe2\xb2\xfb\x5d\x1a\xad\xe3\x16\x3d\x27\x88\x89\x23\x34\x1f\x84\x39\x5a\x9e\x3e\x8c\x6a\x39\x32\x1d\x3f\x4e\xc4\x48\xc7\xc3\x4d\x17\xa8\xab\xe8\x5b\xbb\xaf\xac\x89\xa1\xce\x85\xd7\x89\x66\x06\x85\xcd\xeb\xf8\x81\x6f\x31\xf4\xb6\xdf\x0f\x1f\x0a\x4a\x9c\xb5\x81\x30\xd6\xae\xd9\xcd\xff\x03\x00\x00\xff\xff\xe5\x35\x44\xe7\x3f\x10\x00\x00" func jsExcluded_filesJsBytes() ([]byte, error) { return bindataRead( @@ -465,12 +465,12 @@ func jsExcluded_filesJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/excluded_files.js", size: 4048, mode: os.FileMode(420), modTime: time.Unix(1603725451, 0)} + info := bindataFileInfo{name: "js/excluded_files.js", size: 4159, mode: os.FileMode(420), modTime: time.Unix(1617311114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3b\xed\x8e\x1b\x37\x92\xaf\xa2\x21\x02\xa1\x19\x51\x1c\x29\x09\x0e\x8b\x96\x99\xb9\xc4\x76\x76\x7d\x1b\xc7\x7b\xb6\x37\xfb\x43\x11\x0c\x4e\x77\x49\x62\xdc\x22\x35\x24\x35\x1f\xa7\x69\x60\x1f\xe4\xee\xe5\xf6\x49\x0e\xfc\xe8\x2f\xa9\x35\x1f\x41\x72\x38\x20\x88\x5b\x64\xb1\x58\x55\xac\x2a\x56\xb1\x6a\xce\x96\x3b\x99\x59\xa1\x64\x02\x78\x7f\xcd\xf5\xc0\xb2\x7d\x39\xab\x06\x07\x26\xd1\x78\x2f\x96\x89\x9d\xeb\x05\xd6\x60\x77\x5a\x0e\xdc\x37\x85\xdb\xad\xd2\xd6\xcc\xdc\x12\xce\xdc\x10\xdb\x8b\x54\x93\x22\x3d\x9b\x92\x38\x99\xee\xcb\x72\x16\x17\x81\x5b\x94\xf1\xa2\x48\x78\xb5\x96\x70\xd2\x7c\x1b\x4c\x38\x2d\xd8\xd9\xa4\x19\x2b\x0d\xdd\x30\x20\x86\x66\xcc\x12\x43\x73\xd6\x90\x4a\x2c\xd1\x78\x6f\xa8\x72\x9f\xf8\xfe\xfe\xdd\xe5\xaf\x90\x59\x9a\xc3\x52\x48\xf8\x9b\x56\x5b\xd0\xf6\xce\x83\xed\x41\xee\x36\xa0\xf9\x65\x01\xe9\xd9\x84\xac\xc0\xa6\xba\xc4\x25\x31\x54\xb3\x36\xeb\x68\x27\xc3\xea\x1c\x9d\x31\x7b\xb7\x05\xb5\x1c\x7c\xb8\xdb\x5c\xaa\x62\x38\x0c\xff\x52\xab\x3e\x58\x2d\xe4\xea\x23\x5f\x0d\x87\xa7\x76\x3c\x86\x25\xfb\x6b\x5e\xec\x20\x45\x6f\x55\xbe\x2b\x00\x95\x98\x9c\x5a\x8c\x3e\x7d\x02\x13\xc1\xaa\x65\x67\x93\x40\xae\xed\xb0\xef\x0f\x65\x3a\xb4\xc3\x61\x02\xcc\x24\x80\x31\xf9\xd3\xd0\x56\x27\x04\x33\xb1\x4c\xbe\x71\xb3\x48\xf9\xad\x10\xab\x78\x82\xe1\xd0\xfd\x47\x9b\x9d\x9a\x45\xee\x2c\x35\x8b\xc4\x65\x1a\xb8\x85\x44\xee\x8a\x02\x3b\x74\x86\xea\x44\x9f\x22\x5d\x13\x94\xc3\x92\xef\x0a\x8b\x0e\x25\x1e\xb8\x80\x12\x93\xaf\x3c\x41\xc6\xcb\xa5\x11\x32\xe0\xa5\xd2\x89\x57\xa3\x81\x90\x03\xc0\x86\xe6\x89\x26\x9c\xd4\xec\x5a\xbc\xaf\x95\xc8\x2e\x4a\x7a\x29\x64\xee\xe9\x22\x1c\xe3\x4a\xbf\xb4\x93\x91\x64\xc7\xda\x7c\xc0\xed\x45\x0d\xd1\x60\xa5\x91\xf6\x32\xed\x99\xac\x35\xd8\xd1\x65\x09\xe2\x88\x58\x4c\xac\xdb\x4e\x1d\x1c\x49\x04\x8c\x22\xda\x6a\x65\x95\x63\x92\xae\xb9\x79\x77\x23\x2b\x61\x05\x2b\x70\x0b\x1c\x8e\x2d\x43\x88\x98\xc4\x50\xc3\xa6\xb8\x4c\xe6\x1d\x1d\x37\x4e\x2f\x0d\x0c\x9c\xcc\x32\x8b\x1a\xb3\xd4\x61\xc3\x4a\x72\xc6\x49\xce\x62\x60\x40\x35\x6c\x0b\x9e\x41\x82\xf6\x68\x64\x46\xa8\x44\xc4\xce\xcd\xa2\x16\x13\x94\x35\x0e\x1e\xb6\x20\x3c\x48\x4a\x32\xa0\x3b\x5d\xd4\x08\xce\x7f\xa1\x2b\x61\xbf\x38\x27\x08\x61\x22\x18\xcc\xd1\x4e\x17\xe3\x2d\xb7\x16\xb4\x44\x0b\xa2\x98\xa5\x66\x77\x19\x8e\x33\xb1\xb4\xe0\xc6\xbe\x91\x39\xdc\xbe\x5b\x26\xe8\x1c\xe1\xd1\x14\x93\x8c\x99\x0b\x9d\x08\xca\x65\xb6\x56\x9a\xec\x0b\x21\x21\x35\x64\x29\x0a\x90\x7c\x03\xa9\x2a\x71\x8a\xd0\xec\xfc\x17\x7a\x23\x3e\x8b\x2f\xce\x29\xdc\x42\x96\x48\x3c\x1c\x26\x92\xc9\x36\x29\x6e\xfe\x9c\xa0\x73\xf7\x2f\xc2\xc4\x32\xdb\x9e\xdd\xe4\x91\xce\x8c\x21\x84\xbd\x1e\x17\xec\x3c\x59\x09\x7b\xbf\x5e\xe1\x7f\x4f\xe8\x97\x17\x38\x49\xef\x7f\x39\xc7\x09\xfd\x12\xd7\xdb\x54\x42\x29\xfc\x7e\xe8\xfc\x1c\x8d\x8a\xf9\x57\x8b\x11\xf2\x1f\xdf\x2c\x30\xd1\x89\x98\xa3\x4b\x6e\x60\xbc\xd3\x05\x5a\x90\xfd\x4e\x17\xa9\x24\x5b\x6e\xd7\xa9\x25\x1a\xae\x53\x4e\x02\x73\x69\x56\xe2\xb2\x51\x91\xe4\x58\x93\x78\x89\x71\x49\x1e\x3c\x5f\x67\x63\x16\x47\x3b\x34\xc9\x04\x13\xce\x5a\x88\xca\x19\x6f\xb4\x8a\xed\x0b\x61\x2c\x48\xd0\x26\x9d\x2f\x88\xe5\xdb\xb4\xad\xfc\x76\x2d\x0c\xad\x21\x58\xf7\x27\x35\x85\xc8\xc0\xe1\x3f\x18\xdf\xee\xcc\x3a\x01\x5c\x92\x9d\x3c\x44\x18\xac\xe9\x00\x5e\xc4\x03\x07\x3c\x1b\x4f\xcf\x98\x73\x47\xbf\x6d\x63\xb3\xf5\x13\x96\x4c\x9d\x90\x34\x17\x06\xda\xc6\xe8\x36\x07\xf6\x9d\xd6\xfc\xae\x65\x57\x1e\x59\xbc\x54\xf4\x6a\xb7\x01\x69\x0d\x99\xe0\xd9\x01\xee\xa5\xd2\xaf\x79\xb6\x4e\x92\xb6\x47\xb1\x94\x6f\xb7\xc5\x9d\x27\x97\x00\x76\x67\x53\xce\x82\x1d\x1c\x1e\x11\x50\x63\xef\x0a\xa0\x06\x6c\xed\xf0\x9c\xe1\x20\x84\x4b\x22\x3a\x2e\xa7\x32\x48\xcb\x10\x1a\x25\x93\x7b\xc0\xc4\xb0\xf9\x62\x66\x69\x01\x72\x65\xd7\xdf\x4e\x66\xd8\xd0\x9d\x34\x6b\xb1\xb4\xc9\x81\x01\x79\x88\xf1\xd7\xa4\xfa\xc4\x41\xcf\x1b\x98\x09\x69\xa0\x70\xe3\x96\x7e\x55\x42\x26\x88\x38\x6a\x54\x87\x9a\xca\xe6\x19\xdc\xdf\xef\xaf\x52\x84\x88\x48\x91\x54\x5b\x40\xde\x04\x8d\x1b\x81\xdb\xac\xd8\xe5\xf0\x43\xf5\x5b\xc3\x56\x99\x14\x7d\x89\xba\xaa\x5a\x23\xb3\xcc\xde\xdf\xef\x4b\x02\x17\x09\xb4\x48\x9b\x62\x7f\x84\x36\x41\x43\x84\x7b\x24\x1e\x15\xc8\x30\xa8\xe0\x18\xc2\xb3\xaf\x18\x33\x91\xa3\xe1\x30\x31\xf3\xe9\x82\xb9\xff\xb5\x4c\x7b\x74\xbe\x22\x68\xe0\x2c\x7e\x9e\x43\xa6\x72\xf8\xfb\xfb\x37\x2f\xd5\x66\xab\x24\x48\x9b\x98\xf9\x64\x81\x17\xac\x77\x66\xba\xc0\xee\x54\x89\xc5\xa9\x2d\x93\x42\x65\xdc\x11\x42\x0d\x70\x9d\xad\xdd\x89\x93\x8c\xed\x6f\x44\x51\x7c\xf0\x23\xa9\x84\x9b\x01\x27\xb9\xc8\x3b\xbf\x1d\xc0\x8f\x8a\xe7\x6f\x95\x86\x06\xe4\x78\xe4\xb5\xd6\x4a\x77\x01\xde\x7b\x49\x86\xa1\x9f\x79\x21\xe2\xc0\x09\x9b\xf2\x72\x27\xc6\x05\x5f\xf5\xb5\xb4\x14\x85\x05\x7d\x2c\x45\xcd\xec\x1c\x16\xc3\xe1\x99\x99\xc3\xa2\xd6\x83\x39\x2c\x5c\xf8\xa4\xbd\x9b\x71\x7b\xbd\x54\x3b\x69\x7b\xae\xb4\x78\x3f\x7d\x86\x3b\x93\x34\x7b\xe3\x78\x10\x25\x71\xc4\x1f\x1b\x9f\x37\x14\xcb\x0e\xc6\x2d\x53\x09\x9e\x01\x6d\xf3\x4c\xbd\xf9\x26\x40\x20\x62\x26\x08\x9d\x31\x66\xe9\x95\xbb\x8a\x83\x78\x13\x8b\x4b\x17\x55\xf4\x85\x5d\x6f\x55\x0e\xc5\x2b\x6e\x79\xa5\x33\xff\xf1\xe1\xdd\x4f\x74\xcb\xb5\x81\xa4\x99\x23\xda\x07\xaa\xed\xd8\xc1\x60\x3d\xe7\x4e\x85\x78\x2d\x95\x86\x3f\xa6\xc9\xb5\x12\xf9\xc0\x26\xb8\xfc\x82\xf2\x5f\xf9\x6d\xe2\xbd\x39\xe2\x5b\x71\x7e\x3d\x3d\xf7\x40\x88\xe4\xdc\xf2\x8f\x77\x5b\x48\xd1\xaf\x46\x49\x44\xcc\x2e\xcb\xc0\xb4\x8e\xcd\x3b\x84\x80\xd1\x10\x87\x8c\x80\x3f\xfb\x43\xaf\x91\x29\x69\x54\x01\xd4\xcf\x26\x06\x97\x2e\x8c\x8b\xba\x75\xe4\xa8\x1b\x3d\x8c\xc2\x8b\x6e\x69\xd6\x68\x08\x31\xec\x15\xb7\x40\xa5\xba\x49\x7c\x40\x86\x10\x63\x2c\x01\xf6\x05\x85\x5b\x0b\x32\x4f\xf6\xc6\x72\x6b\x52\xb4\x54\x66\xad\x5a\x96\x4c\xb4\x5c\xa5\x28\xfd\x6a\x82\x4a\x02\x18\x07\xe2\x5d\xe0\x18\xd9\x40\x5f\x3a\xfb\x72\x02\xe6\x1b\xc3\x80\x38\xc4\x40\xaf\xea\x70\x9f\x6a\x30\xbb\xc2\x3a\x47\x46\xea\x1f\xdf\xdf\xb9\xb3\x66\xfb\x32\x4a\x95\xd6\x96\x53\x71\x40\x2c\x7d\x1f\x60\xf1\xac\x4f\xe0\xc1\x12\x83\xc4\x53\x20\xd6\x0b\xfd\xcf\xaf\x3f\x3e\xe1\x0c\xc0\x87\xbf\x40\xbd\xd5\x61\xbf\xb7\xff\xac\xb7\xae\xa6\x66\x50\x18\x88\x36\x03\x15\x39\x84\x33\xa0\x1f\x9c\xac\x88\x74\xce\xb9\xd2\x21\xe1\x74\x48\x63\xb1\x4c\xf4\x5c\x2c\x82\xf2\x29\xe6\xbe\x67\x32\xdc\x8c\x7b\xc7\x73\x2a\xc8\x7b\xb8\x4e\x15\x7d\x0f\xd7\xc2\x08\x25\xc9\x5b\x6e\xb3\x35\x98\x54\xd1\xf8\x45\xbc\x3b\xfd\x87\xb0\x6b\x3f\x90\x2a\xda\x1d\x28\x71\x29\xa9\x51\xda\xb6\x6d\xbb\xed\x64\x2b\x44\x95\xbb\x87\x83\x81\xfb\x7b\xc7\xcd\x56\x51\xe7\xd7\x0a\x70\x7e\x8f\x6b\x48\xac\x1f\x74\x6e\xcf\x2b\x4e\xe6\x2c\x44\xf6\x7b\xe3\x6c\x1e\x30\x2c\x18\x78\x2f\x59\x1f\xb2\x3c\x3a\xe3\x8c\x58\xea\x55\x8b\xed\x3f\x80\xbe\x06\x9d\x72\xfa\x6a\xa7\xbd\x3f\x25\x1f\x95\xe5\x45\xda\x68\xe6\x38\x32\x9f\xf2\xc0\xf3\xbb\x2d\x48\xc8\x4b\xd2\xaf\x20\x71\xa3\x6a\x03\x5c\xf6\x58\x93\x71\xa9\xde\xf1\x19\x3b\x93\x40\x1f\xd7\x30\x30\x9e\xa6\xc1\xa5\x56\x9f\x61\x90\xab\x1b\x89\x82\xad\xd5\x4e\xba\xdf\xe3\x12\x53\x39\xde\x16\xaf\x73\x58\x10\xcd\xcc\x81\xb4\x09\x67\xe6\xe0\x04\xc7\x9a\x48\xf6\x96\xdb\x35\xdd\x08\x99\x7c\x05\x5f\x13\xee\xa2\x64\xce\x98\xbc\x40\x28\x45\x68\x24\x67\x96\xb6\x6f\x8f\x8e\x61\x13\x97\xe0\xc8\x70\x4a\xaa\xb1\x60\x4f\x50\xb0\x43\xb2\x77\x56\xab\x47\x28\x45\x23\x11\x6d\x19\xca\x27\x58\x92\x7a\x96\x25\x85\xec\x5e\x9f\xb6\x24\x7d\x64\x49\x9c\xe9\xca\x92\xdc\xf5\x53\x0b\xab\x25\xb6\x4c\xc9\x8c\xdb\x84\x57\x03\x38\x1c\xff\xa1\x28\x08\x34\x2a\xf0\xbb\x1e\xfd\x4f\x7c\x03\x3f\x28\xed\xad\xf5\xa1\xfb\xd6\xd1\x2f\x96\xc9\x99\xed\xe6\xc0\x86\x59\x97\x0a\x79\x4d\x38\x4c\x6b\x1c\xbc\x7e\x31\xe9\x2e\x70\xfa\xd1\xc4\x42\x7a\x34\xc5\xfd\x69\x94\x3c\x46\x48\xf4\x78\x5a\xc7\x72\xf2\xc5\xe4\x82\xa7\x6d\x5c\x72\x34\x25\x1a\x8f\xd0\xe0\x7c\x80\x46\xbc\x24\x7f\xd7\xc5\x47\x75\xc0\x57\x95\xc5\x75\xae\xf7\x44\x53\x8e\x93\x0e\xab\x11\xae\x2c\x49\xc1\xde\x03\xaf\x73\xfc\x97\x05\x37\x26\xd9\xe7\xc2\x6c\x0b\x7e\xe7\x64\x97\x22\xb7\xc5\xbb\xad\xc3\xef\x2e\x12\x99\x83\xee\x09\x24\xda\x48\x5e\x17\xe0\xe2\xef\x04\xa9\xb8\x2a\x3e\x5f\x04\x95\xd6\x6a\x6b\xa8\x1f\x20\x06\x0a\xc8\x2c\xe4\xed\x99\x6a\xac\x24\x87\xe0\xee\x3c\xc9\xee\x51\x72\x83\x63\xf9\x9e\x6b\x44\xb2\x2a\x06\xfc\x87\x28\x8a\xb7\x87\x21\x50\x13\xcb\xcc\xb2\x6e\xd0\x62\xf9\xb6\x9d\x21\xc4\xc0\x1f\xac\xbb\x28\x20\xd9\xf3\xa2\x08\xf1\x5b\x3b\x7a\x32\xb8\xf4\x99\x43\xb3\xe9\x2b\x91\x3f\xb0\x27\xd5\xb0\x34\xf4\x8a\xae\xc0\xbe\x7a\xf7\xf6\x27\x95\x83\x0f\x9e\x0c\xd8\xef\xac\xd5\xe2\x72\x67\x21\x41\x7c\x67\x95\xc3\x57\x80\x05\x44\x90\x5a\x2e\x51\x4c\x97\x5c\x02\xe2\x9d\x43\xd2\x88\x29\x4e\xad\xb9\xf9\x2e\xbf\xe6\x32\x83\xfc\x67\x27\x37\x93\xe0\xe1\x30\x2c\x5a\xab\x9b\x6a\x2a\xc1\x04\xe8\x52\x65\x3b\xe3\xe2\x96\x15\xd8\x37\x52\x58\xc1\x0b\xcf\xe3\xf1\x01\xfb\x80\x02\xd2\xf0\xd4\x52\xf1\x3f\x5f\x44\x6f\x34\x5f\x94\x25\xb9\xda\x81\xbe\xfb\xb3\xb2\x7f\x85\x3b\x67\x7f\x1d\x6b\x33\x37\xc2\x66\xeb\x04\x9c\xac\x5e\xaa\xdc\x5d\x3a\xdc\xc0\xe0\x9b\x49\xda\xc8\xc2\xe7\x21\x1d\x79\x54\xf4\xcd\x2e\x35\xf0\xcf\x33\xbf\xe4\xeb\x3f\x85\x25\x6b\x91\x43\xc3\x4b\x1b\x62\xfa\x75\x80\x30\xbb\xcb\x8d\xb0\xff\xe9\xa8\x4a\x70\x8b\xbe\x1f\x1c\xd2\xe3\xb8\xab\x47\x6c\xf7\xf7\x3d\x5b\x95\x21\x61\x7a\x1e\xa3\x15\xd5\xa2\xde\xe3\xf5\x66\x6b\xef\xea\x93\xe9\x6e\x41\x4e\x29\x48\x9f\x40\x4e\xb1\x5b\x51\x79\x82\xdd\xae\x2e\x94\x9d\xe4\xef\xff\x3d\x6f\x07\xc4\x3e\x91\xc5\x16\x96\xb6\x82\xb7\xfc\x8c\x92\xc1\x7b\xbc\x87\xab\x1d\x18\x0b\xf1\x1a\x5e\xd5\xc6\x86\x83\xad\xbc\x87\xd5\xeb\xdb\x6d\x8f\x1b\x74\x29\x5e\x98\x4c\x4e\xf2\xe9\x9d\x19\xb5\x5a\x6c\x3a\xd2\x10\x8e\xe3\x2e\x64\xb6\x86\xec\x33\xe4\x17\x48\xac\x50\x8a\x56\x28\x6c\x1e\x48\x39\xf6\x2a\x19\x6d\x52\xcb\xd6\xee\xde\x42\x7d\x4c\x05\xd1\x8f\x36\x59\x65\x88\x69\x18\xcb\x68\x9d\x24\xba\x63\x4b\x80\xcd\x17\x98\xec\xaf\xd2\xa7\x31\x11\x5e\x10\x1e\xb4\xe4\x0e\x7c\xe7\xa1\xa1\x59\xd6\x1e\x7e\x60\x75\x0c\x80\x9a\xb7\x0e\x22\xd2\xa7\x89\x31\x64\x43\xf1\xdd\xa3\x2c\x89\x39\x16\x66\x15\x19\x34\x21\xe1\x11\xef\x44\xb3\x87\xb6\x23\x9c\x3d\x24\x09\x22\xd9\x13\x38\x9e\xc5\x3b\xcf\x25\x5f\x44\x57\x1c\xb0\xc8\x01\x63\x89\x75\xff\x01\x15\x98\x5a\xf5\xa3\xba\x01\xfd\x92\x1b\x48\x30\xbe\xbf\x47\x56\xef\x00\x31\x66\xef\xef\xd1\xd4\xfd\x4b\x78\x8d\xcb\x93\x43\x64\xfd\xbb\xbd\x7f\x49\x8e\x3c\xe0\xb1\x82\x87\xec\xfd\xa9\x07\x7d\x7f\x7f\x00\xff\xb4\x13\x8e\x6e\xf7\x91\xe3\x3c\x42\x1e\x14\xfd\x18\x6b\x49\x0e\x3c\x53\x1f\x5b\xec\x19\x6c\x0d\x87\x07\xf0\x4f\x63\xab\x24\x6d\x87\xf4\x50\x54\xc0\xf3\xeb\xae\xce\xd8\xd6\xe4\x25\x97\x5d\x55\x39\xa9\xa7\x0f\xaa\xe1\x53\x94\xd0\x05\x94\x68\x0d\x62\xb5\xb6\x88\xf8\x60\xc4\x05\xae\x6e\x70\xcb\xf3\x5c\xc8\x15\x22\x68\x3a\xd9\xde\x0e\x26\x7e\xdc\x12\xb4\xe1\xb7\xe3\x7a\x41\x3d\xaa\xb6\x3c\x13\xf6\x2e\x0c\x95\xa4\x7d\x21\xfc\x6e\x62\x78\xc0\x60\x0f\xf8\x98\x1c\x33\xd1\x4f\xff\x74\x32\xd9\xde\x1e\xf3\x30\x45\x98\x98\x26\x74\x3a\x0e\x89\x5b\x7c\x04\xb7\x5b\x05\x4c\x55\x0e\x69\xd9\x7c\x11\xde\xf7\x5a\x40\x41\x7d\x7b\x13\xf4\xf8\x9e\xe7\x93\xf3\x1e\xac\xbd\x6b\x6c\x78\xa6\xe8\x8b\xcb\x8b\x2a\x20\x6f\x45\xe0\x6e\x8b\x12\xd7\xcf\x05\xba\x4d\xbe\xcf\xc7\x09\x67\x08\xd5\x15\xb6\xe1\x30\xe1\xac\x37\xe6\xcf\xc5\x35\x22\xfb\xcc\x05\xe6\x21\x1e\xf7\xab\x51\x49\x9e\x01\x3d\x2e\x60\x69\x4f\x2d\xe1\x88\xec\xd7\x1a\x96\x29\x8a\x8a\x9b\x7f\x0a\xea\xbd\xb6\x9b\x02\x91\x16\xae\x42\xc8\xcf\xe3\x95\xe6\x77\xa8\x24\xe8\x75\x04\x1e\x78\x3d\x47\x18\x3f\x8b\x20\xed\x55\xe2\xa9\x4c\x5c\xf3\x02\x95\x44\x24\x9a\xfa\x27\x11\x4c\xd0\xc6\x0c\xac\xfb\x44\x98\xa0\xc1\x39\x7a\x36\x9e\xf0\xd8\x12\x10\x85\x4c\xf7\xb7\x60\xd2\xe1\xe5\x82\xa0\xc1\x32\x0a\xe1\x61\x31\x88\x3c\x45\x42\x6e\x77\x8f\x70\x1e\xc0\xf8\x29\xa0\x80\x21\x80\x5d\xa1\xf8\x24\x61\xe1\xd6\x22\xe2\xf3\xe2\xb5\x2a\x9c\x01\xc5\xc4\x6d\x70\x79\xe7\x22\x28\xb8\xdd\xba\x6c\x73\xe9\x97\xb4\xd3\xa0\xd4\x67\x41\x44\xc9\xbf\xc2\xdd\x2b\x17\xa1\x7a\x45\x3d\xc8\x3d\x88\x92\x21\x26\xec\x4c\xfa\xa1\xf2\xa9\x07\x7f\xb9\xb3\x56\xc9\x31\xcf\xf3\xb1\x92\xa7\x78\x0b\x40\x91\xb9\x5c\xe5\xdc\x3a\xd2\x5e\x16\x22\xfb\x7c\x14\xb9\x96\x4f\x92\xf6\xe5\xe3\xb2\xe6\xf9\x75\x94\x8d\xfb\x3a\x01\x6e\xb6\x5c\x76\x19\x52\x99\x15\x99\x92\x83\xf8\xef\x38\x5b\xc3\xb5\x56\x72\xbc\xdb\x0e\x9c\x47\x1e\x7b\xb4\x1d\xe2\xdb\x8e\xfa\xc9\x72\x5b\x0a\x28\xf2\x53\x54\x15\xfc\x12\x0a\x67\xc0\x76\x53\xfc\xa0\xb4\x83\x76\x8a\x58\x12\xe4\x34\x73\xf0\x37\x6e\xd7\xe8\x59\x1b\x8d\x1f\xd4\xcf\x4a\xf5\xda\x3a\xe7\x24\x18\x76\xed\xaa\x9f\x6e\x2b\x5d\x04\x38\xd0\xb2\x83\xc4\xaf\xab\x65\x9d\x7c\xeb\xb1\xb3\xfe\xcd\xf2\x6a\x5f\xd6\x2d\xb7\x36\xf8\x3f\x15\x5f\x87\x88\x07\xa4\xd8\x85\x3b\x10\x66\x7f\xc2\xd9\x95\x69\x5f\x9e\xf7\x87\x89\x56\xac\xa4\xd2\x30\x76\x01\xa7\x93\xec\x1b\xff\x73\xe0\xe2\xea\x3f\x42\xa6\xde\xda\x5b\x3b\x46\xbf\xe8\x83\xdb\x4b\x75\x1b\x25\x28\x02\x35\xbf\x33\xcb\x2d\xf8\xcd\xae\xb0\x22\x44\x01\x9f\xe2\x74\x2d\x90\x50\x06\x2b\x09\xfa\xe0\xe7\x07\x2e\xda\xf8\x3d\x45\x11\xb6\x8d\xb2\x88\x35\xb7\x36\x06\xa5\x37\xe3\x4c\x49\xab\x55\x31\x68\xd1\x89\x88\xff\xb1\x0d\x3d\x45\x46\xfc\x17\xa4\xf5\xeb\xfb\xf4\xdf\x08\xe0\x20\xba\x8a\x7a\xfb\xd8\x2d\xd7\xf6\xf9\x5c\x46\xc1\xfb\xaf\xae\x27\x6f\x05\xef\x27\x18\x82\x0d\x22\xfe\x85\x0c\xd5\xe1\xad\xbf\xa6\xc3\x39\x0f\xdc\x59\x92\x41\xa8\xe4\xba\x6b\x6e\xcb\xed\x9a\x0c\x8c\xdd\x2d\x97\x83\x42\x7c\x86\x81\x5d\x73\x4b\x5d\x68\xc2\xfd\x5b\x67\xde\xd3\xc2\xe4\x03\x47\xa0\x3f\x0a\x09\x3f\xed\x36\x97\xa0\x89\x66\x40\xbf\x87\xa5\xd2\x55\x3a\x3f\x03\xfa\xdd\xd2\x82\xae\x7e\xd6\xd9\x7e\x84\xea\x09\x17\x09\xaf\x03\xc6\x7d\x40\x9b\x9a\xb1\x1e\x71\xf2\x52\x49\x0b\xd2\xa6\x10\x0a\x5b\xe9\xd9\xb4\x0c\x95\xf4\x03\xe0\x06\xd0\x93\x56\x41\x4f\x4a\x4c\x2a\x6a\xfa\xb6\xd5\xc7\xdb\x8e\xf4\x68\x7a\x7a\xdb\x92\xac\x6b\xa1\x0c\x20\xb1\x4d\x2b\x01\x34\x4d\x10\xce\x51\x45\x0c\xbe\x5b\x50\x48\x09\xfa\x2f\x1f\xdf\xfe\x58\xce\xd6\x14\x58\xae\x32\xdf\x1f\xd2\xa7\x0d\x21\xfa\x5d\x3e\xfa\xc8\xec\x3d\xd2\xcf\x02\x6e\x9c\x92\xf4\x56\x97\x32\x5a\x0d\xb7\x5e\x68\x7d\x90\xff\x58\xce\x50\x41\x5e\x57\xf9\x4e\xb3\xb4\x4a\x72\xaa\x11\xe7\x6b\xab\xe7\x88\x30\xb6\x89\x55\x47\xde\x1e\xf4\xa1\x67\x55\x8f\x94\x4c\xd3\x4d\xe7\x81\x5b\x37\x7d\x5f\x21\x42\x94\x7c\x03\xa7\xba\x59\xbc\xfa\xb9\xf5\x39\x26\xda\xa9\x23\x67\x93\x50\xcc\x08\xda\xc6\x5f\xc8\x19\x1f\x8d\x02\x42\xe1\x0b\xf0\x44\x31\x7b\x61\xe7\x75\xc3\xca\x74\x41\xe3\x69\x8f\xa7\x33\x31\x9f\x54\x3f\x5f\x30\x75\x21\xfa\xb3\x19\x88\x20\xdf\xaa\x0b\x5b\x75\x26\xa5\x76\x38\x8c\xc5\xd0\xe1\x30\x69\xe3\x1f\x27\x6a\x5c\xad\xc0\x8b\x00\xc2\xce\x26\x4e\x85\xd2\xc4\x0e\x87\x3a\xa0\xb0\x2e\xa3\x14\xb8\xac\x2a\xad\xed\x09\x5d\x26\xba\x2e\x59\x1d\xca\x0b\xd7\xc5\xaf\x13\x13\x47\xed\x99\x67\x91\xd0\xaa\x56\xb4\x4e\x80\x46\x15\xc5\x75\xd1\xd9\x49\x36\x0e\x7a\xd1\xce\x66\xce\x3c\xea\x22\x11\x9b\x54\x1d\xb6\xa1\x69\xcd\xf8\x02\xd4\x19\xc7\xfb\x48\xf6\x3a\x31\x38\x3e\x9f\x96\xcd\xd0\x61\xd3\x50\x85\x6e\xcc\x9d\xe4\xab\xf6\x22\x4c\xe2\x0a\xf4\x02\x36\xdf\xa2\xd1\x3a\x71\xd3\x78\x84\x5e\x9c\xbb\xdf\x2e\xbd\x36\xfd\x3d\x7e\xb5\xfc\x74\x7c\x91\x43\xb8\x4c\x34\x31\xf5\x33\xe3\xd3\x5c\x6f\x21\x24\x3c\x9a\xf2\x65\xb4\x2e\x7a\x25\x96\x48\xa2\xe3\x21\x3b\xa7\xdf\xc6\x25\x77\x1b\x44\x2c\xd7\x2b\xb0\x29\xfa\x74\x59\x70\xf9\xd9\xa7\x3f\x51\x25\x9e\x1a\x31\x17\x2e\x6d\x22\x39\x97\x2b\xd0\x6a\x67\x8a\xbb\x0f\x60\xdf\x54\xce\x24\xdd\x7f\xfa\xe4\xae\xca\x94\x97\x31\x71\x7e\x16\xbf\xde\x50\x51\xe9\x5c\xfd\x73\x97\xba\x48\xf3\xc9\xb9\xa8\x15\xf6\x34\xf4\x09\xc1\xb6\xbc\x80\xbf\xce\x00\x97\xad\xb1\x67\xc4\x22\x05\x8c\x2f\x55\xee\xf2\x6f\x11\x3a\xb0\x44\xfb\x11\x21\x2a\xdf\x0b\x3e\x1c\x26\xa2\xff\x35\xa1\xce\xaf\xda\x92\x53\x5c\x1f\xdc\xcd\x8d\x0f\x2e\x09\x72\x9f\x03\x5e\x14\x03\x44\x38\x41\x83\xe8\x11\x07\x42\x0e\x10\xc9\x68\xab\x1e\x9c\xd8\xe7\xc4\x55\x21\xe0\x96\x44\xf8\xbb\x79\xfb\x84\xb2\xa9\xd9\x15\x36\xdc\x11\xcf\x28\x44\xb6\xda\x7f\x1e\x29\x43\xc6\x6a\x79\xa8\xc9\xf9\x1c\x37\x35\xf4\x2a\x56\x21\x1f\x2f\xe8\xb5\x97\x97\x7d\x57\x92\x58\x26\xad\x47\x20\x5f\x90\xc7\x8f\xeb\xa9\x8b\xe5\xa4\x1a\x07\xec\x9d\x78\xce\x63\x38\x19\x0b\x5a\xad\xe4\xaa\x0a\x9f\x5e\xbf\x7f\xff\xee\x7d\x8a\x3a\xcf\x5d\x81\x00\xe7\xf2\x1c\x4c\xf5\xf2\x5b\xbd\x9d\x79\x5e\x86\xc3\x09\xeb\x1b\xaf\xbc\xdc\x73\xa9\x2f\x09\xfa\xd7\x3f\xff\xfb\x27\x65\xd7\x42\xae\x06\x4b\xa5\x07\x77\x6a\x47\x06\xaf\xf8\xcd\x8a\xfe\xeb\x9f\xff\xf3\xd0\xe3\x4b\xe0\x63\x32\x88\x14\x20\x5c\x53\xde\x4b\x61\x55\xa0\xf5\x63\xfe\x2c\x7f\x03\xb1\xfd\xf9\xc6\x66\x85\xc8\xde\xe8\x2c\x45\x62\xc3\x57\x60\xce\x2f\x77\xe6\x8e\xae\xc4\x12\x3d\x98\xd2\x07\x06\x82\x26\x0a\xb9\xa2\xd4\x05\xa6\xb3\xa3\xa7\xcd\x18\x83\x58\x96\x1c\x33\x75\x7f\x3f\x5f\x1c\xde\x9d\x5e\x8b\x9f\xe5\xed\x5c\xdc\xf3\xfb\x78\xbb\x63\x07\xbf\x81\x15\x1f\x1f\xbe\x8b\x84\x0d\x9f\x7c\x49\x38\x97\x88\xca\x43\xcf\x12\xba\xaf\x4e\xb8\x97\x25\xd9\x47\xaf\x94\xd6\xed\x5d\xbe\x83\xdc\x2d\xbb\xf6\x05\xae\x34\x60\x20\x41\xbe\x29\x90\x76\x0c\x97\xda\xa3\x26\xb2\x27\xde\x22\x21\xd3\x8a\xfa\x62\xbd\x27\xdb\x3c\xea\xc9\xbe\xdb\x6e\x9f\xe6\xc2\x94\x7f\xa3\x0f\x3d\x83\x3e\xfd\xba\x98\x2f\xd2\xea\x65\x3b\xf6\xfa\x12\x14\x2b\x16\x8d\x23\xbb\x4a\x81\x5e\x11\x91\x02\x15\xb1\x94\x58\x55\xaa\x3a\x85\xc2\x6e\xb9\x2a\x96\x01\x6d\x89\xab\x3e\x9d\x47\x1b\x39\x7c\x30\x06\xed\x2a\x69\xe7\xed\x1d\xd7\xe5\x50\xe8\x96\x43\x4d\xc7\xe9\xc6\x7e\x07\x7f\x9d\x65\xad\x4e\xb6\xc3\xbd\x7c\x54\x1d\xeb\x11\xa6\xea\x49\x69\x61\x0a\x1d\x9a\xbc\xe1\x83\xd4\x75\xac\xea\xe2\xe8\x71\xf6\xba\xd2\x88\x23\xcc\x75\x59\x3a\xc1\xb1\x7b\xca\x7b\xf6\x86\xce\xba\xe5\xea\x48\x2a\xe1\x0f\xa8\xfe\xd0\xcd\x43\xd3\x56\xcf\x79\x3c\x65\xdf\x10\x84\x78\xb4\x36\xe0\xbc\x11\x32\x57\x37\x94\xe7\xf9\xeb\x6b\x90\xf6\xc7\xd8\xe0\x9f\xa0\xad\xda\xfa\x23\x6d\xff\xd9\x05\xb4\xfb\x93\xfb\x4e\xa4\xea\xa4\x71\xb4\x36\x3d\xc9\xee\x1a\x3d\x6a\x08\x38\xee\x32\xd8\x6d\x73\x6e\xe1\x2f\xc2\x58\xa5\xef\x12\x68\xe3\xa8\xeb\x51\x1d\x41\xb5\x5a\x09\x3a\x6b\x7b\xda\xd3\xea\x56\xf5\x2d\xb7\x6b\xe7\x68\x46\xe8\xe2\x8a\xa1\x11\xc8\xa3\x2e\x77\xa0\x57\x78\x84\x86\xe2\xd4\xac\x70\xb3\xde\xaa\x4e\x41\xf8\x49\x07\xd5\x36\xb3\x53\xc0\x6d\x18\xb7\x26\xb6\x0f\x8f\xa2\x2d\xcd\xd6\x81\x27\x9f\x53\xc4\xd3\x0c\x7f\x29\x53\x12\x84\xfc\xdf\x3b\x3d\xaf\x95\xac\xb9\x93\xfa\xa6\x77\x64\xef\x5f\x6d\x4c\xd3\xfb\x15\x7b\x17\xe2\x8d\x5a\xb5\x08\x84\x9f\xa2\xdd\xb1\x10\x86\x7a\xfc\x4d\x3b\xf6\xe8\x71\x3c\x07\x95\xbb\x1e\x55\x89\xa1\xe9\xc1\xf0\x89\x9b\x65\x1b\x59\xd0\xad\xb0\xb1\xcb\x83\xff\xbb\x14\x3c\x0b\x8b\x83\xf4\x9a\x13\xe9\x43\xb9\xf1\x02\xc3\xa4\x7e\xf0\x58\x81\x8d\x73\xdf\xdf\xbd\xc9\x13\xa4\x95\xb2\xc8\x5b\xa8\xf3\x0d\x09\x2e\x17\x78\xf6\xbf\x01\x00\x00\xff\xff\xe8\xf7\x8a\x0a\x05\x3a\x00\x00" +var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x7b\x7b\x8f\x23\x37\x8e\xf8\x57\x71\x0b\x81\x21\xc5\x72\xb5\x9d\xec\xef\x77\x7b\xe5\x51\xfa\x92\x99\xc9\xee\xdc\x66\x32\x7b\x33\xb3\xd9\x3f\x1c\x63\xa0\xae\xa2\x6d\x65\xca\x92\x5b\x52\xf5\xe3\xdc\x05\xec\x07\xb9\xfb\x72\xfb\x49\x0e\x7a\xd4\xcb\x8f\x7e\x04\xc9\xe1\x80\x46\xb7\x2d\x51\x14\x49\x91\x14\x29\xb2\xcf\x96\xa5\xcc\xac\x50\x12\x03\xd9\x5d\x73\x3d\xb0\x6c\x57\xcd\xea\xc1\x81\xc1\x9a\xec\xc4\x12\xdb\xb9\x5e\x10\x0d\xb6\xd4\x72\xe0\x3e\x27\x70\xbb\x55\xda\x9a\x99\x5b\xc2\x99\x1b\x62\x3b\x91\x6a\x5a\xa4\x67\x53\x1a\x27\xd3\x5d\x55\xcd\xe2\x22\x70\x8b\x32\x5e\x14\x98\xd7\x6b\x29\xa7\xed\x67\x43\x28\x4f\x0a\x76\x36\x69\xc7\x2a\x93\x6c\x18\x50\x93\x64\xcc\x52\x93\xe4\xac\x25\x95\x5a\xaa\xc9\xce\x24\xca\x7d\x24\xf7\xf7\xef\x2e\x7f\x81\xcc\x26\x39\x2c\x85\x84\xbf\x6a\xb5\x05\x6d\xef\x3c\xd8\x0e\x64\xb9\x01\xcd\x2f\x0b\x48\xcf\x26\x74\x05\x36\xd5\x15\xa9\xa8\x49\x34\xeb\xb2\x8e\x4a\x19\x56\xe7\xe8\x8c\xd9\xbb\x2d\xa8\xe5\xe0\xc3\xdd\xe6\x52\x15\xc3\x61\xf8\x9b\x58\xf5\xc1\x6a\x21\x57\x1f\xf9\x6a\x38\x3c\xb5\xe3\x21\x2c\xdd\x5d\xf3\xa2\x84\x14\xbd\x55\x79\x59\x00\xaa\x08\x3d\xb5\x18\x7d\xfa\x04\x26\x82\xd5\xcb\xce\x26\x81\x5c\xdb\x63\xdf\x1f\xca\x74\x68\x87\x43\x0c\xcc\x60\x20\x84\xfe\x71\x68\xeb\x13\x82\x99\x58\xe2\x3f\xb8\x59\xa4\xfc\x56\x88\xd5\x3c\xc1\x70\xe8\x7e\x92\x76\xa7\x76\x91\x3b\x4b\xcd\x22\x71\x99\x06\x6e\x01\xcb\xb2\x28\x88\x43\x67\x12\x8d\xf5\x29\xd2\x35\x45\x39\x2c\x79\x59\x58\xb4\x2f\xf1\xc0\x05\x54\x84\x7e\xe5\x09\x32\x5e\x2e\xad\x90\x81\x2c\x95\xc6\x5e\x8d\x06\x42\x0e\x80\x98\x24\xc7\x9a\x72\xda\xb0\x6b\xc9\xae\x51\x22\xbb\xa8\x92\x4b\x21\x73\x4f\x17\xe5\x84\xd4\xfa\xa5\x9d\x8c\x24\x3b\xd4\xe6\x3d\x6e\x2f\x1a\x88\x16\x6b\x12\x69\xaf\xd2\x23\x93\x8d\x06\x3b\xba\x2c\x45\x1c\x51\x4b\xa8\x75\xdb\xa9\xbd\x23\x89\x80\x51\x44\x5b\xad\xac\x72\x4c\x26\x6b\x6e\xde\xdd\xc8\x5a\x58\xc1\x0a\xdc\x02\x87\x63\xcb\x10\xa2\x06\x9b\xc4\xb0\x29\xa9\xf0\xbc\xa7\xe3\xc6\xe9\xa5\x81\x81\x93\x59\x66\x51\x6b\x96\x3a\x6c\x58\x4b\xce\x38\xc9\x59\x02\x0c\x12\x0d\xdb\x82\x67\x80\xd1\x0e\x8d\xcc\x08\x55\x88\xda\xb9\x59\x34\x62\x82\xaa\xc1\xc1\xc3\x16\x94\x07\x49\x49\x06\x49\xa9\x8b\x06\xc1\xf9\xcf\xc9\x4a\xd8\x2f\xce\x29\x42\x84\x0a\x06\x73\x54\xea\x62\xbc\xe5\xd6\x82\x96\x68\x41\x95\x23\x3c\x73\xbf\x0a\xf7\xab\x74\xbf\x72\x66\x13\x53\x5e\x86\x23\xc6\x36\x29\xb8\xb1\x6f\x64\x0e\xb7\xef\x96\x18\x9d\x23\x32\x9a\x12\xba\x66\xe6\x42\x63\x91\x70\x99\xad\x95\xa6\xbb\x42\x48\x48\x0d\x5d\x8a\x02\x24\xdf\x40\x9a\x57\x24\x45\x68\x76\xfe\x73\x72\x23\x3e\x8b\x2f\xce\x13\xb8\x85\x0c\x4b\x32\x1c\x62\xc9\x64\x97\x3c\x37\x7f\x4e\xd1\xb9\xfb\x8b\x08\xb5\xcc\x76\x67\x37\x79\xa4\x7d\xcd\x10\x22\x5e\xb7\x97\xec\x1c\xaf\x84\xbd\x5f\xaf\xc8\xbf\xe1\xe4\xcb\x0b\x82\xd3\xf9\x64\xfc\xaf\x8b\x11\xb9\xc0\xe9\xfd\xcf\xe7\x04\x27\x5f\x12\x1c\xff\x36\x1b\xd7\xa2\x5b\x0e\x87\x58\x31\x74\x7e\x8e\x46\xcb\xf9\x57\x0b\x9a\xb1\xe5\xfc\xff\x2d\x68\xc1\x96\xf3\x7f\x59\xd0\xe5\xfc\xeb\xc5\x70\x88\x4b\xe6\x3e\x10\x2a\x99\x1a\x95\x23\x74\x8e\x46\x99\xff\x5d\x10\xaa\xb1\x98\xa3\x4b\x6e\x60\x5c\xea\x02\x2d\xe8\xae\xd4\x45\x2a\xe9\x5a\x19\xeb\x19\x57\xd4\x79\xbd\xb4\xa4\x5b\xad\x9c\x02\xa5\x19\xd5\xb0\x55\x69\x41\xb7\xdc\xae\x53\x4b\x35\x5c\xa7\x9c\x06\xb9\xa5\xeb\x8a\x54\xad\x46\xe2\x43\xc5\xe5\x15\x21\x15\x7d\x50\x9d\x9c\x49\x5b\x12\xcd\xde\xe0\x09\xa1\x9c\x75\x10\x55\x33\xde\x2a\x31\xdb\x15\xc2\x58\x90\xa0\x4d\x3a\x5f\x50\xcb\xb7\x69\xd7\xd6\xec\x5a\x98\xa4\x81\x60\xfd\xaf\x89\x29\x44\x06\x0e\xff\xde\xf8\xb6\x34\x6b\x0c\xa4\xa2\xa5\xdc\x47\x18\x8c\x77\x0f\x5e\x44\x5d\x02\x32\x1b\x4f\xcf\x98\xf3\x7e\xbf\x6e\x63\xb3\xf5\x13\x96\x4e\x9d\x90\x34\x17\x06\xba\xb6\xef\x36\x07\xf6\xad\xd6\xfc\xae\x63\xc6\x1e\x59\xbc\xc3\xf4\xaa\xdc\x80\xb4\x86\x4e\xc8\x6c\x0f\xf7\x52\xe9\xd7\x3c\x5b\x63\xdc\x75\x60\x36\xe1\xdb\x6d\x71\xe7\xc9\xa5\x40\xdc\xd9\x54\xb3\x60\x76\xfb\x47\x04\x89\xb1\x77\x05\x24\x06\x6c\xe3\x5f\x9d\x9d\x22\x44\x2a\x2a\x7a\x1e\xae\xb6\x7f\xcb\x10\x1a\xe1\xc9\x3d\x10\x6a\xd8\x7c\x31\xb3\x49\x01\x72\x65\xd7\xdf\x4c\x66\xc4\x24\xa5\x34\x6b\xb1\xb4\x78\xcf\x36\x3d\xc4\xf8\x6b\x5a\x7f\x24\xc1\x84\x5a\x98\x09\x6d\xa1\x48\xeb\x05\x7f\x51\x42\x62\x44\x1d\x35\xaa\x47\x4d\xed\x62\x18\xdc\xdf\xef\xae\x52\x84\xa8\x48\x91\x54\x5b\x40\xde\xba\x8d\x1b\x81\xdb\xac\x28\x73\xf8\xbe\xfe\xee\x34\xdc\xa4\xe8\x4b\xd4\x57\xd5\x06\x99\x65\xf6\xfe\x7e\x57\x51\xb8\xc0\xd0\x21\x6d\x4a\xfc\x11\x5a\x8c\x86\x88\x1c\x91\x78\x54\x20\xc3\xa0\x86\x63\x88\xcc\xbe\x62\xcc\x44\x8e\x86\x43\x6c\xe6\xd3\x05\x73\xbf\x3a\x5e\x63\x74\xbe\xa2\x68\xe0\x9c\xc9\x3c\x87\x4c\xe5\xf0\xb7\xf7\x6f\x5e\xaa\xcd\x56\x49\x90\x16\x9b\xf9\x64\x41\x16\xec\xe8\xcc\x74\x41\xdc\xa9\x52\x4b\x52\x5b\xe1\x42\x65\xdc\x11\x92\x18\xe0\x3a\x5b\xbb\x13\xa7\x19\xdb\xdd\x88\xa2\xf8\xe0\x47\x52\x09\x37\x03\x4e\x73\x91\xf7\xbe\x3b\x80\x1f\x14\xcf\xdf\x2a\x0d\x2d\xc8\xe1\xc8\x6b\xad\x95\xee\x03\xbc\xf7\x92\x0c\x43\x3f\xf1\x42\xc4\x81\x13\x36\xe5\xe5\x4e\x8d\x8b\xf5\x9a\x5b\x70\x29\x0a\x0b\xfa\x50\x8a\x9a\xd9\x39\x2c\x86\xc3\x33\x33\x87\x45\xa3\x07\x73\x58\xb8\x68\x4d\x7b\x37\xe3\xf6\x7a\xa9\x4a\x69\x8f\xdc\xa0\xf1\x3a\xfc\x0c\x77\x06\xb7\x7b\x93\x78\x10\x15\x75\xc4\x1f\x1a\x9f\x37\x14\xcb\xf6\xc6\x2d\x53\x98\xcc\x20\xe9\xf2\x9c\x78\xf3\xc5\x40\x21\x62\xa6\x08\x9d\x31\x66\x93\x2b\x77\xf3\x07\xf1\x62\x4b\x2a\x17\xc4\x1c\x8b\xf2\xde\xaa\x1c\x8a\x57\xdc\xf2\x5a\x67\xfe\xfd\xc3\xbb\x1f\x93\x2d\xd7\x06\x70\x3b\x47\xb5\x8f\x8b\xbb\xa1\x8a\x21\x7a\xce\x9d\x0a\xf1\x46\x2a\x2d\x7f\x4c\xd3\x6b\x25\xf2\x81\xc5\xa4\xfa\x22\xe1\xbf\xf0\x5b\xec\x1d\x3e\xe2\x5b\x71\x7e\x3d\x3d\xf7\x40\x88\xe6\xdc\xf2\x8f\x77\x5b\x48\xd1\x2f\x46\x49\x44\x4d\x99\x65\x60\x3a\xc7\xe6\x1d\x42\xc0\x68\xa8\x43\x46\xc1\x9f\xfd\xbe\xd7\xc8\x94\x34\xaa\x80\xc4\xcf\x62\x43\x2a\x17\x35\x46\xdd\x3a\x70\xd4\xad\x1e\x46\xe1\x45\xb7\x34\x6b\x35\x84\x1a\xf6\x8a\x5b\x48\xa4\xba\xc1\x3e\xfe\x43\x88\x31\x86\x81\x7d\x91\xc0\xad\x05\x99\xe3\x9d\xb1\xdc\x9a\x14\x2d\x95\x59\xab\x8e\x25\x53\x2d\x57\x29\x4a\xbf\x9a\xa0\x8a\x02\x21\x81\x78\x17\xa7\x46\x36\xd0\x97\xce\xbe\x9c\x80\xf9\xc6\x30\xa0\x0e\x31\x24\x57\x4d\x76\x91\x68\x30\x65\x61\x9d\x23\xa3\xcd\x97\xef\xee\xdc\x59\xb3\x5d\x15\xa5\x9a\x34\x96\x53\x73\x40\x6d\xf2\x3e\xc0\x92\xd9\x31\x81\x07\x4b\x0c\x12\x4f\x81\x5a\x2f\xf4\x3f\xbd\xfe\xf8\x84\x33\x00\x1f\x6d\x43\xe2\xad\x8e\xf8\xbd\xfd\xc7\x66\xeb\x7a\x6a\x06\x85\x81\x68\x33\x50\x93\x43\x39\x83\xe4\x83\x93\x15\x95\xce\x39\xd7\x3a\x24\x9c\x0e\x69\x22\x96\x58\xcf\xc5\x22\x28\x9f\x62\xee\xf3\x4c\x86\x9b\x71\xe7\x78\x4e\x05\x7d\x0f\xd7\xa9\x4a\xde\xc3\xb5\x30\x42\x49\xfa\x96\xdb\x6c\x0d\x26\x55\x49\xfc\x44\xbd\x3b\xfd\xbb\xb0\x6b\x3f\x90\xaa\xa4\x3f\x50\x91\x4a\x26\x46\x69\xdb\xb5\xed\xae\x93\xad\x11\xd5\xee\x1e\xf6\x06\xee\xef\x1d\x37\x5b\x95\x38\xbf\x56\x80\xf3\x7b\x5c\x03\xb6\x7e\xd0\xb9\x3d\xaf\x38\x99\xb3\x10\x79\xdc\x1b\x67\xf3\x80\x61\xc1\xc0\x7b\xc9\xe6\x90\xe5\xc1\x19\x67\xd4\x26\x5e\xb5\xd8\xee\x03\xe8\x6b\xd0\x29\x4f\x5e\x95\xda\xfb\x53\xfa\x51\x59\x5e\xa4\xad\x66\x8e\x23\xf3\x29\x0f\x3c\xbf\xdb\x82\x84\xbc\xa2\xc7\x15\x24\x6e\x54\x6f\x40\xaa\x23\xd6\x64\x5c\x66\x79\x78\xc6\xce\x24\xd0\xc7\x35\x0c\x8c\xa7\x69\x70\xa9\xd5\x67\x18\xe4\xea\x46\xa2\x60\x6b\x8d\x93\x3e\xee\x71\xa9\xa9\x1d\x6f\x87\xd7\x39\x2c\xa8\x66\x66\x4f\xda\x94\x33\xb3\x77\x82\x63\x4d\x25\x7b\xcb\xed\x3a\xd9\x08\x89\xbf\x82\xaf\x29\x77\x41\x39\x67\x4c\x5e\x20\x94\x22\x34\x92\x33\x9b\x74\x6f\x8f\x9e\x61\x53\x97\x4f\xc9\x70\x4a\xaa\xb5\x60\x4f\x50\xb0\x43\xba\x73\x56\xab\x47\x28\x45\x23\x11\x6d\x19\xaa\x27\x58\x92\x7a\x96\x25\x85\xc7\x04\x7d\xda\x92\xf4\x81\x25\x71\xa6\x6b\x4b\x72\xd7\x4f\x23\xac\x8e\xd8\x32\x25\x33\x6e\x31\xaf\x07\x48\x38\xfe\x7d\x51\x50\x68\x55\xe0\x37\x3d\xfa\x1f\xf9\x06\xbe\x57\xda\x5b\xeb\x43\xf7\xad\xa3\x5f\x2c\xf1\x99\xed\xa7\xdc\x86\x59\x97\x79\x79\x4d\xd8\xcf\x98\x1c\xbc\x7e\x31\xe9\x2f\x70\xfa\xd1\xc6\x42\x7a\x34\x25\xc7\xb3\x36\x79\x88\x90\xea\xf1\xb4\x89\xe5\xe4\x8b\xc9\x05\x4f\xbb\xb8\xe4\x68\x4a\x35\x19\xa1\xc1\xf9\x00\x8d\x78\x45\xff\xa6\x8b\x8f\x6a\x8f\xaf\x3a\x69\xec\x5d\xef\x58\x27\x9c\xe0\x1e\xab\x11\xae\xaa\x68\xc1\xde\x03\x6f\x9e\x14\x5e\x16\xdc\x18\xbc\xcb\x85\xd9\x16\xfc\xce\xc9\x2e\x45\x6e\x8b\x77\x5b\x87\xdf\x5d\x24\x32\x07\x7d\x24\x90\xe8\x22\x79\x5d\x80\x8b\xbf\x31\x52\x71\x55\x7c\x2d\x09\x2a\xad\xd5\xd6\x24\x7e\x80\x1a\x28\x20\xb3\x90\x77\x67\xea\xb1\x8a\xee\x83\xbb\xf3\xa4\xe5\xa3\xe4\x06\xc7\xf2\x1d\xd7\x88\x66\x75\x0c\xf8\x77\x51\x14\x6f\xf7\x43\xa0\x36\x96\x99\x65\xfd\xa0\xc5\xf2\x6d\x37\x43\x88\x81\x3f\x58\x77\x51\x00\xde\xf1\xa2\x08\xf1\x5b\x37\x7a\x32\xa4\xf2\x99\x43\xbb\xe9\x2b\x91\x3f\xb0\x67\xa2\x61\x69\x92\xab\x64\x05\xf6\xd5\xbb\xb7\x3f\xaa\x1c\x7c\xf0\x64\xc0\x7e\x6b\xad\x16\x97\xa5\x05\x8c\x78\x69\x95\xc3\x57\x80\x05\x44\x91\x5a\x2e\x51\x4c\x97\x5c\x02\xe2\x9d\x03\x6e\xc5\x14\xa7\xd6\xdc\x7c\x9b\x5f\x73\x99\x41\xfe\x93\x93\x9b\xc1\x64\x38\x0c\x8b\xd6\xea\xa6\x9e\xc2\x84\x42\xb2\x54\x59\x69\x5c\xdc\xb2\x02\xfb\x46\x0a\x2b\x78\xe1\x79\x3c\x3c\x60\x1f\x50\x40\x1a\x5e\x76\x6a\xfe\xe7\x8b\xe8\x8d\xe6\x8b\xaa\xa2\x57\x25\xe8\xbb\x3f\x29\xfb\x17\xb8\x73\xf6\xd7\xb3\x36\x73\x23\x6c\xb6\xc6\xe0\x64\xf5\x52\xe5\xee\xd2\xe1\x06\x06\x7f\x98\xa4\xad\x2c\x7c\x1e\xd2\x93\x47\x4d\xdf\xec\x52\x03\xff\x3c\xf3\x4b\xbe\xfe\x63\x58\xb2\x16\x39\xb4\xbc\x74\x21\xa6\x5f\x07\x08\x53\x5e\x6e\x84\xfd\x0f\x47\x15\x26\x1d\xfa\xbe\x77\x48\x0f\xe3\xae\x23\x62\xbb\xbf\x3f\xb2\x55\x15\x12\xa6\xe7\x31\x5a\x53\x2d\x9a\x3d\x5e\x6f\xb6\xf6\xae\x39\x99\xfe\x16\xf4\x94\x82\x1c\x13\xc8\x29\x76\x6b\x2a\x4f\xb0\xdb\xd7\x85\xaa\x97\xfc\xfd\x9f\xe7\x6d\x8f\xd8\x27\xb2\xd8\xc1\xd2\x55\xf0\x8e\x9f\x51\x32\x78\x8f\xf7\x70\x55\x82\xb1\x10\xaf\xe1\x55\x63\x6c\x24\xd8\xca\x7b\x58\xbd\xbe\xdd\x1e\x71\x83\x2e\xc5\x0b\x93\xf8\x24\x9f\xde\x99\x25\x56\x8b\x4d\x4f\x1a\xc2\x71\xdc\x87\xcc\xd6\x90\x7d\x86\xfc\x02\x89\x15\x4a\xd1\x0a\x85\xcd\x03\x29\x87\x5e\x25\x4b\xda\xd4\xb2\xb3\xbb\xb7\x50\x1f\x53\x41\xf4\xa3\x6d\x56\x19\x62\x1a\xc6\xb2\xa4\x49\x12\xdd\xb1\x61\x60\xf3\x05\xa1\xbb\xab\xf4\x69\x4c\x84\x17\x84\x07\x2d\xb9\x07\xdf\x7b\x68\x68\x97\x75\x87\x1f\x58\x1d\x03\xa0\xf6\xad\x83\x8a\xf4\x69\x62\x0c\xd9\x50\x7c\xf7\xa8\x2a\x6a\x0e\x85\x59\x47\x06\x6d\x48\x78\xc0\x3b\xd5\xec\xa1\xed\x28\x67\x0f\x49\x82\x4a\xf6\x04\x8e\x67\xf1\xce\x73\xc9\x17\xd5\x35\x07\x2c\x72\xc0\x18\xb6\xee\x07\x12\x41\x12\xab\x7e\x50\x37\xa0\x5f\x72\x03\x98\x90\xfb\x7b\x64\x75\x09\x88\x31\x7b\x7f\x8f\xa6\xee\x2f\xe5\x0d\x2e\x4f\x0e\x95\xcd\xf7\xee\xfe\x15\x3d\xf0\x80\x87\x0a\x1e\xb2\xf7\xa7\x1e\xf4\xfd\xfd\x1e\xfc\xd3\x4e\x38\xba\xdd\x47\x8e\xf3\x00\x79\x50\xf4\x43\xac\x15\xdd\xf3\x4c\xc7\xd8\x62\xcf\x60\x6b\x38\xdc\x83\x7f\x1a\x5b\x15\xed\x3a\xa4\x87\xa2\x02\x9e\x5f\xf7\x75\xc6\x76\x26\x2f\xb9\xec\xab\xca\x49\x3d\x7d\x50\x0d\x9f\xa2\x84\x2e\xa0\x44\x6b\x10\xab\xb5\x45\xd4\x07\x23\x2e\x70\x75\x83\x5b\x9e\xe7\x42\xae\x10\x45\xd3\xc9\xf6\x76\x30\xf1\xe3\x96\xa2\x0d\xbf\x1d\x37\x0b\x9a\x51\xb5\xe5\x99\xb0\x77\x61\xa8\xa2\xdd\x0b\xe1\x37\x13\xc3\x03\x06\xbb\xc7\xc7\xe4\x90\x89\xe3\xf4\x4f\x27\x93\xed\xed\x21\x0f\x53\x44\xa8\x69\x43\xa7\xc3\x90\xb8\xc3\x47\x70\xbb\x75\xc0\x54\xe7\x90\x96\xcd\x17\xe1\x7d\xaf\x03\x14\xd4\xf7\x68\x82\x1e\xdf\xf3\x7c\x72\x7e\x04\xeb\xd1\x35\x36\x3c\x53\x1c\x8b\xcb\x8b\x3a\x20\xef\x44\xe0\x6e\x8b\x8a\x34\xcf\x05\xba\x4b\xbe\xcf\xc7\x29\x67\x08\x35\x05\xbd\xe1\x10\x73\x76\x34\xe6\xcf\xc5\x35\xa2\xbb\xcc\x05\xe6\x21\x1e\xf7\xab\x51\x45\x9f\x01\x3d\x2e\x60\x69\x4f\x2d\xe1\x88\xee\xd6\x1a\x96\x29\x8a\x8a\x9b\x7f\x0a\xea\xbd\xb6\x9b\x02\xd1\x0e\xae\x42\xc8\xcf\xe3\x95\xe6\x77\xa8\xa2\xe8\x75\x04\x1e\x78\x3d\x47\x84\x3c\x8b\x20\xed\x55\xe2\xa9\x4c\x5c\xf3\x02\x55\x54\x60\x9d\xf8\x27\x11\x42\xd1\xc6\x0c\xac\xfb\x88\x08\x45\x83\x73\xf4\x6c\x3c\xe1\xb1\x25\x20\x0a\x99\xee\xaf\xc1\xa4\xc3\xcb\x05\x45\x83\x65\x14\xc2\xc3\x62\x10\x79\x8a\x84\xdc\x96\x8f\x70\x1e\xc0\xf8\x29\xa0\x80\x21\x80\x5d\xa1\xf8\x24\x61\xe1\xd6\x22\xea\xf3\xe2\xb5\x2a\x9c\x01\xc5\xc4\x6d\x70\x79\xe7\x22\x28\xb8\xdd\xba\x6c\x73\xe9\x97\x74\xd3\xa0\xd4\x67\x41\x54\xc9\xbf\xc0\xdd\x2b\x17\xa1\x7a\x45\xdd\xcb\x3d\xa8\x92\x21\x26\xec\x4d\xfa\xa1\xea\xa9\x07\x7f\x59\x5a\xab\xe4\x98\xe7\xf9\x58\xc9\x53\xbc\x05\xa0\xc8\x5c\xae\x72\x6e\x1d\x69\x2f\x0b\x91\x7d\x3e\x88\x5c\xab\x27\x49\xfb\xf2\x71\x59\xf3\xfc\x3a\xca\xc6\x7d\x3a\x01\x6e\xb6\x5c\xf6\x19\x52\x99\x15\x99\x92\x83\xf8\x77\x9c\xad\xe1\x5a\x2b\x39\x2e\xb7\x03\xe7\x91\xc7\x1e\x6d\x8f\xf8\xae\xa3\x7e\xb2\xdc\x96\x02\x8a\xfc\x14\x55\x05\xbf\x84\xc2\x19\xb0\xdd\x14\xdf\x2b\xed\xa0\x9d\x22\x56\x14\x39\xcd\x1c\xfc\x95\xdb\x35\x7a\xd6\x46\xe3\x07\xf5\xb3\x56\xbd\xae\xce\x39\x09\x86\x5d\xfb\xea\xa7\xbb\x4a\x17\x01\xf6\xb4\x6c\x2f\xf1\xeb\x6b\x59\x2f\xdf\x7a\xec\xac\x7f\xb5\xbc\xba\x97\x75\xc7\xad\x0d\xfe\x57\xc5\xd7\x23\xe2\x01\x29\xf6\xe1\xf6\x84\x79\x3c\xe1\xec\xcb\xf4\x58\x9e\xf7\xbb\x89\x56\xac\xa4\xd2\x30\x76\x01\xa7\x93\xec\x1b\xff\x75\xe0\xe2\xea\xdf\x43\xa6\xde\xda\x3b\x3b\x46\xbf\xe8\x83\xdb\x4b\x75\x1b\x25\x28\x02\x35\xbf\x31\xcb\x1d\xf8\x4d\x59\x58\x11\xa2\x80\x4f\x71\xba\x11\x48\x28\x83\x55\x14\x7d\xf0\xf3\x03\x17\x6d\xfc\x96\xa2\x08\xdb\x46\x59\xc4\x9a\x5b\x17\x83\xd2\x9b\x71\xa6\xa4\xd5\xaa\x18\x74\xe8\x44\xd4\x7f\xd9\x86\x16\x26\x23\xfe\x13\xd2\xe6\xf5\x7d\xfa\xff\x29\x90\x20\xba\x9a\x7a\xfb\xd8\x2d\xd7\xf5\xf9\x5c\x46\xc1\xfb\x4f\x7d\x4f\xde\x09\xde\x4f\x30\x04\x1b\x44\xfd\x0b\x19\x6a\xc2\x5b\x7f\x4d\x87\x73\x1e\xb8\xb3\xa4\x83\x50\xc9\x75\xd7\xdc\x96\xdb\x35\x1d\x18\x5b\x2e\x97\x83\x42\x7c\x86\x81\x5d\x73\x9b\xb8\xd0\x84\xfb\xb7\xce\xfc\x48\xc7\x94\x0f\x1c\x21\xf9\x41\x48\xf8\xb1\xdc\x5c\x82\xa6\x9a\x41\xf2\x1d\x2c\x95\xae\xd3\xf9\x19\x24\xdf\x2e\x2d\xe8\xfa\x6b\x93\xed\x47\xa8\x23\xe1\x22\xe5\x4d\xc0\xb8\x0b\x68\x53\x33\xd6\x23\x4e\x5f\x2a\x69\x41\xda\x14\x42\x61\x2b\x3d\x9b\x56\xa1\x92\xbe\x07\xdc\x02\x7a\xd2\x6a\xe8\x49\x45\x68\x4d\xcd\xb1\x6d\xf5\xe1\xb6\x23\x3d\x9a\x9e\xde\xb6\xa2\xeb\x46\x28\x03\xc0\xb6\x6d\x25\x80\xb6\x09\xc2\x39\xaa\x88\xc1\x37\x27\x0a\x29\x41\xff\xf9\xe3\xdb\x1f\xaa\xd9\x3a\x01\x96\xab\xcc\xf7\x87\x1c\xd3\x86\xba\x17\xe9\xb1\x47\x66\xef\x91\x7e\x12\x70\xe3\x94\xe4\x68\x75\x29\x4b\xea\xe1\xce\x0b\xad\x0f\xf2\x1f\xcb\x19\x6a\xc8\xeb\x3a\xdf\x69\x97\xd6\x49\x4e\x3d\xe2\x7c\x6d\xfd\x1c\x11\xc6\x36\xb1\xea\xc8\xbb\x83\x3e\xf4\xac\xeb\x91\x92\xe9\x64\xd3\x7b\xe0\xd6\x6d\x9b\x59\x88\x10\x25\xdf\xc0\xa9\x6e\x16\xaf\x7e\x6e\x7d\x4e\xa8\x76\xea\xc8\xd9\x24\x14\x33\x82\xb6\xf1\x17\x72\xc6\x47\xa3\x80\x50\xf8\x02\x3c\x55\xcc\x5e\xd8\x79\xd3\xb0\x32\x5d\x24\xf1\xb4\xc7\xd3\x99\x98\x4f\xea\xaf\x2f\x98\xba\x10\xc7\xb3\x19\x88\x20\xdf\xa8\x0b\x5b\x77\x26\xa5\x76\x38\x8c\xc5\xd0\xe1\x10\x77\xf1\x8f\xb1\x1a\xd7\x2b\xc8\x22\x80\xb0\xb3\x89\x53\xa1\x14\xdb\xe1\x50\x07\x14\xd6\x65\x94\x82\x54\x75\xa5\xb5\x3b\xa1\x2b\xac\x9b\x92\xd5\xbe\xbc\x48\x53\xfc\x3a\x31\x71\xd0\x0d\x7a\x16\x09\xad\x6b\x45\x6b\x0c\x49\x54\x51\xd2\x14\x9d\x9d\x64\xe3\xa0\x17\xed\x6c\xe6\xcc\xa3\x29\x12\xb1\x49\xdd\xd0\x1b\xba\xdf\x8c\x2f\x40\x9d\x71\xb2\x8b\x64\xaf\xb1\x21\xf1\xf9\xb4\x6a\x87\xf6\x9b\x86\x6a\x74\x63\xee\x24\x5f\xb7\x17\x11\x1a\x57\xa0\x17\xb0\xf9\x06\x8d\xd6\xd8\x4d\x93\x11\x7a\x71\xee\xbe\xbb\xf4\xda\x1c\x6f\x1f\x6c\xe4\xa7\xe3\x8b\x1c\x22\x15\xd6\xd4\x34\xcf\x8c\x4f\x73\xbd\x85\x90\xf0\x68\xca\x97\x25\x4d\xd1\x0b\x5b\x2a\xa9\x8e\x87\xec\x9c\x7e\x17\x97\x2c\x37\x88\x5a\xae\x57\x60\x53\xf4\xe9\xb2\xe0\xf2\xb3\x4f\x7f\xa2\x4a\x3c\x35\x62\x2e\x5c\xda\x44\x73\x2e\x57\xa0\x55\x69\x8a\xbb\x0f\x60\xdf\xd4\xce\x24\xdd\x7d\xfa\xe4\xae\xca\x94\x57\x31\x71\x7e\x16\xbf\xde\x50\x51\xe5\x5c\xfd\x73\x97\xba\x48\xf3\xc9\xb9\xa8\x15\xf6\x34\xf4\x09\xc1\x76\xbc\x80\xbf\xce\x80\x54\x9d\xb1\x67\xc4\x22\x05\x8c\x2f\x55\xee\xf2\x6f\x11\x3a\xb0\x44\xf7\x11\x21\x2a\xdf\x0b\x3e\x1c\x62\x71\xfc\x35\xa1\xc9\xaf\xba\x92\x53\x5c\xef\xdd\xcd\xad\x0f\xae\x28\x72\x1f\x07\xbc\x28\x06\x88\x72\x8a\x06\xd1\x23\x0e\x84\x1c\x20\x9a\x25\x9d\x7a\x30\xb6\xcf\x89\xab\x42\xc0\x2d\xa9\xf0\x77\xf3\xf6\x09\x65\x53\x53\x16\x36\xdc\x11\xcf\x28\x44\x76\xda\x7f\x1e\x29\x43\xc6\x6a\x79\xa8\xc9\xf9\x1c\x37\x35\xc9\x55\xac\x42\x3e\x5e\xd0\xeb\x2e\xaf\x8e\x5d\x49\x62\x89\x3b\x8f\x40\xbe\x20\x4f\x1e\xd7\x53\x17\xcb\x49\x35\x0e\xd8\x7b\xf1\x9c\xc7\x70\x32\x16\xb4\x5a\xc9\x55\x1d\x3e\xbd\x7e\xff\xfe\xdd\xfb\x14\xf5\x9e\xbb\x02\x01\xce\xe5\x39\x98\xfa\xe5\xb7\x7e\x3b\xf3\xbc\x0c\x87\x13\x76\x6c\xbc\xf6\x72\xcf\xa5\xbe\xa2\xe8\x9f\xff\xf8\xaf\x1f\x95\x5d\x0b\xb9\x1a\x2c\x95\x1e\xdc\xa9\x92\x0e\x5e\xf1\x9b\x55\xf2\xcf\x7f\xfc\xf7\x43\x8f\x2f\x81\x8f\xc9\x20\x52\x80\x48\x43\xf9\x51\x0a\xeb\x02\xad\x1f\xf3\x67\xf9\x2b\x88\x3d\x9e\x6f\x6c\x56\x88\xee\x8c\xce\x52\x24\x36\x7c\x05\xe6\xfc\xb2\x34\x77\xc9\x4a\x2c\xd1\x83\x29\x7d\x60\x20\x68\xa2\x90\xab\x24\x71\x81\xe9\xec\xe0\x69\x33\xc6\x20\x96\xe1\x43\xa6\xee\xef\xe7\x8b\xfd\xbb\xd3\x6b\xf1\xb3\xbc\x9d\x8b\x7b\x7e\x1b\x6f\x77\xe8\xe0\x37\xb0\xe2\xe3\xfd\x77\x91\xb0\xe1\x93\x2f\x09\xe7\x12\x51\xb5\xef\x59\x42\xf7\xd5\x09\xf7\xb2\xa4\xbb\xe8\x95\xd2\xa6\xbd\xcb\x77\x90\xbb\x65\xd7\xa1\xb3\x3c\x60\xa0\x41\xbe\x29\xd0\x6e\x0c\x97\xda\x83\x26\xb2\x27\xde\x22\x21\xd3\x8a\xfa\x62\xbd\x27\xdb\x3c\xea\xc9\xbe\xdd\x6e\x9f\xe6\xc2\x94\x7f\xa3\x0f\x3d\x83\x3e\xfd\xba\x98\x2f\xd2\xfa\x65\x3b\xf6\xfa\x52\x14\x2b\x16\xad\x23\xbb\x4a\x21\xb9\xa2\x22\x85\x44\xc4\x52\x62\x5d\xa9\xea\x15\x0a\xfb\xe5\xaa\x58\x06\xb4\x15\xa9\xfb\x74\x1e\x6d\xe4\xf0\xc1\x18\x74\xab\xa4\xbd\xb7\x77\xd2\x94\x43\xa1\x5f\x0e\x35\x3d\xa7\x1b\xfb\x1d\xfc\x75\x96\x75\x3a\xd9\xf6\xf7\xf2\x51\x75\xac\x47\x98\xba\x27\xa5\x83\x29\x74\x68\xf2\x96\x0f\xda\xd4\xb1\xea\x8b\xe3\x88\xb3\xd7\xb5\x46\x1c\x60\x6e\xca\xd2\x98\xc4\xee\x29\xef\xd9\x5b\x3a\x9b\x96\xab\x03\xa9\x84\xff\xd7\xfa\x5d\x37\x0f\x4d\x5b\x47\xce\xe3\x29\xfb\x86\x20\xc4\xa3\xb5\x01\xe7\x8d\x90\xb9\xba\x49\x78\x9e\xbf\xbe\x06\x69\x7f\x88\x0d\xfe\x18\x6d\xd5\xd6\x1f\x69\xf7\xdf\x2e\xa0\xdb\x9f\x7c\xec\x44\xea\x4e\x1a\x47\x6b\xdb\x93\xec\xae\xd1\x83\x86\x80\xc3\x2e\x83\x72\x9b\x73\x0b\x7f\x16\xc6\x2a\x7d\x87\xa1\x8b\xa3\xa9\x47\xf5\x04\xd5\x69\x25\xe8\xad\x3d\xd2\x9e\xd6\xb4\xaa\x6f\xb9\x5d\x3b\x47\x33\x42\x17\x57\x0c\x8d\x40\x1e\x74\xb9\x43\x72\x45\x46\x68\x28\x4e\xcd\x0a\x37\xeb\xad\xea\x14\x84\x9f\x74\x50\x5d\x33\x3b\x05\xdc\x85\x71\x6b\x62\xfb\xf0\x28\xda\xd2\x6c\x1d\x78\xf2\x39\x45\x3c\xcd\xf0\x9f\x32\x15\x45\xc8\xff\x7b\xd5\xf3\x5a\xc9\xda\x3b\xe9\xd8\x74\x49\x77\xfe\xd5\xc6\xb4\xbd\x5f\xb1\x77\x21\xde\xa8\x75\x8b\x40\xf8\x2a\xba\x1d\x0b\x61\xe8\x88\xbf\xe9\xc6\x1e\x47\x1c\xcf\x5e\xe5\xee\x88\xaa\xc4\xd0\x74\x6f\xf8\xc4\xcd\xb2\x8d\x2c\xe8\x4e\xd8\xd8\xe7\xc1\xff\x5f\x0a\x99\x85\xc5\x41\x7a\xed\x89\x1c\x43\xb9\xf1\x02\x23\xb4\x79\xf0\x58\x81\x8d\x73\xdf\xdd\xbd\xc9\x31\xd2\x4a\x59\xe4\x2d\xd4\xf9\x06\x4c\xaa\x05\x99\xfd\x4f\x00\x00\x00\xff\xff\xcf\xcd\xbd\x41\x74\x3a\x00\x00" func jsHoundJsBytes() ([]byte, error) { return bindataRead( @@ -485,7 +485,7 @@ func jsHoundJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/hound.js", size: 14853, mode: os.FileMode(420), modTime: time.Unix(1603725451, 0)} + info := bindataFileInfo{name: "js/hound.js", size: 14964, mode: os.FileMode(420), modTime: time.Unix(1617311114, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -505,7 +505,7 @@ func jsJquery213MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -525,7 +525,7 @@ func jsReact0122MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130420, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -545,7 +545,7 @@ func open_searchTplXml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1603725449, 0)} + info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -602,29 +602,29 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "css/hound.css": cssHoundCss, - "css/octicons/LICENSE.txt": cssOcticonsLicenseTxt, - "css/octicons/README.md": cssOcticonsReadmeMd, - "css/octicons/octicons-local.ttf": cssOcticonsOcticonsLocalTtf, - "css/octicons/octicons.css": cssOcticonsOcticonsCss, - "css/octicons/octicons.eot": cssOcticonsOcticonsEot, - "css/octicons/octicons.less": cssOcticonsOcticonsLess, - "css/octicons/octicons.svg": cssOcticonsOcticonsSvg, - "css/octicons/octicons.ttf": cssOcticonsOcticonsTtf, - "css/octicons/octicons.woff": cssOcticonsOcticonsWoff, + "css/hound.css": cssHoundCss, + "css/octicons/LICENSE.txt": cssOcticonsLicenseTxt, + "css/octicons/README.md": cssOcticonsReadmeMd, + "css/octicons/octicons-local.ttf": cssOcticonsOcticonsLocalTtf, + "css/octicons/octicons.css": cssOcticonsOcticonsCss, + "css/octicons/octicons.eot": cssOcticonsOcticonsEot, + "css/octicons/octicons.less": cssOcticonsOcticonsLess, + "css/octicons/octicons.svg": cssOcticonsOcticonsSvg, + "css/octicons/octicons.ttf": cssOcticonsOcticonsTtf, + "css/octicons/octicons.woff": cssOcticonsOcticonsWoff, "css/octicons/sprockets-octicons.scss": cssOcticonsSprocketsOcticonsScss, - "excluded_files.tpl.html": excluded_filesTplHtml, - "favicon.ico": faviconIco, - "images/busy.gif": imagesBusyGif, - "index.tpl.html": indexTplHtml, - "js/JSXTransformer-0.12.2.js": jsJsxtransformer0122Js, - "js/common.js": jsCommonJs, - "js/common.test.js": jsCommonTestJs, - "js/excluded_files.js": jsExcluded_filesJs, - "js/hound.js": jsHoundJs, - "js/jquery-2.1.3.min.js": jsJquery213MinJs, - "js/react-0.12.2.min.js": jsReact0122MinJs, - "open_search.tpl.xml": open_searchTplXml, + "excluded_files.tpl.html": excluded_filesTplHtml, + "favicon.ico": faviconIco, + "images/busy.gif": imagesBusyGif, + "index.tpl.html": indexTplHtml, + "js/JSXTransformer-0.12.2.js": jsJsxtransformer0122Js, + "js/common.js": jsCommonJs, + "js/common.test.js": jsCommonTestJs, + "js/excluded_files.js": jsExcluded_filesJs, + "js/hound.js": jsHoundJs, + "js/jquery-2.1.3.min.js": jsJquery213MinJs, + "js/react-0.12.2.min.js": jsReact0122MinJs, + "open_search.tpl.xml": open_searchTplXml, } // AssetDir returns the file names below a certain @@ -666,36 +666,37 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ "css": &bintree{nil, map[string]*bintree{ "hound.css": &bintree{cssHoundCss, map[string]*bintree{}}, "octicons": &bintree{nil, map[string]*bintree{ - "LICENSE.txt": &bintree{cssOcticonsLicenseTxt, map[string]*bintree{}}, - "README.md": &bintree{cssOcticonsReadmeMd, map[string]*bintree{}}, - "octicons-local.ttf": &bintree{cssOcticonsOcticonsLocalTtf, map[string]*bintree{}}, - "octicons.css": &bintree{cssOcticonsOcticonsCss, map[string]*bintree{}}, - "octicons.eot": &bintree{cssOcticonsOcticonsEot, map[string]*bintree{}}, - "octicons.less": &bintree{cssOcticonsOcticonsLess, map[string]*bintree{}}, - "octicons.svg": &bintree{cssOcticonsOcticonsSvg, map[string]*bintree{}}, - "octicons.ttf": &bintree{cssOcticonsOcticonsTtf, map[string]*bintree{}}, - "octicons.woff": &bintree{cssOcticonsOcticonsWoff, map[string]*bintree{}}, + "LICENSE.txt": &bintree{cssOcticonsLicenseTxt, map[string]*bintree{}}, + "README.md": &bintree{cssOcticonsReadmeMd, map[string]*bintree{}}, + "octicons-local.ttf": &bintree{cssOcticonsOcticonsLocalTtf, map[string]*bintree{}}, + "octicons.css": &bintree{cssOcticonsOcticonsCss, map[string]*bintree{}}, + "octicons.eot": &bintree{cssOcticonsOcticonsEot, map[string]*bintree{}}, + "octicons.less": &bintree{cssOcticonsOcticonsLess, map[string]*bintree{}}, + "octicons.svg": &bintree{cssOcticonsOcticonsSvg, map[string]*bintree{}}, + "octicons.ttf": &bintree{cssOcticonsOcticonsTtf, map[string]*bintree{}}, + "octicons.woff": &bintree{cssOcticonsOcticonsWoff, map[string]*bintree{}}, "sprockets-octicons.scss": &bintree{cssOcticonsSprocketsOcticonsScss, map[string]*bintree{}}, }}, }}, "excluded_files.tpl.html": &bintree{excluded_filesTplHtml, map[string]*bintree{}}, - "favicon.ico": &bintree{faviconIco, map[string]*bintree{}}, + "favicon.ico": &bintree{faviconIco, map[string]*bintree{}}, "images": &bintree{nil, map[string]*bintree{ "busy.gif": &bintree{imagesBusyGif, map[string]*bintree{}}, }}, "index.tpl.html": &bintree{indexTplHtml, map[string]*bintree{}}, "js": &bintree{nil, map[string]*bintree{ "JSXTransformer-0.12.2.js": &bintree{jsJsxtransformer0122Js, map[string]*bintree{}}, - "common.js": &bintree{jsCommonJs, map[string]*bintree{}}, - "common.test.js": &bintree{jsCommonTestJs, map[string]*bintree{}}, - "excluded_files.js": &bintree{jsExcluded_filesJs, map[string]*bintree{}}, - "hound.js": &bintree{jsHoundJs, map[string]*bintree{}}, - "jquery-2.1.3.min.js": &bintree{jsJquery213MinJs, map[string]*bintree{}}, - "react-0.12.2.min.js": &bintree{jsReact0122MinJs, map[string]*bintree{}}, + "common.js": &bintree{jsCommonJs, map[string]*bintree{}}, + "common.test.js": &bintree{jsCommonTestJs, map[string]*bintree{}}, + "excluded_files.js": &bintree{jsExcluded_filesJs, map[string]*bintree{}}, + "hound.js": &bintree{jsHoundJs, map[string]*bintree{}}, + "jquery-2.1.3.min.js": &bintree{jsJquery213MinJs, map[string]*bintree{}}, + "react-0.12.2.min.js": &bintree{jsReact0122MinJs, map[string]*bintree{}}, }}, "open_search.tpl.xml": &bintree{open_searchTplXml, map[string]*bintree{}}, }} @@ -746,4 +747,3 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } - From 9762530a57a3820f0498ca20d6e58bb5f07192e0 Mon Sep 17 00:00:00 2001 From: Joel Armstrong Date: Thu, 13 May 2021 09:28:01 -0400 Subject: [PATCH 32/37] Improve accessibility (#398) * Resolve WCAG2AA.Principle3.Guideline3_1.3_1_1.H57.2 * Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.InputText.Name * Resolve WCAG2AA.Principle4.Guideline4_1.4_1_2.H91.Button.Name * Improve stats contrast * Improve advanced text contrast * Improve repo title contrast * Improve contrast in advanced section * Improve line number contrast * Improve excluded files contrast * Improve "load all" button contrast --- ui/assets/css/hound.css | 14 ++++---- ui/assets/index.tpl.html | 2 +- ui/assets/js/hound.js | 3 +- ui/bindata.go | 71 ++++++++++++++++++++++------------------ 4 files changed, 50 insertions(+), 40 deletions(-) diff --git a/ui/assets/css/hound.css b/ui/assets/css/hound.css index d2de2569..bb962786 100644 --- a/ui/assets/css/hound.css +++ b/ui/assets/css/hound.css @@ -9,7 +9,7 @@ a { color: #09f; } -.link-gray { color: #aaa } +.link-gray { color: #767676 } input { font-family: inherit; @@ -29,7 +29,7 @@ button { text-align: center; display: inline-block; color: #fff; - background-color: #09f; + background-color: #007acc; border: 0; border-radius: 3px; cursor: pointer; @@ -126,7 +126,7 @@ button:focus { /* Media object left */ float: left; width: 100px; - color: #999; + color: #767676; } #adv > .field > .field-input { @@ -160,11 +160,11 @@ button:focus { opacity: 1; overflow: hidden; cursor: pointer; + color: #767676; } #inb > .ban > em { font-style: normal; - color: #aaa; } #input > .stats { @@ -172,7 +172,7 @@ button:focus { font-size: 12px; padding: 4px 0; margin: 0 auto; - color: #aaa; + color: #767676; } /* Clearfix .stats */ @@ -224,7 +224,7 @@ button:focus { } .repo > .title { - color: #666; + color: #767676; font-size: 24px; padding-bottom: 5px; } @@ -291,7 +291,7 @@ button:focus { border-right: 1px solid #eee; display: inline-block; font-size: 14px; - color: #aaa; + color: #767676; } .match > .line:last-child > .lnum { diff --git a/ui/assets/index.tpl.html b/ui/assets/index.tpl.html index 028277cc..92f38034 100644 --- a/ui/assets/index.tpl.html +++ b/ui/assets/index.tpl.html @@ -1,5 +1,5 @@ - + diff --git a/ui/assets/js/hound.js b/ui/assets/js/hound.js index da991261..fea76ad7 100644 --- a/ui/assets/js/hound.js +++ b/ui/assets/js/hound.js @@ -497,12 +497,13 @@ var SearchBar = React.createClass({
- +
diff --git a/ui/bindata.go b/ui/bindata.go index ccc8fc33..0fcae4c4 100644 --- a/ui/bindata.go +++ b/ui/bindata.go @@ -1,4 +1,4 @@ -// Code generated by go-bindata. +// Code generated for package ui by go-bindata DO NOT EDIT. (@generated) // sources: // .build/ui/css/hound.css // .build/ui/css/octicons/LICENSE.txt @@ -23,8 +23,6 @@ // .build/ui/js/jquery-2.1.3.min.js // .build/ui/js/react-0.12.2.min.js // .build/ui/open_search.tpl.xml -// DO NOT EDIT! - package ui import ( @@ -71,26 +69,37 @@ type bindataFileInfo struct { modTime time.Time } +// Name return file name func (fi bindataFileInfo) Name() string { return fi.name } + +// Size return file size func (fi bindataFileInfo) Size() int64 { return fi.size } + +// Mode return file mode func (fi bindataFileInfo) Mode() os.FileMode { return fi.mode } + +// Mode return file modify time func (fi bindataFileInfo) ModTime() time.Time { return fi.modTime } + +// IsDir return file whether a directory func (fi bindataFileInfo) IsDir() bool { - return false + return fi.mode&os.ModeDir != 0 } + +// Sys return file is sys mode func (fi bindataFileInfo) Sys() interface{} { return nil } -var _cssHoundCss = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\x6b\x73\xa2\xbe\x1a\x7f\xef\xa7\xc8\x6c\x67\x67\x77\xbb\xa2\xa8\xb5\xb5\x74\xfe\x9d\x41\xea\xb6\xd6\xed\x45\xab\xbd\x9d\x39\x73\x26\x40\x80\xd4\x40\x68\x08\x6a\xbb\xb3\xdf\xfd\x4c\x02\x28\x20\x76\xf7\xbc\x3a\xe3\x4c\x0b\x21\xcf\x25\xbf\xe7\x1e\x93\xda\x6f\xe0\x57\x0d\x00\x1f\x32\x17\x07\x1a\x50\x4f\x6a\x00\x38\x34\xe0\x8a\x03\x7d\x4c\xde\x34\xf0\xe5\x02\x91\x05\xe2\xd8\x82\xe0\x1a\xc5\xe8\x4b\x1d\xac\x17\xea\x40\x67\x18\x92\x3a\x88\x60\x10\x29\x11\x62\xd8\x11\xe4\x16\x25\x94\x69\x60\xaf\xd3\xe9\x88\x57\x13\x5a\x73\x97\xd1\x38\xb0\x95\xec\x8b\xe3\x38\x27\xb5\xdf\xb5\x1a\x94\xb2\xb3\x55\xf5\x38\x59\x6d\x10\x1c\xcc\x15\x97\xc1\x37\xf0\x6b\xfd\x11\x42\x08\x7e\xd7\x6a\x38\x08\x63\x2e\xa9\x0a\x4a\xe2\xc0\x43\x0c\xf3\x8f\xc4\x01\x60\x52\x66\x23\xa6\x81\x56\xb8\x02\x11\x25\xd8\x06\x7b\x96\x65\x49\x91\x92\xad\xe6\x50\x2b\x8e\x24\x73\x1a\x73\x82\x03\xa4\x81\x80\x06\x68\x43\xab\x14\x54\x15\xab\x2b\x25\xf2\xa0\x4d\x97\x1a\x50\x81\x0a\xba\xe1\x0a\x30\xd7\x84\x5f\xd5\x7a\xab\xdb\xa9\xb7\xbb\xdd\x7a\xa3\xfb\x4d\x4a\x30\x63\xce\x69\xf0\xa1\xe6\x72\x3d\xc2\xef\x48\x03\xad\x83\x70\x25\x96\x38\x5a\x71\x05\x12\xec\x06\x1a\xb0\x50\xc0\x11\x13\xab\x36\x8e\x42\x02\x25\xb1\xd0\x52\x31\x09\xb5\xe6\x79\xe4\xb3\x03\x6f\x43\xb1\x56\x3c\x81\x42\xcd\x9d\x8d\x41\x1b\xc7\x91\x06\x3a\x89\x68\x2b\x66\x91\x20\x09\x29\x4e\xe4\xae\x0f\x91\xc3\xa9\x0c\xc0\x61\x05\x00\x47\x29\x02\x7b\x8c\x52\x9e\x3a\xdb\x4a\x59\x62\x9b\x7b\x1a\x38\x3e\x54\x13\x71\x6b\x07\x04\x30\xe6\x54\xac\x84\xd0\xb6\x71\xe0\x8a\xa5\xb6\x1a\xae\x36\x7f\x24\xb7\xda\xde\xc6\x15\x12\x5a\x85\xd3\x50\x03\x07\x05\x7e\x8a\x49\x39\xa7\x7e\xb6\xfc\xbb\x56\x6b\xee\x83\x3b\x04\x99\xe5\x01\x8b\x06\x1c\xe2\x00\x31\xb0\xdf\x14\xdc\x12\x67\x5c\x63\xcb\xa1\x49\xa4\xe9\x53\x4d\x5b\xaa\xfa\x59\xaa\x45\x23\xcc\x31\x0d\x34\xc0\x10\x81\x1c\x2f\xe4\xa6\x77\x05\x07\x36\x5a\x69\xa0\xb5\xed\x17\xc2\xdf\x72\xc0\xc8\x5f\xa3\xfd\xad\xa4\x4e\x72\x9c\x4c\x95\x53\xb0\x39\x9e\x87\xb0\xeb\x71\x0d\x74\xbb\xc9\xd1\x72\xc0\x1c\x25\x2b\x99\x05\x93\x7d\x3b\x8c\x2a\x0d\xd4\xc9\x08\x56\xc2\xd3\x24\x97\x74\xa7\x49\x57\x79\x17\x3a\x3c\x3c\x2c\xfb\x64\x2f\xa1\x95\x4b\xcb\x54\xa7\x8e\xaa\x9e\x6c\xa1\xa6\x58\x88\x90\x0a\xe8\x16\x88\x89\xb4\x41\x32\x8f\xf6\xb1\x6d\x0b\x8c\x7f\xd7\xb2\x43\x37\x12\x0f\x53\xa0\x6d\x2b\x69\xb4\xec\x60\xbd\x8b\xd7\x46\xe8\xe7\x12\xc0\x51\x6c\xfa\x98\x83\x34\x10\x05\xd0\x36\xb5\x21\x4f\xfd\xb8\x80\x96\xc4\x29\xc1\xec\xa4\xc2\x00\xa9\x84\xa3\x76\x0a\xe6\x26\xcc\xb0\x0f\x5d\xa4\x81\x98\x91\xaf\x36\xe4\x50\x93\xef\xcd\x30\x70\x4f\x4c\x18\xa1\xc3\x83\x3a\xbe\xef\xdf\x4c\x96\xea\xe8\xdc\xa5\xba\xae\xeb\xd7\x77\x33\x6f\x30\x73\x75\x5d\x37\x86\xe2\x1d\x1b\xfa\x93\xf8\x7f\x38\x59\x2e\x0c\x5d\xd7\xfb\xf7\x33\x32\x18\xdf\x4f\x9e\x96\xdf\xdb\x4f\xe3\xc9\xf9\xe0\x4a\x5f\xfd\x98\xdf\xeb\x97\xe4\x49\x1f\x5c\x1a\x7a\xdf\x98\x79\xfa\x18\x3f\x44\xde\xe5\x83\xde\x37\x26\x33\xdd\x3d\xfa\xfe\x18\xb1\xab\xe9\x1c\x9b\xd7\x67\x7d\xfb\x6c\xc1\x03\x34\x57\x9d\x3b\xe7\x75\x4a\xc7\xb7\xe3\x5b\x34\xe8\xe9\xf1\xa8\x3b\x3c\x9b\xf7\xcf\x75\xa3\xa7\x0f\xee\x2c\x3e\x1e\x0c\xf5\x8b\xd5\xe3\x68\x3a\x1b\xba\xfd\x23\xdd\x60\xaa\xa1\x5f\x58\xcc\x18\xea\x97\xd7\xbe\xaa\x7f\x27\x5c\xff\x39\xd7\xad\xf6\xcb\x03\x19\xd1\xd1\xdc\x0a\x8c\x91\x61\x1b\x13\x15\x77\xc2\x03\x72\xed\x33\x7a\xb9\xbc\x9d\x9c\x0f\x5c\xe3\xf0\xde\x3b\xa7\x6d\x17\x4e\x1f\x67\xe3\x99\xb7\x1c\x8c\xd9\xdb\x28\xf2\x67\x37\xf0\x79\x76\xa0\x3e\x0c\x6e\xe8\x74\xde\x1b\x98\x1d\x3c\x3d\x7f\x72\xcf\x3d\xcb\x85\x63\xdf\x9a\x3c\xfd\x3c\xb8\x56\xfb\x2f\x17\xe4\xfb\x24\x18\xa2\xb3\x78\xd8\xc2\x3f\x2e\x7b\x83\x3e\x5e\x18\xaa\xeb\x1f\x99\x13\x23\x3a\x7f\x69\xcd\xf9\x68\x38\x3c\x5f\x1d\x86\xd4\xbb\x7e\xb9\x7e\x3e\x9e\x3c\x8d\x83\x15\xc1\x53\xf7\x62\x72\xd5\x82\xcd\x47\x76\x71\x30\x1f\x0e\x9e\xbd\xc1\x7b\xc4\xa7\xaa\xef\xa2\xa9\xdf\x0f\x2f\x9f\xdf\x91\x7f\xf9\xe2\xce\x0f\xbb\x01\x9c\xde\x1c\x43\xfd\x76\x71\xf3\x83\xc3\x85\xfe\x70\xf5\x3a\xb2\x5f\x2e\xde\x3c\x6b\x35\x7c\x38\x7e\x8d\xcf\x27\xf7\xf7\x37\xed\xd8\x6b\x92\x29\xeb\x39\x0f\x57\xaf\xe6\x60\xd9\xb2\x16\xef\xf7\x4d\x9d\x3c\x3e\x62\x8b\xb6\xad\x5e\xef\x60\xe8\x2e\x9f\x3d\xfd\xec\xea\xa9\x7d\x37\xed\x5f\x8f\xcf\xc6\xcb\xf7\x99\x3e\xf7\x47\x4f\xae\x4e\x57\x0b\x83\x8c\xf4\xf3\xe7\xd7\xb3\xab\xb3\xbe\xd9\x3b\x1e\x2e\x27\x2f\x64\xa8\x36\x9d\xe6\xc3\xf7\xe1\x59\x87\x8f\x7f\x8e\x6f\xb1\xd9\x7e\x1d\x0b\xfb\xea\x77\xb3\xfb\x9b\xc9\xa8\x6b\x3c\x0d\x87\xff\x7c\x2b\x39\x11\x43\x21\x82\x5c\xd4\x9e\xf4\xb1\xf4\x7d\x93\x81\x92\x92\x90\xab\x0c\xb9\x5d\x69\xd0\x1e\xa5\x79\x6f\x0f\x07\xe6\x26\x65\x57\x86\x7e\x96\x92\xbb\x9f\xff\x90\x90\x0f\xc2\x15\x48\x93\x41\x75\x36\xfc\xcb\xfc\x07\xf2\xd5\xbd\x9c\x6d\xd2\xe0\x92\x05\x2e\x0b\xc0\x56\xa3\xcb\x90\xff\x87\xa6\x62\x0f\xda\x8b\x3f\x9c\x94\x2e\x10\x73\x88\xd0\xce\xc3\xb6\x8d\x82\x7c\x90\xab\xc5\x14\x2b\xab\x30\x83\x41\x76\xcc\x64\x5b\x3d\xdb\x01\xd4\x46\x2b\x02\x08\x46\x48\xc1\x81\x42\x63\x9e\x74\x30\x1e\xb6\x91\x92\xe9\x91\x56\xd2\x7c\x21\x6d\xee\x83\x2b\x64\x63\x08\xa8\xf9\x82\x2c\x0e\x2c\x82\x20\x73\xf0\x4a\xa6\x25\x41\x77\x0a\x1a\x0e\x46\xc4\x4e\xba\x91\x2d\x75\xb3\x63\xae\xb7\x9d\x02\x02\x4d\x44\xe4\xf6\x32\x73\x82\x1c\x59\x58\x00\x70\x08\x15\x8e\x25\x16\x8a\xe9\x39\x2c\xe4\xfe\xe3\xe3\xe3\x4a\x11\xc9\x83\xb2\xa9\x4c\xcd\x7d\x70\x8d\x96\x40\xf6\x1f\xc0\xa1\xcc\x87\x9c\x0b\x50\x44\x69\x45\x2b\x2e\x96\x80\x9f\x57\x45\x6a\xf1\x17\xc7\x91\x22\xfe\xc5\xdf\x42\xf4\x8f\x60\xf4\x6f\x29\xad\xe0\x0a\xed\x83\x3f\x55\xb2\x72\xdd\xde\x54\xcd\x56\xe9\xbc\xb2\xd6\x09\xb3\x49\xe1\x5a\x40\xf9\x57\x8d\xc0\x88\x2b\x96\x87\x89\xfd\x2d\xdf\x63\x64\xfd\x84\x9a\x7a\xa2\xa0\xf2\x63\xc2\x71\x84\x88\x38\xe0\x5f\x45\x58\xa6\x52\xae\x6f\x29\x95\xf6\x6e\xbe\xae\x6f\x77\xac\xdb\xaa\xcb\xf0\x16\xf5\x13\x26\x55\x33\xef\xb2\xa2\xdd\xca\xdc\x96\x86\xd0\xc2\xfc\xad\xc2\x6d\x41\xf6\x2d\xed\x61\xaa\x62\xa4\xaa\x27\xcc\x4b\x3e\x05\xc8\xdf\xb4\xb8\x11\x7f\x23\xb2\x85\x66\x3e\x24\x5b\xd1\xfe\x7b\xdd\xc2\x9d\x82\x46\xc4\x21\x4f\x3a\xca\x62\x12\xaa\x48\x08\x85\x2c\xa4\x56\x67\xaa\xb2\xa0\xe6\x3e\x30\xb2\x08\x4b\x65\xed\x37\x6b\xc9\x93\x66\x22\x87\x32\x54\xcf\x5e\xa1\x23\x52\x6a\x32\x97\x04\x1c\x05\x5c\x03\x9f\xc0\xa7\xed\x26\x47\x30\xde\x26\x11\x52\x84\xd5\xb9\x97\xf8\x86\xdc\xa0\xc8\x08\xfc\x95\x0f\x3f\x90\x11\x27\x4d\xdb\xe6\x63\xf2\x5a\x01\x4e\x63\x01\x49\x7d\x6b\xb5\xd4\xb4\x96\x07\x82\x0c\x9a\x6e\x56\x05\x64\x4d\x89\x62\xc2\x8b\x53\xdf\x1a\xb9\x1c\xe0\xed\x0f\x67\x90\x7c\xcf\x5d\x9d\x40\x52\xca\xac\x0e\x08\x1f\x6e\xc9\x2e\x74\x93\xa9\x37\xda\x9c\x02\x1b\x2f\x72\xae\x93\x33\x79\x61\x63\x03\x31\x46\x59\x61\x6c\xec\xc1\x43\xbb\x63\xee\x2a\x0a\x96\xd3\x43\x9d\x1d\xb1\xe4\x40\x64\x26\xe1\xb4\x76\x2a\x91\x1a\x76\x4f\x45\x55\xaa\x9c\x82\x88\x33\x1a\xb8\xf9\x2c\x91\x36\xe2\xad\x6c\xe8\x68\x30\x14\xd2\xaa\x34\x92\x22\xb7\xde\x72\x0a\x1a\x1c\x73\x82\x0a\x07\xdc\x6e\xc5\x33\xd3\xa4\x6a\xaf\xd9\x75\xab\x99\x9d\x82\x46\x00\xfd\x84\x69\xb9\x6f\xe6\x34\xdc\x41\x42\x2d\x8e\x2d\x1a\x28\x6b\xdd\x33\x7d\x4c\xd3\x3c\xf9\xe0\xac\x0e\x26\x28\x12\x0c\x7c\x0a\x59\xe5\x00\x53\xa9\x43\x29\x3b\x66\x9c\x0a\x7e\x9a\x58\x27\x1d\x02\x77\x0d\xae\x15\x86\xb6\x7b\xe2\x97\x63\x5a\xc0\xb9\x68\xfc\xcd\x9f\x4c\xcc\x3a\xba\xd6\x61\x55\xa8\x44\x1d\x75\x6b\x0c\x58\x7b\x5f\x57\xfc\x12\xb9\x89\x3c\xb8\x6d\xd9\x4c\x29\x65\x7d\x19\xd3\xdc\x07\x3a\x21\x74\x09\x3c\xca\xf0\xbb\x18\x53\x09\x88\x2c\x46\x09\x11\xc5\x15\x07\xc0\xa2\x36\xaa\x83\x08\xfb\x98\x40\x06\x38\x05\x2e\xe6\x5e\x6c\x36\x2c\xea\x97\x4b\x6c\x12\xd8\xb2\x4c\x41\x6e\x79\xf9\x69\x27\xf3\x9a\x76\x2e\x22\x54\xf1\xcb\xed\xd7\x1c\xcc\xb2\x42\x98\xa7\x4d\xe2\xbe\x1a\xe1\x84\x70\x53\x40\xab\x64\x7e\x44\x2a\xac\x23\x10\x4e\xea\x81\x87\x39\x52\xa2\x10\x5a\x48\x03\x21\x43\x55\xfb\xc4\xff\x20\xf6\xb7\x2f\x57\xbe\xdc\xd1\x98\x59\x08\x18\xd4\x46\xe0\x96\xd1\x2f\x75\xe0\xd3\x80\x4a\x6e\x5b\x17\x5d\x06\x0d\x22\x4a\x60\x54\x07\x9f\x7e\x62\x13\x31\x28\xaa\x27\xb8\xa2\x01\xfd\x54\x07\x57\x28\x20\xb4\x0e\x0c\x1a\x33\x8c\x58\x89\x4d\xea\xb8\xd9\xd5\x43\x3e\x61\xca\xe8\x28\x64\x18\x31\x55\x76\xf3\xd3\x65\x71\x78\xcf\x01\x83\x10\xfa\xf0\xb6\xa7\xe2\xbe\xa8\x5c\xf8\x8a\x40\xe5\x6d\x92\xc7\xac\x9c\x46\x7a\x59\x28\x17\xa9\xf3\xae\x50\x45\x2e\x7d\xa2\x9a\x36\xdb\xaf\x79\xc2\x33\x93\x0e\x45\xa0\x64\x23\x8b\x26\x40\x6b\x20\x0e\x6c\xc4\xc4\xe6\x1d\xc1\x24\xe1\xa8\xe6\xbc\x80\xe4\xff\x66\xfc\x82\x61\xd5\xcc\xbc\x3b\xec\xf3\xb7\xde\x2c\x0e\xf4\x87\x66\xaa\x70\x0d\x63\x52\x62\xff\xd5\xd5\xab\x9c\xc1\xda\xdd\xae\xbc\x9a\x6b\x1d\x88\x49\x2c\xbd\x9e\x6b\xa4\xf7\x2b\xeb\x5b\x31\xf9\x9e\xeb\xc9\xb2\xae\x75\x73\x15\x4a\x60\x18\x21\x0d\x64\x4f\x3b\xd8\xa4\x39\x67\x87\x41\x4b\xe9\xb7\x1c\x3f\xc9\xa8\x52\xc5\xb7\x41\x70\xc4\x01\xb7\x0b\x29\x7c\x77\xdf\x8c\x10\xfa\x80\x4d\x83\x21\x18\xa5\x17\x4e\x05\x1b\x05\x74\xc9\x60\xae\x42\x2a\xb9\x7b\xdc\xb4\x2a\x25\xd7\xbe\xdd\x24\x9c\x4b\xfb\x1a\xc9\x58\x80\xec\x1d\x18\xb8\x0c\xbe\x25\x6d\x05\x5a\x59\x24\xb6\x91\xfd\x9f\x8d\x6a\xff\xeb\xd5\xe6\x7f\x03\x00\x00\xff\xff\xef\x93\x50\xef\xcd\x17\x00\x00" +var _cssHoundCss = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x58\x6b\x6f\xda\xbe\x1a\x7f\xcf\xa7\xb0\x56\x4d\xdb\x3a\x02\x01\x0a\xa5\xa9\xfe\x95\x02\x65\x94\xb2\x5e\xa0\xd0\xdb\xd1\xd1\x91\x93\x38\x89\x8b\x13\xa7\x8e\x03\xb4\xd3\xbe\xfb\x91\x9d\x04\x92\x10\xba\x9d\x57\x47\x91\x5a\xe2\xf8\xb9\xf8\xf7\xdc\x6d\x50\xeb\x0d\xfc\xaa\x00\xe0\x41\xe6\x60\x5f\x03\xea\x69\x05\x00\x9b\xfa\x5c\xb1\xa1\x87\xc9\x9b\x06\xbe\x5c\x20\xb2\x44\x1c\x9b\x10\x5c\xa3\x08\x7d\xa9\x82\xcd\x42\x15\xe8\x0c\x43\x52\x05\x21\xf4\x43\x25\x44\x0c\xdb\x82\xdc\xa4\x84\x32\x0d\x1c\xb4\x5a\x2d\xf1\x6a\x40\x73\xe1\x30\x1a\xf9\x96\x92\x7e\xb1\x6d\xfb\xb4\xf2\xbb\x52\x81\x52\x76\xba\xaa\x9e\xc4\xab\x35\x82\xfd\x85\xe2\x30\xf8\x06\x7e\x6d\x3e\x1e\x77\xc4\x03\x7e\x57\x2a\xd8\x0f\x22\x2e\x09\x73\x7a\x62\xdf\x45\x0c\xf3\x8f\x24\x02\x60\x50\x66\x21\xa6\x81\x46\xb0\x06\x21\x25\xd8\x02\x07\xa6\x69\x4a\xa9\x92\xad\x66\x53\x33\x0a\x25\x73\x1a\x71\x82\x7d\xa4\x01\x9f\xfa\x68\x4b\xab\xe4\xb4\x15\xab\x6b\x25\x74\xa1\x45\x57\x1a\x50\x81\x0a\xda\xc1\x1a\x30\xc7\x80\x5f\xd5\x6a\xa3\xdd\xaa\x36\xdb\xed\x6a\xad\xfd\x4d\x4a\x30\x22\xce\xa9\xff\xa1\xe6\x72\x3d\xc4\xef\x48\x03\x8d\xa3\x60\x2d\x96\x38\x5a\x73\x05\x12\xec\xf8\x1a\x30\x91\xcf\x11\x13\xab\x16\x0e\x03\x02\x25\xb1\xd0\x52\x31\x08\x35\x17\x59\xf0\xd3\x03\xef\x42\xa1\xaa\xc7\x50\x9c\x79\x8b\x86\x9a\x39\x1e\x83\x16\x8e\x42\x0d\xb4\x62\xe9\x66\xc4\x42\x41\x15\x50\x1c\x8b\xde\x9c\x23\x03\x55\x11\x83\x4e\x09\x06\xc7\x09\x08\x07\x8c\x52\x9e\xb8\xdc\x5a\x59\x61\x8b\xbb\x1a\x38\xe9\xa8\xb1\xb8\x8d\x1b\x02\x18\x71\x2a\x56\x02\x68\x59\xd8\x77\xc4\x52\x53\x0d\xd6\xdb\x3f\x92\x5b\xe5\x60\xeb\x0d\x31\xad\xc2\x69\xa0\x81\xa3\x1c\x3f\xc5\xa0\x9c\x53\x2f\x5d\xfe\x5d\xa9\xd4\x0f\xc1\x1d\x82\xcc\x74\x81\x49\x7d\x0e\xb1\x8f\x18\x38\xac\x0b\x6e\xb1\x4b\x6e\xe0\xe5\xd0\x20\xd2\xfa\x89\xa6\x0d\x55\xfd\x2c\xd5\xa2\x21\xe6\x98\xfa\x1a\x60\x88\x40\x8e\x97\x72\xd3\xbb\x82\x7d\x0b\xad\x35\xd0\xd8\x75\x0d\xe1\x72\x19\x60\xe4\x53\x6b\x7e\x2b\xa8\x13\x1f\x27\x55\xe5\x0c\x6c\x8f\xe7\x22\xec\xb8\x5c\x03\xed\x76\x7c\xb4\x0c\x30\xc7\xf1\x4a\x6a\xc1\x78\xdf\x1e\xa3\x4a\x03\xb5\x52\x82\xb5\x70\x36\xc9\x25\xd9\x69\xd0\x75\xd6\x8b\x3a\x9d\x4e\xd1\x2d\xbb\x31\xad\x5c\x5a\x25\x3a\xb5\x54\xf5\x74\x07\x35\xc5\x44\x84\x94\x40\xb7\x44\x4c\x24\x0f\x92\x3a\xb5\x87\x2d\x4b\x60\xfc\xbb\x92\x1e\xba\x16\x7b\x98\x02\x2d\x4b\x49\x02\x66\x0f\xeb\x7d\xbc\xb6\x42\x3f\x17\x00\x0e\x23\xc3\xc3\x1c\x24\xb1\x28\x80\xb6\xa8\x05\x79\xe2\xc7\x39\xb4\x24\x4e\x31\x66\xa7\x25\x06\x48\x24\x1c\x37\x13\x30\xb7\x91\x86\x3d\xe8\x20\x0d\x44\x8c\x7c\xb5\x20\x87\x9a\x7c\xaf\x07\xbe\x73\x6a\xc0\x10\x75\x8e\xaa\xf8\xbe\x77\x33\x5d\xa9\xe3\xa1\x43\x75\x5d\xd7\xaf\xef\xe6\xee\x60\xee\xe8\xba\xde\x1f\x89\x77\xdc\xd7\x9f\xc4\xff\xce\x74\xb5\xec\xeb\xba\xde\xbb\x9f\x93\xc1\xe4\x7e\xfa\xb4\xfa\xde\x7c\x9a\x4c\x87\x83\x2b\x7d\xfd\x63\x71\xaf\x5f\x92\x27\x7d\x70\xd9\xd7\x7b\xfd\xb9\xab\x4f\xf0\x43\xe8\x5e\x3e\xe8\xbd\xfe\x74\xae\x3b\xc7\xdf\x1f\x43\x76\x35\x5b\x60\xe3\xfa\xbc\x67\x9d\x2f\xb9\x8f\x16\xaa\x7d\x67\xbf\xce\xe8\xe4\x76\x72\x8b\x06\x5d\x3d\x1a\xb7\x47\xe7\x8b\xde\x50\xef\x77\xf5\xc1\x9d\xc9\x27\x83\x91\x7e\xb1\x7e\x1c\xcf\xe6\x23\xa7\x77\xac\xf7\x99\xda\xd7\x2f\x4c\xd6\x1f\xe9\x97\xd7\x9e\xaa\x7f\x27\x5c\xff\xb9\xd0\xcd\xe6\xcb\x03\x19\xd3\xf1\xc2\xf4\xfb\xe3\xbe\xd5\x9f\xaa\xb8\x15\x1c\x91\x6b\x8f\xd1\xcb\xd5\xed\x74\x38\x70\xfa\x9d\x7b\x77\x48\x9b\x0e\x9c\x3d\xce\x27\x73\x77\x35\x98\xb0\xb7\x71\xe8\xcd\x6f\xe0\xf3\xfc\x48\x7d\x18\xdc\xd0\xd9\xa2\x3b\x30\x5a\x78\x36\x7c\x72\x86\xae\xe9\xc0\x89\x67\x4e\x9f\x7e\x1e\x5d\xab\xbd\x97\x0b\xf2\x7d\xea\x8f\xd0\x79\x34\x6a\xe0\x1f\x97\xdd\x41\x0f\x2f\xfb\xaa\xe3\x1d\x1b\xd3\x7e\x38\x7c\x69\x2c\xf8\x78\x34\x1a\xae\x3b\x01\x75\xaf\x5f\xae\x9f\x4f\xa6\x4f\x13\x7f\x4d\xf0\xcc\xb9\x98\x5e\x35\x60\xfd\x91\x5d\x1c\x2d\x46\x83\x67\x77\xf0\x1e\xf2\x99\xea\x39\x68\xe6\xf5\x82\xcb\xe7\x77\xe4\x5d\xbe\x38\x8b\x4e\xdb\x87\xb3\x9b\x13\xa8\xdf\x2e\x6f\x7e\x70\xb8\xd4\x1f\xae\x5e\xc7\xd6\xcb\xc5\x9b\x6b\xae\x47\x0f\x27\xaf\xd1\x70\x7a\x7f\x7f\xd3\x8c\xdc\x3a\x99\xb1\xae\xfd\x70\xf5\x6a\x0c\x56\x0d\x73\xf9\x7e\x5f\xd7\xc9\xe3\x23\x36\x69\xd3\xec\x76\x8f\x46\xce\xea\xd9\xd5\xcf\xaf\x9e\x9a\x77\xb3\xde\xf5\xe4\x7c\xb2\x7a\x9f\xeb\x0b\x6f\xfc\xe4\xe8\x74\xbd\xec\x93\xb1\x3e\x7c\x7e\x3d\xbf\x3a\xef\x19\xdd\x93\xd1\x6a\xfa\x42\x46\x6a\xdd\xae\x3f\x7c\x1f\x9d\xb7\xf8\xe4\xe7\xe4\x16\x1b\xcd\xd7\x89\xb0\xaf\x7e\x37\xbf\xbf\x99\x8e\xdb\xfd\xa7\xd1\xe8\x9f\x6f\x05\x27\x62\x28\x40\x90\x8b\xf2\x93\xfc\x2c\x7c\xdf\x66\xa0\xb8\x2a\x64\x8a\x43\x66\x57\x12\xb4\xc7\x49\xde\x3b\xc0\xbe\xb1\x4d\xd9\xa5\xa1\x9f\xa6\xe4\xf6\xe7\x3f\x24\xe4\xa3\x60\x0d\x92\x64\x50\x9e\x0d\xff\x32\xff\x6d\xb3\x0d\x84\xb0\x98\x6d\x92\xe0\x92\x35\x2e\x0d\xc0\x46\xad\xcd\x90\xf7\x87\xd6\xe2\x00\x5a\xcb\x3f\x9c\x94\x2e\x11\xb3\x89\xd0\xce\xc5\x96\x85\xfc\x6c\x90\xab\xf9\x14\x2b\x0b\x31\x83\x7e\x7a\xcc\x78\x5b\x35\xdd\x01\xd4\x5a\x23\x04\x08\x86\x48\xc1\xbe\x42\x23\x1e\xf7\x31\x2e\xb6\x90\x92\xea\x91\x54\xd2\x6c\x21\xad\x1f\x82\x2b\x64\x61\x08\xa8\xf1\x82\x4c\x0e\x4c\x82\x20\xb3\xf1\x5a\xa6\x25\x41\x77\x06\x6a\x36\x46\xc4\x8a\x1b\x92\x1d\x75\xd3\x63\x6e\xb6\x9d\x01\x02\x0d\x44\xe4\xf6\x22\x73\x82\x6c\x59\x58\x00\xb0\x09\x15\x8e\x25\x16\xf2\xe9\x39\xc8\xe5\xfe\xb8\xe3\x2a\x95\x12\xff\x50\xb6\xc5\xa9\x7e\x08\xae\xd1\x0a\xc8\x2e\x04\xd8\x94\x79\x90\x73\x81\x8b\xa8\xae\x68\xcd\xc5\x12\xf0\xb2\xda\x48\x45\xfe\xe2\x44\x52\xc4\xbf\xf8\x5b\x80\xfe\x11\x8c\xfe\x2d\xa5\xe5\xbc\xa1\x79\xf4\xa7\x62\x56\x2c\xdd\xdb\xc2\xd9\x28\x1c\x59\x96\x3b\x61\x39\x29\x5c\xf3\x29\xff\xaa\x11\x18\x72\xc5\x74\x31\xb1\xbe\x65\xdb\x8c\xb4\xa5\x50\x13\x67\x14\x54\x5e\x44\x38\x0e\x11\x11\x07\xfc\xab\x20\x4b\x55\xca\xb4\x2e\x85\xea\xde\xce\x96\xf6\xdd\xbe\x75\x57\x75\x19\xe1\xa2\x84\xc2\xb8\x70\x66\xbd\x56\x74\x5c\xa9\xe7\xd2\x00\x9a\x98\xbf\x95\x78\x2e\x48\xbf\x25\x6d\x4c\x59\x98\xec\xb4\x85\xe5\x6e\x93\xd1\xe5\x0c\x20\x6f\xdb\xfa\x86\xfc\x8d\xc8\xd6\x9a\x79\x90\xa4\x7b\x85\x33\x9d\x81\x5a\xc8\x21\x8f\xfb\xca\x7c\x2a\x2a\x49\x0b\xb9\x5c\xa4\x96\xe7\xab\x12\xbd\xea\x87\xa0\x9f\x86\x5a\x22\xee\xb0\x5e\x89\x7f\x69\x06\xb2\x29\x43\xd5\xf4\x15\xda\x22\xb7\xc6\x63\x8a\xcf\x91\xcf\x35\xf0\x09\x7c\xda\xed\x76\x04\xe3\x5d\x12\x21\x45\xd8\x9e\xbb\xb1\x87\xc8\x0d\x8a\x0c\xc5\x5f\xd9\x38\x04\x29\x71\xdc\xbd\x6d\x3f\xc6\xaf\x25\xf8\xd4\x96\x90\x54\x77\x56\x0b\xdd\x6b\x71\x38\x48\xd1\x69\xa7\xe5\x40\x16\x97\x30\x22\x3c\x3f\x04\x6e\xc0\xcb\x60\xde\xfc\x70\x1e\xc9\x36\xdf\x3b\x99\xe4\xe4\xe4\x64\x43\x99\x16\x04\xe1\xc9\x0d\xd9\x8e\x6e\x53\xf6\x56\x9b\x33\x60\xe1\x65\xc6\x5d\x32\x56\xcf\x6d\xac\x21\xc6\x28\xcb\x4d\x91\x5d\xd8\xb1\x5a\xc6\xbe\xea\x60\xda\x5d\xd4\xda\x13\x51\x36\x44\x46\x1c\x54\x1b\xbf\x12\x09\x62\xff\x78\x54\xa6\xca\x19\x08\x39\xa3\xbe\x93\xcd\x15\x49\x47\xde\x48\xa7\x8f\x1a\x43\x01\x2d\x4b\x26\x09\x72\x9b\x2d\x67\xa0\xc6\x31\x27\x28\x77\xc0\xd4\x91\x4b\xad\x93\x68\xbe\xe1\xd8\x2e\xe7\x77\x06\x6a\x3e\xf4\x62\xbe\xc5\x1e\x9a\xd3\x60\x0f\x09\x35\x39\x36\xa9\xaf\x6c\xd4\x4f\x55\x32\x0c\xe3\xf4\x83\xe3\xda\x98\xa0\x50\x30\xf0\x28\x64\xa5\xc3\x4c\xa9\x0e\x85\x34\x99\x72\xca\xb9\x6a\x6c\xa0\x64\x20\xdc\x37\xc4\x96\xd8\xda\xea\x8a\x27\xc3\x34\x07\x75\xde\xfe\xdb\x3f\xa9\x98\x4d\x80\x6d\x22\x2b\x57\x92\x5a\xea\xce\x48\xb0\x71\xc0\xb6\x78\x62\xb9\xb1\xbc\xfc\x1d\x48\xa6\x02\x11\xa4\x6c\xae\x67\xea\x87\x40\x27\x84\xae\x80\x4b\x19\x7e\x17\x23\x2b\x01\xa1\xc9\x28\x21\xa2\xca\x62\x1f\x98\xd4\x42\x55\x10\x62\x0f\x13\xc8\x00\xa7\xc0\xc1\xdc\x8d\x8c\x9a\x49\xbd\x62\xad\x8d\x63\x5b\xd6\x2b\xc8\x4d\x37\x3b\xf9\xa4\x5e\xd3\xcc\x04\x85\x2a\x9e\xcc\x7e\xcd\xc6\x2c\xad\x88\x59\xda\x38\xf4\xcb\x11\x8e\x09\xb7\x95\xb4\x4c\xe6\x47\xa4\xc2\x3a\x02\xe1\xb8\x2a\xb8\x98\x23\x25\x0c\xa0\x89\x34\x10\x30\x54\xb6\x4f\xfc\xf7\x23\x6f\xf7\xae\xe5\xcb\x1d\x8d\x98\x89\x40\x9f\x5a\x08\xdc\x32\xfa\xa5\x0a\x3c\xea\x53\xc9\x6d\xe7\xea\xab\x4f\xfd\x90\x12\x18\x56\xc1\xa7\x9f\xd8\x40\x0c\x8a\x32\x0a\xae\xa8\x4f\x3f\x55\xc1\x15\xf2\x09\xad\x82\x3e\x8d\x18\x46\xac\xc0\x26\x71\xdc\xf4\x1a\x22\x9b\x33\x65\x74\xe4\x92\x8c\x98\x30\xdb\xd9\x49\x33\x3f\xc8\x67\x80\x41\x08\x7d\x78\xf9\x53\x72\x7d\x54\x52\xfe\xf2\x58\x65\xcd\x92\x85\xad\x98\x49\xba\x69\x34\xe7\xa9\xb3\xde\x50\x46\x2e\xdd\xa2\x9c\x36\xdd\xaf\xb9\xc2\x39\xe3\x6e\x45\x00\x65\x21\x93\xc6\x58\x6b\x20\xf2\x2d\xc4\xc4\xe6\x3d\xf1\x24\x11\x29\xe7\xbc\x84\xe4\xff\x66\xff\x9c\x6d\xd5\xd4\xc2\x7b\x4c\xf4\xb7\x0e\x2d\x0e\xf4\x61\x1b\x55\xb8\x95\x31\x28\xb1\xfe\xea\x3e\x56\x8e\x64\xcd\x76\x5b\xde\xd4\x35\x8e\xc4\x60\x96\xdc\xd6\xd5\x92\xeb\x96\xcd\x25\x99\x7c\xcf\x34\x67\x69\x07\xbb\xbd\x1c\x25\x30\x08\x91\x06\xd2\x5f\x7b\xd8\x24\x69\x67\x8f\x41\x0b\x19\xb8\x18\x42\xf1\xe4\x52\xc6\xb7\x46\x70\xc8\x01\xb7\x72\x59\x7c\x7f\x0f\x8d\x10\xfa\x80\x4d\x8d\x21\x18\x26\xf7\x4f\x39\x1b\xf9\x74\xc5\x60\xa6\x48\x2a\x99\x9b\xdd\xa4\x30\xc5\x17\xc1\xed\x38\xa2\x0b\xfb\x6a\xf1\x88\x80\xac\x3d\x18\x38\x0c\xbe\xc5\xcd\x05\x5a\x9b\x24\xb2\x90\xf5\x9f\xad\x6a\xff\xeb\x4d\xe7\x7f\x03\x00\x00\xff\xff\x8d\x45\xfa\x1b\xe2\x17\x00\x00" func cssHoundCssBytes() ([]byte, error) { return bindataRead( @@ -105,7 +114,7 @@ func cssHoundCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/hound.css", size: 6093, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/hound.css", size: 6114, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -125,7 +134,7 @@ func cssOcticonsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/LICENSE.txt", size: 293, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -145,7 +154,7 @@ func cssOcticonsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/README.md", size: 200, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -165,7 +174,7 @@ func cssOcticonsOcticonsLocalTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons-local.ttf", size: 52764, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -185,7 +194,7 @@ func cssOcticonsOcticonsCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.css", size: 11740, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -205,7 +214,7 @@ func cssOcticonsOcticonsEot() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.eot", size: 31440, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -225,7 +234,7 @@ func cssOcticonsOcticonsLess() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.less", size: 12018, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -245,7 +254,7 @@ func cssOcticonsOcticonsSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.svg", size: 86997, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -265,7 +274,7 @@ func cssOcticonsOcticonsTtf() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.ttf", size: 31272, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -285,7 +294,7 @@ func cssOcticonsOcticonsWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/octicons.woff", size: 17492, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -305,7 +314,7 @@ func cssOcticonsSprocketsOcticonsScss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "css/octicons/sprockets-octicons.scss", size: 11758, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -325,7 +334,7 @@ func excluded_filesTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "excluded_files.tpl.html", size: 459, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -345,7 +354,7 @@ func faviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "favicon.ico", size: 1150, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -365,12 +374,12 @@ func imagesBusyGif() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "images/busy.gif", size: 4178, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _indexTplHtml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x53\x5d\x6f\xd4\x30\x10\x7c\xe7\x57\x2c\x7e\x45\x89\x5f\x91\x88\x4f\xaa\xda\x93\x00\x09\x01\xa5\x20\x78\x42\xae\xbd\x25\x3e\x1c\x6f\xea\xdd\x9c\x38\x9d\xf2\xdf\x91\xeb\xd2\x84\x03\xf1\x91\x97\xcc\x7a\x67\x46\x93\x89\xdc\x3d\xbe\x78\x7d\x7e\xf5\xe9\xcd\x16\x7a\x19\xe2\xe6\x51\x57\x5f\x00\x00\x5d\x8f\xd6\x57\x78\x37\x0e\x28\x16\x5c\x6f\x33\xa3\x18\x35\xc9\x4d\xf3\x54\x9d\xae\x7b\x91\xb1\xc1\xdb\x29\xec\x8d\xfa\xd8\xbc\x3f\x6b\xce\x69\x18\xad\x84\xeb\x88\x0a\x1c\x25\xc1\x24\x46\xbd\xd8\x9a\xad\xff\x82\x0a\xf4\x4a\x2f\x41\x22\x6e\x8e\x47\x68\xaf\x0a\x82\x79\xee\x74\x3d\x5b\x38\x31\xa4\xaf\x90\x31\x1a\xc5\x72\x88\xc8\x3d\xa2\x28\xe8\x33\xde\x18\xe5\x98\x35\x39\x09\x8e\xd2\x02\x5a\xc7\xac\xfe\xc3\xa0\xa7\x29\xf9\x3f\x88\xd0\x66\xd7\xff\x10\x68\x5d\xd2\x3e\x27\x16\x98\x67\x4d\x23\xa6\xcf\x95\xd0\x7e\x1b\xa2\x7a\xd0\xd7\x47\x0e\x23\x1a\x65\xc7\x31\x06\x67\x25\x50\xba\x13\x54\xbe\x47\x76\x39\x8c\xe5\xf4\xc9\xef\xa4\xa5\x05\xa3\xd6\xd5\x3c\x54\xd7\xe9\xe5\x2f\x75\xd7\xe4\x0f\xab\xdc\x3e\xec\x21\x78\xa3\x32\x91\xac\xbe\xe7\xe7\x1d\xf2\x14\x7f\xd9\x6a\x1f\xf6\x2b\xa3\x3a\x2e\x73\x4d\xbb\x10\xf6\x36\xc3\x2b\xf2\x18\x2f\xac\x58\x30\x50\x92\x5e\xe2\x48\x7c\xc6\x2f\x99\x12\xcc\xf3\xb3\x95\xd9\xa9\xfa\xde\x0e\x38\x3b\xa3\x76\xac\x33\x5a\x27\xcd\xf1\xd8\x5e\x16\xf0\x01\x33\x07\x4a\xf3\xdc\x0e\x21\xb5\x3b\x56\x9b\xbf\x3b\xec\x6e\x27\xcc\x87\x62\xb1\x7b\x5b\xd0\xbf\x78\x94\xcc\xef\x68\xca\xae\xd4\x7b\x5f\x6d\xed\xb3\xd3\xf5\x4e\x7c\x0f\x00\x00\xff\xff\xfd\x04\xfc\x1c\x2b\x03\x00\x00" +var _indexTplHtml = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x53\x5d\x6f\xd4\x30\x10\x7c\xef\xaf\x58\xf6\x15\x25\x7e\x45\x22\x3e\xa9\x6a\x4f\x02\x24\x04\x94\x82\xe0\x09\xb9\xf6\xb6\xf1\xe1\xd8\xa9\x77\x73\xe2\x74\xca\x7f\x47\xae\x4b\x13\x0a\xe2\x23\x2f\x99\xf5\xce\x8c\x26\x13\xb9\x7b\x72\xfe\xe6\xec\xf2\xf3\xdb\x2d\xf4\x32\x84\xcd\x49\x57\x5e\x10\x4c\xbc\xd1\x48\x11\x37\x27\x00\x00\x5d\x4f\xc6\x55\x78\x37\x0e\x24\x06\x6c\x6f\x32\x93\x68\x9c\xe4\xba\x79\x86\x8f\xd7\xbd\xc8\xd8\xd0\xed\xe4\xf7\x1a\x3f\x35\x1f\x4e\x9b\xb3\x34\x8c\x46\xfc\x55\x20\x04\x9b\xa2\x50\x14\x8d\x2f\xb7\x7a\xeb\x6e\x08\x41\xad\xf4\xe2\x25\xd0\xe6\x78\x84\xf6\xb2\x20\x98\xe7\x4e\xd5\xb3\x85\x13\x7c\xfc\x0a\x99\x82\x46\x96\x43\x20\xee\x89\x04\xa1\xcf\x74\xad\xd1\x32\xab\x64\xc5\xdb\x14\x17\xd0\x5a\x66\xfc\x0f\x83\x3e\x4d\xd1\xfd\x41\x44\x26\xdb\xfe\x87\x40\xa9\x92\xf6\x45\x62\x81\x79\x56\x69\xa4\xf8\xa5\x12\xda\x6f\x43\xc0\x07\x7d\x7d\xe4\x30\x92\x46\x33\x8e\xc1\x5b\x23\x3e\xc5\x3b\x41\xe5\x3b\x62\x9b\xfd\x58\x4e\x9f\xfe\x4e\x5a\x5a\xd0\xb8\xae\xe6\xa1\xba\x4e\x2d\x7f\xa9\xbb\x4a\xee\xb0\xca\xed\xfc\x1e\xbc\xd3\x98\x53\x92\xd5\xf7\xfc\xbc\x23\x9e\xc2\x2f\x5b\xe5\xfc\x7e\x65\x54\xc7\x65\xae\x69\x17\xc2\xde\x64\x78\x9d\x1c\x85\x73\x23\x06\x34\x94\xa4\x17\x34\x26\x3e\xe5\x57\x9c\x22\xcc\xf3\xf3\x95\xd9\x63\xf5\xbd\x1d\x70\xb6\x1a\x77\xac\x32\x19\x2b\xcd\xf1\xd8\x5e\x14\xf0\x91\x32\xfb\x14\xe7\xb9\x1d\x7c\x6c\x77\x8c\x9b\xbf\x3b\xec\x6e\x27\xca\x87\x62\xb1\x7b\x57\xd0\xbf\x78\x94\xcc\xef\xd3\x94\x6d\xa9\xf7\xbe\xda\xda\x67\xa7\xea\x25\xf9\x1e\x00\x00\xff\xff\x70\xff\x0d\x39\x35\x03\x00\x00" func indexTplHtmlBytes() ([]byte, error) { return bindataRead( @@ -385,7 +394,7 @@ func indexTplHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "index.tpl.html", size: 811, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "index.tpl.html", size: 821, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -405,7 +414,7 @@ func jsJsxtransformer0122Js() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "js/JSXTransformer-0.12.2.js", size: 471852, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -425,12 +434,12 @@ func jsCommonJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.js", size: 2075, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "js/common.js", size: 2075, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsCommonTestJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x97\x51\x8b\x2a\x37\x14\x80\xdf\xfd\x15\x87\xf8\x50\x85\x59\x73\xed\x4b\xd9\x59\x6c\x2f\xa5\xe5\x52\xb8\xb0\xb0\xb4\x85\x3e\x66\xc6\xa3\x93\x36\x93\x0c\xc9\x19\x75\x3b\xe4\xbf\x97\xcc\xe8\x8c\x8e\x76\x75\xb7\x56\x5a\xee\x06\x04\x9d\xe4\xe4\x9c\x7c\xf9\x26\x41\x99\x17\xc6\x12\x54\xf0\xe3\xa6\x10\x7a\xfe\xab\xb0\x2e\x82\x5f\xac\xfa\xd9\x3c\x61\x61\xc0\xc3\xc2\x9a\x1c\xd8\x84\xa7\x26\xcf\x8d\x66\x0f\x83\xc1\x1c\x5d\x6a\x65\x82\x23\xd6\xc5\xb0\x08\x46\x63\x98\x7d\x0b\xd5\x00\x00\x80\xd0\xd1\x88\x3d\x61\xa1\x44\x8a\x0e\x08\xf3\x42\x09\x42\x58\x09\x2b\x45\xa2\xd0\xc1\x5a\x52\x06\x94\xa1\xb4\xb0\x12\xaa\xc4\xfe\x0c\xa1\xa5\x46\x3b\xea\x82\x67\xc0\x7e\x02\x91\x03\xd9\x67\xa9\x97\x40\x06\xaa\x15\xda\xc4\x43\xfe\x0c\x95\x36\xa5\xf6\xec\xa1\x17\xdb\x4c\x0d\x33\xa8\x20\x0c\x8d\x81\xad\x85\xcb\x58\x04\x61\x78\x0c\x6c\x2e\x5d\x86\x8e\x81\xef\x02\x71\x53\x60\x4a\xa3\x6e\x69\xa3\x5d\x01\xd1\x76\xba\xf1\x78\x42\xe6\x7b\x1c\xb5\x21\xa1\xf5\x4b\x0b\x79\x42\x61\xdb\x0c\xed\xd8\x71\x93\xc9\x8f\x1f\x06\x7b\xa4\x7e\x30\xe8\xf4\x57\x04\xb6\x21\x06\xa5\x56\xd2\x11\xce\x3b\x60\x17\xe1\xf9\x84\x14\x98\x42\x85\x9b\x42\x21\xc9\x15\x7a\x30\x25\x81\x59\x9c\x65\x34\xad\x21\x6d\xb1\x38\x12\x79\x01\xa9\x51\x0a\x53\x92\x46\xd7\x80\x5e\x41\x68\x7a\x1a\xd1\xcb\xe5\x1d\x25\xed\x33\x3b\x97\xbb\xf2\xbb\xb4\xbb\x67\x7b\xb0\x6b\xe0\x9d\xb9\xad\xe1\x27\xc5\xfd\x84\x1a\x6d\x60\x5a\x5a\xd5\xbc\x00\x36\xbc\x0c\xb5\xb3\x73\x5c\x88\x52\xd1\x39\x6b\xeb\x80\xd9\xde\xe3\xd0\x4a\xab\x62\x60\x19\x51\xe1\x62\xce\xd7\xeb\xf5\x64\x29\x29\x2b\x93\x49\x6a\x72\xfe\x9b\x29\xed\xa3\x5d\x0a\x2d\xff\x14\x61\xfd\x3c\x94\xf7\xa8\x31\x8c\x61\xd1\x21\xc9\xd2\xaa\xbb\x42\x10\xa1\xd5\x2c\x3e\xe8\x3a\x4c\x58\x0f\x4e\x84\xc3\xbb\xd2\x2a\x16\x03\xab\x4a\xab\x3c\x4f\x94\x49\x78\x65\x71\xe5\x79\x55\x08\xca\x7c\x25\x74\x9a\x19\xeb\x7b\x79\x42\x6b\x7a\x62\x60\xc3\xcf\x95\x92\x1a\x3d\x3b\x18\xe2\xdb\x5f\xbe\x2f\x56\x98\x39\x58\x19\x98\x4e\x68\x43\xac\xd7\x1f\x66\x83\x19\xe8\x52\xa9\x23\x78\xab\x10\x98\x0b\xb9\x67\xc1\x76\xeb\xdb\x9d\x1b\x05\xc4\x51\x9d\x25\xaa\xe7\x8a\x42\xdc\x69\xf3\x5e\x89\xbc\x01\x14\xd2\xf3\xe3\xe2\x4f\xbf\xc1\x97\x2b\x03\x42\xcf\xeb\x7a\xdf\xdd\xf9\xc7\xee\xb0\xe9\xd7\xfd\x9e\xff\xa0\x3b\xc3\xcf\xfb\x65\x5e\xea\xcf\xc2\x58\x70\x2e\x03\x47\xcf\x0a\xaf\x7a\x00\x2d\x25\x7d\xec\x56\x12\x7f\xa9\xf2\xdc\xe2\xe0\xe1\xfc\x56\xc7\xcd\x4e\x97\x44\x52\x52\xa6\x7f\x20\x41\x8e\x36\x2d\xad\x14\x6a\x4f\xa1\xb7\xe8\xe2\x5c\x16\x73\x9e\x2d\x3f\xb6\x53\x4f\x8c\x5d\xfe\xed\x6a\xae\xa3\x0c\xb4\xce\x38\x9b\x36\x6c\xce\x1a\xc3\x9a\xae\x3a\x76\x58\x2d\xa4\x42\x2d\x72\xf4\x77\xff\x67\x7d\x2e\x63\xde\x41\xba\xa6\x40\xfd\x93\x27\xfc\x53\x78\xbb\x40\xe1\xd4\x39\x58\x4d\xfc\xcd\xfd\xfd\xfd\xbb\x46\xb7\xd7\xe8\x65\xf0\xff\x92\x4b\x68\x57\x68\xaf\x72\x12\x1d\x8a\x24\x75\x50\x42\xa8\xfa\x2a\xbb\x95\x51\x99\x71\x54\x4b\xc1\x0b\x6b\x7e\xc7\x94\x1c\xaf\xb6\xdf\x3c\x0f\x0b\x70\xe1\x96\x2b\x8c\xe7\x89\x35\x6b\x87\x5b\xe9\xbe\x13\x34\xab\x6f\xbf\x8b\xed\x6b\x94\x8b\xae\xec\xdc\xf4\xc3\x2d\x8d\xdb\xdf\xa1\x8e\xd7\xd1\x2e\x35\xd8\xda\x2b\xb1\xe1\xb6\x5b\x48\x20\x17\xaa\x1b\x4e\x3f\x9c\xb4\x31\x7c\xfe\x0a\x00\x00\xff\xff\x57\xce\x40\x30\xcb\x10\x00\x00" +var _jsCommonTestJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x97\x51\x8b\x2a\x37\x14\x80\xdf\xfd\x15\x87\xf8\x50\x85\x59\x73\xed\x4b\xd9\x59\x6c\x2f\xa5\xe5\x52\x58\x58\x58\xda\x42\x1f\x33\xe3\xd1\x49\x9b\x49\x86\xe4\x8c\xba\x1d\xf2\xdf\x4b\x66\x74\x46\x47\xbb\xba\x5b\x91\x96\x6e\x40\xd0\x49\x4e\xce\xc9\x97\x6f\x12\x94\x79\x61\x2c\x41\x05\x3f\x6e\x0a\xa1\xe7\xbf\x0a\xeb\x22\xf8\xc5\xaa\x9f\xcd\x33\x16\x06\x3c\x2c\xac\xc9\x81\x4d\x78\x6a\xf2\xdc\x68\xf6\x30\x18\xcc\xd1\xa5\x56\x26\x38\x62\x5d\x0c\x8b\x60\x34\x86\xd9\xb7\x50\x0d\x00\x00\x08\x1d\x8d\xd8\x33\x16\x4a\xa4\xe8\x80\x30\x2f\x94\x20\x84\x95\xb0\x52\x24\x0a\x1d\xac\x25\x65\x40\x19\x4a\x0b\x2b\xa1\x4a\xec\xcf\x10\x5a\x6a\xb4\xa3\x2e\x78\x06\xec\x27\x10\x39\x90\x7d\x91\x7a\x09\x64\xa0\x5a\xa1\x4d\x3c\xe4\x2f\x50\x69\x53\x6a\xcf\x1e\x7a\xb1\xcd\xd4\x30\x83\x0a\xc2\xd0\x18\xd8\x5a\xb8\x8c\x45\x10\x86\xc7\xc0\xe6\xd2\x65\xe8\x18\xf8\x2e\x10\x37\x05\xa6\x34\xea\x96\x36\xda\x15\x10\x6d\xa7\x1b\x8f\x27\x64\xbe\xc7\x51\x1b\x12\x5a\xbf\xb4\x90\x27\x14\xb6\xcd\xd0\x8e\x1d\x37\x99\xfc\xf8\x61\xb0\x47\xea\x07\x83\x4e\x7f\x45\x60\x1b\x62\x50\x6a\x25\x1d\xe1\xbc\x03\x76\x11\x9e\x2f\x48\x81\x29\x54\xb8\x29\x14\x92\x5c\xa1\x07\x53\x12\x98\xc5\x59\x46\xd3\x1a\xd2\x16\x8b\x23\x91\x17\x90\x1a\xa5\x30\x25\x69\x74\x0d\xe8\x0d\x84\xa6\xa7\x11\xbd\x5e\xde\x51\xd2\x3e\xb3\x73\xb9\x2b\xbf\x4b\xbb\x7b\xb6\x07\xbb\x06\xde\x99\xdb\x1a\x7e\x52\xdc\x2f\xa8\xd1\x06\xa6\xa5\x55\xcd\x0b\x60\xc3\xcb\x50\x3b\x3b\xc7\x85\x28\x15\x9d\xb3\xb6\x0e\x98\xed\x3d\x0e\xad\xb4\x2a\x06\x96\x11\x15\x2e\xe6\x7c\xbd\x5e\x4f\x96\x92\xb2\x32\x99\xa4\x26\xe7\xbf\x99\xd2\x3e\xd9\xa5\xd0\xf2\x4f\x11\xd6\xcf\x43\x79\x4f\x1a\xc3\x18\x16\x1d\x92\x2c\xad\xba\x2b\x04\x11\x5a\xcd\xe2\x83\xae\xc3\x84\xf5\xe0\x44\x38\xbc\x2b\xad\x62\x31\xb0\xaa\xb4\xca\xf3\x44\x99\x84\x57\x16\x57\x9e\x57\x85\xa0\xcc\x57\x42\xa7\x99\xb1\xbe\x97\x27\xb4\xa6\x27\x06\x36\x7c\xac\x94\xd4\xe8\xd9\xc1\x10\xdf\xfe\xf2\x7d\xb1\xc2\xcc\xc1\xca\xc0\x74\x42\x1b\x62\xbd\xfe\x30\x1b\xcc\x40\x97\x4a\x1d\xc1\x5b\x85\xc0\x5c\xc8\x3d\x0b\xb6\x5b\xdf\xee\xdc\x28\x20\x8e\xea\x2c\x51\x3d\x57\x14\xe2\x4e\x9b\xf7\x46\xe4\x0d\xa0\x90\x9e\x1f\x17\x7f\xfa\x0d\xbe\x5c\x19\x10\x7a\x5e\xd7\xfb\xe1\xce\x3f\x76\x87\x4d\xbf\xee\xf7\xfc\x0b\xdd\x19\x3e\xee\x97\x79\x89\x3f\xc6\x82\x73\x19\x38\x7a\x51\x78\xd5\xb3\x67\x29\xe9\x73\xb7\x88\xf8\xff\xea\xcd\x2d\xce\x1c\xce\x6f\x71\xd2\x6c\x4d\x49\x24\x25\x65\xfa\x07\x12\xe4\x68\xd3\xd2\x4a\xa1\xf6\xec\x79\x8f\x29\xce\x65\x31\xe7\xd9\xf2\x73\x3b\xf5\xc4\xd8\xe5\xdf\x2e\xe4\x3a\xb6\x40\xab\x8b\xb3\x69\x83\xe5\xac\x2c\xac\xe9\xaa\x63\x87\xd5\x42\x2a\xd4\x22\x47\x7f\xf7\x5f\x36\xe7\x32\xe6\x1d\xa4\x2b\xb9\xd3\x3f\x6f\xc2\x5f\x83\xf7\xbb\x13\xce\x9a\x83\x85\xc4\xdf\xdc\xdf\xdf\x7f\x18\x74\x7b\x83\x5e\x07\x7f\x7d\x8d\xd0\xae\xd0\x5e\xe5\xfc\x39\x74\x48\xea\x60\x83\x50\xf5\xdd\x75\x2b\x99\x32\xe3\xa8\xf6\x81\x17\xd6\xfc\x8e\x29\x39\x5e\x6d\xbf\x79\x1e\x16\xe0\xc2\xb5\x56\x18\xcf\x13\x6b\xd6\x0e\xb7\xbe\x7d\x27\x68\x56\x5f\x77\x17\x8b\xd7\xd8\x16\x5d\x59\xb7\xe9\xa7\x5b\xca\xb6\xbf\x43\x1d\xaf\xa3\x5d\x6a\xb0\xb5\x77\x60\xc3\x6d\xb7\x90\x40\x2e\x54\x37\x9c\x7e\x3a\x29\x62\xf8\xfc\x15\x00\x00\xff\xff\x43\x65\x5d\xcd\xb7\x10\x00\x00" func jsCommonTestJsBytes() ([]byte, error) { return bindataRead( @@ -445,7 +454,7 @@ func jsCommonTestJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/common.test.js", size: 4299, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "js/common.test.js", size: 4279, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -465,12 +474,12 @@ func jsExcluded_filesJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/excluded_files.js", size: 4159, mode: os.FileMode(420), modTime: time.Unix(1617311114, 0)} + info := bindataFileInfo{name: "js/excluded_files.js", size: 4159, mode: os.FileMode(436), modTime: time.Unix(1618526827, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x7b\x7b\x8f\x23\x37\x8e\xf8\x57\x71\x0b\x81\x21\xc5\x72\xb5\x9d\xec\xef\x77\x7b\xe5\x51\xfa\x92\x99\xc9\xee\xdc\x66\x32\x7b\x33\xb3\xd9\x3f\x1c\x63\xa0\xae\xa2\x6d\x65\xca\x92\x5b\x52\xf5\xe3\xdc\x05\xec\x07\xb9\xfb\x72\xfb\x49\x0e\x7a\xd4\xcb\x8f\x7e\x04\xc9\xe1\x80\x46\xb7\x2d\x51\x14\x49\x91\x14\x29\xb2\xcf\x96\xa5\xcc\xac\x50\x12\x03\xd9\x5d\x73\x3d\xb0\x6c\x57\xcd\xea\xc1\x81\xc1\x9a\xec\xc4\x12\xdb\xb9\x5e\x10\x0d\xb6\xd4\x72\xe0\x3e\x27\x70\xbb\x55\xda\x9a\x99\x5b\xc2\x99\x1b\x62\x3b\x91\x6a\x5a\xa4\x67\x53\x1a\x27\xd3\x5d\x55\xcd\xe2\x22\x70\x8b\x32\x5e\x14\x98\xd7\x6b\x29\xa7\xed\x67\x43\x28\x4f\x0a\x76\x36\x69\xc7\x2a\x93\x6c\x18\x50\x93\x64\xcc\x52\x93\xe4\xac\x25\x95\x5a\xaa\xc9\xce\x24\xca\x7d\x24\xf7\xf7\xef\x2e\x7f\x81\xcc\x26\x39\x2c\x85\x84\xbf\x6a\xb5\x05\x6d\xef\x3c\xd8\x0e\x64\xb9\x01\xcd\x2f\x0b\x48\xcf\x26\x74\x05\x36\xd5\x15\xa9\xa8\x49\x34\xeb\xb2\x8e\x4a\x19\x56\xe7\xe8\x8c\xd9\xbb\x2d\xa8\xe5\xe0\xc3\xdd\xe6\x52\x15\xc3\x61\xf8\x9b\x58\xf5\xc1\x6a\x21\x57\x1f\xf9\x6a\x38\x3c\xb5\xe3\x21\x2c\xdd\x5d\xf3\xa2\x84\x14\xbd\x55\x79\x59\x00\xaa\x08\x3d\xb5\x18\x7d\xfa\x04\x26\x82\xd5\xcb\xce\x26\x81\x5c\xdb\x63\xdf\x1f\xca\x74\x68\x87\x43\x0c\xcc\x60\x20\x84\xfe\x71\x68\xeb\x13\x82\x99\x58\xe2\x3f\xb8\x59\xa4\xfc\x56\x88\xd5\x3c\xc1\x70\xe8\x7e\x92\x76\xa7\x76\x91\x3b\x4b\xcd\x22\x71\x99\x06\x6e\x01\xcb\xb2\x28\x88\x43\x67\x12\x8d\xf5\x29\xd2\x35\x45\x39\x2c\x79\x59\x58\xb4\x2f\xf1\xc0\x05\x54\x84\x7e\xe5\x09\x32\x5e\x2e\xad\x90\x81\x2c\x95\xc6\x5e\x8d\x06\x42\x0e\x80\x98\x24\xc7\x9a\x72\xda\xb0\x6b\xc9\xae\x51\x22\xbb\xa8\x92\x4b\x21\x73\x4f\x17\xe5\x84\xd4\xfa\xa5\x9d\x8c\x24\x3b\xd4\xe6\x3d\x6e\x2f\x1a\x88\x16\x6b\x12\x69\xaf\xd2\x23\x93\x8d\x06\x3b\xba\x2c\x45\x1c\x51\x4b\xa8\x75\xdb\xa9\xbd\x23\x89\x80\x51\x44\x5b\xad\xac\x72\x4c\x26\x6b\x6e\xde\xdd\xc8\x5a\x58\xc1\x0a\xdc\x02\x87\x63\xcb\x10\xa2\x06\x9b\xc4\xb0\x29\xa9\xf0\xbc\xa7\xe3\xc6\xe9\xa5\x81\x81\x93\x59\x66\x51\x6b\x96\x3a\x6c\x58\x4b\xce\x38\xc9\x59\x02\x0c\x12\x0d\xdb\x82\x67\x80\xd1\x0e\x8d\xcc\x08\x55\x88\xda\xb9\x59\x34\x62\x82\xaa\xc1\xc1\xc3\x16\x94\x07\x49\x49\x06\x49\xa9\x8b\x06\xc1\xf9\xcf\xc9\x4a\xd8\x2f\xce\x29\x42\x84\x0a\x06\x73\x54\xea\x62\xbc\xe5\xd6\x82\x96\x68\x41\x95\x23\x3c\x73\xbf\x0a\xf7\xab\x74\xbf\x72\x66\x13\x53\x5e\x86\x23\xc6\x36\x29\xb8\xb1\x6f\x64\x0e\xb7\xef\x96\x18\x9d\x23\x32\x9a\x12\xba\x66\xe6\x42\x63\x91\x70\x99\xad\x95\xa6\xbb\x42\x48\x48\x0d\x5d\x8a\x02\x24\xdf\x40\x9a\x57\x24\x45\x68\x76\xfe\x73\x72\x23\x3e\x8b\x2f\xce\x13\xb8\x85\x0c\x4b\x32\x1c\x62\xc9\x64\x97\x3c\x37\x7f\x4e\xd1\xb9\xfb\x8b\x08\xb5\xcc\x76\x67\x37\x79\xa4\x7d\xcd\x10\x22\x5e\xb7\x97\xec\x1c\xaf\x84\xbd\x5f\xaf\xc8\xbf\xe1\xe4\xcb\x0b\x82\xd3\xf9\x64\xfc\xaf\x8b\x11\xb9\xc0\xe9\xfd\xcf\xe7\x04\x27\x5f\x12\x1c\xff\x36\x1b\xd7\xa2\x5b\x0e\x87\x58\x31\x74\x7e\x8e\x46\xcb\xf9\x57\x0b\x9a\xb1\xe5\xfc\xff\x2d\x68\xc1\x96\xf3\x7f\x59\xd0\xe5\xfc\xeb\xc5\x70\x88\x4b\xe6\x3e\x10\x2a\x99\x1a\x95\x23\x74\x8e\x46\x99\xff\x5d\x10\xaa\xb1\x98\xa3\x4b\x6e\x60\x5c\xea\x02\x2d\xe8\xae\xd4\x45\x2a\xe9\x5a\x19\xeb\x19\x57\xd4\x79\xbd\xb4\xa4\x5b\xad\x9c\x02\xa5\x19\xd5\xb0\x55\x69\x41\xb7\xdc\xae\x53\x4b\x35\x5c\xa7\x9c\x06\xb9\xa5\xeb\x8a\x54\xad\x46\xe2\x43\xc5\xe5\x15\x21\x15\x7d\x50\x9d\x9c\x49\x5b\x12\xcd\xde\xe0\x09\xa1\x9c\x75\x10\x55\x33\xde\x2a\x31\xdb\x15\xc2\x58\x90\xa0\x4d\x3a\x5f\x50\xcb\xb7\x69\xd7\xd6\xec\x5a\x98\xa4\x81\x60\xfd\xaf\x89\x29\x44\x06\x0e\xff\xde\xf8\xb6\x34\x6b\x0c\xa4\xa2\xa5\xdc\x47\x18\x8c\x77\x0f\x5e\x44\x5d\x02\x32\x1b\x4f\xcf\x98\xf3\x7e\xbf\x6e\x63\xb3\xf5\x13\x96\x4e\x9d\x90\x34\x17\x06\xba\xb6\xef\x36\x07\xf6\xad\xd6\xfc\xae\x63\xc6\x1e\x59\xbc\xc3\xf4\xaa\xdc\x80\xb4\x86\x4e\xc8\x6c\x0f\xf7\x52\xe9\xd7\x3c\x5b\x63\xdc\x75\x60\x36\xe1\xdb\x6d\x71\xe7\xc9\xa5\x40\xdc\xd9\x54\xb3\x60\x76\xfb\x47\x04\x89\xb1\x77\x05\x24\x06\x6c\xe3\x5f\x9d\x9d\x22\x44\x2a\x2a\x7a\x1e\xae\xb6\x7f\xcb\x10\x1a\xe1\xc9\x3d\x10\x6a\xd8\x7c\x31\xb3\x49\x01\x72\x65\xd7\xdf\x4c\x66\xc4\x24\xa5\x34\x6b\xb1\xb4\x78\xcf\x36\x3d\xc4\xf8\x6b\x5a\x7f\x24\xc1\x84\x5a\x98\x09\x6d\xa1\x48\xeb\x05\x7f\x51\x42\x62\x44\x1d\x35\xaa\x47\x4d\xed\x62\x18\xdc\xdf\xef\xae\x52\x84\xa8\x48\x91\x54\x5b\x40\xde\xba\x8d\x1b\x81\xdb\xac\x28\x73\xf8\xbe\xfe\xee\x34\xdc\xa4\xe8\x4b\xd4\x57\xd5\x06\x99\x65\xf6\xfe\x7e\x57\x51\xb8\xc0\xd0\x21\x6d\x4a\xfc\x11\x5a\x8c\x86\x88\x1c\x91\x78\x54\x20\xc3\xa0\x86\x63\x88\xcc\xbe\x62\xcc\x44\x8e\x86\x43\x6c\xe6\xd3\x05\x73\xbf\x3a\x5e\x63\x74\xbe\xa2\x68\xe0\x9c\xc9\x3c\x87\x4c\xe5\xf0\xb7\xf7\x6f\x5e\xaa\xcd\x56\x49\x90\x16\x9b\xf9\x64\x41\x16\xec\xe8\xcc\x74\x41\xdc\xa9\x52\x4b\x52\x5b\xe1\x42\x65\xdc\x11\x92\x18\xe0\x3a\x5b\xbb\x13\xa7\x19\xdb\xdd\x88\xa2\xf8\xe0\x47\x52\x09\x37\x03\x4e\x73\x91\xf7\xbe\x3b\x80\x1f\x14\xcf\xdf\x2a\x0d\x2d\xc8\xe1\xc8\x6b\xad\x95\xee\x03\xbc\xf7\x92\x0c\x43\x3f\xf1\x42\xc4\x81\x13\x36\xe5\xe5\x4e\x8d\x8b\xf5\x9a\x5b\x70\x29\x0a\x0b\xfa\x50\x8a\x9a\xd9\x39\x2c\x86\xc3\x33\x33\x87\x45\xa3\x07\x73\x58\xb8\x68\x4d\x7b\x37\xe3\xf6\x7a\xa9\x4a\x69\x8f\xdc\xa0\xf1\x3a\xfc\x0c\x77\x06\xb7\x7b\x93\x78\x10\x15\x75\xc4\x1f\x1a\x9f\x37\x14\xcb\xf6\xc6\x2d\x53\x98\xcc\x20\xe9\xf2\x9c\x78\xf3\xc5\x40\x21\x62\xa6\x08\x9d\x31\x66\x93\x2b\x77\xf3\x07\xf1\x62\x4b\x2a\x17\xc4\x1c\x8b\xf2\xde\xaa\x1c\x8a\x57\xdc\xf2\x5a\x67\xfe\xfd\xc3\xbb\x1f\x93\x2d\xd7\x06\x70\x3b\x47\xb5\x8f\x8b\xbb\xa1\x8a\x21\x7a\xce\x9d\x0a\xf1\x46\x2a\x2d\x7f\x4c\xd3\x6b\x25\xf2\x81\xc5\xa4\xfa\x22\xe1\xbf\xf0\x5b\xec\x1d\x3e\xe2\x5b\x71\x7e\x3d\x3d\xf7\x40\x88\xe6\xdc\xf2\x8f\x77\x5b\x48\xd1\x2f\x46\x49\x44\x4d\x99\x65\x60\x3a\xc7\xe6\x1d\x42\xc0\x68\xa8\x43\x46\xc1\x9f\xfd\xbe\xd7\xc8\x94\x34\xaa\x80\xc4\xcf\x62\x43\x2a\x17\x35\x46\xdd\x3a\x70\xd4\xad\x1e\x46\xe1\x45\xb7\x34\x6b\x35\x84\x1a\xf6\x8a\x5b\x48\xa4\xba\xc1\x3e\xfe\x43\x88\x31\x86\x81\x7d\x91\xc0\xad\x05\x99\xe3\x9d\xb1\xdc\x9a\x14\x2d\x95\x59\xab\x8e\x25\x53\x2d\x57\x29\x4a\xbf\x9a\xa0\x8a\x02\x21\x81\x78\x17\xa7\x46\x36\xd0\x97\xce\xbe\x9c\x80\xf9\xc6\x30\xa0\x0e\x31\x24\x57\x4d\x76\x91\x68\x30\x65\x61\x9d\x23\xa3\xcd\x97\xef\xee\xdc\x59\xb3\x5d\x15\xa5\x9a\x34\x96\x53\x73\x40\x6d\xf2\x3e\xc0\x92\xd9\x31\x81\x07\x4b\x0c\x12\x4f\x81\x5a\x2f\xf4\x3f\xbd\xfe\xf8\x84\x33\x00\x1f\x6d\x43\xe2\xad\x8e\xf8\xbd\xfd\xc7\x66\xeb\x7a\x6a\x06\x85\x81\x68\x33\x50\x93\x43\x39\x83\xe4\x83\x93\x15\x95\xce\x39\xd7\x3a\x24\x9c\x0e\x69\x22\x96\x58\xcf\xc5\x22\x28\x9f\x62\xee\xf3\x4c\x86\x9b\x71\xe7\x78\x4e\x05\x7d\x0f\xd7\xa9\x4a\xde\xc3\xb5\x30\x42\x49\xfa\x96\xdb\x6c\x0d\x26\x55\x49\xfc\x44\xbd\x3b\xfd\xbb\xb0\x6b\x3f\x90\xaa\xa4\x3f\x50\x91\x4a\x26\x46\x69\xdb\xb5\xed\xae\x93\xad\x11\xd5\xee\x1e\xf6\x06\xee\xef\x1d\x37\x5b\x95\x38\xbf\x56\x80\xf3\x7b\x5c\x03\xb6\x7e\xd0\xb9\x3d\xaf\x38\x99\xb3\x10\x79\xdc\x1b\x67\xf3\x80\x61\xc1\xc0\x7b\xc9\xe6\x90\xe5\xc1\x19\x67\xd4\x26\x5e\xb5\xd8\xee\x03\xe8\x6b\xd0\x29\x4f\x5e\x95\xda\xfb\x53\xfa\x51\x59\x5e\xa4\xad\x66\x8e\x23\xf3\x29\x0f\x3c\xbf\xdb\x82\x84\xbc\xa2\xc7\x15\x24\x6e\x54\x6f\x40\xaa\x23\xd6\x64\x5c\x66\x79\x78\xc6\xce\x24\xd0\xc7\x35\x0c\x8c\xa7\x69\x70\xa9\xd5\x67\x18\xe4\xea\x46\xa2\x60\x6b\x8d\x93\x3e\xee\x71\xa9\xa9\x1d\x6f\x87\xd7\x39\x2c\xa8\x66\x66\x4f\xda\x94\x33\xb3\x77\x82\x63\x4d\x25\x7b\xcb\xed\x3a\xd9\x08\x89\xbf\x82\xaf\x29\x77\x41\x39\x67\x4c\x5e\x20\x94\x22\x34\x92\x33\x9b\x74\x6f\x8f\x9e\x61\x53\x97\x4f\xc9\x70\x4a\xaa\xb5\x60\x4f\x50\xb0\x43\xba\x73\x56\xab\x47\x28\x45\x23\x11\x6d\x19\xaa\x27\x58\x92\x7a\x96\x25\x85\xc7\x04\x7d\xda\x92\xf4\x81\x25\x71\xa6\x6b\x4b\x72\xd7\x4f\x23\xac\x8e\xd8\x32\x25\x33\x6e\x31\xaf\x07\x48\x38\xfe\x7d\x51\x50\x68\x55\xe0\x37\x3d\xfa\x1f\xf9\x06\xbe\x57\xda\x5b\xeb\x43\xf7\xad\xa3\x5f\x2c\xf1\x99\xed\xa7\xdc\x86\x59\x97\x79\x79\x4d\xd8\xcf\x98\x1c\xbc\x7e\x31\xe9\x2f\x70\xfa\xd1\xc6\x42\x7a\x34\x25\xc7\xb3\x36\x79\x88\x90\xea\xf1\xb4\x89\xe5\xe4\x8b\xc9\x05\x4f\xbb\xb8\xe4\x68\x4a\x35\x19\xa1\xc1\xf9\x00\x8d\x78\x45\xff\xa6\x8b\x8f\x6a\x8f\xaf\x3a\x69\xec\x5d\xef\x58\x27\x9c\xe0\x1e\xab\x11\xae\xaa\x68\xc1\xde\x03\x6f\x9e\x14\x5e\x16\xdc\x18\xbc\xcb\x85\xd9\x16\xfc\xce\xc9\x2e\x45\x6e\x8b\x77\x5b\x87\xdf\x5d\x24\x32\x07\x7d\x24\x90\xe8\x22\x79\x5d\x80\x8b\xbf\x31\x52\x71\x55\x7c\x2d\x09\x2a\xad\xd5\xd6\x24\x7e\x80\x1a\x28\x20\xb3\x90\x77\x67\xea\xb1\x8a\xee\x83\xbb\xf3\xa4\xe5\xa3\xe4\x06\xc7\xf2\x1d\xd7\x88\x66\x75\x0c\xf8\x77\x51\x14\x6f\xf7\x43\xa0\x36\x96\x99\x65\xfd\xa0\xc5\xf2\x6d\x37\x43\x88\x81\x3f\x58\x77\x51\x00\xde\xf1\xa2\x08\xf1\x5b\x37\x7a\x32\xa4\xf2\x99\x43\xbb\xe9\x2b\x91\x3f\xb0\x67\xa2\x61\x69\x92\xab\x64\x05\xf6\xd5\xbb\xb7\x3f\xaa\x1c\x7c\xf0\x64\xc0\x7e\x6b\xad\x16\x97\xa5\x05\x8c\x78\x69\x95\xc3\x57\x80\x05\x44\x91\x5a\x2e\x51\x4c\x97\x5c\x02\xe2\x9d\x03\x6e\xc5\x14\xa7\xd6\xdc\x7c\x9b\x5f\x73\x99\x41\xfe\x93\x93\x9b\xc1\x64\x38\x0c\x8b\xd6\xea\xa6\x9e\xc2\x84\x42\xb2\x54\x59\x69\x5c\xdc\xb2\x02\xfb\x46\x0a\x2b\x78\xe1\x79\x3c\x3c\x60\x1f\x50\x40\x1a\x5e\x76\x6a\xfe\xe7\x8b\xe8\x8d\xe6\x8b\xaa\xa2\x57\x25\xe8\xbb\x3f\x29\xfb\x17\xb8\x73\xf6\xd7\xb3\x36\x73\x23\x6c\xb6\xc6\xe0\x64\xf5\x52\xe5\xee\xd2\xe1\x06\x06\x7f\x98\xa4\xad\x2c\x7c\x1e\xd2\x93\x47\x4d\xdf\xec\x52\x03\xff\x3c\xf3\x4b\xbe\xfe\x63\x58\xb2\x16\x39\xb4\xbc\x74\x21\xa6\x5f\x07\x08\x53\x5e\x6e\x84\xfd\x0f\x47\x15\x26\x1d\xfa\xbe\x77\x48\x0f\xe3\xae\x23\x62\xbb\xbf\x3f\xb2\x55\x15\x12\xa6\xe7\x31\x5a\x53\x2d\x9a\x3d\x5e\x6f\xb6\xf6\xae\x39\x99\xfe\x16\xf4\x94\x82\x1c\x13\xc8\x29\x76\x6b\x2a\x4f\xb0\xdb\xd7\x85\xaa\x97\xfc\xfd\x9f\xe7\x6d\x8f\xd8\x27\xb2\xd8\xc1\xd2\x55\xf0\x8e\x9f\x51\x32\x78\x8f\xf7\x70\x55\x82\xb1\x10\xaf\xe1\x55\x63\x6c\x24\xd8\xca\x7b\x58\xbd\xbe\xdd\x1e\x71\x83\x2e\xc5\x0b\x93\xf8\x24\x9f\xde\x99\x25\x56\x8b\x4d\x4f\x1a\xc2\x71\xdc\x87\xcc\xd6\x90\x7d\x86\xfc\x02\x89\x15\x4a\xd1\x0a\x85\xcd\x03\x29\x87\x5e\x25\x4b\xda\xd4\xb2\xb3\xbb\xb7\x50\x1f\x53\x41\xf4\xa3\x6d\x56\x19\x62\x1a\xc6\xb2\xa4\x49\x12\xdd\xb1\x61\x60\xf3\x05\xa1\xbb\xab\xf4\x69\x4c\x84\x17\x84\x07\x2d\xb9\x07\xdf\x7b\x68\x68\x97\x75\x87\x1f\x58\x1d\x03\xa0\xf6\xad\x83\x8a\xf4\x69\x62\x0c\xd9\x50\x7c\xf7\xa8\x2a\x6a\x0e\x85\x59\x47\x06\x6d\x48\x78\xc0\x3b\xd5\xec\xa1\xed\x28\x67\x0f\x49\x82\x4a\xf6\x04\x8e\x67\xf1\xce\x73\xc9\x17\xd5\x35\x07\x2c\x72\xc0\x18\xb6\xee\x07\x12\x41\x12\xab\x7e\x50\x37\xa0\x5f\x72\x03\x98\x90\xfb\x7b\x64\x75\x09\x88\x31\x7b\x7f\x8f\xa6\xee\x2f\xe5\x0d\x2e\x4f\x0e\x95\xcd\xf7\xee\xfe\x15\x3d\xf0\x80\x87\x0a\x1e\xb2\xf7\xa7\x1e\xf4\xfd\xfd\x1e\xfc\xd3\x4e\x38\xba\xdd\x47\x8e\xf3\x00\x79\x50\xf4\x43\xac\x15\xdd\xf3\x4c\xc7\xd8\x62\xcf\x60\x6b\x38\xdc\x83\x7f\x1a\x5b\x15\xed\x3a\xa4\x87\xa2\x02\x9e\x5f\xf7\x75\xc6\x76\x26\x2f\xb9\xec\xab\xca\x49\x3d\x7d\x50\x0d\x9f\xa2\x84\x2e\xa0\x44\x6b\x10\xab\xb5\x45\xd4\x07\x23\x2e\x70\x75\x83\x5b\x9e\xe7\x42\xae\x10\x45\xd3\xc9\xf6\x76\x30\xf1\xe3\x96\xa2\x0d\xbf\x1d\x37\x0b\x9a\x51\xb5\xe5\x99\xb0\x77\x61\xa8\xa2\xdd\x0b\xe1\x37\x13\xc3\x03\x06\xbb\xc7\xc7\xe4\x90\x89\xe3\xf4\x4f\x27\x93\xed\xed\x21\x0f\x53\x44\xa8\x69\x43\xa7\xc3\x90\xb8\xc3\x47\x70\xbb\x75\xc0\x54\xe7\x90\x96\xcd\x17\xe1\x7d\xaf\x03\x14\xd4\xf7\x68\x82\x1e\xdf\xf3\x7c\x72\x7e\x04\xeb\xd1\x35\x36\x3c\x53\x1c\x8b\xcb\x8b\x3a\x20\xef\x44\xe0\x6e\x8b\x8a\x34\xcf\x05\xba\x4b\xbe\xcf\xc7\x29\x67\x08\x35\x05\xbd\xe1\x10\x73\x76\x34\xe6\xcf\xc5\x35\xa2\xbb\xcc\x05\xe6\x21\x1e\xf7\xab\x51\x45\x9f\x01\x3d\x2e\x60\x69\x4f\x2d\xe1\x88\xee\xd6\x1a\x96\x29\x8a\x8a\x9b\x7f\x0a\xea\xbd\xb6\x9b\x02\xd1\x0e\xae\x42\xc8\xcf\xe3\x95\xe6\x77\xa8\xa2\xe8\x75\x04\x1e\x78\x3d\x47\x84\x3c\x8b\x20\xed\x55\xe2\xa9\x4c\x5c\xf3\x02\x55\x54\x60\x9d\xf8\x27\x11\x42\xd1\xc6\x0c\xac\xfb\x88\x08\x45\x83\x73\xf4\x6c\x3c\xe1\xb1\x25\x20\x0a\x99\xee\xaf\xc1\xa4\xc3\xcb\x05\x45\x83\x65\x14\xc2\xc3\x62\x10\x79\x8a\x84\xdc\x96\x8f\x70\x1e\xc0\xf8\x29\xa0\x80\x21\x80\x5d\xa1\xf8\x24\x61\xe1\xd6\x22\xea\xf3\xe2\xb5\x2a\x9c\x01\xc5\xc4\x6d\x70\x79\xe7\x22\x28\xb8\xdd\xba\x6c\x73\xe9\x97\x74\xd3\xa0\xd4\x67\x41\x54\xc9\xbf\xc0\xdd\x2b\x17\xa1\x7a\x45\xdd\xcb\x3d\xa8\x92\x21\x26\xec\x4d\xfa\xa1\xea\xa9\x07\x7f\x59\x5a\xab\xe4\x98\xe7\xf9\x58\xc9\x53\xbc\x05\xa0\xc8\x5c\xae\x72\x6e\x1d\x69\x2f\x0b\x91\x7d\x3e\x88\x5c\xab\x27\x49\xfb\xf2\x71\x59\xf3\xfc\x3a\xca\xc6\x7d\x3a\x01\x6e\xb6\x5c\xf6\x19\x52\x99\x15\x99\x92\x83\xf8\x77\x9c\xad\xe1\x5a\x2b\x39\x2e\xb7\x03\xe7\x91\xc7\x1e\x6d\x8f\xf8\xae\xa3\x7e\xb2\xdc\x96\x02\x8a\xfc\x14\x55\x05\xbf\x84\xc2\x19\xb0\xdd\x14\xdf\x2b\xed\xa0\x9d\x22\x56\x14\x39\xcd\x1c\xfc\x95\xdb\x35\x7a\xd6\x46\xe3\x07\xf5\xb3\x56\xbd\xae\xce\x39\x09\x86\x5d\xfb\xea\xa7\xbb\x4a\x17\x01\xf6\xb4\x6c\x2f\xf1\xeb\x6b\x59\x2f\xdf\x7a\xec\xac\x7f\xb5\xbc\xba\x97\x75\xc7\xad\x0d\xfe\x57\xc5\xd7\x23\xe2\x01\x29\xf6\xe1\xf6\x84\x79\x3c\xe1\xec\xcb\xf4\x58\x9e\xf7\xbb\x89\x56\xac\xa4\xd2\x30\x76\x01\xa7\x93\xec\x1b\xff\x75\xe0\xe2\xea\xdf\x43\xa6\xde\xda\x3b\x3b\x46\xbf\xe8\x83\xdb\x4b\x75\x1b\x25\x28\x02\x35\xbf\x31\xcb\x1d\xf8\x4d\x59\x58\x11\xa2\x80\x4f\x71\xba\x11\x48\x28\x83\x55\x14\x7d\xf0\xf3\x03\x17\x6d\xfc\x96\xa2\x08\xdb\x46\x59\xc4\x9a\x5b\x17\x83\xd2\x9b\x71\xa6\xa4\xd5\xaa\x18\x74\xe8\x44\xd4\x7f\xd9\x86\x16\x26\x23\xfe\x13\xd2\xe6\xf5\x7d\xfa\xff\x29\x90\x20\xba\x9a\x7a\xfb\xd8\x2d\xd7\xf5\xf9\x5c\x46\xc1\xfb\x4f\x7d\x4f\xde\x09\xde\x4f\x30\x04\x1b\x44\xfd\x0b\x19\x6a\xc2\x5b\x7f\x4d\x87\x73\x1e\xb8\xb3\xa4\x83\x50\xc9\x75\xd7\xdc\x96\xdb\x35\x1d\x18\x5b\x2e\x97\x83\x42\x7c\x86\x81\x5d\x73\x9b\xb8\xd0\x84\xfb\xb7\xce\xfc\x48\xc7\x94\x0f\x1c\x21\xf9\x41\x48\xf8\xb1\xdc\x5c\x82\xa6\x9a\x41\xf2\x1d\x2c\x95\xae\xd3\xf9\x19\x24\xdf\x2e\x2d\xe8\xfa\x6b\x93\xed\x47\xa8\x23\xe1\x22\xe5\x4d\xc0\xb8\x0b\x68\x53\x33\xd6\x23\x4e\x5f\x2a\x69\x41\xda\x14\x42\x61\x2b\x3d\x9b\x56\xa1\x92\xbe\x07\xdc\x02\x7a\xd2\x6a\xe8\x49\x45\x68\x4d\xcd\xb1\x6d\xf5\xe1\xb6\x23\x3d\x9a\x9e\xde\xb6\xa2\xeb\x46\x28\x03\xc0\xb6\x6d\x25\x80\xb6\x09\xc2\x39\xaa\x88\xc1\x37\x27\x0a\x29\x41\xff\xf9\xe3\xdb\x1f\xaa\xd9\x3a\x01\x96\xab\xcc\xf7\x87\x1c\xd3\x86\xba\x17\xe9\xb1\x47\x66\xef\x91\x7e\x12\x70\xe3\x94\xe4\x68\x75\x29\x4b\xea\xe1\xce\x0b\xad\x0f\xf2\x1f\xcb\x19\x6a\xc8\xeb\x3a\xdf\x69\x97\xd6\x49\x4e\x3d\xe2\x7c\x6d\xfd\x1c\x11\xc6\x36\xb1\xea\xc8\xbb\x83\x3e\xf4\xac\xeb\x91\x92\xe9\x64\xd3\x7b\xe0\xd6\x6d\x9b\x59\x88\x10\x25\xdf\xc0\xa9\x6e\x16\xaf\x7e\x6e\x7d\x4e\xa8\x76\xea\xc8\xd9\x24\x14\x33\x82\xb6\xf1\x17\x72\xc6\x47\xa3\x80\x50\xf8\x02\x3c\x55\xcc\x5e\xd8\x79\xd3\xb0\x32\x5d\x24\xf1\xb4\xc7\xd3\x99\x98\x4f\xea\xaf\x2f\x98\xba\x10\xc7\xb3\x19\x88\x20\xdf\xa8\x0b\x5b\x77\x26\xa5\x76\x38\x8c\xc5\xd0\xe1\x10\x77\xf1\x8f\xb1\x1a\xd7\x2b\xc8\x22\x80\xb0\xb3\x89\x53\xa1\x14\xdb\xe1\x50\x07\x14\xd6\x65\x94\x82\x54\x75\xa5\xb5\x3b\xa1\x2b\xac\x9b\x92\xd5\xbe\xbc\x48\x53\xfc\x3a\x31\x71\xd0\x0d\x7a\x16\x09\xad\x6b\x45\x6b\x0c\x49\x54\x51\xd2\x14\x9d\x9d\x64\xe3\xa0\x17\xed\x6c\xe6\xcc\xa3\x29\x12\xb1\x49\xdd\xd0\x1b\xba\xdf\x8c\x2f\x40\x9d\x71\xb2\x8b\x64\xaf\xb1\x21\xf1\xf9\xb4\x6a\x87\xf6\x9b\x86\x6a\x74\x63\xee\x24\x5f\xb7\x17\x11\x1a\x57\xa0\x17\xb0\xf9\x06\x8d\xd6\xd8\x4d\x93\x11\x7a\x71\xee\xbe\xbb\xf4\xda\x1c\x6f\x1f\x6c\xe4\xa7\xe3\x8b\x1c\x22\x15\xd6\xd4\x34\xcf\x8c\x4f\x73\xbd\x85\x90\xf0\x68\xca\x97\x25\x4d\xd1\x0b\x5b\x2a\xa9\x8e\x87\xec\x9c\x7e\x17\x97\x2c\x37\x88\x5a\xae\x57\x60\x53\xf4\xe9\xb2\xe0\xf2\xb3\x4f\x7f\xa2\x4a\x3c\x35\x62\x2e\x5c\xda\x44\x73\x2e\x57\xa0\x55\x69\x8a\xbb\x0f\x60\xdf\xd4\xce\x24\xdd\x7d\xfa\xe4\xae\xca\x94\x57\x31\x71\x7e\x16\xbf\xde\x50\x51\xe5\x5c\xfd\x73\x97\xba\x48\xf3\xc9\xb9\xa8\x15\xf6\x34\xf4\x09\xc1\x76\xbc\x80\xbf\xce\x80\x54\x9d\xb1\x67\xc4\x22\x05\x8c\x2f\x55\xee\xf2\x6f\x11\x3a\xb0\x44\xf7\x11\x21\x2a\xdf\x0b\x3e\x1c\x62\x71\xfc\x35\xa1\xc9\xaf\xba\x92\x53\x5c\xef\xdd\xcd\xad\x0f\xae\x28\x72\x1f\x07\xbc\x28\x06\x88\x72\x8a\x06\xd1\x23\x0e\x84\x1c\x20\x9a\x25\x9d\x7a\x30\xb6\xcf\x89\xab\x42\xc0\x2d\xa9\xf0\x77\xf3\xf6\x09\x65\x53\x53\x16\x36\xdc\x11\xcf\x28\x44\x76\xda\x7f\x1e\x29\x43\xc6\x6a\x79\xa8\xc9\xf9\x1c\x37\x35\xc9\x55\xac\x42\x3e\x5e\xd0\xeb\x2e\xaf\x8e\x5d\x49\x62\x89\x3b\x8f\x40\xbe\x20\x4f\x1e\xd7\x53\x17\xcb\x49\x35\x0e\xd8\x7b\xf1\x9c\xc7\x70\x32\x16\xb4\x5a\xc9\x55\x1d\x3e\xbd\x7e\xff\xfe\xdd\xfb\x14\xf5\x9e\xbb\x02\x01\xce\xe5\x39\x98\xfa\xe5\xb7\x7e\x3b\xf3\xbc\x0c\x87\x13\x76\x6c\xbc\xf6\x72\xcf\xa5\xbe\xa2\xe8\x9f\xff\xf8\xaf\x1f\x95\x5d\x0b\xb9\x1a\x2c\x95\x1e\xdc\xa9\x92\x0e\x5e\xf1\x9b\x55\xf2\xcf\x7f\xfc\xf7\x43\x8f\x2f\x81\x8f\xc9\x20\x52\x80\x48\x43\xf9\x51\x0a\xeb\x02\xad\x1f\xf3\x67\xf9\x2b\x88\x3d\x9e\x6f\x6c\x56\x88\xee\x8c\xce\x52\x24\x36\x7c\x05\xe6\xfc\xb2\x34\x77\xc9\x4a\x2c\xd1\x83\x29\x7d\x60\x20\x68\xa2\x90\xab\x24\x71\x81\xe9\xec\xe0\x69\x33\xc6\x20\x96\xe1\x43\xa6\xee\xef\xe7\x8b\xfd\xbb\xd3\x6b\xf1\xb3\xbc\x9d\x8b\x7b\x7e\x1b\x6f\x77\xe8\xe0\x37\xb0\xe2\xe3\xfd\x77\x91\xb0\xe1\x93\x2f\x09\xe7\x12\x51\xb5\xef\x59\x42\xf7\xd5\x09\xf7\xb2\xa4\xbb\xe8\x95\xd2\xa6\xbd\xcb\x77\x90\xbb\x65\xd7\xa1\xb3\x3c\x60\xa0\x41\xbe\x29\xd0\x6e\x0c\x97\xda\x83\x26\xb2\x27\xde\x22\x21\xd3\x8a\xfa\x62\xbd\x27\xdb\x3c\xea\xc9\xbe\xdd\x6e\x9f\xe6\xc2\x94\x7f\xa3\x0f\x3d\x83\x3e\xfd\xba\x98\x2f\xd2\xfa\x65\x3b\xf6\xfa\x52\x14\x2b\x16\xad\x23\xbb\x4a\x21\xb9\xa2\x22\x85\x44\xc4\x52\x62\x5d\xa9\xea\x15\x0a\xfb\xe5\xaa\x58\x06\xb4\x15\xa9\xfb\x74\x1e\x6d\xe4\xf0\xc1\x18\x74\xab\xa4\xbd\xb7\x77\xd2\x94\x43\xa1\x5f\x0e\x35\x3d\xa7\x1b\xfb\x1d\xfc\x75\x96\x75\x3a\xd9\xf6\xf7\xf2\x51\x75\xac\x47\x98\xba\x27\xa5\x83\x29\x74\x68\xf2\x96\x0f\xda\xd4\xb1\xea\x8b\xe3\x88\xb3\xd7\xb5\x46\x1c\x60\x6e\xca\xd2\x98\xc4\xee\x29\xef\xd9\x5b\x3a\x9b\x96\xab\x03\xa9\x84\xff\xd7\xfa\x5d\x37\x0f\x4d\x5b\x47\xce\xe3\x29\xfb\x86\x20\xc4\xa3\xb5\x01\xe7\x8d\x90\xb9\xba\x49\x78\x9e\xbf\xbe\x06\x69\x7f\x88\x0d\xfe\x18\x6d\xd5\xd6\x1f\x69\xf7\xdf\x2e\xa0\xdb\x9f\x7c\xec\x44\xea\x4e\x1a\x47\x6b\xdb\x93\xec\xae\xd1\x83\x86\x80\xc3\x2e\x83\x72\x9b\x73\x0b\x7f\x16\xc6\x2a\x7d\x87\xa1\x8b\xa3\xa9\x47\xf5\x04\xd5\x69\x25\xe8\xad\x3d\xd2\x9e\xd6\xb4\xaa\x6f\xb9\x5d\x3b\x47\x33\x42\x17\x57\x0c\x8d\x40\x1e\x74\xb9\x43\x72\x45\x46\x68\x28\x4e\xcd\x0a\x37\xeb\xad\xea\x14\x84\x9f\x74\x50\x5d\x33\x3b\x05\xdc\x85\x71\x6b\x62\xfb\xf0\x28\xda\xd2\x6c\x1d\x78\xf2\x39\x45\x3c\xcd\xf0\x9f\x32\x15\x45\xc8\xff\x7b\xd5\xf3\x5a\xc9\xda\x3b\xe9\xd8\x74\x49\x77\xfe\xd5\xc6\xb4\xbd\x5f\xb1\x77\x21\xde\xa8\x75\x8b\x40\xf8\x2a\xba\x1d\x0b\x61\xe8\x88\xbf\xe9\xc6\x1e\x47\x1c\xcf\x5e\xe5\xee\x88\xaa\xc4\xd0\x74\x6f\xf8\xc4\xcd\xb2\x8d\x2c\xe8\x4e\xd8\xd8\xe7\xc1\xff\x5f\x0a\x99\x85\xc5\x41\x7a\xed\x89\x1c\x43\xb9\xf1\x02\x23\xb4\x79\xf0\x58\x81\x8d\x73\xdf\xdd\xbd\xc9\x31\xd2\x4a\x59\xe4\x2d\xd4\xf9\x06\x4c\xaa\x05\x99\xfd\x4f\x00\x00\x00\xff\xff\xcf\xcd\xbd\x41\x74\x3a\x00\x00" +var _jsHoundJs = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x7b\xfd\x8e\x23\x37\x8e\xf8\xab\xb8\x85\xc0\x90\x62\xb9\xda\x4e\xf6\xf7\xbb\xbd\xf2\x28\x7d\xc9\xcc\x64\x77\x6e\x33\x99\xbd\x99\xd9\xec\x1f\x8e\x31\x50\x57\xd1\xb6\x32\x65\xc9\x2d\xc9\xfd\x71\xee\x02\xf6\x41\xee\x5e\x6e\x9f\xe4\xa0\x8f\xfa\xb2\xcb\xfd\x11\x24\x87\x03\x1a\xdd\xb6\x44\x51\x24\x45\x52\xa4\xc8\x3e\x5b\xee\x64\x66\x85\x92\x18\xc8\xfe\x9a\xeb\x81\x65\xfb\x72\x56\x0d\x0e\x0c\xd6\x64\x2f\x96\xd8\xce\xf5\x82\x68\xb0\x3b\x2d\x07\xee\x73\x02\xb7\x5b\xa5\xad\x99\xb9\x25\x9c\xb9\x21\xb6\x17\xa9\xa6\x45\x7a\x36\xa5\x71\x32\xdd\x97\xe5\x2c\x2e\x02\xb7\x28\xe3\x45\x81\x79\xb5\x96\x72\xda\x7c\x36\x84\xf2\xa4\x60\x67\x93\x66\xac\x34\xc9\x86\x01\x35\x49\xc6\x2c\x35\x49\xce\x1a\x52\xa9\xa5\x9a\xec\x4d\xa2\xdc\x47\x72\x7f\xff\xee\xf2\x17\xc8\x6c\x92\xc3\x52\x48\xf8\xab\x56\x5b\xd0\xf6\xce\x83\xed\x41\xee\x36\xa0\xf9\x65\x01\xe9\xd9\x84\xae\xc0\xa6\xba\x24\x25\x35\x89\x66\x6d\xd6\xd1\x4e\x86\xd5\x39\x3a\x63\xf6\x6e\x0b\x6a\x39\xf8\x70\xb7\xb9\x54\xc5\x70\x18\xfe\x26\x56\x7d\xb0\x5a\xc8\xd5\x47\xbe\x1a\x0e\x4f\xed\x78\x0c\x4b\xf7\xd7\xbc\xd8\x41\x8a\xde\xaa\x7c\x57\x00\x2a\x09\x3d\xb5\x18\x7d\xfa\x04\x26\x82\x55\xcb\xce\x26\x81\x5c\xdb\x61\xdf\x1f\xca\x74\x68\x87\x43\x0c\xcc\x60\x20\x84\xfe\x71\x68\xab\x13\x82\x99\x58\xe2\x3f\xb8\x59\xa4\xfc\x56\x88\x55\x3c\xc1\x70\xe8\x7e\x92\x66\xa7\x66\x91\x3b\x4b\xcd\x22\x71\x99\x06\x6e\x01\xcb\x5d\x51\x10\x87\xce\x24\x1a\xeb\x53\xa4\x6b\x8a\x72\x58\xf2\x5d\x61\xd1\xa1\xc4\x03\x17\x50\x12\xfa\x95\x27\xc8\x78\xb9\x34\x42\x06\xb2\x54\x1a\x7b\x35\x1a\x08\x39\x00\x62\x92\x1c\x6b\xca\x69\xcd\xae\x25\xfb\x5a\x89\xec\xa2\x4c\x2e\x85\xcc\x3d\x5d\x94\x13\x52\xe9\x97\x76\x32\x92\xec\x58\x9b\x0f\xb8\xbd\xa8\x21\x1a\xac\x49\xa4\xbd\x4c\x7b\x26\x6b\x0d\x76\x74\x59\x8a\x38\xa2\x96\x50\xeb\xb6\x53\x07\x47\x12\x01\xa3\x88\xb6\x5a\x59\xe5\x98\x4c\xd6\xdc\xbc\xbb\x91\x95\xb0\x82\x15\xb8\x05\x0e\xc7\x96\x21\x44\x0d\x36\x89\x61\x53\x52\xe2\x79\x47\xc7\x8d\xd3\x4b\x03\x03\x27\xb3\xcc\xa2\xc6\x2c\x75\xd8\xb0\x92\x9c\x71\x92\xb3\x04\x18\x24\x1a\xb6\x05\xcf\x00\xa3\x3d\x1a\x99\x11\x2a\x11\xb5\x73\xb3\xa8\xc5\x04\x65\x8d\x83\x87\x2d\x28\x0f\x92\x92\x0c\x92\x9d\x2e\x6a\x04\xe7\x3f\x27\x2b\x61\xbf\x38\xa7\x08\x11\x2a\x18\xcc\xd1\x4e\x17\xe3\x2d\xb7\x16\xb4\x44\x0b\xaa\x1c\xe1\x99\xfb\x55\xb8\x5f\x3b\xf7\x2b\x67\x36\x31\xbb\xcb\x70\xc4\xd8\x26\x05\x37\xf6\x8d\xcc\xe1\xf6\xdd\x12\xa3\x73\x44\x46\x53\x42\xd7\xcc\x5c\x68\x2c\x12\x2e\xb3\xb5\xd2\x74\x5f\x08\x09\xa9\xa1\x4b\x51\x80\xe4\x1b\x48\xf3\x92\xa4\x08\xcd\xce\x7f\x4e\x6e\xc4\x67\xf1\xc5\x79\x02\xb7\x90\x61\x49\x86\x43\x2c\x99\x6c\x93\xe7\xe6\xcf\x29\x3a\x77\x7f\x11\xa1\x96\xd9\xf6\xec\x26\x8f\xb4\xaf\x19\x42\xc4\xeb\xf6\x92\x9d\xe3\x95\xb0\xf7\xeb\x15\xf9\x37\x9c\x7c\x79\x41\x70\x3a\x9f\x8c\xff\x75\x31\x22\x17\x38\xbd\xff\xf9\x9c\xe0\xe4\x4b\x82\xe3\xdf\x7a\xe3\x4a\x74\xcb\xe1\x10\x2b\x86\xce\xcf\xd1\x68\x39\xff\x6a\x41\x33\xb6\x9c\xff\xbf\x05\x2d\xd8\x72\xfe\x2f\x0b\xba\x9c\x7f\xbd\x18\x0e\xf1\x8e\xb9\x0f\x84\x4a\xa6\x46\xbb\x11\x3a\x47\xa3\xcc\xff\x2e\x08\xd5\x58\xcc\xd1\x25\x37\x30\xde\xe9\x02\x2d\xe8\x7e\xa7\x8b\x54\xd2\xb5\x32\xd6\x33\xae\xa8\xf3\x7a\xe9\x8e\x6e\xb5\x72\x0a\x94\x66\x54\xc3\x56\xa5\x05\xdd\x72\xbb\x4e\x2d\xd5\x70\x9d\x72\x1a\xe4\x96\xae\x4b\x52\x36\x1a\x89\x8f\x15\x97\x97\x84\x94\xf4\x41\x75\x72\x26\x6d\x49\x34\x7b\x83\x27\x84\x72\xd6\x42\x54\xce\x78\xa3\xc4\x6c\x5f\x08\x63\x41\x82\x36\xe9\x7c\x41\x2d\xdf\xa6\x6d\x5b\xb3\x6b\x61\x92\x1a\x82\x75\xbf\x26\xa6\x10\x19\x38\xfc\x07\xe3\xdb\x9d\x59\x63\x20\x25\xdd\xc9\x43\x84\xc1\x78\x0f\xe0\x45\xd4\x25\x20\xb3\xf1\xf4\x8c\x39\xef\xf7\xeb\x36\x36\x5b\x3f\x61\xe9\xd4\x09\x49\x73\x61\xa0\x6d\xfb\x6e\x73\x60\xdf\x6a\xcd\xef\x5a\x66\xec\x91\xc5\x3b\x4c\xaf\x76\x1b\x90\xd6\xd0\x09\x99\x1d\xe0\x5e\x2a\xfd\x9a\x67\x6b\x8c\xdb\x0e\xcc\x26\x7c\xbb\x2d\xee\x3c\xb9\x14\x88\x3b\x9b\x72\x16\xcc\xee\xf0\x88\x20\x31\xf6\xae\x80\xc4\x80\xad\xfd\xab\xb3\x53\x84\x48\x49\x45\xc7\xc3\x55\xf6\x6f\x19\x42\x23\x3c\xb9\x07\x42\x0d\x9b\x2f\x66\x36\x29\x40\xae\xec\xfa\x9b\xc9\x8c\x98\x64\x27\xcd\x5a\x2c\x2d\x3e\xb0\x4d\x0f\x31\xfe\x9a\x56\x1f\x49\x30\xa1\x06\x66\x42\x1b\x28\xd2\x78\xc1\x5f\x94\x90\x18\x51\x47\x8d\xea\x50\x53\xb9\x18\x06\xf7\xf7\xfb\xab\x14\x21\x2a\x52\x24\xd5\x16\x90\xb7\x6e\xe3\x46\xe0\x36\x2b\x76\x39\x7c\x5f\x7d\x77\x1a\x6e\x52\xf4\x25\xea\xaa\x6a\x8d\xcc\x32\x7b\x7f\xbf\x2f\x29\x5c\x60\x68\x91\x36\x25\xfe\x08\x2d\x46\x43\x44\x7a\x24\x1e\x15\xc8\x30\xa8\xe0\x18\x22\xb3\xaf\x18\x33\x91\xa3\xe1\x10\x9b\xf9\x74\xc1\xdc\xaf\x96\xd7\x18\x9d\xaf\x28\x1a\x38\x67\x32\xcf\x21\x53\x39\xfc\xed\xfd\x9b\x97\x6a\xb3\x55\x12\xa4\xc5\x66\x3e\x59\x90\x05\xeb\x9d\x99\x2e\x88\x3b\x55\x6a\x49\x6a\x4b\x5c\xa8\x8c\x3b\x42\x12\x03\x5c\x67\x6b\x77\xe2\x34\x63\xfb\x1b\x51\x14\x1f\xfc\x48\x2a\xe1\x66\xc0\x69\x2e\xf2\xce\x77\x07\xf0\x83\xe2\xf9\x5b\xa5\xa1\x01\x39\x1e\x79\xad\xb5\xd2\x5d\x80\xf7\x5e\x92\x61\xe8\x27\x5e\x88\x38\x70\xc2\xa6\xbc\xdc\xa9\x71\xb1\x5e\x7d\x0b\x2e\x45\x61\x41\x1f\x4b\x51\x33\x3b\x87\xc5\x70\x78\x66\xe6\xb0\xa8\xf5\x60\x0e\x0b\x17\xad\x69\xef\x66\xdc\x5e\x2f\xd5\x4e\xda\x9e\x1b\x34\x5e\x87\x9f\xe1\xce\xe0\x66\x6f\x12\x0f\xa2\xa4\x8e\xf8\x63\xe3\xf3\x86\x62\xd9\xc1\xb8\x65\x0a\x93\x19\x24\x6d\x9e\x13\x6f\xbe\x18\x28\x44\xcc\x14\xa1\x33\xc6\x6c\x72\xe5\x6e\xfe\x20\x5e\x6c\x49\xe9\x82\x98\xbe\x28\xef\xad\xca\xa1\x78\xc5\x2d\xaf\x74\xe6\xdf\x3f\xbc\xfb\x31\xd9\x72\x6d\x00\x37\x73\x54\xfb\xb8\xb8\x1d\xaa\x18\xa2\xe7\xdc\xa9\x10\xaf\xa5\xd2\xf0\xc7\x34\xbd\x56\x22\x1f\x58\x4c\xca\x2f\x12\xfe\x0b\xbf\xc5\xde\xe1\x23\xbe\x15\xe7\xd7\xd3\x73\x0f\x84\x68\xce\x2d\xff\x78\xb7\x85\x14\xfd\x62\x94\x44\xd4\xec\xb2\x0c\x4c\xeb\xd8\xbc\x43\x08\x18\x0d\x75\xc8\x28\xf8\xb3\x3f\xf4\x1a\x99\x92\x46\x15\x90\xf8\x59\x6c\x48\xe9\xa2\xc6\xa8\x5b\x47\x8e\xba\xd1\xc3\x28\xbc\xe8\x96\x66\x8d\x86\x50\xc3\x5e\x71\x0b\x89\x54\x37\xd8\xc7\x7f\x08\x31\xc6\x30\xb0\x2f\x12\xb8\xb5\x20\x73\xbc\x37\x96\x5b\x93\xa2\xa5\x32\x6b\xd5\xb2\x64\xaa\xe5\x2a\x45\xe9\x57\x13\x54\x52\x20\x24\x10\xef\xe2\xd4\xc8\x06\xfa\xd2\xd9\x97\x13\x30\xdf\x18\x06\xd4\x21\x86\xe4\xaa\xce\x2e\x12\x0d\x66\x57\x58\xe7\xc8\x68\xfd\xe5\xbb\x3b\x77\xd6\x6c\x5f\x46\xa9\x26\xb5\xe5\x54\x1c\x50\x9b\xbc\x0f\xb0\x64\xd6\x27\xf0\x60\x89\x41\xe2\x29\x50\xeb\x85\xfe\xa7\xd7\x1f\x9f\x70\x06\xe0\xa3\x6d\x48\xbc\xd5\x11\xbf\xb7\xff\x58\x6f\x5d\x4d\xcd\xa0\x30\x10\x6d\x06\x2a\x72\x28\x67\x90\x7c\x70\xb2\xa2\xd2\x39\xe7\x4a\x87\x84\xd3\x21\x4d\xc4\x12\xeb\xb9\x58\x04\xe5\x53\xcc\x7d\x9e\xc9\x70\x33\xee\x1d\xcf\xa9\xa0\xef\xe1\x3a\x55\xc9\x7b\xb8\x16\x46\x28\x49\xdf\x72\x9b\xad\xc1\xa4\x2a\x89\x9f\xa8\x77\xa7\x7f\x17\x76\xed\x07\x52\x95\x74\x07\x4a\x52\xca\xc4\x28\x6d\xdb\xb6\xdd\x76\xb2\x15\xa2\xca\xdd\xc3\xc1\xc0\xfd\xbd\xe3\x66\xab\x12\xe7\xd7\x0a\x70\x7e\x8f\x6b\xc0\xd6\x0f\x3a\xb7\xe7\x15\x27\x73\x16\x22\xfb\xbd\x71\x36\x0f\x18\x16\x0c\xbc\x97\xac\x0f\x59\x1e\x9d\x71\x46\x6d\xe2\x55\x8b\xed\x3f\x80\xbe\x06\x9d\xf2\xe4\xd5\x4e\x7b\x7f\x4a\x3f\x2a\xcb\x8b\xb4\xd1\xcc\x71\x64\x3e\xe5\x81\xe7\x77\x5b\x90\x90\x97\xb4\x5f\x41\xe2\x46\xd5\x06\xa4\xec\xb1\x26\xe3\x32\xcb\xe3\x33\x76\x26\x81\x3e\xae\x61\x60\x3c\x4d\x83\x4b\xad\x3e\xc3\x20\x57\x37\x12\x05\x5b\xab\x9d\x74\xbf\xc7\xa5\xa6\x72\xbc\x2d\x5e\xe7\xb0\xa0\x9a\x99\x03\x69\x53\xce\xcc\xc1\x09\x8e\x35\x95\xec\x2d\xb7\xeb\x64\x23\x24\xfe\x0a\xbe\xa6\xdc\x05\xe5\x9c\x31\x79\x81\x50\x8a\xd0\x48\xce\x6c\xd2\xbe\x3d\x3a\x86\x4d\x5d\x3e\x25\xc3\x29\xa9\xc6\x82\x3d\x41\xc1\x0e\xe9\xde\x59\xad\x1e\xa1\x14\x8d\x44\xb4\x65\x28\x9f\x60\x49\xea\x59\x96\x14\x1e\x13\xf4\x69\x4b\xd2\x47\x96\xc4\x99\xae\x2c\xc9\x5d\x3f\xb5\xb0\x5a\x62\xcb\x94\xcc\xb8\xc5\xbc\x1a\x20\xe1\xf8\x0f\x45\x41\xa1\x51\x81\xdf\xf4\xe8\x7f\xe4\x1b\xf8\x5e\x69\x6f\xad\x0f\xdd\xb7\x8e\x7e\xb1\xc4\x67\xb6\x9b\x72\x1b\x66\x5d\xe6\xe5\x35\xe1\x30\x63\x72\xf0\xfa\xc5\xa4\xbb\xc0\xe9\x47\x13\x0b\xe9\xd1\x94\xf4\x67\x6d\xf2\x18\x21\xd5\xe3\x69\x1d\xcb\xc9\x17\x93\x0b\x9e\xb6\x71\xc9\xd1\x94\x6a\x32\x42\x83\xf3\x01\x1a\xf1\x92\xfe\x4d\x17\x1f\xd5\x01\x5f\x55\xd2\xd8\xb9\xde\xb1\x4e\x38\xc1\x1d\x56\x23\x5c\x59\xd2\x82\xbd\x07\x5e\x3f\x29\xbc\x2c\xb8\x31\x78\x9f\x0b\xb3\x2d\xf8\x9d\x93\x5d\x8a\xdc\x16\xef\xb6\x0e\xbf\xbb\x48\x64\x0e\xba\x27\x90\x68\x23\x79\x5d\x80\x8b\xbf\x31\x52\x71\x55\x7c\x2d\x09\x2a\xad\xd5\xd6\x24\x7e\x80\x1a\x28\x20\xb3\x90\xb7\x67\xaa\xb1\x92\x1e\x82\xbb\xf3\xa4\xbb\x47\xc9\x0d\x8e\xe5\x3b\xae\x11\xcd\xaa\x18\xf0\xef\xa2\x28\xde\x1e\x86\x40\x4d\x2c\x33\xcb\xba\x41\x8b\xe5\xdb\x76\x86\x10\x03\x7f\xb0\xee\xa2\x00\xbc\xe7\x45\x11\xe2\xb7\x76\xf4\x64\x48\xe9\x33\x87\x66\xd3\x57\x22\x7f\x60\xcf\x44\xc3\xd2\x24\x57\xc9\x0a\xec\xab\x77\x6f\x7f\x54\x39\xf8\xe0\xc9\x80\xfd\xd6\x5a\x2d\x2e\x77\x16\x30\xe2\x3b\xab\x1c\xbe\x02\x2c\x20\x8a\xd4\x72\x89\x62\xba\xe4\x12\x10\xef\x1c\x70\x23\xa6\x38\xb5\xe6\xe6\xdb\xfc\x9a\xcb\x0c\xf2\x9f\x9c\xdc\x0c\x26\xc3\x61\x58\xb4\x56\x37\xd5\x14\x26\x14\x92\xa5\xca\x76\xc6\xc5\x2d\x2b\xb0\x6f\xa4\xb0\x82\x17\x9e\xc7\xe3\x03\xf6\x01\x05\xa4\xe1\x65\xa7\xe2\x7f\xbe\x88\xde\x68\xbe\x28\x4b\x7a\xb5\x03\x7d\xf7\x27\x65\xff\x02\x77\xce\xfe\x3a\xd6\x66\x6e\x84\xcd\xd6\x18\x9c\xac\x5e\xaa\xdc\x5d\x3a\xdc\xc0\xe0\x0f\x93\xb4\x91\x85\xcf\x43\x3a\xf2\xa8\xe8\x9b\x5d\x6a\xe0\x9f\x67\x7e\xc9\xd7\x7f\x0c\x4b\xd6\x22\x87\x86\x97\x36\xc4\xf4\xeb\x00\x61\x76\x97\x1b\x61\xff\xc3\x51\x85\x49\x8b\xbe\xef\x1d\xd2\xe3\xb8\xab\x47\x6c\xf7\xf7\x3d\x5b\x95\x21\x61\x7a\x1e\xa3\x15\xd5\xa2\xde\xe3\xf5\x66\x6b\xef\xea\x93\xe9\x6e\x41\x4f\x29\x48\x9f\x40\x4e\xb1\x5b\x51\x79\x82\xdd\xae\x2e\x94\x9d\xe4\xef\xff\x3c\x6f\x07\xc4\x3e\x91\xc5\x16\x96\xb6\x82\xb7\xfc\x8c\x92\xc1\x7b\xbc\x87\xab\x1d\x18\x0b\xf1\x1a\x5e\xd5\xc6\x46\x82\xad\xbc\x87\xd5\xeb\xdb\x6d\x8f\x1b\x74\x29\x5e\x98\xc4\x27\xf9\xf4\xce\x2c\xb1\x5a\x6c\x3a\xd2\x10\x8e\xe3\x2e\x64\xb6\x86\xec\x33\xe4\x17\x48\xac\x50\x8a\x56\x28\x6c\x1e\x48\x39\xf6\x2a\x59\xd2\xa4\x96\xad\xdd\xbd\x85\xfa\x98\x0a\xa2\x1f\x6d\xb2\xca\x10\xd3\x30\x96\x25\x75\x92\xe8\x8e\x0d\x03\x9b\x2f\x08\xdd\x5f\xa5\x4f\x63\x22\xbc\x20\x3c\x68\xc9\x1d\xf8\xce\x43\x43\xb3\xac\x3d\xfc\xc0\xea\x18\x00\x35\x6f\x1d\x54\xa4\x4f\x13\x63\xc8\x86\xe2\xbb\x47\x59\x52\x73\x2c\xcc\x2a\x32\x68\x42\xc2\x23\xde\xa9\x66\x0f\x6d\x47\x39\x7b\x48\x12\x54\xb2\x27\x70\x3c\x8b\x77\x9e\x4b\xbe\xa8\xae\x38\x60\x91\x03\xc6\xb0\x75\x3f\x90\x08\x92\x58\xf5\x83\xba\x01\xfd\x92\x1b\xc0\x84\xdc\xdf\x23\xab\x77\x80\x18\xb3\xf7\xf7\x68\xea\xfe\x52\x5e\xe3\xf2\xe4\x50\x59\x7f\x6f\xef\x5f\xd2\x23\x0f\x78\xac\xe0\x21\x7b\x7f\xea\x41\xdf\xdf\x1f\xc0\x3f\xed\x84\xa3\xdb\x7d\xe4\x38\x8f\x90\x07\x45\x3f\xc6\x5a\xd2\x03\xcf\xd4\xc7\x16\x7b\x06\x5b\xc3\xe1\x01\xfc\xd3\xd8\x2a\x69\xdb\x21\x3d\x14\x15\xf0\xfc\xba\xab\x33\xb6\x35\x79\xc9\x65\x57\x55\x4e\xea\xe9\x83\x6a\xf8\x14\x25\x74\x01\x25\x5a\x83\x58\xad\x2d\xa2\x3e\x18\x71\x81\xab\x1b\xdc\xf2\x3c\x17\x72\x85\x28\x9a\x4e\xb6\xb7\x83\x89\x1f\xb7\x14\x6d\xf8\xed\xb8\x5e\x50\x8f\xaa\x2d\xcf\x84\xbd\x0b\x43\x25\x6d\x5f\x08\xbf\x99\x18\x1e\x30\xd8\x03\x3e\x26\xc7\x4c\xf4\xd3\x3f\x9d\x4c\xb6\xb7\xc7\x3c\x4c\x11\xa1\xa6\x09\x9d\x8e\x43\xe2\x16\x1f\xc1\xed\x56\x01\x53\x95\x43\x5a\x36\x5f\x84\xf7\xbd\x16\x50\x50\xdf\xde\x04\x3d\xbe\xe7\xf9\xe4\xbc\x07\x6b\xef\x1a\x1b\x9e\x29\xfa\xe2\xf2\xa2\x0a\xc8\x5b\x11\xb8\xdb\xa2\x24\xf5\x73\x81\x6e\x93\xef\xf3\x71\xca\x19\x42\x75\x41\x6f\x38\xc4\x9c\xf5\xc6\xfc\xb9\xb8\x46\x74\x9f\xb9\xc0\x3c\xc4\xe3\x7e\x35\x2a\xe9\x33\xa0\xc7\x05\x2c\xed\xa9\x25\x1c\xd1\xfd\x5a\xc3\x32\x45\x51\x71\xf3\x4f\x41\xbd\xd7\x76\x53\x20\xda\xc2\x55\x08\xf9\x79\xbc\xd2\xfc\x0e\x95\x14\xbd\x8e\xc0\x03\xaf\xe7\x88\x90\x67\x11\xa4\xbd\x4a\x3c\x95\x89\x6b\x5e\xa0\x92\x0a\xac\x13\xff\x24\x42\x28\xda\x98\x81\x75\x1f\x11\xa1\x68\x70\x8e\x9e\x8d\x27\x3c\xb6\x04\x44\x21\xd3\xfd\x35\x98\x74\x78\xb9\xa0\x68\xb0\x8c\x42\x78\x58\x0c\x22\x4f\x91\x90\xdb\xdd\x23\x9c\x07\x30\x7e\x0a\x28\x60\x08\x60\x57\x28\x3e\x49\x58\xb8\xb5\x88\xfa\xbc\x78\xad\x0a\x67\x40\x31\x71\x1b\x5c\xde\xb9\x08\x0a\x6e\xb7\xce\xe5\x68\xc1\xc7\x05\xbf\x84\x02\xf5\xcd\x7b\x2d\xb8\x42\xb4\x9d\x26\xa5\x3e\x4b\xa2\x4a\xfe\x05\xee\x5e\xb9\x08\xd6\x2b\xf2\x41\x6e\x42\x95\x0c\x31\x63\x67\xd2\x0f\x95\x4f\x55\x8c\xcb\x9d\xb5\x4a\x8e\x79\x9e\x8f\x95\x3c\xc5\x7b\x00\x8a\xcc\xe7\x2a\xe7\x16\x51\x2b\x6c\x51\xe7\xa9\x8e\xd2\x97\x85\xc8\x3e\x1f\x05\xba\xe5\x93\x0e\xe7\xf2\xf1\xa3\xe1\xf9\x75\x14\x95\xfb\x74\x02\xdc\x6c\xb9\xec\xf2\xa7\x32\x2b\x32\x25\x07\xf1\xef\x38\x5b\xc3\xb5\x56\x72\xbc\xdb\x0e\x9c\x03\x1f\x7b\xb4\x1d\xe2\xdb\x7e\xfd\xc9\x62\x5c\x0a\x28\xf2\x53\x54\x85\xa3\xa7\x7b\x67\xda\xdf\x2b\xed\xa0\x9d\xde\x96\x14\x39\x45\x1e\xfc\x95\xdb\x35\x7a\xd6\x46\xe3\x07\xd5\xb9\xd2\xd4\xb6\x8a\x3a\x09\x86\x5d\xbb\xda\xaa\xdb\x3a\x18\x01\x0e\x94\xee\x20\x4f\xec\x2a\x5d\x27\x3d\x7b\xec\xac\x7f\xb5\xbc\xda\x77\x7b\xcb\x0b\x0e\xfe\x57\xc5\xd7\x21\xe2\x01\x29\x76\xe1\x0e\x84\xd9\x9f\x9f\x76\x65\xda\x97\x16\xfe\x6e\xa2\x15\x2b\xa9\x34\x8c\x5d\x7c\xea\x24\xfb\xc6\x7f\x1d\xb8\x30\xfc\xf7\x90\xa9\xb7\xf6\xd6\x8e\xd1\x8d\xfa\x58\xf8\x52\xdd\x46\x09\x8a\x40\xcd\x6f\xcc\x72\x0b\x7e\xb3\x2b\xac\x08\x41\xc3\xa7\x38\x5d\x0b\x24\x54\xcd\x4a\x8a\x3e\xf8\xf9\x81\x0b\x4e\x7e\x4b\x51\x84\x6d\xa3\x2c\x62\x89\xae\x8d\x41\xe9\xcd\x38\x53\xd2\x6a\x55\x0c\x5a\x74\x22\xea\xbf\x6c\x43\xc7\x93\x11\xff\x09\x69\xfd\x58\x3f\xfd\xff\x14\x48\x10\x5d\x45\xbd\x7d\xec\x52\x6c\x5f\x01\x5c\x46\xc1\xfb\x4f\x5d\x4f\xde\x8a\xf5\x4f\x30\x04\x1b\x44\xfd\x83\x1a\xaa\xa3\x61\x7f\xab\x87\x73\x1e\xb8\xb3\xa4\x83\x50\xf8\x75\xb7\xde\x96\xdb\x35\x1d\x18\xbb\x5b\x2e\x07\x85\xf8\x0c\x03\xbb\xe6\x36\x71\x91\x0c\xf7\x4f\xa3\x79\x4f\x83\x95\x8f\x33\x21\xf9\x41\x48\xf8\x71\xb7\xb9\x04\x4d\x35\x83\xe4\x3b\x58\x2a\x5d\x65\xff\x33\x48\xbe\x5d\x5a\xd0\xd5\xd7\xfa\x71\x20\x42\xf5\x44\x97\x94\xd7\xf1\xe5\x3e\xa0\x4d\xcd\x58\x8f\x38\x7d\xa9\xa4\x05\x69\x53\x08\x75\xb0\xf4\x6c\x5a\x86\xc2\xfb\x01\x70\x03\xe8\x49\xab\xa0\x27\x25\xa1\x15\x35\x7d\xdb\xea\xe3\x6d\x47\x7a\x34\x3d\xbd\x6d\x49\xd7\xb5\x50\x06\x80\x6d\xd3\x79\x00\x4d\xcf\x84\x73\x54\x11\x83\xef\x65\x14\x52\x82\xfe\xf3\xc7\xb7\x3f\x94\xb3\x75\x02\x2c\x57\x99\x6f\x27\xe9\xd3\x86\xaa\x75\xe9\xb1\x37\x69\xef\x91\x7e\x12\x70\xe3\x94\xa4\xb7\x18\x95\x25\xd5\x70\xeb\x41\xd7\xe7\x04\x8f\xa5\x18\x15\xe4\x75\x95\x1e\x35\x4b\xab\x9c\xa8\x1a\x71\xbe\xb6\x7a\xbd\x08\x63\x9b\x58\xa4\xe4\xed\x41\x1f\xa9\x56\xe5\x4b\xc9\x74\xb2\xe9\xbc\x87\xeb\xa6\x2b\x2d\x04\x94\x92\x6f\xe0\x54\xf3\x8b\x57\x3f\xb7\x3e\x27\x54\x3b\x75\xe4\x6c\x12\x6a\x1f\x41\xdb\xf8\x0b\x39\xe3\xa3\x51\x40\x28\x7c\xbd\x9e\x2a\x66\x2f\xec\xbc\xee\x6f\x99\x2e\x92\x78\xda\xe3\xe9\x4c\xcc\x27\xd5\xd7\x17\x4c\x5d\x88\xfe\xe4\x07\x22\xc8\x37\xea\xc2\x56\x8d\x4c\xa9\x1d\x0e\x63\xed\x74\x38\xc4\x6d\xfc\x63\xac\xc6\xd5\x0a\xb2\x08\x20\xec\x6c\xe2\x54\x28\xc5\x76\x38\xd4\x01\x85\x75\x09\xa8\x20\x65\x55\x98\x6d\x4f\xe8\x12\xeb\xba\xc2\x75\x28\x2f\x52\xd7\xca\x4e\x4c\x1c\x35\x8f\x9e\x45\x42\xab\xd2\xd2\x1a\x43\x12\x55\x94\xd4\x35\x6a\x27\xd9\x38\xe8\x45\x3b\x9b\x39\xf3\xa8\x6b\x4a\x6c\x52\xf5\xff\x86\x66\x39\xe3\xeb\x55\x67\x9c\xec\x23\xd9\x6b\x6c\x48\x7c\x6d\x2d\x9b\xa1\xc3\x1e\xa3\x0a\xdd\x98\x3b\xc9\x57\xdd\x48\x84\xc6\x15\xe8\x05\x6c\xbe\x41\xa3\x35\x76\xd3\x64\x84\x5e\x9c\xbb\xef\x2e\x1b\x37\xfd\xdd\x86\xb5\xfc\x74\x7c\xc0\x43\xa4\xc4\x9a\x9a\xfa\x55\xf2\x69\xae\xb7\x10\x12\x1e\xcd\x10\xb3\xa4\xae\x91\x61\x4b\x25\xd5\xf1\x90\x9d\xd3\x6f\xe3\x92\xbb\x0d\xa2\x96\xeb\x15\xd8\x14\x7d\xba\x2c\xb8\xfc\xec\xb3\xa5\xa8\x12\x4f\x8d\x98\x0b\x97\x65\xd1\x9c\xcb\x15\x68\xb5\x33\xc5\xdd\x07\xb0\x6f\x2a\x67\x92\xee\x3f\x7d\x72\x57\x65\xca\xcb\x98\x67\x3f\x8b\x5f\x6f\xa8\xa8\x74\xae\xfe\xb9\x4b\x5d\xa4\xf9\xe4\xd4\xd5\x27\x27\xcf\x14\x6c\xcb\x0b\xf8\xeb\x0c\x48\xd9\x1a\x7b\x46\x2c\x52\xc0\xf8\x52\xe5\x2e\x5d\x17\xa1\x61\x4b\xb4\xdf\x1c\xa2\xf2\xbd\xe0\xc3\x21\x16\xfd\x8f\x0f\x75\xba\xd5\x96\x9c\xe2\xfa\xe0\x6e\x6e\x7c\x70\x49\x91\xfb\x38\xe0\x45\x31\x40\x94\x53\x34\x88\x1e\x71\x20\xe4\x00\xd1\x2c\x69\x95\x8f\xb1\x7d\x4e\x5c\x15\x02\x6e\x49\x85\xbf\x9b\xb7\x4f\xa8\xb2\x9a\x5d\x61\xc3\x1d\xf1\x8c\xba\x65\xab\x5b\xe8\x91\xaa\x65\x2c\xae\x87\x12\x9e\x4f\x79\x53\x93\x5c\xc5\xa2\xe5\xe3\xf5\xbf\xf6\xf2\xb2\xef\x4a\x12\x4b\xdc\x7a\x33\xf2\xf5\x7b\xf2\xb8\x9e\xba\x58\x4e\xaa\x71\xc0\xde\x89\xe7\x3c\x86\x93\xb1\xa0\xd5\x4a\xae\xaa\xf0\xe9\xf5\xfb\xf7\xef\xde\xa7\xa8\xf3\x3a\x16\x08\x70\x2e\xcf\xc1\x54\x0f\xc5\xd5\x53\x9b\xe7\x65\x38\x9c\xb0\xbe\xf1\xca\xcb\x3d\x97\xfa\x92\xa2\x7f\xfe\xe3\xbf\x7e\x54\x76\x2d\xe4\x6a\xb0\x54\x7a\x70\xa7\x76\x74\xf0\x8a\xdf\xac\x92\x7f\xfe\xe3\xbf\x1f\x7a\xab\x09\x7c\x4c\x06\x91\x02\x44\x6a\xca\x7b\x29\xac\xea\xb9\x7e\xcc\x9f\xe5\xaf\x20\xb6\x3f\xdf\xd8\xac\x10\xdd\x1b\x9d\xa5\x48\x6c\xf8\x0a\xcc\xf9\xe5\xce\xdc\x25\x2b\xb1\x44\x0f\xa6\xf4\x81\x81\xa0\x89\x42\xae\x92\xc4\x05\xa6\xb3\xa3\x97\xd0\x18\x83\x58\x86\x8f\x99\xba\xbf\x9f\x2f\x0e\xef\x4e\xaf\xc5\xcf\xf2\x76\x2e\xee\xf9\x6d\xbc\xdd\xb1\x83\xdf\xc0\x8a\x8f\x0f\xdf\x45\xc2\x86\x4f\xbe\x24\x9c\x4b\x44\xe5\xa1\x67\x09\xcd\x5a\x27\xdc\xcb\x92\xee\xa3\x57\x4a\xeb\x6e\x30\xdf\x70\xee\x96\x5d\x87\x46\xf4\x80\x81\x06\xf9\xa6\x40\xdb\x31\x5c\x6a\x8f\x7a\xce\x9e\x78\x8b\x84\x4c\x2b\xea\x8b\xf5\x9e\x6c\xf3\xa8\x27\xfb\x76\xbb\x7d\x9a\x0b\x53\xfe\x49\x3f\xb4\x18\xfa\xf4\xeb\x62\xbe\x48\xab\x87\xf0\xd8\x1a\x4c\x51\x2c\x70\x34\x8e\xec\x2a\x85\xe4\x8a\x8a\x14\x12\x11\x2b\x8f\x55\x61\xab\x53\x57\xec\x56\xb7\x62\xd5\xd0\x96\xa4\x6a\xeb\x79\xb4\xef\xc3\x07\x63\xd0\x2e\xaa\x76\x9e\xea\x49\x5d\x3d\x85\x6e\xf5\xd4\x74\x9c\x6e\x6c\x8f\xf0\xd7\x59\xd6\x6a\x7c\x3b\xdc\xcb\x47\xd5\xb1\x7c\x61\xaa\x16\x96\x16\xa6\xd0\xd0\xc9\x1b\x3e\x68\x5d\xf6\xaa\x2e\x8e\x1e\x67\xaf\x2b\x8d\x38\xc2\x5c\x57\xb1\x31\x89\xcd\x56\xde\xb3\x37\x74\xd6\x1d\x5a\x47\x52\x09\xff\xde\xf5\xbb\x6e\x1e\x7a\xbc\x7a\xce\xe3\x29\xfb\x86\x20\xc4\xa3\xb5\x01\xe7\x8d\x90\xb9\xba\x49\x78\x9e\xbf\xbe\x06\x69\x7f\x88\xff\x0f\x80\xd1\x56\x6d\xfd\x91\xb6\xff\x4b\x03\xda\xed\xcc\x7d\x27\x52\x35\xde\x38\x5a\x9b\x16\x66\x77\x8d\x1e\xf5\x0f\x1c\x37\x25\xec\xb6\x39\xb7\xf0\x67\x61\xac\xd2\x77\x18\xda\x38\xea\xf2\x55\x47\x50\xad\xce\x83\xce\xda\x9e\x6e\xb6\xba\xb3\x7d\xcb\xed\xda\x39\x9a\x11\xba\xb8\x62\x68\x04\xf2\xa8\x29\x1e\x92\x2b\x32\x42\x43\x71\x6a\x56\xb8\x59\x6f\x55\xa7\x20\xfc\xa4\x83\x6a\x9b\xd9\x29\xe0\x36\x8c\x5b\x13\xbb\x8d\x47\xd1\x96\x66\xeb\xc0\x93\xcf\x29\xe2\x69\x86\x7f\xac\x29\x29\x42\xfe\xbf\xb1\x9e\xd7\x79\xd6\xdc\x49\x7d\xd3\x3b\xba\xf7\xaf\x36\xa6\x69\x15\x8b\xad\x0e\xf1\x46\xad\x3a\x0a\xc2\x57\xd1\x6e\x70\x08\x43\x3d\xfe\xa6\x1d\x7b\xf4\x38\x9e\x83\x42\x5f\x8f\xaa\xc4\xd0\xf4\x60\xf8\xc4\xcd\xb2\x8d\x2c\xe8\x56\xd8\xd8\xe5\xc1\xff\x1b\x0b\x99\x85\xc5\x41\x7a\xcd\x89\xf4\xa1\xdc\x78\x81\x11\x5a\x3f\x78\xac\xc0\xc6\xb9\xef\xee\xde\xe4\x18\x69\xa5\x2c\xf2\x16\xea\x7c\x03\x26\xe5\x82\xcc\xfe\x27\x00\x00\xff\xff\x1a\x45\xac\xd9\xa3\x3a\x00\x00" func jsHoundJsBytes() ([]byte, error) { return bindataRead( @@ -485,7 +494,7 @@ func jsHoundJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/hound.js", size: 14964, mode: os.FileMode(420), modTime: time.Unix(1617311114, 0)} + info := bindataFileInfo{name: "js/hound.js", size: 15011, mode: os.FileMode(436), modTime: time.Unix(1618526827, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -505,7 +514,7 @@ func jsJquery213MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "js/jquery-2.1.3.min.js", size: 84320, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -525,7 +534,7 @@ func jsReact0122MinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130420, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "js/react-0.12.2.min.js", size: 130436, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -545,7 +554,7 @@ func open_searchTplXml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(420), modTime: time.Unix(1617311111, 0)} + info := bindataFileInfo{name: "open_search.tpl.xml", size: 351, mode: os.FileMode(436), modTime: time.Unix(1618526822, 0)} a := &asset{bytes: bytes, info: info} return a, nil } From 546aacca552f4d485ae0a393f4e07ed2376f28b7 Mon Sep 17 00:00:00 2001 From: Jone Marius Vignes <73816+inful@users.noreply.github.com> Date: Wed, 30 Jun 2021 19:36:37 +0200 Subject: [PATCH 33/37] Automatically build docker image and publish to ghcr.io (#401) * Feat: Use goreleaser * Feat: Add docker build, remove goreleaser * Fix: Add image name * Feat: Use ghcr.io and build-push-action@2 * We try again * Trying yet again * Fix: Use actor and GITHUB_TOKEN * Fix: Use github.actor in image tag path * Fix: use github.repository_owner instead of github.actor When you have an organisation, github.actor != github.repository_owner Co-authored-by: Jone Marius Vignes --- .github/workflows/go.yaml | 33 +++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 34 insertions(+) diff --git a/.github/workflows/go.yaml b/.github/workflows/go.yaml index d4da547f..efe15903 100644 --- a/.github/workflows/go.yaml +++ b/.github/workflows/go.yaml @@ -19,6 +19,39 @@ jobs: with: node-version: "10.x" - run: npm install + docker-build: + name: Create docker image + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.3.4 + - name: Prepare + id: prep + run: | + DOCKER_IMAGE=ghcr.io/${{ github.repository_owner }}/hound + VERSION=latest + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION=${GITHUB_REF#refs/tags/v} + fi + TAGS="${DOCKER_IMAGE}:${VERSION}" + if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then + TAGS="$TAGS,${DOCKER_IMAGE}:latest" + fi + echo ::set-output name=tags::${TAGS} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to GitHub Packages Docker Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Push to GitHub Packages + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.prep.outputs.tags }} golangci: name: lint strategy: diff --git a/.gitignore b/.gitignore index 1d2a79ec..0de02c49 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /db /data /.idea +dist/ From 70e1229955076579cfef0ab5155d083a0ec339a2 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Wed, 30 Jun 2021 20:06:06 +0200 Subject: [PATCH 34/37] Update default-config.json (#391) * Update default-config.json * Update default-config.json (ref: main) --- default-config.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/default-config.json b/default-config.json index 9cd89dac..c38377be 100644 --- a/default-config.json +++ b/default-config.json @@ -1,8 +1,13 @@ { "dbpath" : "db", + "vcs-config" : { + "git": { + "ref" : "main" + } + }, "repos" : { "Hound" : { - "url" : "https://github.com/etsy/hound.git" + "url" : "https://github.com/hound-search/hound.git" } } } From c9a7667a79921ad30a574da852956b3d35f65dab Mon Sep 17 00:00:00 2001 From: Joel Armstrong Date: Fri, 2 Jul 2021 09:31:33 -0400 Subject: [PATCH 35/37] Add hyperlinks to repository root (#396) --- ui/assets/js/common.js | 16 +++++-- ui/assets/js/common.test.js | 91 +++++++++++++++++++++++++------------ ui/assets/js/hound.js | 10 +++- ui/bindata.go | 54 +++++++++++----------- 4 files changed, 108 insertions(+), 63 deletions(-) diff --git a/ui/assets/js/common.js b/ui/assets/js/common.js index 35216a4f..44e32e6b 100644 --- a/ui/assets/js/common.js +++ b/ui/assets/js/common.js @@ -5,12 +5,13 @@ export function ExpandVars(template, values) { return template; }; -export function UrlToRepo(repo, path, line, rev) { +export function UrlParts(repo, path, line, rev) { var url = repo.url.replace(/\.git$/, ''), pattern = repo['url-pattern'], hostname = '', project = '', repoName = '', + path = path || '', port = '', filename = path.substring(path.lastIndexOf('/') + 1), anchor = line ? ExpandVars(pattern.anchor, { line : line, filename : filename }) : ''; @@ -44,8 +45,7 @@ export function UrlToRepo(repo, path, line, rev) { url = hostname + port + '/' + project + '/' + repoName; } - // I'm sure there is a nicer React/jsx way to do this: - return ExpandVars(pattern['base-url'], { + return { url : url, hostname: hostname, port: port, @@ -54,5 +54,13 @@ export function UrlToRepo(repo, path, line, rev) { path: path, rev: rev, anchor: anchor - }); + }; +} + +export function UrlToRepo(repo, path, line, rev) { + var urlParts = UrlParts(repo, path, line, rev), + pattern = repo['url-pattern'] + + // I'm sure there is a nicer React/jsx way to do this: + return ExpandVars(pattern['base-url'], urlParts); } diff --git a/ui/assets/js/common.test.js b/ui/assets/js/common.test.js index 6a350590..f8073028 100644 --- a/ui/assets/js/common.test.js +++ b/ui/assets/js/common.test.js @@ -1,4 +1,4 @@ -import { ExpandVars, UrlToRepo } from "./common"; +import { ExpandVars, UrlParts, UrlToRepo } from "./common"; describe("ExpandVars", () => { test("Replaces template variables with their values", () => { @@ -20,106 +20,137 @@ describe("ExpandVars", () => { }); }); -describe("UrlToRepo", () => { - test("Generate url from repo with default values", () => { +describe("UrlParts", () => { + test("Generate parts from repo with default values", () => { const repo = { url: "https://www.github.com/YourOrganization/RepoOne.git", "url-pattern": { - "base-url": "{url}/blob/{rev}/{path}{anchor}", anchor: "#L{line}" } }; const path = "test.txt" const line = null const rev = "main" - expect(UrlToRepo(repo, path, line, rev)).toBe( - "https://www.github.com/YourOrganization/RepoOne/blob/main/test.txt" - ); + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + url: "https://www.github.com/YourOrganization/RepoOne", + rev: rev, + path: path, + anchor: "", + })); }); - test("Generate url from repo with default values and line", () => { + test("Generate parts from repo with default values and line", () => { const repo = { url: "https://www.github.com/YourOrganization/RepoOne.git", "url-pattern": { - "base-url": "{url}/blob/{rev}/{path}{anchor}", anchor: "#L{line}" } }; const path = "test.txt" const line = "12" const rev = "main" - expect(UrlToRepo(repo, path, line, rev)).toBe( - "https://www.github.com/YourOrganization/RepoOne/blob/main/test.txt#L12" - ); + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + url: "https://www.github.com/YourOrganization/RepoOne", + rev: rev, + path: path, + anchor: "#L" + line, + })); }); - test("Generate url for ssh style repo with default values", () => { + test("Generate parts for ssh style repo with default values", () => { const repo = { url: "git@github.com:YourOrganization/RepoOne.git", "url-pattern": { - "base-url": "{url}/blob/{rev}/{path}{anchor}", anchor: "#L{line}" } }; const path = "test.txt" const line = null const rev = "main" - expect(UrlToRepo(repo, path, line, rev)).toBe( - "//github.com/YourOrganization/RepoOne/blob/main/test.txt" - ); + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + url: "//github.com/YourOrganization/RepoOne", + rev: rev, + path: path, + anchor: "", + })); }); - test("Generate url for ssh bitbucket mercurial style repo", () => { + test("Generate parts for ssh bitbucket mercurial style repo", () => { const repo = { url: "ssh://hg@bitbucket.org/YourOrganization/RepoOne", "url-pattern": { - "base-url" : "{url}/src/main/{path}{anchor}", "anchor" : "#{filename}-{line}" } }; const path = "test.txt" const line = null const rev = "main" - expect(UrlToRepo(repo, path, line, rev)).toBe( - "//bitbucket.org/YourOrganization/RepoOne/src/main/test.txt" - ); + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + url: "//bitbucket.org/YourOrganization/RepoOne", + path: path, + anchor: "", + })); }); - test("Generate url for ssh bitbucket style repo with port", () => { + test("Generate parts for ssh bitbucket style repo with port", () => { const repo = { url: "ssh://git@bitbucket.org:7999/YourOrganization/RepoOne", "url-pattern": { - "base-url" : "{url}/src/main/{path}{anchor}", "anchor" : "#{filename}-{line}" } }; const path = "test.txt" const line = null const rev = "main" - expect(UrlToRepo(repo, path, line, rev)).toBe( - "//bitbucket.org:7999/YourOrganization/RepoOne/src/main/test.txt" - ); + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + url: "//bitbucket.org:7999/YourOrganization/RepoOne", + path: path, + anchor: "", + })); }); - test("Generate url for ssh bitbucket server style repo", () => { + test("Generate parts for ssh bitbucket server style repo", () => { const repo = { url: "ssh://git@bitbucket.internal.com:7999/YourOrganization/RepoOne", "url-pattern": { - "base-url" : "{hostname}/projects/{project}/repos/{repo}/browse/{path}?at={rev}{anchor}", "anchor" : "#{line}", } }; const path = "test.txt" const line = 10 const rev = "main" + expect(UrlParts(repo, path, line, rev)).toEqual(expect.objectContaining({ + hostname: "//bitbucket.internal.com", + project: "YourOrganization", + repo: "RepoOne", + path: path, + rev: rev, + anchor: "#" + line, + })); + }); +}) + +describe("UrlToRepo", () => { + test("Generate url from repo with default values", () => { + const repo = { + url: "https://www.github.com/YourOrganization/RepoOne.git", + "url-pattern": + { + "base-url": "{url}/blob/{rev}/{path}{anchor}", + anchor: "#L{line}" + } + }; + const path = "test.txt" + const line = null + const rev = "main" expect(UrlToRepo(repo, path, line, rev)).toBe( - "//bitbucket.internal.com/projects/YourOrganization/repos/RepoOne/browse/test.txt?at=main#10" + "https://www.github.com/YourOrganization/RepoOne/blob/main/test.txt" ); }); }); diff --git a/ui/assets/js/hound.js b/ui/assets/js/hound.js index fea76ad7..e0e99a07 100644 --- a/ui/assets/js/hound.js +++ b/ui/assets/js/hound.js @@ -1,4 +1,4 @@ -import {UrlToRepo} from './common'; +import {UrlParts, UrlToRepo} from './common'; var Signal = function() { }; @@ -297,6 +297,10 @@ var Model = { UrlToRepo: function(repo, path, line, rev) { return UrlToRepo(this.repos[repo], path, line, rev); + }, + + UrlToRoot: function(repo) { + return UrlParts(this.repos[repo]).url } }; @@ -771,7 +775,9 @@ var ResultView = React.createClass({
- {Model.NameForRepo(result.Repo)} + + {Model.NameForRepo(result.Repo)} +
Date: Tue, 6 Jul 2021 10:58:39 -0400 Subject: [PATCH 36/37] Add literal search option (#397) * Add literal search option * Pull EscapeRegExp into common.js * Add db/ to Jest ignore patterns * Test EscapeRegExp() matches its input * Test vacuous EscapeRegExp --- api/api.go | 1 + codesearch/regexp/regexp.go | 11 +++++++- index/index.go | 8 +++++- jest.config.js | 4 ++- ui/assets/js/common.js | 4 +++ ui/assets/js/common.test.js | 29 +++++++++++++++++++- ui/assets/js/hound.js | 29 +++++++++++++++++--- ui/bindata.go | 54 ++++++++++++++++++------------------- 8 files changed, 105 insertions(+), 35 deletions(-) diff --git a/api/api.go b/api/api.go index 75f0e6f5..c893e73c 100644 --- a/api/api.go +++ b/api/api.go @@ -180,6 +180,7 @@ func Setup(m *http.ServeMux, idx map[string]*searcher.Searcher) { opt.FileRegexp = r.FormValue("files") opt.ExcludeFileRegexp = r.FormValue("excludeFiles") opt.IgnoreCase = parseAsBool(r.FormValue("i")) + opt.LiteralSearch = parseAsBool(r.FormValue("literal")) opt.LinesOfContext = parseAsUintValue( r.FormValue("ctx"), 0, diff --git a/codesearch/regexp/regexp.go b/codesearch/regexp/regexp.go index 591b3c74..11c34897 100644 --- a/codesearch/regexp/regexp.go +++ b/codesearch/regexp/regexp.go @@ -6,7 +6,10 @@ // use in grep-like programs. package regexp -import "regexp/syntax" +import ( + "regexp" + "regexp/syntax" +) func bug() { panic("codesearch/regexp: internal error") @@ -57,3 +60,9 @@ func (r *Regexp) Match(b []byte, beginText, endText bool) (end int) { func (r *Regexp) MatchString(s string, beginText, endText bool) (end int) { return r.m.matchString(s, beginText, endText) } + +// QuoteMeta returns a string that escapes all regular expression +// metacharacters inside the argument text. +func QuoteMeta(s string) string { + return regexp.QuoteMeta(s) +} diff --git a/index/index.go b/index/index.go index d956f3eb..cb442ee8 100644 --- a/index/index.go +++ b/index/index.go @@ -42,6 +42,7 @@ type IndexOptions struct { type SearchOptions struct { IgnoreCase bool + LiteralSearch bool LinesOfContext uint FileRegexp string ExcludeFileRegexp string @@ -146,7 +147,12 @@ func (n *Index) Search(pat string, opt *SearchOptions) (*SearchResponse, error) n.lck.RLock() defer n.lck.RUnlock() - re, err := regexp.Compile(GetRegexpPattern(pat, opt.IgnoreCase)) + patForRe := pat + if opt.LiteralSearch { + patForRe = regexp.QuoteMeta(pat) + } + + re, err := regexp.Compile(GetRegexpPattern(patForRe, opt.IgnoreCase)) if err != nil { return nil, err } diff --git a/jest.config.js b/jest.config.js index f31f81ff..c82d87ac 100644 --- a/jest.config.js +++ b/jest.config.js @@ -82,7 +82,9 @@ module.exports = { // moduleNameMapper: {}, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], + modulePathIgnorePatterns: [ + "db" + ], // Activates notifications for test results // notify: false, diff --git a/ui/assets/js/common.js b/ui/assets/js/common.js index 44e32e6b..ebd2f0f6 100644 --- a/ui/assets/js/common.js +++ b/ui/assets/js/common.js @@ -1,3 +1,7 @@ +export function EscapeRegExp(regexp) { + return regexp.replace(/[-[\]{}()*+!<=:?.\/\\^$|#\s,]/g, '\\$&'); +} + export function ExpandVars(template, values) { for (var name in values) { template = template.replace('{' + name + '}', values[name]); diff --git a/ui/assets/js/common.test.js b/ui/assets/js/common.test.js index f8073028..a8581eb8 100644 --- a/ui/assets/js/common.test.js +++ b/ui/assets/js/common.test.js @@ -1,4 +1,31 @@ -import { ExpandVars, UrlParts, UrlToRepo } from "./common"; +import { EscapeRegExp, ExpandVars, UrlToRepo } from "./common"; + +describe("EscapeRegExp", () => { + const testRegs = [ + ["Some test regexes", ["Some patterns that should not match"]], + ["ab+c", ["abc"]], + ["^\d+$", ["1", "123", "abc"]], + ["./...", ["a/abc"]], + ["\w+", []], + ["\r\n|\r|\n", []], + ["^[a-z]+\[[0-9]+\]$", []], + ["/[-[\]{}()*+!<=:?.\/\\^$|#\s,]", ["/[-[\]{}()*!<=:?.\/\\^$|#\s,]"]], + ["^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})*$", []], + ["(H..).(o..)", []], + ["^[a-zA-Z0-9 ]*$", []] + ]; + + test.each(testRegs)( + "EscapeRegExp(%s) returns the RegExp matching the input", + (regexp, shouldFail) => { + const re = new RegExp(EscapeRegExp(regexp)) + expect(re.test(regexp)).toBe(true); + shouldFail.forEach((failCase) => { + expect(re.test(failCase)).toBe(false); + }); + }, + ); +}); describe("ExpandVars", () => { test("Replaces template variables with their values", () => { diff --git a/ui/assets/js/hound.js b/ui/assets/js/hound.js index e0e99a07..a34e8317 100644 --- a/ui/assets/js/hound.js +++ b/ui/assets/js/hound.js @@ -1,4 +1,4 @@ -import {UrlParts, UrlToRepo} from './common'; +import {EscapeRegExp, UrlParts, UrlToRepo} from './common'; var Signal = function() { }; @@ -75,6 +75,7 @@ var ParamsFromUrl = function(params) { params = params || { q: '', i: 'nope', + literal: 'nope', files: '', excludeFiles: '', repos: '*' @@ -399,8 +400,12 @@ var SearchBar = React.createClass({ this.props.onSearchRequested(this.getParams()); }, getRegExp : function() { + var regexp = this.refs.q.getDOMNode().value.trim() + if (this.refs.lsearch.getDOMNode().checked) { + regexp = EscapeRegExp(regexp) + } return new RegExp( - this.refs.q.getDOMNode().value.trim(), + regexp, this.refs.icase.getDOMNode().checked ? 'ig' : 'g'); }, getParams: function() { @@ -416,22 +421,29 @@ var SearchBar = React.createClass({ files : this.refs.files.getDOMNode().value.trim(), excludeFiles : this.refs.excludeFiles.getDOMNode().value.trim(), repos : repos.join(','), - i: this.refs.icase.getDOMNode().checked ? 'fosho' : 'nope' + i: this.refs.icase.getDOMNode().checked ? 'fosho' : 'nope', + literal: this.refs.lsearch.getDOMNode().checked ? 'fosho' : 'nope' }; }, setParams: function(params) { var q = this.refs.q.getDOMNode(), i = this.refs.icase.getDOMNode(), + literal = this.refs.lsearch.getDOMNode(), files = this.refs.files.getDOMNode(), excludeFiles = this.refs.excludeFiles.getDOMNode(); q.value = params.q; i.checked = ParamValueToBool(params.i); + literal.checked = ParamValueToBool(params.literal) files.value = params.files; excludeFiles.value = params.excludeFiles; }, hasAdvancedValues: function() { - return this.refs.files.getDOMNode().value.trim() !== '' || this.refs.excludeFiles.getDOMNode().value.trim() !== '' || this.refs.icase.getDOMNode().checked || this.refs.repos.getDOMNode().value !== ''; + return this.refs.files.getDOMNode().value.trim() !== '' + || this.refs.excludeFiles.getDOMNode().value.trim() !== '' + || this.refs.icase.getDOMNode().checked + || this.refs.lsearch.getDOMNode().checked + || this.refs.repos.getDOMNode().value !== ''; }, isAdvancedEmpty: function() { return this.refs.files.getDOMNode().value.trim() === '' && this.refs.excludeFiles.getDOMNode().value.trim() === ''; @@ -542,6 +554,12 @@ var SearchBar = React.createClass({
+
+ +
+ +
+
@@ -801,6 +819,7 @@ var App = React.createClass({ this.setState({ q: params.q, i: params.i, + literal: params.literal, files: params.files, excludeFiles: params.excludeFiles, repos: repos @@ -856,6 +875,7 @@ var App = React.createClass({ var path = location.pathname + '?q=' + encodeURIComponent(params.q) + '&i=' + encodeURIComponent(params.i) + + '&literal=' + encodeURIComponent(params.literal) + '&files=' + encodeURIComponent(params.files) + '&excludeFiles=' + encodeURIComponent(params.excludeFiles) + '&repos=' + params.repos; @@ -867,6 +887,7 @@ var App = React.createClass({ Date: Wed, 28 Jul 2021 14:05:51 -0700 Subject: [PATCH 37/37] Give repo links a target of blank (#404) Add rel="noopener noreferrer" to _blank links --- ui/assets/js/hound.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ui/assets/js/hound.js b/ui/assets/js/hound.js index a34e8317..030c10bf 100644 --- a/ui/assets/js/hound.js +++ b/ui/assets/js/hound.js @@ -712,7 +712,8 @@ var FilesView = React.createClass({
{line.Number} + target="_blank" + rel="noopener noreferrer">{line.Number}
); @@ -726,7 +727,9 @@ var FilesView = React.createClass({ return (