/test/setup.ts',
+ clearMocks: true,
+ coveragePathIgnorePatterns: [
+ '/node_modules/',
+ '.*report.*' // Remove this when we enable report / vulnerability functionality
+ ],
+ moduleNameMapper: {
+ '^axios$': require.resolve('axios')
+ },
+ coverageThreshold: {
+ global: {
+ branches: 50
+ }
+ }
+};
diff --git a/backend/mock.js b/backend/mock.js
new file mode 100644
index 00000000..ff8b4c56
--- /dev/null
+++ b/backend/mock.js
@@ -0,0 +1 @@
+export default {};
diff --git a/backend/package-lock.json b/backend/package-lock.json
new file mode 100644
index 00000000..c3a473d7
--- /dev/null
+++ b/backend/package-lock.json
@@ -0,0 +1,19770 @@
+{
+ "name": "crossfeed-backend",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "crossfeed-backend",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "@aws-sdk/client-cloudwatch-logs": "^3.417.0",
+ "@aws-sdk/client-ssm": "^3.414.0",
+ "@elastic/elasticsearch": "~7.10.0",
+ "@thefaultvault/tfv-cpe-parser": "^1.3.0",
+ "@types/dockerode": "^3.3.19",
+ "amqplib": "^0.10.3",
+ "aws-sdk": "^2.1551.0",
+ "axios": "^1.6",
+ "body-parser": "^1.19.0",
+ "bufferutil": "^4.0.7",
+ "class-transformer": "^0.3.1",
+ "class-validator": "^0.14.0",
+ "cookie": "^0.4.1",
+ "cookie-parser": "^1.4.6",
+ "cors": "^2.8.5",
+ "date-fns": "^3.3.1",
+ "express": "^4.18.1",
+ "global-agent": "^2.2.0",
+ "got": "^11.8.5",
+ "handlebars": "^4.7.8",
+ "helmet": "^4.1.1",
+ "http-proxy-middleware": "^2.0.6",
+ "ip": "^1.1.9",
+ "jsdom": "^22.1",
+ "jsonwebtoken": "^9.0.2",
+ "jwks-rsa": "^3.0",
+ "lodash": "^4.17.21",
+ "nodemailer": "^6.7.2",
+ "openid-client": "^5.4",
+ "p-queue": "^6.6.2",
+ "p-retry": "^4.6.1",
+ "papaparse": "^5.3.1",
+ "pg": "^8.11",
+ "portscanner": "^2.2.0",
+ "reflect-metadata": "^0.1.13",
+ "serverless-http": "^3.2.0",
+ "ssl-checker": "^2.0.7",
+ "tough-cookie": "^4.1.3",
+ "typeorm": "^0.2.45",
+ "utf-8-validate": "^6.0.3",
+ "uuid": "^9.0.1",
+ "wappalyzer": "^6.10.63",
+ "wappalyzer-core": "^6.10.63",
+ "ws": "^8.13.0"
+ },
+ "devDependencies": {
+ "@jest/globals": "^29",
+ "@types/aws-lambda": "^8.10.62",
+ "@types/cors": "^2.8.17",
+ "@types/dockerode": "^3.3.19",
+ "@types/jest": "^27",
+ "@types/node": "^20.6",
+ "@types/node-fetch": "^2.6.4",
+ "@types/nodemailer": "^6.4.0",
+ "@types/papaparse": "^5.3.0",
+ "@types/supertest": "^2.0",
+ "@types/uuid": "^9.0.7",
+ "@typescript-eslint/eslint-plugin": "^5.59",
+ "@typescript-eslint/parser": "^5.59",
+ "debug": "^4.3.4",
+ "dockerode": "^3.3.1",
+ "dotenv": "^16.0",
+ "eslint": "^8.46.0",
+ "eslint-config-prettier": "^6.12.0",
+ "eslint-plugin-prettier": "^5.0.0",
+ "jest": "^27",
+ "json-schema-to-typescript": "^13.0",
+ "nock": "^13.0.4",
+ "prettier": "^3.0.0",
+ "sentencer": "^0.2.1",
+ "serverless": "^3.30",
+ "serverless-domain-manager": "^7.0",
+ "serverless-dotenv-plugin": "^6.0.0",
+ "serverless-webpack": "^5.11.0",
+ "supertest": "^6.3",
+ "ts-jest": "^27",
+ "ts-loader": "^9.4.1",
+ "ts-node": "^10.9",
+ "ts-node-dev": "^2.0.0",
+ "typescript": "^4.9",
+ "wait-for-expect": "^3.0.2",
+ "webpack": "^5.88",
+ "webpack-cli": "^5.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@acuminous/bitsyntax": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz",
+ "integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==",
+ "dependencies": {
+ "buffer-more-ints": "~1.0.0",
+ "debug": "^4.3.4",
+ "safe-buffer": "~5.1.2"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/@acuminous/bitsyntax/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@aws-crypto/crc32": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz",
+ "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==",
+ "dependencies": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/crc32/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/crc32c": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz",
+ "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/crc32c/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/@aws-crypto/ie11-detection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz",
+ "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==",
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/sha1-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz",
+ "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/@aws-crypto/sha256-browser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz",
+ "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==",
+ "dependencies": {
+ "@aws-crypto/ie11-detection": "^3.0.0",
+ "@aws-crypto/sha256-js": "^3.0.0",
+ "@aws-crypto/supports-web-crypto": "^3.0.0",
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/sha256-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
+ "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
+ "dependencies": {
+ "@aws-crypto/util": "^3.0.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz",
+ "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==",
+ "dependencies": {
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-crypto/util": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
+ "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-utf8-browser": "^3.0.0",
+ "tslib": "^1.11.1"
+ }
+ },
+ "node_modules/@aws-crypto/util/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "node_modules/@aws-sdk/client-acm": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-acm/-/client-acm-3.398.0.tgz",
+ "integrity": "sha512-NSrWuzzrGWDBfk3Y5U6sNis+c6fluNFA2y9jPIJxnB4U26F6ntBDxqI3Hiuscknzd8+RGoNVMZxaoMqBPBGccQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "@smithy/util-waiter": "^2.0.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-api-gateway": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.398.0.tgz",
+ "integrity": "sha512-WS0f4r2jsTeiGMvnN7JbqV/f6S7Cs4f8FluhgauWCw9mecGOJP5YD6u4oDk4rub3urtNuo+qOpH8TVG3fJ2hVg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-sdk-api-gateway": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-stream": "^2.0.5",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-apigatewayv2": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.398.0.tgz",
+ "integrity": "sha512-Au5XNhU7q2sxMbURGTmK6AWvCpwv7mzsTtum6pZk0xSUDBa81GCR/LP7oXkFjSKpbSgDebjBGKX9MNF7E1bWrg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-stream": "^2.0.5",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.451.0.tgz",
+ "integrity": "sha512-rc8MWRsWA1OgOq/hASLONtVTEbRggjf8VFYmW7UdL1g+oRQoDFWEWPv7kW5868UTpS6SmHdjCrXP8YREtR4ZSQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.451.0",
+ "@aws-sdk/core": "3.451.0",
+ "@aws-sdk/credential-provider-node": "3.451.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-signing": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "@smithy/util-waiter": "^2.0.13",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sso": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.451.0.tgz",
+ "integrity": "sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.451.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sts": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.451.0.tgz",
+ "integrity": "sha512-48NcIRxWBdP1fom6RSjwn2R2u7SE7eeV3p+c4s7ukEOfrHhBxJfn3EpqBVQMGzdiU55qFImy+Fe81iA2lXq3Jw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.451.0",
+ "@aws-sdk/credential-provider-node": "3.451.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-sdk-sts": "3.451.0",
+ "@aws-sdk/middleware-signing": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.451.0.tgz",
+ "integrity": "sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.451.0.tgz",
+ "integrity": "sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.451.0",
+ "@aws-sdk/credential-provider-process": "3.451.0",
+ "@aws-sdk/credential-provider-sso": "3.451.0",
+ "@aws-sdk/credential-provider-web-identity": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.451.0.tgz",
+ "integrity": "sha512-AEwM1WPyxUdKrKyUsKyFqqRFGU70e4qlDyrtBxJnSU9NRLZI8tfEZ67bN7fHSxBUBODgDXpMSlSvJiBLh5/3pw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.451.0",
+ "@aws-sdk/credential-provider-ini": "3.451.0",
+ "@aws-sdk/credential-provider-process": "3.451.0",
+ "@aws-sdk/credential-provider-sso": "3.451.0",
+ "@aws-sdk/credential-provider-web-identity": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.451.0.tgz",
+ "integrity": "sha512-HQywSdKeD5PErcLLnZfSyCJO+6T+ZyzF+Lm/QgscSC+CbSUSIPi//s15qhBRVely/3KBV6AywxwNH+5eYgt4lQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.451.0.tgz",
+ "integrity": "sha512-Usm/N51+unOt8ID4HnQzxIjUJDrkAQ1vyTOC0gSEEJ7h64NSSPGD5yhN7il5WcErtRd3EEtT1a8/GTC5TdBctg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.451.0",
+ "@aws-sdk/token-providers": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.451.0.tgz",
+ "integrity": "sha512-Xtg3Qw65EfDjWNG7o2xD6sEmumPfsy3WDGjk2phEzVg8s7hcZGxf5wYwe6UY7RJvlEKrU0rFA+AMn6Hfj5oOzg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.451.0.tgz",
+ "integrity": "sha512-j8a5jAfhWmsK99i2k8oR8zzQgXrsJtgrLxc3js6U+525mcZytoiDndkWTmD5fjJ1byU1U2E5TaPq+QJeDip05Q==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.451.0.tgz",
+ "integrity": "sha512-0kHrYEyVeB2QBfP6TfbI240aRtatLZtcErJbhpiNUb+CQPgEL3crIjgVE8yYiJumZ7f0jyjo8HLPkwD1/2APaw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.451.0.tgz",
+ "integrity": "sha512-J6jL6gJ7orjHGM70KDRcCP7so/J2SnkN4vZ9YRLTeeZY6zvBuHDjX8GCIgSqPn/nXFXckZO8XSnA7u6+3TAT0w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.451.0.tgz",
+ "integrity": "sha512-UJ6UfVUEgp0KIztxpAeelPXI5MLj9wUtUCqYeIMP7C1ZhoEMNm3G39VLkGN43dNhBf1LqjsV9jkKMZbVfYXuwg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.451.0.tgz",
+ "integrity": "sha512-s5ZlcIoLNg1Huj4Qp06iKniE8nJt/Pj1B/fjhWc6cCPCM7XJYUCejCnRh6C5ZJoBEYodjuwZBejPc1Wh3j+znA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.451.0.tgz",
+ "integrity": "sha512-8NM/0JiKLNvT9wtAQVl1DFW0cEO7OvZyLSUBLNLTHqyvOZxKaZ8YFk7d8PL6l76LeUKRxq4NMxfZQlUIRe0eSA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.451.0.tgz",
+ "integrity": "sha512-3iMf4OwzrFb4tAAmoROXaiORUk2FvSejnHIw/XHvf/jjR4EqGGF95NZP/n/MeFZMizJWVssrwS412GmoEyoqhg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-config-provider": "^2.0.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/token-providers": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.451.0.tgz",
+ "integrity": "sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/types": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz",
+ "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.451.0.tgz",
+ "integrity": "sha512-giqLGBTnRIcKkDqwU7+GQhKbtJ5Ku35cjGQIfMyOga6pwTBUbaK0xW1Sdd8sBQ1GhApscnChzI9o/R9x0368vw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/util-endpoints": "^1.0.4",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.451.0.tgz",
+ "integrity": "sha512-Ws5mG3J0TQifH7OTcMrCTexo7HeSAc3cBgjfhS/ofzPUzVCtsyg0G7I6T7wl7vJJETix2Kst2cpOsxygPgPD9w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.451.0.tgz",
+ "integrity": "sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudformation/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs": {
+ "version": "3.417.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.417.0.tgz",
+ "integrity": "sha512-WYSNWFaj3WGXdUrZQyM5xVwLjX5e1sMbb1Jv1lDKu+VbUZGtBJ3icGXs+DXJaBxdiwgqUmok3BsEnOovHbO8KA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.414.0",
+ "@aws-sdk/credential-provider-node": "3.414.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sso": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.414.0.tgz",
+ "integrity": "sha512-GvRwQ7wA3edzsQEKS70ZPhkOUZ62PAiXasjp6GxrsADEb8sV1z4FxXNl9Un/7fQxKkh9QYaK1Wu1PmhLi9MLMg==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sts": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.414.0.tgz",
+ "integrity": "sha512-xeYH3si6Imp1EWolWn1zuxJJu2AXKwXl1HDftQULwC5AWkm1mNFbXYSJN4hQul1IM+kn+JTRB0XRHByQkKhe+Q==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/credential-provider-node": "3.414.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-sdk-sts": "3.413.0",
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.413.0.tgz",
+ "integrity": "sha512-yeMOkfG20/RlzfPMtQuDB647AcPEvFEVYOWZzAWVJfldYQ5ybKr0d7sBkgG9sdAzGkK3Aw9dE4rigYI8EIqc1Q==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.414.0.tgz",
+ "integrity": "sha512-rlpLLx70roJL/t40opWC96LbIASejdMbRlgSCRpK8b/hKngYDe5A7SRVacaw08vYrAywxRiybxpQOwOt9b++rA==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.413.0",
+ "@aws-sdk/credential-provider-process": "3.413.0",
+ "@aws-sdk/credential-provider-sso": "3.414.0",
+ "@aws-sdk/credential-provider-web-identity": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.414.0.tgz",
+ "integrity": "sha512-xlkcOUKeGHInxWKKrZKIPSBCUL/ozyCldJBjmMKEj7ZmBAEiDcjpMe3pZ//LibMkCSy0b/7jtyQBE/eaIT2o0A==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.413.0",
+ "@aws-sdk/credential-provider-ini": "3.414.0",
+ "@aws-sdk/credential-provider-process": "3.413.0",
+ "@aws-sdk/credential-provider-sso": "3.414.0",
+ "@aws-sdk/credential-provider-web-identity": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.413.0.tgz",
+ "integrity": "sha512-GFJdgS14GzJ1wc2DEnS44Z/34iBZ05CAkvDsLN2CMwcDgH4eZuif9/x0lwzIJBK3xVFHzYUeVvEzsqRPbCHRsw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.414.0.tgz",
+ "integrity": "sha512-w9g2hlkZn7WekWICRqk+L33py7KrjYMFryVpkKXOx2pjDchCfZDr6pL1ml782GZ0L3qsob4SbNpbtp13JprnWQ==",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.414.0",
+ "@aws-sdk/token-providers": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.413.0.tgz",
+ "integrity": "sha512-5cdA1Iq9JeEHtg59ERV9fdMQ7cS0JF6gH/BWA7HYEUGdSVPXCuwyEggPtG64QgpNU7SmxH+QdDG+Ldxz09ycIA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.413.0.tgz",
+ "integrity": "sha512-r9PQx468EzPHo9wRzZLfgROpKtVdbkteMrdhsuM12bifVHjU1OHr7yfhc1OdWv39X8Xiv6F8n5r+RBQEM0S6+g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.413.0.tgz",
+ "integrity": "sha512-jqcXDubcKvoqBy+kkEa0WoNjG6SveDeyNy+gdGnTV+DEtYjkcHrHJei4q0W5zFl0mzc+dP+z8tJF44rv95ZY3Q==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.413.0.tgz",
+ "integrity": "sha512-C6k0IKJk/A4/VBGwUjxEPG+WOjjnmWAZVRBUzaeM7PqRh+g5rLcuIV356ntV3pREVxyiSTePTYVYIHU9YXkLKQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.413.0.tgz",
+ "integrity": "sha512-t0u//JUyaEZRVnH5q+Ur3tWnuyIsTdwA0XOdDCZXcSlLYzGp2MI/tScLjn9IydRrceIFpFfmbjk4Nf/Q6TeBTQ==",
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.413.0.tgz",
+ "integrity": "sha512-QFEnVvIKYPCermM+ESxEztgUgXzGSKpnPnohMYNvSZySqmOLu/4VvxiZbRO/BX9J3ZHcUgaw4vKm5VBZRrycxw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "@smithy/util-middleware": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.413.0.tgz",
+ "integrity": "sha512-eVMJyeWxNBqerhfD+sE9sTjDtwQiECrfU6wpUQP5fGPhJD2cVVZPxuTuJGDZCu/4k/V61dF85IYlsPUNLdVQ6w==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/token-providers": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.413.0.tgz",
+ "integrity": "sha512-NfP1Ib9LAWVLMTOa/1aJwt4TRrlRrNyukCpVZGfNaMnNNEoP5Rakdbcs8KFVHe/MJzU+GdKVzxQ4TgRkLOGTrA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/types": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.413.0.tgz",
+ "integrity": "sha512-j1xib0f/TazIFc5ySIKOlT1ujntRbaoG4LJFeEezz4ji03/wSJMI8Vi4KjzpBp8J1tTu0oRDnsxRIGixsUBeYQ==",
+ "dependencies": {
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.413.0.tgz",
+ "integrity": "sha512-VAwr7cITNb1L6/2XUPIbCOuhKGm0VtKCRblurrfUF2bxqG/wtuw/2Fm4ahYJPyxklOSXAMSq+RHdFWcir0YB/g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.413.0.tgz",
+ "integrity": "sha512-7j/qWcRO2OBZBre2fC6V6M0PAS9n7k6i+VtofPkkhxC2DZszLJElqnooF9hGmVGYK3zR47Np4WjURXKIEZclWg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.413.0.tgz",
+ "integrity": "sha512-vHm9TVZIzfWMeDvdmoOky6VarqOt8Pr68CESHN0jyuO6XbhCDnr9rpaXiBhbSR+N1Qm7R/AfJgAhQyTMu2G1OA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@smithy/protocol-http": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.5.tgz",
+ "integrity": "sha512-3t3fxj+ip4EPHRC2fQ0JimMxR/qCQ1LSQJjZZVZFgROnFLYWPDgUZqpoi7chr+EzatxJVXF/Rtoi5yLHOWCoZQ==",
+ "dependencies": {
+ "@smithy/types": "^2.3.3",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@aws-sdk/client-cognito-identity": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.398.0.tgz",
+ "integrity": "sha512-Pr/S1f8R2FsJ8DwBC6g0CSdtZNNV5dMHhlIi+t8YAmCJvP4KT+UhzFjbvQRINlBRLFuGUuP7p5vRcGVELD3+wA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-route-53": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.398.0.tgz",
+ "integrity": "sha512-Aab11et2VY1pE3C5pqZoVZPU5BP1iNhRufK27wQ1bCy/SiRyqvhXKAZ7YPkP9vHDIAFejp9/PSJPy17v/GUwuw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-sdk-route53": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@aws-sdk/xml-builder": "3.310.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "@smithy/util-waiter": "^2.0.5",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3": {
+ "version": "3.400.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.400.0.tgz",
+ "integrity": "sha512-lnv0pb79Czl8fCMs/z7yM56LvoKTri1I4jX/V33trHMFKPQDoy8i24wxG8+TZl3MUmnUyoQS7tlukh7IFkii1Q==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha1-browser": "3.0.0",
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-bucket-endpoint": "3.398.0",
+ "@aws-sdk/middleware-expect-continue": "3.398.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.400.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-location-constraint": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-sdk-s3": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-ssec": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/signature-v4-multi-region": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@aws-sdk/xml-builder": "3.310.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/eventstream-serde-browser": "^2.0.5",
+ "@smithy/eventstream-serde-config-resolver": "^2.0.5",
+ "@smithy/eventstream-serde-node": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-blob-browser": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/hash-stream-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/md5-js": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-stream": "^2.0.5",
+ "@smithy/util-utf8": "^2.0.0",
+ "@smithy/util-waiter": "^2.0.5",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.414.0.tgz",
+ "integrity": "sha512-aaH662yFB2McqiH0ho25UBAFy9rYFocjibnuFptpHAmZKw2LyNqqroLDp6RbVQYyqWHoPOBjM2XoHz8NJoEvIA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.414.0",
+ "@aws-sdk/credential-provider-node": "3.414.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "@smithy/util-waiter": "^2.0.7",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.414.0.tgz",
+ "integrity": "sha512-GvRwQ7wA3edzsQEKS70ZPhkOUZ62PAiXasjp6GxrsADEb8sV1z4FxXNl9Un/7fQxKkh9QYaK1Wu1PmhLi9MLMg==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sts": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.414.0.tgz",
+ "integrity": "sha512-xeYH3si6Imp1EWolWn1zuxJJu2AXKwXl1HDftQULwC5AWkm1mNFbXYSJN4hQul1IM+kn+JTRB0XRHByQkKhe+Q==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/credential-provider-node": "3.414.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-sdk-sts": "3.413.0",
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/region-config-resolver": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.413.0.tgz",
+ "integrity": "sha512-yeMOkfG20/RlzfPMtQuDB647AcPEvFEVYOWZzAWVJfldYQ5ybKr0d7sBkgG9sdAzGkK3Aw9dE4rigYI8EIqc1Q==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.414.0.tgz",
+ "integrity": "sha512-rlpLLx70roJL/t40opWC96LbIASejdMbRlgSCRpK8b/hKngYDe5A7SRVacaw08vYrAywxRiybxpQOwOt9b++rA==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.413.0",
+ "@aws-sdk/credential-provider-process": "3.413.0",
+ "@aws-sdk/credential-provider-sso": "3.414.0",
+ "@aws-sdk/credential-provider-web-identity": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.414.0.tgz",
+ "integrity": "sha512-xlkcOUKeGHInxWKKrZKIPSBCUL/ozyCldJBjmMKEj7ZmBAEiDcjpMe3pZ//LibMkCSy0b/7jtyQBE/eaIT2o0A==",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.413.0",
+ "@aws-sdk/credential-provider-ini": "3.414.0",
+ "@aws-sdk/credential-provider-process": "3.413.0",
+ "@aws-sdk/credential-provider-sso": "3.414.0",
+ "@aws-sdk/credential-provider-web-identity": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.413.0.tgz",
+ "integrity": "sha512-GFJdgS14GzJ1wc2DEnS44Z/34iBZ05CAkvDsLN2CMwcDgH4eZuif9/x0lwzIJBK3xVFHzYUeVvEzsqRPbCHRsw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.414.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.414.0.tgz",
+ "integrity": "sha512-w9g2hlkZn7WekWICRqk+L33py7KrjYMFryVpkKXOx2pjDchCfZDr6pL1ml782GZ0L3qsob4SbNpbtp13JprnWQ==",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.414.0",
+ "@aws-sdk/token-providers": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.413.0.tgz",
+ "integrity": "sha512-5cdA1Iq9JeEHtg59ERV9fdMQ7cS0JF6gH/BWA7HYEUGdSVPXCuwyEggPtG64QgpNU7SmxH+QdDG+Ldxz09ycIA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.413.0.tgz",
+ "integrity": "sha512-r9PQx468EzPHo9wRzZLfgROpKtVdbkteMrdhsuM12bifVHjU1OHr7yfhc1OdWv39X8Xiv6F8n5r+RBQEM0S6+g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.413.0.tgz",
+ "integrity": "sha512-jqcXDubcKvoqBy+kkEa0WoNjG6SveDeyNy+gdGnTV+DEtYjkcHrHJei4q0W5zFl0mzc+dP+z8tJF44rv95ZY3Q==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.413.0.tgz",
+ "integrity": "sha512-C6k0IKJk/A4/VBGwUjxEPG+WOjjnmWAZVRBUzaeM7PqRh+g5rLcuIV356ntV3pREVxyiSTePTYVYIHU9YXkLKQ==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.413.0.tgz",
+ "integrity": "sha512-t0u//JUyaEZRVnH5q+Ur3tWnuyIsTdwA0XOdDCZXcSlLYzGp2MI/tScLjn9IydRrceIFpFfmbjk4Nf/Q6TeBTQ==",
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.413.0.tgz",
+ "integrity": "sha512-QFEnVvIKYPCermM+ESxEztgUgXzGSKpnPnohMYNvSZySqmOLu/4VvxiZbRO/BX9J3ZHcUgaw4vKm5VBZRrycxw==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.3.1",
+ "@smithy/util-middleware": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.413.0.tgz",
+ "integrity": "sha512-eVMJyeWxNBqerhfD+sE9sTjDtwQiECrfU6wpUQP5fGPhJD2cVVZPxuTuJGDZCu/4k/V61dF85IYlsPUNLdVQ6w==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/token-providers": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.413.0.tgz",
+ "integrity": "sha512-NfP1Ib9LAWVLMTOa/1aJwt4TRrlRrNyukCpVZGfNaMnNNEoP5Rakdbcs8KFVHe/MJzU+GdKVzxQ4TgRkLOGTrA==",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.413.0",
+ "@aws-sdk/middleware-logger": "3.413.0",
+ "@aws-sdk/middleware-recursion-detection": "3.413.0",
+ "@aws-sdk/middleware-user-agent": "3.413.0",
+ "@aws-sdk/types": "3.413.0",
+ "@aws-sdk/util-endpoints": "3.413.0",
+ "@aws-sdk/util-user-agent-browser": "3.413.0",
+ "@aws-sdk/util-user-agent-node": "3.413.0",
+ "@smithy/config-resolver": "^2.0.8",
+ "@smithy/fetch-http-handler": "^2.1.3",
+ "@smithy/hash-node": "^2.0.7",
+ "@smithy/invalid-dependency": "^2.0.7",
+ "@smithy/middleware-content-length": "^2.0.9",
+ "@smithy/middleware-endpoint": "^2.0.7",
+ "@smithy/middleware-retry": "^2.0.10",
+ "@smithy/middleware-serde": "^2.0.7",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/node-http-handler": "^2.1.3",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.3",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/smithy-client": "^2.1.4",
+ "@smithy/types": "^2.3.1",
+ "@smithy/url-parser": "^2.0.7",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.8",
+ "@smithy/util-defaults-mode-node": "^2.0.10",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.413.0.tgz",
+ "integrity": "sha512-j1xib0f/TazIFc5ySIKOlT1ujntRbaoG4LJFeEezz4ji03/wSJMI8Vi4KjzpBp8J1tTu0oRDnsxRIGixsUBeYQ==",
+ "dependencies": {
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.413.0.tgz",
+ "integrity": "sha512-VAwr7cITNb1L6/2XUPIbCOuhKGm0VtKCRblurrfUF2bxqG/wtuw/2Fm4ahYJPyxklOSXAMSq+RHdFWcir0YB/g==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.413.0.tgz",
+ "integrity": "sha512-7j/qWcRO2OBZBre2fC6V6M0PAS9n7k6i+VtofPkkhxC2DZszLJElqnooF9hGmVGYK3zR47Np4WjURXKIEZclWg==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/types": "^2.3.1",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.413.0.tgz",
+ "integrity": "sha512-vHm9TVZIzfWMeDvdmoOky6VarqOt8Pr68CESHN0jyuO6XbhCDnr9rpaXiBhbSR+N1Qm7R/AfJgAhQyTMu2G1OA==",
+ "dependencies": {
+ "@aws-sdk/types": "3.413.0",
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/types": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/@smithy/protocol-http": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.5.tgz",
+ "integrity": "sha512-3t3fxj+ip4EPHRC2fQ0JimMxR/qCQ1LSQJjZZVZFgROnFLYWPDgUZqpoi7chr+EzatxJVXF/Rtoi5yLHOWCoZQ==",
+ "dependencies": {
+ "@smithy/types": "^2.3.3",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ssm/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.398.0.tgz",
+ "integrity": "sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.398.0.tgz",
+ "integrity": "sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-sdk-sts": "3.398.0",
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver": {
+ "version": "3.374.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.374.0.tgz",
+ "integrity": "sha512-eTSbmpcgZ97o7PuFls8pH1344OS03nfqq1NO9HxxvoYoZ6DFfUO7kqKeNUhP9LxOF7slyHXajDT7eoPclGnTuw==",
+ "deprecated": "This package has moved to @smithy/config-resolver",
+ "dev": true,
+ "dependencies": {
+ "@smithy/config-resolver": "^1.0.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver/node_modules/@smithy/config-resolver": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-1.1.0.tgz",
+ "integrity": "sha512-7WD9eZHp46BxAjNGHJLmxhhyeiNWkBdVStd7SUJPUZqQGeIO/REtIrcIfKUfdiHTQ9jyu2SYoqvzqqaFc6987w==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "@smithy/util-config-provider": "^1.1.0",
+ "@smithy/util-middleware": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver/node_modules/@smithy/types": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz",
+ "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver/node_modules/@smithy/util-config-provider": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-1.1.0.tgz",
+ "integrity": "sha512-rQ47YpNmF6Is4I9GiE3T3+0xQ+r7RKRKbmHYyGSbyep/0cSf9kteKcI0ssJTvveJ1K4QvwrxXj1tEFp/G2UqxQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver/node_modules/@smithy/util-middleware": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-1.1.0.tgz",
+ "integrity": "sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/core": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.451.0.tgz",
+ "integrity": "sha512-SamWW2zHEf1ZKe3j1w0Piauryl8BQIlej0TBS18A4ACzhjhWXhCs13bO1S88LvPR5mBFXok3XOT6zPOnKDFktw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/smithy-client": "^2.1.15",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.398.0.tgz",
+ "integrity": "sha512-MFUhy1YayHg5ypRTk4OTfDumQRP+OJBagaGv14kA8DzhKH1sNrU4HV7A7y2J4SvkN5hG/KnLJqxpakCtB2/O2g==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.398.0.tgz",
+ "integrity": "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.398.0.tgz",
+ "integrity": "sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.398.0",
+ "@aws-sdk/credential-provider-process": "3.398.0",
+ "@aws-sdk/credential-provider-sso": "3.398.0",
+ "@aws-sdk/credential-provider-web-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.398.0.tgz",
+ "integrity": "sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.398.0",
+ "@aws-sdk/credential-provider-ini": "3.398.0",
+ "@aws-sdk/credential-provider-process": "3.398.0",
+ "@aws-sdk/credential-provider-sso": "3.398.0",
+ "@aws-sdk/credential-provider-web-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.398.0.tgz",
+ "integrity": "sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.398.0.tgz",
+ "integrity": "sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.398.0",
+ "@aws-sdk/token-providers": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.398.0.tgz",
+ "integrity": "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-providers": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.398.0.tgz",
+ "integrity": "sha512-355vXmImn2e85mIWSYDVb101AF2lIVHKNCaH6sV1U/8i0ZOXh2cJYNdkRYrxNt1ezDB0k97lSKvuDx7RDvJyRg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.398.0",
+ "@aws-sdk/client-sso": "3.398.0",
+ "@aws-sdk/client-sts": "3.398.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.398.0",
+ "@aws-sdk/credential-provider-env": "3.398.0",
+ "@aws-sdk/credential-provider-ini": "3.398.0",
+ "@aws-sdk/credential-provider-node": "3.398.0",
+ "@aws-sdk/credential-provider-process": "3.398.0",
+ "@aws-sdk/credential-provider-sso": "3.398.0",
+ "@aws-sdk/credential-provider-web-identity": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.398.0.tgz",
+ "integrity": "sha512-+iDHiRofK/vIY94RWAXkSnR4rBPzc2dPHmLp+FDKywq1y708H9W7TOT37dpn+KSFeO4k2FfddFjzWBHsaeakCA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-arn-parser": "3.310.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-config-provider": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-expect-continue": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.398.0.tgz",
+ "integrity": "sha512-d6he+Qqwh1yqml9duXSv5iKJ2lS0PVrF2UEsVew2GFxfUif0E/davTZJjvWtnelbuIGcTP+wDKVVjLwBN2sN/g==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums": {
+ "version": "3.400.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.400.0.tgz",
+ "integrity": "sha512-lpsumd5/G+eAMTr61h/cJQZ8+i+xzC6OG3bvUcbRHqcjN49XgeNLcPfYcr6Rzf0QHxmuCN4te/4XGU3Fif2YVA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@aws-crypto/crc32c": "3.0.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/is-array-buffer": "^2.0.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.398.0.tgz",
+ "integrity": "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.398.0.tgz",
+ "integrity": "sha512-it+olJf1Lf2bmH8OL/N1jMOFB0zEVYs4rIzgFrluTRCuPatRuDi4LsXS8zqYxkBa05JE8JmqwW5gCzAmWyLLqw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.398.0.tgz",
+ "integrity": "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.398.0.tgz",
+ "integrity": "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-api-gateway": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.398.0.tgz",
+ "integrity": "sha512-SpDimzekPpOQTtkUScK8sMRY+JsAAGb5LvqSmf7kfYfyt0x+F+MAdAgPcO874GApJC7gu9++lqR5qP9B+LBNOw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-route53": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-route53/-/middleware-sdk-route53-3.398.0.tgz",
+ "integrity": "sha512-1biZeNxfPLBTgCdK0xCD9MyO3i0xPhY+DjiD59HrxXHaYrMDhfDapbjmi+6QmoOLGTvWGIyKUo4Sqp6Ly1wT5w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.398.0.tgz",
+ "integrity": "sha512-yweSMc/TyiFtqc52hFMKQJvTm3i1KCoW5mB3o/Sla6zsHBh+nS6TTaBmo+2kcDIR7AKODwW+FLCTHWiazb7J3Q==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-arn-parser": "3.310.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.398.0.tgz",
+ "integrity": "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.398.0.tgz",
+ "integrity": "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-middleware": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-ssec": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.398.0.tgz",
+ "integrity": "sha512-QtKr/hPcRugKSIZAH4+7hbUfdW7Lg+OQvD25nJn7ic1JHRZ+eDctEFxdsmnt68lE6aZxOcHCWHAW6/umcA93Dw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.398.0.tgz",
+ "integrity": "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider": {
+ "version": "3.374.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.374.0.tgz",
+ "integrity": "sha512-RsUeDTtslQ9b/slyjAuVqEVZLnZ/jVdNbLaY30oF6FhvZnKpoiN8m7z4oiDjGQ6K2lVuQNdSRGjzI22W+mLwug==",
+ "deprecated": "This package has moved to @smithy/node-config-provider",
+ "dev": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^1.0.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider/node_modules/@smithy/node-config-provider": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-1.1.0.tgz",
+ "integrity": "sha512-2G4TlzUnmTrUY26VKTonQqydwb+gtM/mcl+TqDP8CnWtJKVL8ElPpKgLGScP04bPIRY9x2/10lDdoaRXDqPuCw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/property-provider": "^1.2.0",
+ "@smithy/shared-ini-file-loader": "^1.1.0",
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider/node_modules/@smithy/property-provider": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-1.2.0.tgz",
+ "integrity": "sha512-qlJd9gT751i4T0t/hJAyNGfESfi08Fek8QiLcysoKPgR05qHhG0OYhlaCJHhpXy4ECW0lHyjvFM1smrCLIXVfw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider/node_modules/@smithy/shared-ini-file-loader": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.1.0.tgz",
+ "integrity": "sha512-S/v33zvCWzFyGZGlsEF0XsZtNNR281UhR7byk3nRfsgw5lGpg51rK/zjMgulM+h6NSuXaFILaYrw1I1v4kMcuA==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/node-config-provider/node_modules/@smithy/types": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz",
+ "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.413.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.413.0.tgz",
+ "integrity": "sha512-h90e6yyOhvoc+1F5vFk3C5mxwB8RSDEMKTO/fxexyur94seczZ1yxyYkTMZv30oc9RUiToABlHNrh/wxL7TZPQ==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.0.10",
+ "@smithy/types": "^2.3.1",
+ "@smithy/util-config-provider": "^2.0.0",
+ "@smithy/util-middleware": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/signature-v4-multi-region": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.398.0.tgz",
+ "integrity": "sha512-8fTqTxRDWE03T7ClaWlCfbwuSae//01XMNVy2a9g5QgaelQh7ZZyU3ZIJiV8gIj8v6ZM0NGn9Bz1liI/vmNmcw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/signature-v4-crt": "^3.118.0"
+ },
+ "peerDependenciesMeta": {
+ "@aws-sdk/signature-v4-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client": {
+ "version": "3.374.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.374.0.tgz",
+ "integrity": "sha512-YQBdO/Nv5EXBg/qfMF4GgYYLNN3Y/06MyuVBYILC1TKAnMoLy2FV0VOYyediagepAcWPdJqyUq4MCNNBy0CPRg==",
+ "deprecated": "This package has moved to @smithy/smithy-client",
+ "dev": true,
+ "dependencies": {
+ "@smithy/smithy-client": "^1.0.3",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/abort-controller": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.1.0.tgz",
+ "integrity": "sha512-5imgGUlZL4dW4YWdMYAKLmal9ny/tlenM81QZY7xYyb76z9Z/QOg7oM5Ak9HQl8QfFTlGVWwcMXl+54jroRgEQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/fetch-http-handler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-1.1.0.tgz",
+ "integrity": "sha512-N22C9R44u5WGlcY+Wuv8EXmCAq62wWwriRAuoczMEwAIjPbvHSthyPSLqI4S7kAST1j6niWg8kwpeJ3ReAv3xg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^1.2.0",
+ "@smithy/querystring-builder": "^1.1.0",
+ "@smithy/types": "^1.2.0",
+ "@smithy/util-base64": "^1.1.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/is-array-buffer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-1.1.0.tgz",
+ "integrity": "sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/middleware-stack": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-1.1.0.tgz",
+ "integrity": "sha512-XynYiIvXNea2BbLcppvpNK0zu8o2woJqgnmxqYTn4FWagH/Hr2QIk8LOsUz7BIJ4tooFhmx8urHKCdlPbbPDCA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/node-http-handler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.1.0.tgz",
+ "integrity": "sha512-d3kRriEgaIiGXLziAM8bjnaLn1fthCJeTLZIwEIpzQqe6yPX0a+yQoLCTyjb2fvdLwkMoG4p7THIIB5cj5lkbg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/abort-controller": "^1.1.0",
+ "@smithy/protocol-http": "^1.2.0",
+ "@smithy/querystring-builder": "^1.1.0",
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/protocol-http": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.2.0.tgz",
+ "integrity": "sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/querystring-builder": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.1.0.tgz",
+ "integrity": "sha512-gDEi4LxIGLbdfjrjiY45QNbuDmpkwh9DX4xzrR2AzjjXpxwGyfSpbJaYhXARw9p17VH0h9UewnNQXNwaQyYMDA==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^1.2.0",
+ "@smithy/util-uri-escape": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/smithy-client": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-1.1.0.tgz",
+ "integrity": "sha512-j32SGgVhv2G9nBTmel9u3OXux8KG20ssxuFakJrEeDug3kqbl1qrGzVLCe+Eib402UDtA0Sp1a4NZ2SEXDBxag==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/middleware-stack": "^1.1.0",
+ "@smithy/types": "^1.2.0",
+ "@smithy/util-stream": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/types": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.2.0.tgz",
+ "integrity": "sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-base64": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-1.1.0.tgz",
+ "integrity": "sha512-FpYmDmVbOXAxqvoVCwqehUN0zXS+lN8V7VS9O7I8MKeVHdSTsZzlwiMEvGoyTNOXWn8luF4CTDYgNHnZViR30g==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-buffer-from": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-1.1.0.tgz",
+ "integrity": "sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-hex-encoding": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-1.1.0.tgz",
+ "integrity": "sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-1.1.0.tgz",
+ "integrity": "sha512-w3lsdGsntaLQIrwDWJkIFKrFscgZXwU/oxsse09aSTNv5TckPhDeYea3LhsDrU5MGAG3vprhVZAKr33S45coVA==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^1.1.0",
+ "@smithy/node-http-handler": "^1.1.0",
+ "@smithy/types": "^1.2.0",
+ "@smithy/util-base64": "^1.1.0",
+ "@smithy/util-buffer-from": "^1.1.0",
+ "@smithy/util-hex-encoding": "^1.1.0",
+ "@smithy/util-utf8": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-uri-escape": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.1.0.tgz",
+ "integrity": "sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/smithy-client/node_modules/@smithy/util-utf8": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-1.1.0.tgz",
+ "integrity": "sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/token-providers": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.398.0.tgz",
+ "integrity": "sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.398.0",
+ "@aws-sdk/middleware-logger": "3.398.0",
+ "@aws-sdk/middleware-recursion-detection": "3.398.0",
+ "@aws-sdk/middleware-user-agent": "3.398.0",
+ "@aws-sdk/types": "3.398.0",
+ "@aws-sdk/util-endpoints": "3.398.0",
+ "@aws-sdk/util-user-agent-browser": "3.398.0",
+ "@aws-sdk/util-user-agent-node": "3.398.0",
+ "@smithy/config-resolver": "^2.0.5",
+ "@smithy/fetch-http-handler": "^2.0.5",
+ "@smithy/hash-node": "^2.0.5",
+ "@smithy/invalid-dependency": "^2.0.5",
+ "@smithy/middleware-content-length": "^2.0.5",
+ "@smithy/middleware-endpoint": "^2.0.5",
+ "@smithy/middleware-retry": "^2.0.5",
+ "@smithy/middleware-serde": "^2.0.5",
+ "@smithy/middleware-stack": "^2.0.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/node-http-handler": "^2.0.5",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^2.0.5",
+ "@smithy/shared-ini-file-loader": "^2.0.0",
+ "@smithy/smithy-client": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "@smithy/url-parser": "^2.0.5",
+ "@smithy/util-base64": "^2.0.0",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.5",
+ "@smithy/util-defaults-mode-node": "^2.0.5",
+ "@smithy/util-retry": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/types": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz",
+ "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==",
+ "dependencies": {
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-arn-parser": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz",
+ "integrity": "sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.398.0.tgz",
+ "integrity": "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-locate-window": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz",
+ "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-retry": {
+ "version": "3.374.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.374.0.tgz",
+ "integrity": "sha512-0p/trhYU+Ys8j3vMnWCvAkSOL6JRMooV9dVlQ+o7EHbQs9kDtnyucMUHU09ahHSIPTA/n/013hv7bzIt3MyKQg==",
+ "deprecated": "This package has moved to @smithy/util-retry",
+ "dev": true,
+ "dependencies": {
+ "@smithy/util-retry": "^1.0.3",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-retry/node_modules/@smithy/service-error-classification": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.1.0.tgz",
+ "integrity": "sha512-OCTEeJ1igatd5kFrS2VDlYbainNNpf7Lj1siFOxnRWqYOP9oNvC5HOJBd3t+Z8MbrmehBtuDJ2QqeBsfeiNkww==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-retry/node_modules/@smithy/util-retry": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.1.0.tgz",
+ "integrity": "sha512-ygQW5HBqYXpR3ua09UciS0sL7UGJzGiktrKkOuEJwARoUuzz40yaEGU6xd9Gs7KBmAaFC8gMfnghHtwZ2nyBCQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/service-error-classification": "^1.1.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.398.0.tgz",
+ "integrity": "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/types": "^2.2.2",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.398.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.398.0.tgz",
+ "integrity": "sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.398.0",
+ "@smithy/node-config-provider": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/util-utf8-browser": {
+ "version": "3.259.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz",
+ "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==",
+ "dependencies": {
+ "tslib": "^2.3.1"
+ }
+ },
+ "node_modules/@aws-sdk/xml-builder": {
+ "version": "3.310.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz",
+ "integrity": "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz",
+ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz",
+ "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.10",
+ "@babel/generator": "^7.22.10",
+ "@babel/helper-compilation-targets": "^7.22.10",
+ "@babel/helper-module-transforms": "^7.22.9",
+ "@babel/helpers": "^7.22.11",
+ "@babel/parser": "^7.22.11",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.11",
+ "@babel/types": "^7.22.11",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz",
+ "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.3",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz",
+ "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.5",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+ "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz",
+ "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+ "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz",
+ "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.11",
+ "@babel/types": "^7.22.11"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
+ "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/highlight/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz",
+ "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==",
+ "dev": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@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,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@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",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@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",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+ "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz",
+ "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.3",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.3",
+ "@babel/types": "^7.23.3",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz",
+ "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@balena/dockerignore": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz",
+ "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==",
+ "dev": true
+ },
+ "node_modules/@bcherny/json-schema-ref-parser": {
+ "version": "10.0.5-fork",
+ "resolved": "https://registry.npmjs.org/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz",
+ "integrity": "sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw==",
+ "dev": true,
+ "dependencies": {
+ "@jsdevtools/ono": "^7.1.3",
+ "@types/json-schema": "^7.0.6",
+ "call-me-maybe": "^1.0.1",
+ "js-yaml": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/philsturgeon"
+ }
+ },
+ "node_modules/@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
+ },
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "node_modules/@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/@elastic/elasticsearch": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-7.10.0.tgz",
+ "integrity": "sha512-vXtMAQf5/DwqeryQgRriMtnFppJNLc/R7/R0D8E+wG5/kGM5i7mg+Hi7TM4NZEuXgtzZ2a/Nf7aR0vLyrxOK/w==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "hpagent": "^0.1.1",
+ "ms": "^2.1.1",
+ "pump": "^3.0.0",
+ "secure-json-parse": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz",
+ "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz",
+ "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+ "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^1.2.1",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/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,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/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,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/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,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/console/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/core/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz",
+ "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-mock": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz",
+ "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.6.4",
+ "jest-snapshot": "^29.6.4"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz",
+ "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz",
+ "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@sinonjs/fake-timers": "^10.0.2",
+ "@types/node": "*",
+ "jest-message-util": "^29.6.3",
+ "jest-mock": "^29.6.3",
+ "jest-util": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz",
+ "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^29.6.4",
+ "@jest/expect": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "jest-mock": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dev": true,
+ "dependencies": {
+ "@sinclair/typebox": "^0.27.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
+ "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@jsdevtools/ono": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
+ "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
+ "dev": true
+ },
+ "node_modules/@kwsites/file-exists": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
+ "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1"
+ }
+ },
+ "node_modules/@kwsites/promise-deferred": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
+ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==",
+ "dev": true
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgr/utils": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+ "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "fast-glob": "^3.3.0",
+ "is-glob": "^4.0.3",
+ "open": "^9.1.0",
+ "picocolors": "^1.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@pkgr/utils/node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@pkgr/utils/node_modules/open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-7.1.0.tgz",
+ "integrity": "sha512-mAiTU2ERsDHdCrXJa/tihh/r+8ZwSuYYBqln3SkwuBD/49ct9QrK7S00cpiqFoY/geMFlHpOkriGzCPz6UP/rw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-cloudformation": "^3.410.0",
+ "@aws-sdk/client-sts": "^3.410.0",
+ "@serverless/event-mocks": "^1.1.1",
+ "@serverless/platform-client": "^4.4.0",
+ "@serverless/utils": "^6.14.0",
+ "child-process-ext": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "flat": "^5.0.2",
+ "fs-extra": "^9.1.0",
+ "js-yaml": "^4.1.0",
+ "jszip": "^3.10.1",
+ "lodash": "^4.17.21",
+ "memoizee": "^0.4.15",
+ "ncjsm": "^4.3.2",
+ "node-dir": "^0.1.17",
+ "node-fetch": "^2.6.8",
+ "open": "^7.4.2",
+ "semver": "^7.3.8",
+ "simple-git": "^3.16.0",
+ "timers-ext": "^0.1.7",
+ "type": "^2.7.2",
+ "uuid": "^8.3.2",
+ "yamljs": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/client-sso": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.451.0.tgz",
+ "integrity": "sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.451.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/client-sts": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.451.0.tgz",
+ "integrity": "sha512-48NcIRxWBdP1fom6RSjwn2R2u7SE7eeV3p+c4s7ukEOfrHhBxJfn3EpqBVQMGzdiU55qFImy+Fe81iA2lXq3Jw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/core": "3.451.0",
+ "@aws-sdk/credential-provider-node": "3.451.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-sdk-sts": "3.451.0",
+ "@aws-sdk/middleware-signing": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.451.0.tgz",
+ "integrity": "sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.451.0.tgz",
+ "integrity": "sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.451.0",
+ "@aws-sdk/credential-provider-process": "3.451.0",
+ "@aws-sdk/credential-provider-sso": "3.451.0",
+ "@aws-sdk/credential-provider-web-identity": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.451.0.tgz",
+ "integrity": "sha512-AEwM1WPyxUdKrKyUsKyFqqRFGU70e4qlDyrtBxJnSU9NRLZI8tfEZ67bN7fHSxBUBODgDXpMSlSvJiBLh5/3pw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.451.0",
+ "@aws-sdk/credential-provider-ini": "3.451.0",
+ "@aws-sdk/credential-provider-process": "3.451.0",
+ "@aws-sdk/credential-provider-sso": "3.451.0",
+ "@aws-sdk/credential-provider-web-identity": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/credential-provider-imds": "^2.0.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.451.0.tgz",
+ "integrity": "sha512-HQywSdKeD5PErcLLnZfSyCJO+6T+ZyzF+Lm/QgscSC+CbSUSIPi//s15qhBRVely/3KBV6AywxwNH+5eYgt4lQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.451.0.tgz",
+ "integrity": "sha512-Usm/N51+unOt8ID4HnQzxIjUJDrkAQ1vyTOC0gSEEJ7h64NSSPGD5yhN7il5WcErtRd3EEtT1a8/GTC5TdBctg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.451.0",
+ "@aws-sdk/token-providers": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.451.0.tgz",
+ "integrity": "sha512-Xtg3Qw65EfDjWNG7o2xD6sEmumPfsy3WDGjk2phEzVg8s7hcZGxf5wYwe6UY7RJvlEKrU0rFA+AMn6Hfj5oOzg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.451.0.tgz",
+ "integrity": "sha512-j8a5jAfhWmsK99i2k8oR8zzQgXrsJtgrLxc3js6U+525mcZytoiDndkWTmD5fjJ1byU1U2E5TaPq+QJeDip05Q==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.451.0.tgz",
+ "integrity": "sha512-0kHrYEyVeB2QBfP6TfbI240aRtatLZtcErJbhpiNUb+CQPgEL3crIjgVE8yYiJumZ7f0jyjo8HLPkwD1/2APaw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.451.0.tgz",
+ "integrity": "sha512-J6jL6gJ7orjHGM70KDRcCP7so/J2SnkN4vZ9YRLTeeZY6zvBuHDjX8GCIgSqPn/nXFXckZO8XSnA7u6+3TAT0w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.451.0.tgz",
+ "integrity": "sha512-UJ6UfVUEgp0KIztxpAeelPXI5MLj9wUtUCqYeIMP7C1ZhoEMNm3G39VLkGN43dNhBf1LqjsV9jkKMZbVfYXuwg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/middleware-signing": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.451.0.tgz",
+ "integrity": "sha512-s5ZlcIoLNg1Huj4Qp06iKniE8nJt/Pj1B/fjhWc6cCPCM7XJYUCejCnRh6C5ZJoBEYodjuwZBejPc1Wh3j+znA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/signature-v4": "^2.0.0",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.451.0.tgz",
+ "integrity": "sha512-8NM/0JiKLNvT9wtAQVl1DFW0cEO7OvZyLSUBLNLTHqyvOZxKaZ8YFk7d8PL6l76LeUKRxq4NMxfZQlUIRe0eSA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.451.0.tgz",
+ "integrity": "sha512-3iMf4OwzrFb4tAAmoROXaiORUk2FvSejnHIw/XHvf/jjR4EqGGF95NZP/n/MeFZMizJWVssrwS412GmoEyoqhg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-config-provider": "^2.0.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/token-providers": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.451.0.tgz",
+ "integrity": "sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==",
+ "dev": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/middleware-host-header": "3.451.0",
+ "@aws-sdk/middleware-logger": "3.451.0",
+ "@aws-sdk/middleware-recursion-detection": "3.451.0",
+ "@aws-sdk/middleware-user-agent": "3.451.0",
+ "@aws-sdk/region-config-resolver": "3.451.0",
+ "@aws-sdk/types": "3.451.0",
+ "@aws-sdk/util-endpoints": "3.451.0",
+ "@aws-sdk/util-user-agent-browser": "3.451.0",
+ "@aws-sdk/util-user-agent-node": "3.451.0",
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/hash-node": "^2.0.15",
+ "@smithy/invalid-dependency": "^2.0.13",
+ "@smithy/middleware-content-length": "^2.0.15",
+ "@smithy/middleware-endpoint": "^2.2.0",
+ "@smithy/middleware-retry": "^2.0.20",
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/property-provider": "^2.0.0",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/shared-ini-file-loader": "^2.0.6",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-body-length-browser": "^2.0.0",
+ "@smithy/util-body-length-node": "^2.1.0",
+ "@smithy/util-defaults-mode-browser": "^2.0.19",
+ "@smithy/util-defaults-mode-node": "^2.0.25",
+ "@smithy/util-endpoints": "^1.0.4",
+ "@smithy/util-retry": "^2.0.6",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/types": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.451.0.tgz",
+ "integrity": "sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.451.0.tgz",
+ "integrity": "sha512-giqLGBTnRIcKkDqwU7+GQhKbtJ5Ku35cjGQIfMyOga6pwTBUbaK0xW1Sdd8sBQ1GhApscnChzI9o/R9x0368vw==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/util-endpoints": "^1.0.4",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.451.0.tgz",
+ "integrity": "sha512-Ws5mG3J0TQifH7OTcMrCTexo7HeSAc3cBgjfhS/ofzPUzVCtsyg0G7I6T7wl7vJJETix2Kst2cpOsxygPgPD9w==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/types": "^2.5.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.451.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.451.0.tgz",
+ "integrity": "sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.451.0",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/child-process-ext": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-3.0.2.tgz",
+ "integrity": "sha512-oBePsLbQpTJFxzwyCvs9yWWF0OEM6vGGepHwt1stqmX7QQqOuDc8j2ywdvAs9Tvi44TT7d9ackqhR4Q10l1u8w==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "es5-ext": "^0.10.62",
+ "log": "^6.3.1",
+ "split2": "^3.2.2",
+ "stream-promise": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "dev": true,
+ "dependencies": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/open": {
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
+ "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.0.0"
+ }
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/@serverless/dashboard-plugin/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@serverless/event-mocks": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz",
+ "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "^4.14.123",
+ "lodash": "^4.17.11"
+ }
+ },
+ "node_modules/@serverless/platform-client": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@serverless/platform-client/-/platform-client-4.4.0.tgz",
+ "integrity": "sha512-urL7SNefRqC2EOFDcpvm8fyn/06B5yXWneKpyGw7ylGt0Qr9JHZCB9TiUeTkIpPUNz0jTvKUaJ2+M/JNEiaVIA==",
+ "dev": true,
+ "dependencies": {
+ "adm-zip": "^0.5.5",
+ "archiver": "^5.3.0",
+ "axios": "^1.6.2",
+ "fast-glob": "^3.2.7",
+ "https-proxy-agent": "^5.0.0",
+ "ignore": "^5.1.8",
+ "isomorphic-ws": "^4.0.1",
+ "js-yaml": "^3.14.1",
+ "jwt-decode": "^2.2.0",
+ "minimatch": "^3.0.4",
+ "querystring": "^0.2.1",
+ "run-parallel-limit": "^1.1.0",
+ "throat": "^5.0.0",
+ "traverse": "^0.6.6",
+ "ws": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/@serverless/platform-client/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/@serverless/platform-client/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@serverless/platform-client/node_modules/querystring": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
+ "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/@serverless/platform-client/node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/@serverless/platform-client/node_modules/throat": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
+ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
+ "dev": true
+ },
+ "node_modules/@serverless/platform-client/node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/@serverless/platform-client/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@serverless/utils": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.15.0.tgz",
+ "integrity": "sha512-7eDbqKv/OBd11jjdZjUwFGN8sHWkeUqLeHXHQxQ1azja2IM7WIH+z/aLgzR6LhB3/MINNwtjesDpjGqTMj2JKQ==",
+ "dev": true,
+ "dependencies": {
+ "archive-type": "^4.0.0",
+ "chalk": "^4.1.2",
+ "ci-info": "^3.8.0",
+ "cli-progress-footer": "^2.3.2",
+ "content-disposition": "^0.5.4",
+ "d": "^1.0.1",
+ "decompress": "^4.2.1",
+ "event-emitter": "^0.3.5",
+ "ext": "^1.7.0",
+ "ext-name": "^5.0.0",
+ "file-type": "^16.5.4",
+ "filenamify": "^4.3.0",
+ "get-stream": "^6.0.1",
+ "got": "^11.8.6",
+ "inquirer": "^8.2.5",
+ "js-yaml": "^4.1.0",
+ "jwt-decode": "^3.1.2",
+ "lodash": "^4.17.21",
+ "log": "^6.3.1",
+ "log-node": "^8.0.3",
+ "make-dir": "^4.0.0",
+ "memoizee": "^0.4.15",
+ "ms": "^2.1.3",
+ "ncjsm": "^4.3.2",
+ "node-fetch": "^2.6.11",
+ "open": "^8.4.2",
+ "p-event": "^4.2.0",
+ "supports-color": "^8.1.1",
+ "timers-ext": "^0.1.7",
+ "type": "^2.7.2",
+ "uni-global": "^1.0.0",
+ "uuid": "^8.3.2",
+ "write-file-atomic": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
+ "node_modules/@serverless/utils/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@serverless/utils/node_modules/jwt-decode": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
+ "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==",
+ "dev": true
+ },
+ "node_modules/@serverless/utils/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/@serverless/utils/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/@serverless/utils/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@serverless/utils/node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
+ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/is?sponsor=1"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz",
+ "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
+ "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.0"
+ }
+ },
+ "node_modules/@smithy/abort-controller": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.13.tgz",
+ "integrity": "sha512-eeOPD+GF9BzF/Mjy3PICLePx4l0f3rG/nQegQHRLTloN5p1lSJJNZsyn+FzDnW8P2AduragZqJdtKNCxXozB1Q==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/chunked-blob-reader": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz",
+ "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/chunked-blob-reader-native": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.0.tgz",
+ "integrity": "sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/util-base64": "^2.0.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/config-resolver": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.18.tgz",
+ "integrity": "sha512-761sJSgNbvsqcsKW6/WZbrZr4H+0Vp/QKKqwyrxCPwD8BsiPEXNHyYnqNgaeK9xRWYswjon0Uxbpe3DWQo0j/g==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-config-provider": "^2.0.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/credential-provider-imds": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.1.tgz",
+ "integrity": "sha512-gw5G3FjWC6sNz8zpOJgPpH5HGKrpoVFQpToNAwLwJVyI/LJ2jDJRjSKEsM6XI25aRpYjMSE/Qptxx305gN1vHw==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/property-provider": "^2.0.14",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-codec": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.5.tgz",
+ "integrity": "sha512-iqR6OuOV3zbQK8uVs9o+9AxhVk8kW9NAxA71nugwUB+kTY9C35pUd0A5/m4PRT0Y0oIW7W4kgnSR3fdYXQjECw==",
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-hex-encoding": "^2.0.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-browser": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.5.tgz",
+ "integrity": "sha512-8NU51y94qFJbxL6SmvgWDfITHO/svvbAigkLYk2pckX17TGCSf4EXuGpGLliJp5Ljh5+vASC7mUH2jYX7MWBxA==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/eventstream-serde-universal": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-config-resolver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.5.tgz",
+ "integrity": "sha512-u3gvukRaTH4X6tsryuZ4T1WGIEP34fPaTTzphFDJe8GJz/k11oBW1MPnkcaucBMxLnObK9swCF85j5cp1Kj1oA==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-node": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.5.tgz",
+ "integrity": "sha512-/C8jb+k/vKUBIe80D30vzjvRXlJf76kG2AJY7/NwiqWuD2usRuuDFCDaswXdVsSh9P1+FeaxZ48chsK10yDryQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/eventstream-serde-universal": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/eventstream-serde-universal": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.5.tgz",
+ "integrity": "sha512-+vHvbQtlSVYTQ/20tNpVaKi0EpTR7E8GoEUHJypRZIRgiT03b3h2MAWk+SNaqMrCJrYG9vKLkJFzDylRlUvDWg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/eventstream-codec": "^2.0.5",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/fetch-http-handler": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.6.tgz",
+ "integrity": "sha512-PStY3XO1Ksjwn3wMKye5U6m6zxXpXrXZYqLy/IeCbh3nM9QB3Jgw/B0PUSLUWKdXg4U8qgEu300e3ZoBvZLsDg==",
+ "dependencies": {
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/querystring-builder": "^2.0.13",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-base64": "^2.0.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/hash-blob-browser": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.5.tgz",
+ "integrity": "sha512-ZVAUBtJXGf9bEko4/RwWcTK6d3b/ZmQMxJMrxOOcQhVDiqny9zI0mzgstO4Oxz3135R7S3V/bbGw3w3woCYpQg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/chunked-blob-reader": "^2.0.0",
+ "@smithy/chunked-blob-reader-native": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/hash-node": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.15.tgz",
+ "integrity": "sha512-t/qjEJZu/G46A22PAk1k/IiJZT4ncRkG5GOCNWN9HPPy5rCcSZUbh7gwp7CGKgJJ7ATMMg+0Td7i9o1lQTwOfQ==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-buffer-from": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/hash-stream-node": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.5.tgz",
+ "integrity": "sha512-XiR4Aoux5kXy8OWPLQisKy3GPmm0l6deHepvPvr4MUzIwa5XWazG3JdbZXy+mk93CvEZrOwKPHU5Kul6QybJiQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/invalid-dependency": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.13.tgz",
+ "integrity": "sha512-XsGYhVhvEikX1Yz0kyIoLssJf2Rs6E0U2w2YuKdT4jSra5A/g8V2oLROC1s56NldbgnpesTYB2z55KCHHbKyjw==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/is-array-buffer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz",
+ "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/md5-js": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.5.tgz",
+ "integrity": "sha512-k5EOte/Ye2r7XBVaXv2rhiehk6l3T4uRiPF+pnxKEc+G9Fwd1xAXBDZrtOq1syFPBKBmVfNszG4nevngST7NKg==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/middleware-content-length": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.15.tgz",
+ "integrity": "sha512-xH4kRBw01gJgWiU+/mNTrnyFXeozpZHw39gLb3JKGsFDVmSrJZ8/tRqu27tU/ki1gKkxr2wApu+dEYjI3QwV1Q==",
+ "dependencies": {
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-endpoint": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.0.tgz",
+ "integrity": "sha512-tddRmaig5URk2106PVMiNX6mc5BnKIKajHHDxb7K0J5MLdcuQluHMGnjkv18iY9s9O0tF+gAcPd/pDXA5L9DZw==",
+ "dependencies": {
+ "@smithy/middleware-serde": "^2.0.13",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/shared-ini-file-loader": "^2.2.4",
+ "@smithy/types": "^2.5.0",
+ "@smithy/url-parser": "^2.0.13",
+ "@smithy/util-middleware": "^2.0.6",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.20.tgz",
+ "integrity": "sha512-X2yrF/SHDk2WDd8LflRNS955rlzQ9daz9UWSp15wW8KtzoTXg3bhHM78HbK1cjr48/FWERSJKh9AvRUUGlIawg==",
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/service-error-classification": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-middleware": "^2.0.6",
+ "@smithy/util-retry": "^2.0.6",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-retry/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@smithy/middleware-serde": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.13.tgz",
+ "integrity": "sha512-tBGbeXw+XsE6pPr4UaXOh+UIcXARZeiA8bKJWxk2IjJcD1icVLhBSUQH9myCIZLNNzJIH36SDjUX8Wqk4xJCJg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/middleware-stack": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.7.tgz",
+ "integrity": "sha512-L1KLAAWkXbGx1t2jjCI/mDJ2dDNq+rp4/ifr/HcC6FHngxho5O7A5bQLpKHGlkfATH6fUnOEx0VICEVFA4sUzw==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-config-provider": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.5.tgz",
+ "integrity": "sha512-3Omb5/h4tOCuKRx4p4pkYTvEYRCYoKk52bOYbKUyz/G/8gERbagsN8jFm4FjQubkrcIqQEghTpQaUw6uk+0edw==",
+ "dependencies": {
+ "@smithy/property-provider": "^2.0.14",
+ "@smithy/shared-ini-file-loader": "^2.2.4",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-http-handler": {
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.9.tgz",
+ "integrity": "sha512-+K0q3SlNcocmo9OZj+fz67gY4lwhOCvIJxVbo/xH+hfWObvaxrMTx7JEzzXcluK0thnnLz++K3Qe7Z/8MDUreA==",
+ "dependencies": {
+ "@smithy/abort-controller": "^2.0.13",
+ "@smithy/protocol-http": "^3.0.9",
+ "@smithy/querystring-builder": "^2.0.13",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz",
+ "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/property-provider": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.14.tgz",
+ "integrity": "sha512-k3D2qp9o6imTrLaXRj6GdLYEJr1sXqS99nLhzq8fYmJjSVOeMg/G+1KVAAc7Oxpu71rlZ2f8SSZxcSxkevuR0A==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/protocol-http": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.5.tgz",
+ "integrity": "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/types": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-builder": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.13.tgz",
+ "integrity": "sha512-JhXKwp3JtsFUe96XLHy/nUPEbaXqn6r7xE4sNaH8bxEyytE5q1fwt0ew/Ke6+vIC7gP87HCHgQpJHg1X1jN2Fw==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-uri-escape": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/querystring-parser": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.13.tgz",
+ "integrity": "sha512-TEiT6o8CPZVxJ44Rly/rrsATTQsE+b/nyBVzsYn2sa75xAaZcurNxsFd8z1haoUysONiyex24JMHoJY6iCfLdA==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/service-error-classification": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.6.tgz",
+ "integrity": "sha512-fCQ36frtYra2fqY2/DV8+3/z2d0VB/1D1hXbjRcM5wkxTToxq6xHbIY/NGGY6v4carskMyG8FHACxgxturJ9Pg==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/shared-ini-file-loader": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.4.tgz",
+ "integrity": "sha512-9dRknGgvYlRIsoTcmMJXuoR/3ekhGwhRq4un3ns2/byre4Ql5hyUN4iS0x8eITohjU90YOnUCsbRwZRvCkbRfw==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/signature-v4": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.5.tgz",
+ "integrity": "sha512-ABIzXmUDXK4n2c9cXjQLELgH2RdtABpYKT+U131e2I6RbCypFZmxIHmIBufJzU2kdMCQ3+thBGDWorAITFW04A==",
+ "dependencies": {
+ "@smithy/eventstream-codec": "^2.0.5",
+ "@smithy/is-array-buffer": "^2.0.0",
+ "@smithy/types": "^2.2.2",
+ "@smithy/util-hex-encoding": "^2.0.0",
+ "@smithy/util-middleware": "^2.0.0",
+ "@smithy/util-uri-escape": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/smithy-client": {
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.15.tgz",
+ "integrity": "sha512-rngZcQu7Jvs9UbHihK1EI67RMPuzkc3CJmu4MBgB7D7yBnMGuFR86tq5rqHfL2gAkNnMelBN/8kzQVvZjNKefQ==",
+ "dependencies": {
+ "@smithy/middleware-stack": "^2.0.7",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-stream": "^2.0.20",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/types": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.5.0.tgz",
+ "integrity": "sha512-/a31lYofrMBkJb3BuPlYJTMKDj0hUmKUP6JFZQu6YVuQVoAjubiY0A52U9S0Uysd33n/djexCUSNJ+G9bf3/aA==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/url-parser": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.13.tgz",
+ "integrity": "sha512-okWx2P/d9jcTsZWTVNnRMpFOE7fMkzloSFyM53fA7nLKJQObxM2T4JlZ5KitKKuXq7pxon9J6SF2kCwtdflIrA==",
+ "dependencies": {
+ "@smithy/querystring-parser": "^2.0.13",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/util-base64": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz",
+ "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-browser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz",
+ "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@smithy/util-body-length-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz",
+ "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-buffer-from": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz",
+ "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-config-provider": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz",
+ "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-browser": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.19.tgz",
+ "integrity": "sha512-VHP8xdFR7/orpiABJwgoTB0t8Zhhwpf93gXhNfUBiwAE9O0rvsv7LwpQYjgvbOUDDO8JfIYQB2GYJNkqqGWsXw==",
+ "dependencies": {
+ "@smithy/property-provider": "^2.0.14",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-defaults-mode-node": {
+ "version": "2.0.25",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.25.tgz",
+ "integrity": "sha512-jkmep6/JyWmn2ADw9VULDeGbugR4N/FJCKOt+gYyVswmN1BJOfzF2umaYxQ1HhQDvna3kzm1Dbo1qIfBW4iuHA==",
+ "dependencies": {
+ "@smithy/config-resolver": "^2.0.18",
+ "@smithy/credential-provider-imds": "^2.1.1",
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/property-provider": "^2.0.14",
+ "@smithy/smithy-client": "^2.1.15",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/@smithy/util-endpoints": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.0.4.tgz",
+ "integrity": "sha512-FPry8j1xye5yzrdnf4xKUXVnkQErxdN7bUIaqC0OFoGsv2NfD9b2UUMuZSSt+pr9a8XWAqj0HoyVNUfPiZ/PvQ==",
+ "dev": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^2.1.5",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-hex-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz",
+ "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.6.tgz",
+ "integrity": "sha512-7W4uuwBvSLgKoLC1x4LfeArCVcbuHdtVaC4g30kKsD1erfICyQ45+tFhhs/dZNeQg+w392fhunCm/+oCcb6BSA==",
+ "dependencies": {
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-retry": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.6.tgz",
+ "integrity": "sha512-PSO41FofOBmyhPQJwBQJ6mVlaD7Sp9Uff9aBbnfBJ9eqXOE/obrqQjn0PNdkfdvViiPXl49BINfnGcFtSP4kYw==",
+ "dependencies": {
+ "@smithy/service-error-classification": "^2.0.6",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-stream": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.20.tgz",
+ "integrity": "sha512-tT8VASuD8jJu0yjHEMTCPt1o5E3FVzgdsxK6FQLAjXKqVv5V8InCnc0EOsYrijgspbfDqdAJg7r0o2sySfcHVg==",
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^2.2.6",
+ "@smithy/node-http-handler": "^2.1.9",
+ "@smithy/types": "^2.5.0",
+ "@smithy/util-base64": "^2.0.1",
+ "@smithy/util-buffer-from": "^2.0.0",
+ "@smithy/util-hex-encoding": "^2.0.0",
+ "@smithy/util-utf8": "^2.0.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-uri-escape": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz",
+ "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==",
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-utf8": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz",
+ "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@smithy/util-waiter": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.13.tgz",
+ "integrity": "sha512-YovIQatiuM7giEsRFotqJa2i3EbU2EE3PgtpXgtLgpx5rXiZMAwPxXYDFVFhuO0lbqvc/Zx4n+ZIisXOHPSqyg==",
+ "dependencies": {
+ "@smithy/abort-controller": "^2.0.13",
+ "@smithy/types": "^2.5.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@sqltools/formatter": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz",
+ "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw=="
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
+ "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+ "dependencies": {
+ "defer-to-connect": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@thefaultvault/tfv-cpe-parser": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@thefaultvault/tfv-cpe-parser/-/tfv-cpe-parser-1.3.0.tgz",
+ "integrity": "sha512-7SJRoAT1MqUeFl4EL47SYLnt1NmDh8gNYvcm2axWp7CKD3QVEXCDgooCh28Cwo4g2BvPae1Y/09ZotAkLtJgZQ=="
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==",
+ "dev": true
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
+ "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true
+ },
+ "node_modules/@types/aws-lambda": {
+ "version": "8.10.119",
+ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz",
+ "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==",
+ "dev": true
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
+ "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
+ "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz",
+ "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.1",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz",
+ "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cacheable-request": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
+ "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
+ "dependencies": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "^3.1.4",
+ "@types/node": "*",
+ "@types/responselike": "^1.0.0"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.35",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
+ "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cookiejar": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz",
+ "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==",
+ "dev": true
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/docker-modem": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.3.tgz",
+ "integrity": "sha512-i1A2Etnav7uHizZ87vUf4EqwJehY3JOcTfBS0pGBlO+HQ0jg2lUMCaJRg9VQM8ldZkpYdIfsenxcTOCpwxPXEg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/ssh2": "*"
+ }
+ },
+ "node_modules/@types/dockerode": {
+ "version": "3.3.19",
+ "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.19.tgz",
+ "integrity": "sha512-7CC5yIpQi+bHXwDK43b/deYXteP3Lem9gdocVVHJPSRJJLMfbiOchQV3rDmAPkMw+n3GIVj7m1six3JW+VcwwA==",
+ "dev": true,
+ "dependencies": {
+ "@types/docker-modem": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.44.2",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz",
+ "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz",
+ "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
+ "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+ "dev": true
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.17",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
+ "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.17.36",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
+ "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz",
+ "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/http-cache-semantics": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
+ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ=="
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ=="
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.11",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
+ "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
+ "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
+ "dev": true
+ },
+ "node_modules/@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,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+ "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "27.5.2",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz",
+ "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==",
+ "dev": true,
+ "dependencies": {
+ "jest-matcher-utils": "^27.0.0",
+ "pretty-format": "^27.0.0"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
+ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+ "dev": true
+ },
+ "node_modules/@types/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/keyv": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
+ "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.197",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz",
+ "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==",
+ "dev": true
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
+ },
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.6.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz",
+ "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw=="
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz",
+ "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^3.0.0"
+ }
+ },
+ "node_modules/@types/nodemailer": {
+ "version": "6.4.9",
+ "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.9.tgz",
+ "integrity": "sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/papaparse": {
+ "version": "5.3.8",
+ "resolved": "https://registry.npmjs.org/@types/papaparse/-/papaparse-5.3.8.tgz",
+ "integrity": "sha512-ArKIEOOWULbhi53wkAiRy1ze4wvrTfhpAj7Yfzva+EkmX2sV8PpFB+xqzJfzXNzK4me95FJH9QZt5NXFVGzOoQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
+ },
+ "node_modules/@types/responselike": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
+ "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz",
+ "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==",
+ "dev": true
+ },
+ "node_modules/@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz",
+ "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/mime": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/ssh2": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.13.tgz",
+ "integrity": "sha512-08WbG68HvQ2YVi74n2iSUnYHYpUdFc/s2IsI0BHBdJwaqYJpWlVv9elL0tYShTv60yr0ObdxJR5NrCRiGJ/0CQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "^18.11.18"
+ }
+ },
+ "node_modules/@types/ssh2/node_modules/@types/node": {
+ "version": "18.17.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.17.tgz",
+ "integrity": "sha512-cOxcXsQ2sxiwkykdJqvyFS+MLQPLvIdwh5l6gNg8qF6s+C7XSkEWOZjK+XhUZd+mYvHV/180g2cnCcIl4l06Pw==",
+ "dev": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
+ "dev": true
+ },
+ "node_modules/@types/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==",
+ "dev": true
+ },
+ "node_modules/@types/strip-json-comments": {
+ "version": "0.0.30",
+ "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz",
+ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
+ "dev": true
+ },
+ "node_modules/@types/superagent": {
+ "version": "4.1.18",
+ "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz",
+ "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==",
+ "dev": true,
+ "dependencies": {
+ "@types/cookiejar": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/supertest": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz",
+ "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/superagent": "*"
+ }
+ },
+ "node_modules/@types/uuid": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz",
+ "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==",
+ "dev": true
+ },
+ "node_modules/@types/validator": {
+ "version": "13.11.1",
+ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.1.tgz",
+ "integrity": "sha512-d/MUkJYdOeKycmm75Arql4M5+UuXmf4cHdHKsyw1GcvnNgL6s77UkgSgJ8TE/rI5PYsnwYq5jkcWBLuN/MpQ1A=="
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.24",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
+ "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
+ "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
+ "dev": true
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+ "optional": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/zen-observable": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz",
+ "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw=="
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
+ "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.4.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/type-utils": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
+ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
+ "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webpack-cli/configtest": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
+ "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
+ },
+ "node_modules/@webpack-cli/info": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
+ "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ }
+ },
+ "node_modules/@webpack-cli/serve": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
+ "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x",
+ "webpack-cli": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "node_modules/2-thenable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz",
+ "integrity": "sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.47"
+ }
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA=="
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dev": true,
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
+ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/adm-zip": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
+ "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/afinn-165": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz",
+ "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/afinn-165-financialmarketnews": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/afinn-165-financialmarketnews/-/afinn-165-financialmarketnews-3.0.0.tgz",
+ "integrity": "sha512-0g9A1S3ZomFIGDTzZ0t6xmv4AuokBvBmpes8htiyHpH7N4xDmvSQL6UxL/Zcs2ypRb3VwgCscaD8Q3zEawKYhw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/amqplib": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.3.tgz",
+ "integrity": "sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==",
+ "dependencies": {
+ "@acuminous/bitsyntax": "^0.1.2",
+ "buffer-more-ints": "~1.0.0",
+ "readable-stream": "1.x >=1.1.9",
+ "url-parse": "~1.5.10"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/amqplib/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/amqplib/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/amqplib/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/app-root-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz",
+ "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==",
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/apparatus": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz",
+ "integrity": "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==",
+ "dev": true,
+ "dependencies": {
+ "sylvester": ">= 0.0.8"
+ },
+ "engines": {
+ "node": ">=0.2.6"
+ }
+ },
+ "node_modules/archive-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
+ "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/archiver": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz",
+ "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.4",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^2.2.0",
+ "zip-stream": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/archiver-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/archiver-utils/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/archiver-utils/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/archiver/node_modules/async": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
+ "dev": true
+ },
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/articles": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/articles/-/articles-0.2.2.tgz",
+ "integrity": "sha512-S3Y4MPp+LD/l0HHm/4yrr6MoXhUkKT98ZdsV2tkTuBNywqUXEtvJT+NBO3KTSQEttc5EOwEJe2Xw8cZ9TI5Hrw==",
+ "dev": true
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "dev": true
+ },
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/async": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/aws-sdk": {
+ "version": "2.1551.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1551.0.tgz",
+ "integrity": "sha512-nUaAzS7cheaKF8lV0AVJBqteuoYIgQ5UgpZaoRR44D7HA1f6iCYFISF6WH6d0hQvpxPDIXr5NlVt0cHyp/Sx1g==",
+ "dependencies": {
+ "buffer": "4.9.2",
+ "events": "1.1.1",
+ "ieee754": "1.1.13",
+ "jmespath": "0.16.0",
+ "querystring": "0.2.0",
+ "sax": "1.2.1",
+ "url": "0.10.3",
+ "util": "^0.12.4",
+ "uuid": "8.0.0",
+ "xml2js": "0.6.2"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/aws-sdk/node_modules/uuid": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
+ "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz",
+ "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "dependencies": {
+ "@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-import-meta": "^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/plugin-syntax-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "dev": true,
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "node_modules/bl/node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw=="
+ },
+ "node_modules/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dev": true,
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.10",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
+ "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001517",
+ "electron-to-chromium": "^1.4.477",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.11"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "dev": true,
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dependencies": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
+ "dev": true
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/buffer-more-ints": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
+ "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
+ },
+ "node_modules/buffer-writer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
+ "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/bufferutil": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz",
+ "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/buildcheck": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz",
+ "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/builtins": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+ "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
+ "dev": true
+ },
+ "node_modules/bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "engines": {
+ "node": ">=10.6.0"
+ }
+ },
+ "node_modules/cacheable-request": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
+ "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^6.0.1",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cachedir": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz",
+ "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-me-maybe": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
+ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
+ "dev": true
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001524",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz",
+ "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "node_modules/child-process-ext": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz",
+ "integrity": "sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^6.0.5",
+ "es5-ext": "^0.10.53",
+ "log": "^6.0.0",
+ "split2": "^3.1.1",
+ "stream-promise": "^3.2.0"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.0.0"
+ }
+ },
+ "node_modules/child-process-ext/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/chromium-bidi": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.5.tgz",
+ "integrity": "sha512-rkav9YzRfAshSTG3wNXF7P7yNiI29QAo1xBXElPoCoSQR5n20q3cOyVhDv6S7+GlF/CJ/emUxlQiR0xOPurkGg==",
+ "dependencies": {
+ "mitt": "3.0.0"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
+ "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==",
+ "dev": true
+ },
+ "node_modules/class-transformer": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.3.1.tgz",
+ "integrity": "sha512-cKFwohpJbuMovS8xVLmn8N2AUbAuc8pVo4zEfsUVo8qgECOogns1WVk/FkOZoxhOPTyTYFckuoH+13FO+MQ8GA=="
+ },
+ "node_modules/class-validator": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz",
+ "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==",
+ "dependencies": {
+ "@types/validator": "^13.7.10",
+ "libphonenumber-js": "^1.10.14",
+ "validator": "^13.7.0"
+ }
+ },
+ "node_modules/cli-color": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
+ "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.61",
+ "es6-iterator": "^2.0.3",
+ "memoizee": "^0.4.15",
+ "timers-ext": "^0.1.7"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz",
+ "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "bin": {
+ "highlight": "bin/highlight"
+ },
+ "engines": {
+ "node": ">=8.0.0",
+ "npm": ">=5.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
+ },
+ "node_modules/cli-progress-footer": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/cli-progress-footer/-/cli-progress-footer-2.3.2.tgz",
+ "integrity": "sha512-uzHGgkKdeA9Kr57eyH1W5HGiNShP8fV1ETq04HDNM1Un6ShXbHhwi/H8LNV9L1fQXKjEw0q5FUkEVNuZ+yZdSw==",
+ "dev": true,
+ "dependencies": {
+ "cli-color": "^2.0.2",
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.61",
+ "mute-stream": "0.0.8",
+ "process-utils": "^4.0.0",
+ "timers-ext": "^0.1.7",
+ "type": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/cli-progress-footer/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
+ "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-sprintf-format": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cli-sprintf-format/-/cli-sprintf-format-1.1.1.tgz",
+ "integrity": "sha512-BbEjY9BEdA6wagVwTqPvmAwGB24U93rQPBFZUT8lNCDxXzre5LFHQUTJc70czjgUomVg8u8R5kW8oY9DYRFNeg==",
+ "dev": true,
+ "dependencies": {
+ "cli-color": "^2.0.1",
+ "es5-ext": "^0.10.53",
+ "sprintf-kit": "^2.0.1",
+ "supports-color": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/cli-sprintf-format/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cli-sprintf-format/node_modules/supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
+ "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+ "dev": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "node_modules/compress-commons": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz",
+ "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.2",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-parser": {
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
+ "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
+ "dependencies": {
+ "cookie": "0.4.1",
+ "cookie-signature": "1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/cookie-parser/node_modules/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cookiejar": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+ "dev": true
+ },
+ "node_modules/core-js": {
+ "version": "3.32.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz",
+ "integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==",
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.0.tgz",
+ "integrity": "sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==",
+ "dependencies": {
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ }
+ },
+ "node_modules/cpu-features": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz",
+ "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "buildcheck": "~0.0.6",
+ "nan": "^2.17.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+ "dev": true,
+ "bin": {
+ "crc32": "bin/crc32.njs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/crc32-stream": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz",
+ "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==",
+ "dev": true,
+ "dependencies": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "node_modules/cross-fetch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+ "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+ "dependencies": {
+ "node-fetch": "2.6.7"
+ }
+ },
+ "node_modules/cross-fetch/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/cross-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/cross-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true
+ },
+ "node_modules/cssstyle": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz",
+ "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==",
+ "dependencies": {
+ "rrweb-cssom": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz",
+ "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^12.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/date-fns": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.3.1.tgz",
+ "integrity": "sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.9",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz",
+ "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
+ },
+ "node_modules/decompress": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
+ "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
+ "dev": true,
+ "dependencies": {
+ "decompress-tar": "^4.0.0",
+ "decompress-tarbz2": "^4.0.0",
+ "decompress-targz": "^4.0.0",
+ "decompress-unzip": "^4.0.1",
+ "graceful-fs": "^4.1.10",
+ "make-dir": "^1.0.0",
+ "pify": "^2.3.0",
+ "strip-dirs": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-response/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decompress-tar": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
+ "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0",
+ "tar-stream": "^1.5.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/bl": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
+ "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/decompress-tar/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/decompress-tar/node_modules/tar-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+ "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.2.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.1",
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/decompress-tarbz2": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
+ "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
+ "dev": true,
+ "dependencies": {
+ "decompress-tar": "^4.1.0",
+ "file-type": "^6.1.0",
+ "is-stream": "^1.1.0",
+ "seek-bzip": "^1.0.5",
+ "unbzip2-stream": "^1.0.9"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-tarbz2/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-targz": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
+ "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
+ "dev": true,
+ "dependencies": {
+ "decompress-tar": "^4.1.1",
+ "file-type": "^5.2.0",
+ "is-stream": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-targz/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress-unzip": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
+ "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
+ "dev": true,
+ "dependencies": {
+ "file-type": "^3.8.0",
+ "get-stream": "^2.2.0",
+ "pify": "^2.3.0",
+ "yauzl": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress-unzip/node_modules/get-stream": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
+ "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.0.1",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decompress/node_modules/make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/decompress/node_modules/make-dir/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "dev": true,
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/deferred": {
+ "version": "0.7.11",
+ "resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.11.tgz",
+ "integrity": "sha512-8eluCl/Blx4YOGwMapBvXRKxHXhA8ejDXYzEaK8+/gtcm8hRMhSLmXSqDmNUKNc/C8HNSmuyyp/hflhqDAvK2A==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.50",
+ "event-emitter": "^0.3.5",
+ "next-tick": "^1.0.0",
+ "timers-ext": "^0.1.7"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ },
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1094867",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz",
+ "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ=="
+ },
+ "node_modules/dezalgo": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+ "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+ "dev": true,
+ "dependencies": {
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/docker-modem": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz",
+ "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "readable-stream": "^3.5.0",
+ "split-ca": "^1.0.1",
+ "ssh2": "^1.11.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/dockerode": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz",
+ "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==",
+ "dev": true,
+ "dependencies": {
+ "@balena/dockerignore": "^1.0.2",
+ "docker-modem": "^3.0.0",
+ "tar-fs": "~2.0.1"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/domexception": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+ "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
+ "dependencies": {
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.3.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
+ "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/motdotla/dotenv?sponsor=1"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
+ "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/duration": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz",
+ "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.46"
+ }
+ },
+ "node_modules/dynamic-dedupe": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz",
+ "integrity": "sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==",
+ "dev": true,
+ "dependencies": {
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.503",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz",
+ "integrity": "sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==",
+ "dev": true
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/envinfo": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
+ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
+ "dev": true,
+ "bin": {
+ "envinfo": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz",
+ "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==",
+ "dev": true
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.62",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
+ "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-set": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz",
+ "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "es6-iterator": "~2.0.3",
+ "es6-symbol": "^3.1.3",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/es6-set/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "node_modules/es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.48.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz",
+ "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.48.0",
+ "@humanwhocodes/config-array": "^0.11.10",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz",
+ "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==",
+ "dev": true,
+ "dependencies": {
+ "get-stdin": "^6.0.0"
+ },
+ "bin": {
+ "eslint-config-prettier-check": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=3.14.1"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz",
+ "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz",
+ "integrity": "sha512-vmHXOeOt7FJLsqofvFk4WB3ejvcHizCd8toXXwADmYfd02p2QwHRgkUbhYDX54y08nqk818CUTWipgZGlyN07g==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.12"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/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,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/essentials": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/essentials/-/essentials-1.2.0.tgz",
+ "integrity": "sha512-kP/j7Iw7KeNE8b/o7+tr9uX2s1wegElGOoGZ2Xm35qBr4BbbEcH3/bxR2nfH9l9JANCq9AUrvKw+gRuHtZp0HQ==",
+ "dev": true,
+ "dependencies": {
+ "uni-global": "^1.0.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dev": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ },
+ "node_modules/events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==",
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz",
+ "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/expect-utils": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/expect/node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/jest-diff": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz",
+ "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/jest-matcher-utils": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz",
+ "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/expect/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/express/node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/express/node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "dev": true,
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/ext-list": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
+ "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "^1.28.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ext-name": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
+ "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
+ "dev": true,
+ "dependencies": {
+ "ext-list": "^2.0.0",
+ "sort-keys-length": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ext/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+ "dev": true
+ },
+ "node_modules/fast-xml-parser": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
+ "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==",
+ "funding": [
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ }
+ ],
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "16.5.4",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
+ "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
+ "dev": true,
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.0",
+ "strtok3": "^6.2.4",
+ "token-types": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/filename-reserved-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+ "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/filenamify": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
+ "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
+ "dev": true,
+ "dependencies": {
+ "filename-reserved-regex": "^2.0.0",
+ "strip-outer": "^1.0.1",
+ "trim-repeated": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filesize": {
+ "version": "10.0.12",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.12.tgz",
+ "integrity": "sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.4.0"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/find-requires": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-requires/-/find-requires-1.0.0.tgz",
+ "integrity": "sha512-UME7hNwBfzeISSFQcBEDemEEskpOjI/shPrpJM5PI4DSdn6hX0dmz+2dL70blZER2z8tSnTRL+2rfzlYgtbBoQ==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "^0.10.49",
+ "esniff": "^1.1.0"
+ },
+ "bin": {
+ "find-requires": "bin/find-requires.js"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-yarn-workspace-root": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz",
+ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^4.0.2"
+ }
+ },
+ "node_modules/flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true,
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
+ "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.7",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
+ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/formidable": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
+ "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
+ "dev": true,
+ "dependencies": {
+ "dezalgo": "^1.0.4",
+ "hexoid": "^1.0.0",
+ "once": "^1.4.0",
+ "qs": "^6.11.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/tunnckoCore/commissions"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/fs2": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/fs2/-/fs2-0.3.9.tgz",
+ "integrity": "sha512-WsOqncODWRlkjwll+73bAxVW3JPChDgaPX3DT4iTTm73UmG4VgALa7LaFblP232/DN60itkOrPZ8kaP1feksGQ==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "deferred": "^0.7.11",
+ "es5-ext": "^0.10.53",
+ "event-emitter": "^0.3.5",
+ "ignore": "^5.1.8",
+ "memoizee": "^0.4.14",
+ "type": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fs2/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-promise": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz",
+ "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "^7.1.3"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://github.com/sponsors/ahmadnassri"
+ },
+ "peerDependencies": {
+ "glob": "^7.1.6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "dev": true
+ },
+ "node_modules/global-agent": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz",
+ "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==",
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "core-js": "^3.6.5",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.21.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
+ "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "11.8.6",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
+ "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+ "dependencies": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.2",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/got?sponsor=1"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/graphlib": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
+ "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/helmet": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
+ "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/hexoid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
+ "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/hpagent": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz",
+ "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ=="
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+ "dependencies": {
+ "whatwg-encoding": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/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
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ=="
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/http2-wrapper": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
+ "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+ "dependencies": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10.19.0"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/inquirer": {
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz",
+ "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.1",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.21",
+ "mute-stream": "0.0.8",
+ "ora": "^5.4.1",
+ "run-async": "^2.4.0",
+ "rxjs": "^7.5.5",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6",
+ "wrap-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/ip": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz",
+ "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-builtin-module": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container/node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
+ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-natural-number": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
+ "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
+ "dev": true
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-like": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz",
+ "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==",
+ "dependencies": {
+ "lodash.isfinite": "^3.3.2"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
+ },
+ "node_modules/is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
+ "dev": true
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isomorphic-ws": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz",
+ "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==",
+ "dev": true,
+ "peerDependencies": {
+ "ws": "*"
+ }
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz",
+ "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==",
+ "dev": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz",
+ "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.5.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-changed-files/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-circus/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-cli/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-config/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-each/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "node_modules/jest-environment-jsdom/node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "dev": true,
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/jest-environment-jsdom/node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/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,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/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
+ },
+ "node_modules/jest-environment-jsdom/node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-environment-jsdom/node_modules/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
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-haste-map/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-leak-detector/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz",
+ "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.6.3",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
+ },
+ "node_modules/jest-mock": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz",
+ "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "jest-util": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-runner/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz",
+ "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-jsx": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/types": "^7.3.3",
+ "@jest/expect-utils": "^29.6.4",
+ "@jest/transform": "^29.6.4",
+ "@jest/types": "^29.6.3",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^29.6.4",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.6.4",
+ "jest-message-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^29.6.3",
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/@jest/transform": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz",
+ "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.6",
+ "@jest/types": "^29.6.3",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^29.6.4",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "write-file-atomic": "^4.0.2"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/jest-snapshot/node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-diff": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz",
+ "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-haste-map": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz",
+ "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/graceful-fs": "^4.1.3",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^29.6.3",
+ "jest-util": "^29.6.3",
+ "jest-worker": "^29.6.4",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.8"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-matcher-utils": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz",
+ "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.6.4",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.6.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-regex-util": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
+ "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/jest-worker": {
+ "version": "29.6.4",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz",
+ "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "jest-util": "^29.6.3",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/pretty-format": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz",
+ "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
+ },
+ "node_modules/jest-snapshot/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
+ "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz",
+ "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-validate/node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/jmespath": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
+ "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/jose": {
+ "version": "4.14.4",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz",
+ "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "22.1.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz",
+ "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==",
+ "dependencies": {
+ "abab": "^2.0.6",
+ "cssstyle": "^3.0.0",
+ "data-urls": "^4.0.0",
+ "decimal.js": "^10.4.3",
+ "domexception": "^4.0.0",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^3.0.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.1",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.4",
+ "parse5": "^7.1.2",
+ "rrweb-cssom": "^0.6.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.1.2",
+ "w3c-xmlserializer": "^4.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^2.0.0",
+ "whatwg-mimetype": "^3.0.0",
+ "whatwg-url": "^12.0.1",
+ "ws": "^8.13.0",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
+ },
+ "node_modules/json-colorizer": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz",
+ "integrity": "sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "lodash.get": "^4.4.2"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/json-colorizer/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-colorizer/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-cycle": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.5.0.tgz",
+ "integrity": "sha512-GOehvd5PO2FeZ5T4c+RxobeT5a1PiGpF4u9/3+UvrMU4bhnVqzJY7hm39wg8PDCqkU91fWGH8qjWR4bn+wgq9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
+ "node_modules/json-refs": {
+ "version": "3.0.15",
+ "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz",
+ "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==",
+ "dev": true,
+ "dependencies": {
+ "commander": "~4.1.1",
+ "graphlib": "^2.1.8",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "native-promise-only": "^0.8.1",
+ "path-loader": "^1.0.10",
+ "slash": "^3.0.0",
+ "uri-js": "^4.2.2"
+ },
+ "bin": {
+ "json-refs": "bin/json-refs"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/json-refs/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/json-refs/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-refs/node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/json-schema-to-typescript": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.1.0.tgz",
+ "integrity": "sha512-DB6JGDgpszucGYAl5JXuIU84/b9KaPa0Iq09g+JqGEYGG2RzUvaef4nb4B680KT8eR6R5xKC+xBHsPDjc2UPAQ==",
+ "dev": true,
+ "dependencies": {
+ "@bcherny/json-schema-ref-parser": "10.0.5-fork",
+ "@types/json-schema": "^7.0.11",
+ "@types/lodash": "^4.14.182",
+ "@types/prettier": "^2.6.1",
+ "cli-color": "^2.0.2",
+ "get-stdin": "^8.0.0",
+ "glob": "^7.1.6",
+ "glob-promise": "^4.2.2",
+ "is-glob": "^4.0.3",
+ "lodash": "^4.17.21",
+ "minimist": "^1.2.6",
+ "mkdirp": "^1.0.4",
+ "mz": "^2.7.0",
+ "prettier": "^2.6.2"
+ },
+ "bin": {
+ "json2ts": "dist/src/cli.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/json-schema-to-typescript/node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/json-schema-to-typescript/node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/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
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
+ "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
+ "dependencies": {
+ "jws": "^3.2.2",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dev": true,
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/jszip/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/jszip/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/jszip/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
+ "dependencies": {
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwks-rsa": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.0.1.tgz",
+ "integrity": "sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw==",
+ "dependencies": {
+ "@types/express": "^4.17.14",
+ "@types/jsonwebtoken": "^9.0.0",
+ "debug": "^4.3.4",
+ "jose": "^4.10.4",
+ "limiter": "^1.1.5",
+ "lru-memoizer": "^2.1.4"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
+ "dependencies": {
+ "jwa": "^1.4.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jwt-decode": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz",
+ "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==",
+ "dev": true
+ },
+ "node_modules/keyv": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz",
+ "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.6.3"
+ }
+ },
+ "node_modules/lazystream/node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/lazystream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/lazystream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/libphonenumber-js": {
+ "version": "1.10.43",
+ "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.43.tgz",
+ "integrity": "sha512-M/iPACJGsTvEy8QmUY4K0SoIFB71X2j7y2JvUMYzUXUxCNmiU+NTfHdz7gt+dC48BVfBzZi2oO6s9TDGllCfxA=="
+ },
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dev": true,
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "node_modules/limiter": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
+ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+ },
+ "node_modules/lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==",
+ "dev": true
+ },
+ "node_modules/lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==",
+ "dev": true
+ },
+ "node_modules/lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
+ "dev": true
+ },
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+ "dev": true
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ },
+ "node_modules/lodash.isfinite": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
+ "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA=="
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA=="
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw=="
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw=="
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
+ },
+ "node_modules/lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
+ "dev": true
+ },
+ "node_modules/log": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/log/-/log-6.3.1.tgz",
+ "integrity": "sha512-McG47rJEWOkXTDioZzQNydAVvZNeEkSyLJ1VWkFwfW+o1knW+QSi8D1KjPn/TnctV+q99lkvJNe1f0E1IjfY2A==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "duration": "^0.2.2",
+ "es5-ext": "^0.10.53",
+ "event-emitter": "^0.3.5",
+ "sprintf-kit": "^2.0.1",
+ "type": "^2.5.0",
+ "uni-global": "^1.0.0"
+ }
+ },
+ "node_modules/log-node": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/log-node/-/log-node-8.0.3.tgz",
+ "integrity": "sha512-1UBwzgYiCIDFs8A0rM2QdBFo8Wd8UQ0HrSTu/MNI+/2zN3NoHRj2fhplurAyuxTYUXu3Oohugq1jAn5s05u1MQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "cli-color": "^2.0.1",
+ "cli-sprintf-format": "^1.1.1",
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.53",
+ "sprintf-kit": "^2.0.1",
+ "supports-color": "^8.1.1",
+ "type": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ },
+ "peerDependencies": {
+ "log": "^6.0.0"
+ }
+ },
+ "node_modules/log-node/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/log-node/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lru-memoizer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz",
+ "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==",
+ "dependencies": {
+ "lodash.clonedeep": "^4.5.0",
+ "lru-cache": "~4.0.0"
+ }
+ },
+ "node_modules/lru-memoizer/node_modules/lru-cache": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
+ "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==",
+ "dependencies": {
+ "pseudomap": "^1.0.1",
+ "yallist": "^2.0.0"
+ }
+ },
+ "node_modules/lru-memoizer/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
+ },
+ "node_modules/lru-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
+ "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "~0.10.2"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memoizee": {
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
+ "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
+ "dev": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.53",
+ "es6-weak-map": "^2.0.3",
+ "event-emitter": "^0.3.5",
+ "is-promise": "^2.2.2",
+ "lru-queue": "^0.1.0",
+ "next-tick": "^1.1.0",
+ "timers-ext": "^0.1.7"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/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
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/mitt": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
+ "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ=="
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nan": {
+ "version": "2.17.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
+ "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/native-promise-only": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
+ "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==",
+ "dev": true
+ },
+ "node_modules/natural": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/natural/-/natural-6.7.0.tgz",
+ "integrity": "sha512-Z5gvSnDEDF9IMSi8K70GY5cnIg0h4f1p/oIcrN9BPqcn22reexJSEsakDPpEJvs2Qv38PHjICExL0UHvvl7oig==",
+ "dev": true,
+ "dependencies": {
+ "afinn-165": "^1.0.2",
+ "afinn-165-financialmarketnews": "^3.0.0",
+ "apparatus": "^0.0.10",
+ "safe-stable-stringify": "^2.2.0",
+ "stopwords-iso": "^1.1.0",
+ "sylvester": "^0.0.12",
+ "underscore": "^1.9.1",
+ "wordnet-db": "^3.1.11"
+ },
+ "engines": {
+ "node": ">=0.4.10"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "dev": true
+ },
+ "node_modules/ncjsm": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ncjsm/-/ncjsm-4.3.2.tgz",
+ "integrity": "sha512-6d1VWA7FY31CpI4Ki97Fpm36jfURkVbpktizp8aoVViTZRQgr/0ddmlKerALSSlzfwQRBeSq1qwwVcBJK4Sk7Q==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^3.3.0",
+ "deferred": "^0.7.11",
+ "es5-ext": "^0.10.62",
+ "es6-set": "^0.1.6",
+ "ext": "^1.7.0",
+ "find-requires": "^1.0.0",
+ "fs2": "^0.3.9",
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/ncjsm/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/nock": {
+ "version": "13.3.3",
+ "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz",
+ "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.17.21",
+ "propagate": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13"
+ }
+ },
+ "node_modules/node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^3.0.2"
+ },
+ "engines": {
+ "node": ">= 0.10.5"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/node-gyp-build": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz",
+ "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==",
+ "bin": {
+ "node-gyp-build": "bin.js",
+ "node-gyp-build-optional": "optional.js",
+ "node-gyp-build-test": "build-test.js"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "dev": true
+ },
+ "node_modules/nodemailer": {
+ "version": "6.9.9",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.9.tgz",
+ "integrity": "sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
+ "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-registry-utilities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-registry-utilities/-/npm-registry-utilities-1.0.0.tgz",
+ "integrity": "sha512-9xYfSJy2IFQw1i6462EJzjChL9e65EfSo2Cw6kl0EFeDp05VvU+anrQk3Fc0d1MbVCq7rWIxeer89O9SUQ/uOg==",
+ "dev": true,
+ "dependencies": {
+ "ext": "^1.6.0",
+ "fs2": "^0.3.9",
+ "memoizee": "^0.4.15",
+ "node-fetch": "^2.6.7",
+ "semver": "^7.3.5",
+ "type": "^2.6.0",
+ "validate-npm-package-name": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
+ "node_modules/npm-registry-utilities/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/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,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ=="
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
+ "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/oidc-token-hash": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
+ "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==",
+ "engines": {
+ "node": "^10.13.0 || >=12.0.0"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "dev": true,
+ "dependencies": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/openid-client": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.4.3.tgz",
+ "integrity": "sha512-sVQOvjsT/sbSfYsQI/9liWQGVZH/Pp3rrtlGEwgk/bbHfrUDZ24DN57lAagIwFtuEu+FM9Ev7r85s8S/yPjimQ==",
+ "dependencies": {
+ "jose": "^4.14.4",
+ "lru-cache": "^6.0.0",
+ "object-hash": "^2.2.0",
+ "oidc-token-hash": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/openid-client/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/openid-client/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ora": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
+ "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+ "dev": true,
+ "dependencies": {
+ "bl": "^4.1.0",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-spinners": "^2.5.0",
+ "is-interactive": "^1.0.0",
+ "is-unicode-supported": "^0.1.0",
+ "log-symbols": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
+ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-event": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz",
+ "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==",
+ "dev": true,
+ "dependencies": {
+ "p-timeout": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-queue": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
+ "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
+ "dependencies": {
+ "eventemitter3": "^4.0.4",
+ "p-timeout": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-retry": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+ "dependencies": {
+ "@types/retry": "0.12.0",
+ "retry": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
+ "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
+ "dependencies": {
+ "p-finally": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/packet-reader": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
+ "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "node_modules/papaparse": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz",
+ "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw=="
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-loader": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz",
+ "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==",
+ "dev": true,
+ "dependencies": {
+ "native-promise-only": "^0.8.1",
+ "superagent": "^7.1.6"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz",
+ "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path2": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/path2/-/path2-0.1.0.tgz",
+ "integrity": "sha512-TX+cz8Jk+ta7IvRy2FAej8rdlbrP0+uBIkP/5DTODez/AuL/vSb30KuAdDxGVREXzn8QfAiu5mJYJ1XjbOhEPA==",
+ "dev": true
+ },
+ "node_modules/peek-readable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
+ "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "node_modules/pg": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz",
+ "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==",
+ "dependencies": {
+ "buffer-writer": "2.0.0",
+ "packet-reader": "1.0.0",
+ "pg-connection-string": "^2.6.2",
+ "pg-pool": "^3.6.1",
+ "pg-protocol": "^1.6.0",
+ "pg-types": "^2.1.0",
+ "pgpass": "1.x"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "optionalDependencies": {
+ "pg-cloudflare": "^1.1.1"
+ },
+ "peerDependencies": {
+ "pg-native": ">=3.0.1"
+ },
+ "peerDependenciesMeta": {
+ "pg-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pg-cloudflare": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
+ "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
+ "optional": true
+ },
+ "node_modules/pg-connection-string": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
+ "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
+ },
+ "node_modules/pg-int8": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/pg-pool": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
+ "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
+ "peerDependencies": {
+ "pg": ">=8.0"
+ }
+ },
+ "node_modules/pg-protocol": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
+ "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
+ },
+ "node_modules/pg-types": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "dependencies": {
+ "pg-int8": "1.0.1",
+ "postgres-array": "~2.0.0",
+ "postgres-bytea": "~1.0.0",
+ "postgres-date": "~1.0.4",
+ "postgres-interval": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pgpass": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "dependencies": {
+ "split2": "^4.1.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/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,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/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,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/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,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/portscanner": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz",
+ "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==",
+ "dependencies": {
+ "async": "^2.6.0",
+ "is-number-like": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=0.4",
+ "npm": ">=1.0.0"
+ }
+ },
+ "node_modules/postgres-array": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postgres-bytea": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
+ "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-date": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-interval": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "dependencies": {
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz",
+ "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/prng-well1024a": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prng-well1024a/-/prng-well1024a-1.0.1.tgz",
+ "integrity": "sha512-lBXfAW5Vgpej/QVHNYhTSsiz1IIlgo7kv8zzQL7v5crD8jgA4Fk3axwb9aCrDHUqJ4zKXsb3U3m6sw21165Trg==",
+ "dev": true
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/process-utils": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/process-utils/-/process-utils-4.0.0.tgz",
+ "integrity": "sha512-fMyMQbKCxX51YxR7YGCzPjLsU3yDzXFkP4oi1/Mt5Ixnk7GO/7uUTj8mrCHUwuvozWzI+V7QSJR9cZYnwNOZPg==",
+ "dev": true,
+ "dependencies": {
+ "ext": "^1.4.0",
+ "fs2": "^0.3.9",
+ "memoizee": "^0.4.14",
+ "type": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/process-utils/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise-queue": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz",
+ "integrity": "sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/propagate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
+ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/puppeteer": {
+ "version": "19.7.5",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.5.tgz",
+ "integrity": "sha512-UqD8K+yaZa6/hwzP54AATCiHrEYGGxzQcse9cZzrtsVGd8wT0llCdYhsBp8n+zvnb1ofY0YFgI3TYZ/MiX5uXQ==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "cosmiconfig": "8.1.0",
+ "https-proxy-agent": "5.0.1",
+ "progress": "2.0.3",
+ "proxy-from-env": "1.1.0",
+ "puppeteer-core": "19.7.5"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "19.7.5",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.5.tgz",
+ "integrity": "sha512-EJuNha+SxPfaYFbkoWU80H3Wb1SiQH5fFyb2xdbWda0ziax5mhV63UMlqNfPeTDIWarwtR4OIcq/9VqY8HPOsg==",
+ "dependencies": {
+ "chromium-bidi": "0.4.5",
+ "cross-fetch": "3.1.5",
+ "debug": "4.3.4",
+ "devtools-protocol": "0.0.1094867",
+ "extract-zip": "2.0.1",
+ "https-proxy-agent": "5.0.1",
+ "proxy-from-env": "1.1.0",
+ "rimraf": "4.4.0",
+ "tar-fs": "2.1.1",
+ "unbzip2-stream": "1.4.3",
+ "ws": "8.12.1"
+ },
+ "engines": {
+ "node": ">=14.14.0"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.7.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ },
+ "node_modules/puppeteer-core/node_modules/glob": {
+ "version": "9.3.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz",
+ "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "minimatch": "^8.0.2",
+ "minipass": "^4.2.4",
+ "path-scurry": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/minimatch": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz",
+ "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/minipass": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/rimraf": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
+ "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
+ "dependencies": {
+ "glob": "^9.2.0"
+ },
+ "bin": {
+ "rimraf": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/puppeteer-core/node_modules/ws": {
+ "version": "8.12.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz",
+ "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/randy": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/randy/-/randy-1.5.1.tgz",
+ "integrity": "sha512-xCxHBrX08xQo8KoyZgOlM9fQbHK0oDvBl/k4+kPVGBDqfbL4c7N6uxiWTJnkJRkkg4hRrf/3CH8Vt1HiaQ2IVQ==",
+ "dev": true,
+ "dependencies": {
+ "prng-well1024a": "~1.0.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "dev": true,
+ "dependencies": {
+ "minimatch": "^5.1.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/readdir-glob/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.20.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+ "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-alpn": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g=="
+ },
+ "node_modules/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,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-cwd/node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
+ "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+ "dependencies": {
+ "lowercase-keys": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/rrweb-cssom": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
+ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw=="
+ },
+ "node_modules/run-applescript": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/run-parallel-limit": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz",
+ "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safe-stable-stringify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
+ "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA=="
+ },
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/secure-json-parse": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
+ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
+ },
+ "node_modules/seek-bzip": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
+ "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^2.8.1"
+ },
+ "bin": {
+ "seek-bunzip": "bin/seek-bunzip",
+ "seek-table": "bin/seek-bzip-table"
+ }
+ },
+ "node_modules/seek-bzip/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/sentencer": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/sentencer/-/sentencer-0.2.1.tgz",
+ "integrity": "sha512-hDLHIc7DTdZASPJhL2IZChmUq9tTUsOaAlK2kNPYI9KSdrPeqNZfjJfTCEoqcR/IlLlIfngi7Wkx/KLPqqNtyQ==",
+ "dev": true,
+ "dependencies": {
+ "articles": "~0.2.1",
+ "lodash": "^4.17.11",
+ "natural": "~0.1.28",
+ "randy": "~1.5.1"
+ }
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serialize-error/node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serverless": {
+ "version": "3.36.0",
+ "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.36.0.tgz",
+ "integrity": "sha512-VY7UzP4u1/yuTNpF2Wssrru16qhhReLCjgL2oeHCvhujxPyTFv9TQGSlLhaT0ZUCXhRBphwVwITTRopo6NSUgA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@serverless/dashboard-plugin": "^7.1.0",
+ "@serverless/platform-client": "^4.4.0",
+ "@serverless/utils": "^6.13.1",
+ "abort-controller": "^3.0.0",
+ "ajv": "^8.12.0",
+ "ajv-formats": "^2.1.1",
+ "archiver": "^5.3.1",
+ "aws-sdk": "^2.1404.0",
+ "bluebird": "^3.7.2",
+ "cachedir": "^2.3.0",
+ "chalk": "^4.1.2",
+ "child-process-ext": "^2.1.1",
+ "ci-info": "^3.8.0",
+ "cli-progress-footer": "^2.3.2",
+ "d": "^1.0.1",
+ "dayjs": "^1.11.8",
+ "decompress": "^4.2.1",
+ "dotenv": "^16.3.1",
+ "dotenv-expand": "^10.0.0",
+ "essentials": "^1.2.0",
+ "ext": "^1.7.0",
+ "fastest-levenshtein": "^1.0.16",
+ "filesize": "^10.0.7",
+ "fs-extra": "^10.1.0",
+ "get-stdin": "^8.0.0",
+ "globby": "^11.1.0",
+ "graceful-fs": "^4.2.11",
+ "https-proxy-agent": "^5.0.1",
+ "is-docker": "^2.2.1",
+ "js-yaml": "^4.1.0",
+ "json-colorizer": "^2.2.2",
+ "json-cycle": "^1.5.0",
+ "json-refs": "^3.0.15",
+ "lodash": "^4.17.21",
+ "memoizee": "^0.4.15",
+ "micromatch": "^4.0.5",
+ "node-fetch": "^2.6.11",
+ "npm-registry-utilities": "^1.0.0",
+ "object-hash": "^3.0.0",
+ "open": "^8.4.2",
+ "path2": "^0.1.0",
+ "process-utils": "^4.0.0",
+ "promise-queue": "^2.2.5",
+ "require-from-string": "^2.0.2",
+ "semver": "^7.5.3",
+ "signal-exit": "^3.0.7",
+ "stream-buffers": "^3.0.2",
+ "strip-ansi": "^6.0.1",
+ "supports-color": "^8.1.1",
+ "tar": "^6.1.15",
+ "timers-ext": "^0.1.7",
+ "type": "^2.7.2",
+ "untildify": "^4.0.0",
+ "uuid": "^9.0.0",
+ "ws": "^7.5.9",
+ "yaml-ast-parser": "0.0.43"
+ },
+ "bin": {
+ "serverless": "bin/serverless.js",
+ "sls": "bin/serverless.js"
+ },
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
+ "node_modules/serverless-domain-manager": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-7.1.2.tgz",
+ "integrity": "sha512-KuDqDmr2sC4o+7/PAWEo6m2Ox4HLSWMVgO6nncJIeWeaV7iaffAMVgg2GtOwYL7p93rS3eLGO2ra2ce4QYaTkg==",
+ "dev": true,
+ "dependencies": {
+ "@aws-sdk/client-acm": "^3.370.0",
+ "@aws-sdk/client-api-gateway": "^3.370.0",
+ "@aws-sdk/client-apigatewayv2": "^3.370.0",
+ "@aws-sdk/client-cloudformation": "^3.370.0",
+ "@aws-sdk/client-route-53": "^3.370.0",
+ "@aws-sdk/client-s3": "^3.370.0",
+ "@aws-sdk/config-resolver": "^3.370.0",
+ "@aws-sdk/credential-providers": "^3.370.0",
+ "@aws-sdk/node-config-provider": "^3.370.0",
+ "@aws-sdk/smithy-client": "^3.370.0",
+ "@aws-sdk/util-retry": "^3.370.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "serverless": "^2.60 || ^3.0.0"
+ }
+ },
+ "node_modules/serverless-dotenv-plugin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-6.0.0.tgz",
+ "integrity": "sha512-8tLVNwHfDO0sBz6+m+DLTZquRk0AZq9rzqk3kphm1iIWKfan9R7RKt4hdq3eQ0kmDoqzudjPYBEXAJ5bUNKeGQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "dotenv": "^16.0.3",
+ "dotenv-expand": "^10.0.0"
+ },
+ "peerDependencies": {
+ "serverless": "1 || 2 || pre-3 || 3"
+ }
+ },
+ "node_modules/serverless-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/serverless-http/-/serverless-http-3.2.0.tgz",
+ "integrity": "sha512-QvSyZXljRLIGqwcJ4xsKJXwkZnAVkse1OajepxfjkBXV0BMvRS5R546Z4kCBI8IygDzkQY0foNPC/rnipaE9pQ==",
+ "engines": {
+ "node": ">=12.0"
+ }
+ },
+ "node_modules/serverless-webpack": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/serverless-webpack/-/serverless-webpack-5.13.0.tgz",
+ "integrity": "sha512-isMEbXbAK1F8YZJfeKgYA5uNuXPFzdHwZyRA9SuMGXVY2L8t1JIzPvRDLZiT4F3uQm16woyal+uaoDyxQo13vg==",
+ "dev": true,
+ "dependencies": {
+ "archiver": "^5.3.1",
+ "bluebird": "^3.7.2",
+ "find-yarn-workspace-root": "^2.0.0",
+ "fs-extra": "^11.1.1",
+ "glob": "^8.1.0",
+ "is-builtin-module": "^3.2.1",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "optionalDependencies": {
+ "ts-node": ">= 8.3.0"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "serverless": "1 || 2 || 3",
+ "typescript": ">=2.0",
+ "webpack": ">= 3.0.0 < 6"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/serverless-webpack/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/serverless-webpack/node_modules/fs-extra": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
+ "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/serverless-webpack/node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/serverless-webpack/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/serverless/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/serverless/node_modules/get-stdin": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
+ "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/serverless/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/serverless/node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/serverless/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/serverless/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/serverless/node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/serverless/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ }
+ },
+ "node_modules/shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/simple-git": {
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.20.0.tgz",
+ "integrity": "sha512-ozK8tl2hvLts8ijTs18iFruE+RoqmC/mqZhjs/+V7gS5W68JpJ3+FCTmLVqmR59MaUQ52MfGQuWsIqfsTbbJ0Q==",
+ "dev": true,
+ "dependencies": {
+ "@kwsites/file-exists": "^1.1.1",
+ "@kwsites/promise-deferred": "^1.1.1",
+ "debug": "^4.3.4"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/steveukx/git-js?sponsor=1"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
+ "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
+ "dev": true,
+ "dependencies": {
+ "sort-keys": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys/node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/split-ca": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz",
+ "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==",
+ "dev": true
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
+ },
+ "node_modules/sprintf-kit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/sprintf-kit/-/sprintf-kit-2.0.1.tgz",
+ "integrity": "sha512-2PNlcs3j5JflQKcg4wpdqpZ+AjhQJ2OZEo34NXDtlB0tIPG84xaaXhpA8XFacFiwjKA4m49UOYG83y3hbMn/gQ==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "^0.10.53"
+ }
+ },
+ "node_modules/ssh2": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.14.0.tgz",
+ "integrity": "sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "asn1": "^0.2.6",
+ "bcrypt-pbkdf": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ },
+ "optionalDependencies": {
+ "cpu-features": "~0.0.8",
+ "nan": "^2.17.0"
+ }
+ },
+ "node_modules/ssl-checker": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/ssl-checker/-/ssl-checker-2.0.8.tgz",
+ "integrity": "sha512-pIDGxablZowKR/elbm72Wk7T3lEdrcAKT4ltPsdQrpm7N6EIIvuFQpIcMNG+A/wmiymcRwFDzTd83bW6Yy5LKQ=="
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stopwords-iso": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stopwords-iso/-/stopwords-iso-1.1.0.tgz",
+ "integrity": "sha512-I6GPS/E0zyieHehMRPQcqkiBMJKGgLta+1hREixhoLPqEA0AlVFiC43dl8uPpmkkeRdDMzYRWFWk5/l9x7nmNg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stream-buffers": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
+ "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/stream-promise": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz",
+ "integrity": "sha512-P+7muTGs2C8yRcgJw/PPt61q7O517tDHiwYEzMWo1GSBCcZedUMT/clz7vUNsSxFphIlJ6QUL4GexQKlfJoVtA==",
+ "dev": true,
+ "dependencies": {
+ "2-thenable": "^1.0.0",
+ "es5-ext": "^0.10.49",
+ "is-stream": "^1.1.0"
+ }
+ },
+ "node_modules/stream-promise/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-dirs": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
+ "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
+ "dev": true,
+ "dependencies": {
+ "is-natural-number": "^4.0.1"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-outer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+ "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-outer/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
+ "node_modules/strtok3": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz",
+ "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/superagent": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+ "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+ "dev": true,
+ "dependencies": {
+ "component-emitter": "^1.3.0",
+ "cookiejar": "^2.1.4",
+ "debug": "^4.3.4",
+ "fast-safe-stringify": "^2.1.1",
+ "form-data": "^4.0.0",
+ "formidable": "^2.1.2",
+ "methods": "^1.1.2",
+ "mime": "2.6.0",
+ "qs": "^6.11.0",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": ">=6.4.0 <13 || >=14"
+ }
+ },
+ "node_modules/superagent/node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/superagent/node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/supertest": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.3.tgz",
+ "integrity": "sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA==",
+ "dev": true,
+ "dependencies": {
+ "methods": "^1.1.2",
+ "superagent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">=6.4.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sylvester": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/sylvester/-/sylvester-0.0.12.tgz",
+ "integrity": "sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.2.6"
+ }
+ },
+ "node_modules/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=="
+ },
+ "node_modules/synckit": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
+ "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
+ "dev": true,
+ "dependencies": {
+ "@pkgr/utils": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.1.15",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
+ "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz",
+ "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==",
+ "dev": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.0.0"
+ }
+ },
+ "node_modules/tar-fs/node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tar/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/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,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.19.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
+ "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/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,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "dev": true
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "node_modules/timers-ext": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
+ "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+ "dev": true,
+ "dependencies": {
+ "es5-ext": "~0.10.46",
+ "next-tick": "1"
+ }
+ },
+ "node_modules/titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true
+ },
+ "node_modules/to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/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==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
+ "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
+ "dev": true,
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/token-types/node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
+ "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
+ "dependencies": {
+ "punycode": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/trim-repeated": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+ "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/trim-repeated/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/ts-jest": {
+ "version": "27.1.5",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz",
+ "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==",
+ "dev": true,
+ "dependencies": {
+ "bs-logger": "0.x",
+ "fast-json-stable-stringify": "2.x",
+ "jest-util": "^27.0.0",
+ "json5": "2.x",
+ "lodash.memoize": "4.x",
+ "make-error": "1.x",
+ "semver": "7.x",
+ "yargs-parser": "20.x"
+ },
+ "bin": {
+ "ts-jest": "cli.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": ">=7.0.0-beta.0 <8",
+ "@types/jest": "^27.0.0",
+ "babel-jest": ">=27.0.0 <28",
+ "jest": "^27.0.0",
+ "typescript": ">=3.8 <5.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@types/jest": {
+ "optional": true
+ },
+ "babel-jest": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ts-jest/node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/ts-jest/node_modules/@types/yargs": {
+ "version": "16.0.5",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz",
+ "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/ts-jest/node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/ts-loader": {
+ "version": "9.4.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz",
+ "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.0.0",
+ "micromatch": "^4.0.0",
+ "semver": "^7.3.4"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "typescript": "*",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
+ "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
+ "dev": true,
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ts-node-dev": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ts-node-dev/-/ts-node-dev-2.0.0.tgz",
+ "integrity": "sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.5.1",
+ "dynamic-dedupe": "^0.3.0",
+ "minimist": "^1.2.6",
+ "mkdirp": "^1.0.4",
+ "resolve": "^1.0.0",
+ "rimraf": "^2.6.1",
+ "source-map-support": "^0.5.12",
+ "tree-kill": "^1.2.2",
+ "ts-node": "^10.4.0",
+ "tsconfig": "^7.0.0"
+ },
+ "bin": {
+ "ts-node-dev": "lib/bin.js",
+ "tsnd": "lib/bin.js"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "*",
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ts-node-dev/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/tsconfig": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz",
+ "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==",
+ "dev": true,
+ "dependencies": {
+ "@types/strip-bom": "^3.0.0",
+ "@types/strip-json-comments": "0.0.30",
+ "strip-bom": "^3.0.0",
+ "strip-json-comments": "^2.0.0"
+ }
+ },
+ "node_modules/tsconfig/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/tsconfig/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/tsutils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "dev": true
+ },
+ "node_modules/type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/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,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typeorm": {
+ "version": "0.2.45",
+ "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.2.45.tgz",
+ "integrity": "sha512-c0rCO8VMJ3ER7JQ73xfk0zDnVv0WDjpsP6Q1m6CVKul7DB9iVdWLRjPzc8v2eaeBuomsbZ2+gTaYr8k1gm3bYA==",
+ "dependencies": {
+ "@sqltools/formatter": "^1.2.2",
+ "app-root-path": "^3.0.0",
+ "buffer": "^6.0.3",
+ "chalk": "^4.1.0",
+ "cli-highlight": "^2.1.11",
+ "debug": "^4.3.1",
+ "dotenv": "^8.2.0",
+ "glob": "^7.1.6",
+ "js-yaml": "^4.0.0",
+ "mkdirp": "^1.0.4",
+ "reflect-metadata": "^0.1.13",
+ "sha.js": "^2.4.11",
+ "tslib": "^2.1.0",
+ "uuid": "^8.3.2",
+ "xml2js": "^0.4.23",
+ "yargs": "^17.0.1",
+ "zen-observable-ts": "^1.0.0"
+ },
+ "bin": {
+ "typeorm": "cli.js"
+ },
+ "funding": {
+ "url": "https://opencollective.com/typeorm"
+ },
+ "peerDependencies": {
+ "@sap/hana-client": "^2.11.14",
+ "better-sqlite3": "^7.1.2",
+ "hdb-pool": "^0.1.6",
+ "ioredis": "^4.28.3",
+ "mongodb": "^3.6.0",
+ "mssql": "^6.3.1",
+ "mysql2": "^2.2.5",
+ "oracledb": "^5.1.0",
+ "pg": "^8.5.1",
+ "pg-native": "^3.0.0",
+ "pg-query-stream": "^4.0.0",
+ "redis": "^3.1.1",
+ "sql.js": "^1.4.0",
+ "sqlite3": "^5.0.2",
+ "typeorm-aurora-data-api-driver": "^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@sap/hana-client": {
+ "optional": true
+ },
+ "better-sqlite3": {
+ "optional": true
+ },
+ "hdb-pool": {
+ "optional": true
+ },
+ "ioredis": {
+ "optional": true
+ },
+ "mongodb": {
+ "optional": true
+ },
+ "mssql": {
+ "optional": true
+ },
+ "mysql2": {
+ "optional": true
+ },
+ "oracledb": {
+ "optional": true
+ },
+ "pg": {
+ "optional": true
+ },
+ "pg-native": {
+ "optional": true
+ },
+ "pg-query-stream": {
+ "optional": true
+ },
+ "redis": {
+ "optional": true
+ },
+ "sql.js": {
+ "optional": true
+ },
+ "sqlite3": {
+ "optional": true
+ },
+ "typeorm-aurora-data-api-driver": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/typeorm/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/typeorm/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/typeorm/node_modules/dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/typeorm/node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/typeorm/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/typeorm/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/typeorm/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/typeorm/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/uglify-js": {
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/unbzip2-stream": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+ "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+ "dependencies": {
+ "buffer": "^5.2.1",
+ "through": "^2.3.8"
+ }
+ },
+ "node_modules/unbzip2-stream/node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/underscore": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
+ "dev": true
+ },
+ "node_modules/uni-global": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz",
+ "integrity": "sha512-WWM3HP+siTxzIWPNUg7hZ4XO8clKi6NoCAJJWnuRL+BAqyFXF8gC03WNyTefGoUXYc47uYgXxpKLIEvo65PEHw==",
+ "dev": true,
+ "dependencies": {
+ "type": "^2.5.0"
+ }
+ },
+ "node_modules/uni-global/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
+ "dev": true
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
+ "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
+ "dependencies": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
+ },
+ "node_modules/utf-8-validate": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.3.tgz",
+ "integrity": "sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/validate-npm-package-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+ "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
+ "dev": true,
+ "dependencies": {
+ "builtins": "^1.0.3"
+ }
+ },
+ "node_modules/validator": {
+ "version": "13.11.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
+ "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/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==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "dev": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
+ "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
+ "dependencies": {
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/wait-for-expect": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz",
+ "integrity": "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==",
+ "dev": true
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/wappalyzer": {
+ "version": "6.10.66",
+ "resolved": "https://registry.npmjs.org/wappalyzer/-/wappalyzer-6.10.66.tgz",
+ "integrity": "sha512-rPnZY1dxIJvPrL0h7AKLrwQQ5vuSCD/ALwIXdwHurlfgex1sxFEQKwG/YjLEnR4iR+HpQsLl47EKlMu87/kbow==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/aliasio"
+ }
+ ],
+ "dependencies": {
+ "puppeteer": "~19.7.0"
+ },
+ "bin": {
+ "wappalyzer": "cli.js"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/wappalyzer-core": {
+ "version": "6.10.66",
+ "resolved": "https://registry.npmjs.org/wappalyzer-core/-/wappalyzer-core-6.10.66.tgz",
+ "integrity": "sha512-7EOYy4DpdRcfoW00SfCwKjJE3//AAbyl2dzuG6DgICKPoRf60ero/1fBHOB2ipVTmIxpnnlsJ8jY0r5McwRwtA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/aliasio"
+ }
+ ]
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "dev": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/webpack": {
+ "version": "5.88.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz",
+ "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.15.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
+ "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
+ "dev": true,
+ "dependencies": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^2.1.1",
+ "@webpack-cli/info": "^2.0.2",
+ "@webpack-cli/serve": "^2.0.5",
+ "colorette": "^2.0.14",
+ "commander": "^10.0.1",
+ "cross-spawn": "^7.0.3",
+ "envinfo": "^7.7.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^3.1.1",
+ "rechoir": "^0.8.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "bin": {
+ "webpack-cli": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=14.15.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "5.x.x"
+ },
+ "peerDependenciesMeta": {
+ "@webpack-cli/generators": {
+ "optional": true
+ },
+ "webpack-bundle-analyzer": {
+ "optional": true
+ },
+ "webpack-dev-server": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-cli/node_modules/commander": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
+ "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/webpack-merge": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz",
+ "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "dev": true,
+ "dependencies": {
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/whatwg-url": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
+ "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
+ "dependencies": {
+ "tr46": "^4.1.1",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
+ "dev": true
+ },
+ "node_modules/wordnet-db": {
+ "version": "3.1.14",
+ "resolved": "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz",
+ "integrity": "sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
+ },
+ "node_modules/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,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/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,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.13.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
+ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yaml-ast-parser": {
+ "version": "0.0.43",
+ "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz",
+ "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==",
+ "dev": true
+ },
+ "node_modules/yamljs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
+ "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "glob": "^7.0.5"
+ },
+ "bin": {
+ "json2yaml": "bin/json2yaml",
+ "yaml2json": "bin/yaml2json"
+ }
+ },
+ "node_modules/yamljs/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/yamljs/node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zen-observable": {
+ "version": "0.8.15",
+ "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
+ "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ=="
+ },
+ "node_modules/zen-observable-ts": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz",
+ "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==",
+ "dependencies": {
+ "@types/zen-observable": "0.8.3",
+ "zen-observable": "0.8.15"
+ }
+ },
+ "node_modules/zip-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz",
+ "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==",
+ "dev": true,
+ "dependencies": {
+ "archiver-utils": "^2.1.0",
+ "compress-commons": "^4.1.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ }
+ }
+}
diff --git a/backend/package.json b/backend/package.json
new file mode 100644
index 00000000..8ccc8446
--- /dev/null
+++ b/backend/package.json
@@ -0,0 +1,118 @@
+{
+ "name": "crossfeed-backend",
+ "version": "1.0.0",
+ "description": "",
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "engineStrict": true,
+ "dependencies": {
+ "@aws-sdk/client-cloudwatch-logs": "^3.417.0",
+ "@aws-sdk/client-ssm": "^3.414.0",
+ "@elastic/elasticsearch": "~7.10.0",
+ "@thefaultvault/tfv-cpe-parser": "^1.3.0",
+ "@types/dockerode": "^3.3.19",
+ "amqplib": "^0.10.3",
+ "aws-sdk": "^2.1551.0",
+ "axios": "^1.6",
+ "body-parser": "^1.19.0",
+ "bufferutil": "^4.0.7",
+ "class-transformer": "^0.3.1",
+ "class-validator": "^0.14.0",
+ "cookie": "^0.4.1",
+ "cookie-parser": "^1.4.6",
+ "cors": "^2.8.5",
+ "date-fns": "^3.3.1",
+ "express": "^4.18.1",
+ "global-agent": "^2.2.0",
+ "got": "^11.8.5",
+ "handlebars": "^4.7.8",
+ "helmet": "^4.1.1",
+ "http-proxy-middleware": "^2.0.6",
+ "ip": "^1.1.9",
+ "jsdom": "^22.1",
+ "jsonwebtoken": "^9.0.2",
+ "jwks-rsa": "^3.0",
+ "lodash": "^4.17.21",
+ "nodemailer": "^6.7.2",
+ "openid-client": "^5.4",
+ "p-queue": "^6.6.2",
+ "p-retry": "^4.6.1",
+ "papaparse": "^5.3.1",
+ "pg": "^8.11",
+ "portscanner": "^2.2.0",
+ "reflect-metadata": "^0.1.13",
+ "serverless-http": "^3.2.0",
+ "ssl-checker": "^2.0.7",
+ "tough-cookie": "^4.1.3",
+ "typeorm": "^0.2.45",
+ "utf-8-validate": "^6.0.3",
+ "uuid": "^9.0.1",
+ "wappalyzer": "^6.10.63",
+ "wappalyzer-core": "^6.10.63",
+ "ws": "^8.13.0"
+ },
+ "devDependencies": {
+ "@jest/globals": "^29",
+ "@types/aws-lambda": "^8.10.62",
+ "@types/cors": "^2.8.17",
+ "@types/dockerode": "^3.3.19",
+ "@types/jest": "^27",
+ "@types/node": "^20.6",
+ "@types/node-fetch": "^2.6.4",
+ "@types/nodemailer": "^6.4.0",
+ "@types/papaparse": "^5.3.0",
+ "@types/supertest": "^2.0",
+ "@types/uuid": "^9.0.7",
+ "@typescript-eslint/eslint-plugin": "^5.59",
+ "@typescript-eslint/parser": "^5.59",
+ "debug": "^4.3.4",
+ "dockerode": "^3.3.1",
+ "dotenv": "^16.0",
+ "eslint": "^8.46.0",
+ "eslint-config-prettier": "^6.12.0",
+ "eslint-plugin-prettier": "^5.0.0",
+ "jest": "^27",
+ "json-schema-to-typescript": "^13.0",
+ "nock": "^13.0.4",
+ "prettier": "^3.0.0",
+ "sentencer": "^0.2.1",
+ "serverless": "^3.30",
+ "serverless-domain-manager": "^7.0",
+ "serverless-dotenv-plugin": "^6.0.0",
+ "serverless-webpack": "^5.11.0",
+ "supertest": "^6.3",
+ "ts-jest": "^27",
+ "ts-loader": "^9.4.1",
+ "ts-node": "^10.9",
+ "ts-node-dev": "^2.0.0",
+ "typescript": "^4.9",
+ "wait-for-expect": "^3.0.2",
+ "webpack": "^5.88",
+ "webpack-cli": "^5.1"
+ },
+ "overrides": {
+ "file-type": "^16.5.4",
+ "superagent": "^8.0.5",
+ "xml2js": "0.5.0",
+ "kind-of": "^6.0.3",
+ "execa": "^5.1.1",
+ "natural": "^6.5.0",
+ "semver": "^7.5.3"
+ },
+ "scripts": {
+ "test": "jest --detectOpenHandles",
+ "test-python": "pytest",
+ "lint": "eslint '**/*.{ts,tsx,js,jsx}'",
+ "lint:fix": "eslint '**/*.{ts,tsx,js,jsx}' --fix",
+ "codegen": "ts-node src/tools/generate-types.ts",
+ "build-worker": "sh ./tools/build-worker.sh",
+ "deploy-worker-staging": "./tools/deploy-worker.sh",
+ "deploy-worker-prod": "./tools/deploy-worker.sh crossfeed-prod-worker",
+ "syncdb": "docker-compose exec -T backend npx ts-node src/tools/run-syncdb.ts",
+ "pesyncdb": "docker-compose exec -T backend npx ts-node src/tools/run-pesyncdb.ts",
+ "control-queue": "docker-compose exec -T backend npx ts-node src/tools/consumeControlQueue.ts"
+ },
+ "author": "",
+ "license": "ISC"
+}
diff --git a/backend/scripts/populateCountiesCities/United_States_Cities_with_URLs.csv b/backend/scripts/populateCountiesCities/United_States_Cities_with_URLs.csv
new file mode 100644
index 00000000..11d4f279
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/United_States_Cities_with_URLs.csv
@@ -0,0 +1,13344 @@
+State,County,City,Wikipedia_URL
+Alabama,Henry County,Abbeville,http://www.cityofabbeville.org/
+Alabama,Jefferson County,Adamsville,http://www.cityofadamsville.org/
+Alabama,Winston County,Addison,http://town-of-addison.com/
+Alabama,Shelby County,Alabaster,http://www.cityofalabaster.com
+Alabama,Marshall County,Albertville,http://www.cityofalbertville.com
+Alabama,Tallapoosa County,Alexander City,https://alexandercityal.gov/
+Alabama,Pickens County,Aliceville,https://www.thecityofaliceville.com/
+Alabama,Covington County,Andalusia,http://www.cityofandalusia.com
+Alabama,Calhoun County,Anniston,http://www.annistonal.gov
+Alabama,Marshall County,Arab,http://www.arabcity.org
+Alabama,Limestone County,Ardmore,http://www.townofardmorealabama.com/
+Alabama,St. Clair County,Argo,http://www.cityofargo.org/
+Alabama,Houston County,Ashford,http://www.cityofashford.com/
+Alabama,Clay County,Ashland,http://www.cityofashland.net/
+Alabama,St. Clair County,Ashville,http://www.cityofashville.org/
+Alabama,Limestone County,Athens,http://www.athensal.us/
+Alabama,Escambia County,Atmore,https://cityofatmore.com/
+Alabama,Etowah County,Attalla,http://www.attallacity.com
+Alabama,Lee County,Auburn,http://www.auburnalabama.org/
+Alabama,Baldwin County,Bay Minette,http://www.cityofbayminette.org
+Alabama,Mobile County,Bayou La Batre,http://cityofbayoulabatre.com
+Alabama,Fayette County,Berry,http://townofberryalabama.org
+Alabama,Jefferson County,Bessemer,https://www.bessemeral.org/
+Alabama,Jefferson County,Birmingham,https://www.birminghamal.gov/
+Alabama,Blount County,Blountsville,https://blountsvilleal.com/
+Alabama,Marshall County,Boaz,http://www.cityofboaz.org
+Alabama,Crenshaw County,Brantley,https://www.townofbrantley.net/
+Alabama,Bibb County,Brent,http://www.cityofbrentalabama.com
+Alabama,Escambia County,Brewton,http://www.cityofbrewton.org/
+Alabama,Marion County,Brilliant,http://www.brilliantal.org
+Alabama,Jefferson County,Brookside,https://www.brooksidealabama.com/
+Alabama,Tuscaloosa County,Brookwood,http://www.brookwoodalabama.com/
+Alabama,Pike County,Brundidge,http://www.brundidge.org/
+Alabama,Choctaw County,Butler,https://www.butleralabama.org/
+Alabama,Chilton County,Calera,http://www.cityofcalera.org
+Alabama,Walker County,Carbon Hill,https://carbonhill.org/
+Alabama,Cherokee County,Cedar Bluff,http://www.cedarbluff-al.org
+Alabama,Jefferson County,Center Point,https://www.cityofcenterpoint.org/
+Alabama,Cherokee County,Centre,http://www.cityofcentre.com
+Alabama,Bibb County,Centreville,https://cityofcentreville.com/
+Alabama,Washington County,Chatom,http://www.chatom.org/
+Alabama,Shelby County,Chelsea,http://www.cityofchelsea.com
+Alabama,Mobile County,Chickasaw,http://www.cityofchickasaw.org
+Alabama,Talladega County,Childersburg,http://www.childersburg.org
+Alabama,Mobile County,Citronelle,http://www.cityofcitronelle.com
+Alabama,Chilton County,Clanton,http://www.clanton.al.us
+Alabama,Jefferson County,Clay,http://www.clayalabama.org/
+Alabama,Tuscaloosa County,Coaling,http://coalingalabama.com/
+Alabama,Tuscaloosa County,Coker,http://townofcoker.com/
+Alabama,DeKalb County,Collinsville,http://www.collinsvillealabama.net
+Alabama,Shelby County,Columbiana,https://cityofcolumbiana.com/
+Alabama,Elmore County,Coosada,https://townofcoosada.com/
+Alabama,Houston County,Cottonwood,http://www.cottonwoodalabama.com
+Alabama,Blount County,County Line,http://mycountyline.org/
+Alabama,Mobile County,Creola,http://www.cityofcreola.org
+Alabama,DeKalb County,Crossville,http://www.crossvillealabama.com
+Alabama,Cullman County,Cullman,https://cullmanal.gov/
+Alabama,Tallapoosa County,Dadeville,http://www.cityofdadevilleal.org
+Alabama,Dale County,Daleville,http://dalevilleal.com
+Alabama,Baldwin County,Daphne,http://www.daphneal.com/
+Alabama,Mobile County,Dauphin Island,http://www.townofDauphinIsland.org
+Alabama,Morgan County,Decatur,http://www.decaturalabamausa.com
+Alabama,Marengo County,Demopolis,http://www.demopolisal.gov
+Alabama,Cullman County,Dodge City,http://dodgecitytown.com
+Alabama,Walker County,Dora,http://www.cityofdora.com/
+Alabama,Houston County,Dothan,http://www.dothan.org
+Alabama,Winston County,Double Springs,http://www.townofdoublesprings.com/
+Alabama,Blount County,Douglas,http://www.douglasal.com
+Alabama,Escambia County,East Brewton,http://eastbrewton.org
+Alabama,Elmore County,Eclectic,http://www.townofeclectic.com
+Alabama,Coffee County,Elba,https://www.elbaal.gov
+Alabama,Baldwin County,Elberta,https://townofelberta.com/
+Alabama,Elmore County,Elmore,http://townofelmore.com
+Alabama,Coffee County,Enterprise,https://www.enterpriseal.gov/
+Alabama,Sumter County,Epes,http://www.cityofepesalabama.com/
+Alabama,Barbour County,Eufaula,http://www.eufaulaalabama.com/
+Alabama,Conecuh County,Evergreen,http://www.evergreenal.org
+Alabama,Jefferson County,Fairfield,https://fairfieldal.org/
+Alabama,Baldwin County,Fairhope,http://www.cofairhope.com
+Alabama,Morgan County,Falkville,http://www.falkville.org
+Alabama,Fayette County,Fayette,http://fayetteal.org
+Alabama,Lauderdale County,Florence,http://www.florenceal.org/
+Alabama,Baldwin County,Foley,http://www.cityoffoley.org
+Alabama,DeKalb County,Fort Payne,http://www.fortpayne.org
+Alabama,Jefferson County,Fultondale,http://www.cityoffultondale.com
+Alabama,DeKalb County,Fyffe,http://www.fyffecitylimits.com
+Alabama,Etowah County,Gadsden,http://www.cityofgadsden.com
+Alabama,Covington County,Gantt,https://www.townofgantt.com
+Alabama,Jefferson County,Gardendale,http://www.cityofgardendale.com/
+Alabama,Geneva County,Geneva,http://www.cityofgeneva.com/
+Alabama,DeKalb County,Geraldine,http://www.geraldinealabama.com/
+Alabama,Fayette County,Glen Allen,http://townofglenallen.org
+Alabama,Etowah County,Glencoe,http://www.cityofglencoe.org
+Alabama,Cullman County,Good Hope,http://goodhopeal.com
+Alabama,Coosa County,Goodwater,http://www.cityofgoodwater.com
+Alabama,Pickens County,Gordo,http://www.townofgordo.org/
+Alabama,Marshall County,Grant,http://www.grantal.org
+Alabama,Jefferson County,Graysville,http://www.graysvillecity.com
+Alabama,Butler County,Greenville,https://greenvilleal.gov/
+Alabama,Clarke County,Grove Hill,http://grovehillalabama.com
+Alabama,Marion County,Guin,http://www.guinal.org
+Alabama,Baldwin County,Gulf Shores,http://www.gulfshoresal.gov
+Alabama,Marshall County,Guntersville,http://guntersvilleal.org
+Alabama,Madison County,Gurley,http://www.townofgurleyal.com
+Alabama,Marion County,Hackleburg,http://townofhackleburg.com
+Alabama,Winston County,Haleyville,http://www.cityofhaleyville.com
+Alabama,Marion County,Hamilton,http://hamiltoncityal.org
+Alabama,Cullman County,Hanceville,http://cityofhanceville.net
+Alabama,Shelby County,Harpersville,https://www.harpersvilleal.gov/
+Alabama,Geneva County,Hartford,http://cityofhartfordal.org/
+Alabama,Morgan County,Hartselle,http://www.hartselle.org
+Alabama,Blount County,Hayden,http://www.townofhayden.com
+Alabama,Henry County,Headland,http://www.headlandalabama.org
+Alabama,Cleburne County,Heflin,http://www.cityofheflin.org/
+Alabama,Shelby County,Helena,http://www.cityofhelena.org/
+Alabama,DeKalb County,Henagar,http://www.cityofhenagar.com
+Alabama,Blount County,Highland Lake,http://townofhighlandlake.com
+Alabama,Calhoun County,Hobson City,http://www.townofhobsoncity.com/
+Alabama,Franklin County,Hodges,http://hodgesal.com
+Alabama,Etowah County,Hokes Bluff,http://www.cityofhokesbluff.com
+Alabama,Jackson County,Hollywood,http://thetownofhollywood.com/
+Alabama,Jefferson County,Homewood,http://www.homewoodal.net
+Alabama,Jefferson County,Hoover,https://hooveralabama.gov
+Alabama,Jefferson County,Hueytown,http://hueytownal.org/
+Alabama,Madison County,Huntsville,https://www.huntsvilleal.gov/
+Alabama,Russell County,Hurtsboro,http://www.hurtsboro.us/
+Alabama,Shelby County,Indian Springs Village,http://www.indianspringsvillage.org/
+Alabama,Jefferson County,Irondale,https://cityofirondaleal.gov/
+Alabama,Clarke County,Jackson,http://cityofjacksonal.com
+Alabama,Calhoun County,Jacksonville,http://www.jacksonville-al.org
+Alabama,Walker County,Jasper,http://www.jaspercity.com/
+Alabama,Chilton County,Jemison,http://www.jemisonalabama.org
+Alabama,Lauderdale County,Killen,http://www.killenal.org/
+Alabama,Jefferson County,Kimberly,http://www.kimberlyal.org/
+Alabama,Houston County,Kinsey,http://kinseyalabama.org/
+Alabama,Coffee County,Kinston,https://www.kinstonal.com/
+Alabama,Chambers County,LaFayette,https://cityoflafayetteal.com/
+Alabama,Tuscaloosa County,Lake View,https://lakeviewalabama.gov/
+Alabama,Chambers County,Lanett,http://www.cityoflanett.com
+Alabama,Jefferson County,Leeds,http://leedsalabama.org
+Alabama,Cherokee County,Leesburg,http://www.leesburgal.com
+Alabama,Lauderdale County,Lexington,http://lexingtonal.org
+Alabama,Talladega County,Lincoln,http://www.lincolnalabama.com/
+Alabama,Marengo County,Linden,http://www.lindenalabama.net
+Alabama,Clay County,Lineville,http://www.cityoflineville.com
+Alabama,Sumter County,Livingston,https://www.cityoflivingstonal.com/
+Alabama,Blount County,Locust Fork,http://www.locustfork.com
+Alabama,Lowndes County,Lowndesboro,https://www.townoflowndesboro.org/
+Alabama,Baldwin County,Loxley,http://www.townofloxley.org
+Alabama,Crenshaw County,Luverne,http://www.luverne.org
+Alabama,Madison County,Madison,http://www.madisonal.gov
+Alabama,Baldwin County,Magnolia Springs,http://www.townofmagnoliasprings.org
+Alabama,Chilton County,Maplesville,http://www.townofmaplesville.com
+Alabama,Perry County,Marion,https://www.discovermarion.org
+Alabama,Washington County,McIntosh,https://mcintoshal.com/
+Alabama,Jefferson County,Midfield,http://www.cityofmidfield.com/
+Alabama,Autauga County,Millbrook,http://www.cityofmillbrook.org/
+Alabama,Mobile County,Mobile,http://www.cityofmobile.org
+Alabama,Monroe County,Monroeville,https://www.monroevilleal.gov/
+Alabama,Shelby County,Montevallo,http://www.cityofmontevallo.com/
+Alabama,Montgomery County,Montgomery,http://montgomeryal.gov
+Alabama,St. Clair County,Moody,https://www.moodyalabama.gov/
+Alabama,Limestone County,Mooresville,http://www.mooresvilleal.com/
+Alabama,Jefferson County,Morris,http://www.morrisal.us/
+Alabama,Lawrence County,Moulton,https://cityofmoultonal.com/
+Alabama,Hale County,Moundville,http://www.moundvillealabama.com
+Alabama,Mobile County,Mount Vernon,http://www.mtvernonal.com
+Alabama,Jefferson County,Mountain Brook,http://www.mtnbrook.org/
+Alabama,Colbert County,Muscle Shoals,http://www.cityofmuscleshoals.com
+Alabama,Dale County,Napier Field,http://www.napierfield.com
+Alabama,Winston County,Natural Bridge,http://www.naturalbridgeala.com
+Alabama,Madison County,New Hope,http://www.cityofnewhope.org
+Alabama,Tallapoosa County,New Site,https://townofnewsite.com/
+Alabama,Tuscaloosa County,Northport,http://www.cityofnorthport.org/
+Alabama,Macon County,Notasulga,http://www.notasulgaal.com
+Alabama,Talladega County,Oak Grove,http://www.townofoakgrove.org
+Alabama,Wilcox County,Oak Hill,http://oakhillal.com/
+Alabama,St. Clair County,Odenville,https://www.cityofodenville.net/
+Alabama,Calhoun County,Ohatchee,http://www.ohatchee.info
+Alabama,Blount County,Oneonta,http://www.cityofoneonta.us
+Alabama,Lee County,Opelika,http://www.opelika-al.gov
+Alabama,Covington County,Opp,http://www.cityofopp.com
+Alabama,Baldwin County,Orange Beach,http://www.cityoforangebeach.com
+Alabama,Dallas County,Orrville,https://www.townoforrville.com/
+Alabama,Madison County,Owens Cross Roads,http://www.owenscrossroadsal.gov/
+Alabama,Calhoun County,Oxford,http://www.oxfordal.gov
+Alabama,Dale County,Ozark,http://www.ozarkalabama.us
+Alabama,Shelby County,Pelham,http://www.pelhamonline.com/
+Alabama,St. Clair County,Pell City,http://pell-city.com/
+Alabama,Baldwin County,Perdido Beach,http://www.townofperdidobeach.org
+Alabama,Russell County,Phenix City,http://www.phenixcityal.us
+Alabama,Franklin County,Phil Campbell,http://philcampbellal.com
+Alabama,Calhoun County,Piedmont,http://www.piedmontcity.org
+Alabama,Montgomery County,Pike Road,https://www.pikeroad.us/
+Alabama,Jefferson County,Pinson,https://www.thecityofpinson.com/
+Alabama,Jefferson County,Pleasant Grove,http://www.cityofpg.com/
+Alabama,Autauga County,Prattville,http://www.prattvilleal.gov/
+Alabama,Morgan County,Priceville,http://townofpriceville.com
+Alabama,Mobile County,Prichard,http://www.thecityofprichard.org
+Alabama,St. Clair County,Ragland,http://www.townofragland.org/
+Alabama,Etowah County,Rainbow City,http://www.rbcalabama.com
+Alabama,DeKalb County,Rainsville,http://www.rainsvillealabama.com
+Alabama,Franklin County,Red Bay,http://www.cityofredbay.org
+Alabama,Pickens County,Reform,http://www.cityofreform.com
+Alabama,Houston County,Rehobeth,https://rehobethalabama.com/
+Alabama,Conecuh County,Repton,http://www.reptonalabama.com
+Alabama,St. Clair County,Riverside,http://www.riverside-al.com/
+Alabama,Baldwin County,Robertsdale,http://www.robertsdale.org
+Alabama,Coosa County,Rockford,http://www.rockfordalabama.net/
+Alabama,Franklin County,Russellville,http://www.russellvilleal.org
+Alabama,Geneva County,Samson,http://www.cityofsamson.com/
+Alabama,Cherokee County,Sand Rock,http://www.sandrock-al.org/
+Alabama,Mobile County,Saraland,http://www.saraland.org
+Alabama,Mobile County,Satsuma,http://www.cityofsatsuma.com
+Alabama,Jackson County,Scottsboro,http://cityofscottsboro.com/
+Alabama,Dallas County,Selma,https://selma-al.gov/
+Alabama,Colbert County,Sheffield,http://www.sheffieldalabama.org/
+Alabama,Macon County,Shorter,http://www.shorteralabama.com
+Alabama,Choctaw County,Silas,http://www.silasal.com
+Alabama,Baldwin County,Silverhill,http://www.silverhillalabama.com/
+Alabama,Lee County,Smiths Station,https://smithsstational.gov/
+Alabama,Morgan County,Somerville,http://www.townofsomerville.org
+Alabama,Etowah County,Southside,http://www.cityofsouthside.com
+Alabama,Baldwin County,Spanish Fort,http://www.cityofspanishfort.com
+Alabama,St. Clair County,Springville,http://www.springvillealabama.org
+Alabama,Lauderdale County,St. Florian,http://www.stflorianalabama.com/
+Alabama,St. Clair County,Steele,https://townofsteele.org
+Alabama,Jackson County,Stevenson,http://www.cityofstevensonalabama.com/
+Alabama,Lamar County,Sulligent,http://sulligent.org
+Alabama,Walker County,Sumiton,http://www.thecityofsumiton.com
+Alabama,Baldwin County,Summerdale,http://www.summerdalealabama.com
+Alabama,Marengo County,Sweet Water,https://townofsweetwater.com
+Alabama,Talladega County,Sylacauga,http://www.cityofsylacauga.net/
+Alabama,Jefferson County,Sylvan Springs,http://www.sylvanspringsal.org/
+Alabama,DeKalb County,Sylvania,http://www.sylvaniaalabama.com
+Alabama,Talladega County,Talladega,http://www.talladega.com
+Alabama,Elmore County,Tallassee,http://www.tallassee-al.gov
+Alabama,Jefferson County,Tarrant,http://www.cityoftarrant.com/
+Alabama,Houston County,Taylor,https://www.cityoftaylor.org/
+Alabama,Marengo County,Thomaston,http://townofthomaston.com
+Alabama,Clarke County,Thomasville,http://www.thomasvilleal.com/
+Alabama,Chilton County,Thorsby,http://www.townofthorsby.com
+Alabama,Madison County,Triana,http://www.townoftriana.com
+Alabama,Morgan County,Trinity,http://www.trinityal.gov
+Alabama,Pike County,Troy,http://www.troyal.gov
+Alabama,Jefferson County,Trussville,http://www.trussville.org/
+Alabama,Tuscaloosa County,Tuscaloosa,http://www.tuscaloosa.com/
+Alabama,Colbert County,Tuscumbia,http://www.cityoftuscumbia.org
+Alabama,Macon County,Tuskegee,http://tuskegeealabama.gov
+Alabama,Perry County,Uniontown,https://www.uniontownal.com
+Alabama,Chambers County,Valley,http://www.cityofvalley.com
+Alabama,Dallas County,Valley Grande,http://www.cityofvalleygrande.com
+Alabama,DeKalb County,Valley Head,http://valleyheadalabama.com/
+Alabama,Tuscaloosa County,Vance,http://townofvance.weebly.com/
+Alabama,Jefferson County,Vestavia Hills,http://vhal.org/
+Alabama,Franklin County,Vina,http://vinaalabama.org
+Alabama,Shelby County,Vincent,http://www.townofvincent.com/
+Alabama,Blount County,Warrior,https://cityofwarrior.ning.com
+Alabama,Lauderdale County,Waterloo,http://www.waterlooalabama.com/
+Alabama,Calhoun County,Weaver,http://www.weaver-alabama.org
+Alabama,Houston County,Webb,http://www.webbalabama.com/
+Alabama,Jefferson County,West Jefferson,https://townofwestjefferson.com/
+Alabama,Shelby County,Westover,http://www.westoveralabama.org/
+Alabama,Elmore County,Wetumpka,http://www.cityofwetumpka.com
+Alabama,Shelby County,Wilsonville,http://www.wilsonvilleal.com/
+Alabama,Marion County,Winfield,http://www.winfieldcity.org
+Alabama,Randolph County,Woodland,https://www.townofwoodlandal.com/
+Alabama,Bibb County,Woodstock,https://www.townofwoodstockal.com/
+Alabama,Sumter County,York,http://www.cityyork.com/
+Alaska,Sumter County,Adak,https://adak-ak.gov/
+Alaska,Sumter County,Akhiok,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/0b1ab70f-3a34-46fe-8aac-c43348797f98
+Alaska,Sumter County,Akiak,https://akiaknativecommunity.org/
+Alaska,Sumter County,Akutan,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/e569dafa-a01c-4f00-92c2-b27d9ee32ea8
+Alaska,Sumter County,Alakanuk,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/ce7e59f5-2ed0-4555-8468-0a18a3a36191
+Alaska,Sumter County,Aleknagik,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/c47614a0-11f3-498d-b60d-89eee14e54af
+Alaska,Sumter County,Aleutians East Borough,http://www.aleutianseast.org
+Alaska,Sumter County,Allakaket,https://www.akml.org/wp-content/uploads/2020/02/NEW-2020MOD-For-Website-35.pdf
+Alaska,Sumter County,Ambler,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/ceea5ed4-f88d-47ee-81dd-58cd8921b6da
+Alaska,Sumter County,Anaktuvuk Pass,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/825f1cab-ad43-490d-b829-4eb77828ab58
+Alaska,Sumter County,Anchorage,https://www.muni.org/
+Alaska,Sumter County,Anderson,http://www.anderson.govoffice.com
+Alaska,Sumter County,Angoon,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/72294383-ddd6-4441-8c63-eb92786a82a1
+Alaska,Sumter County,Aniak,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/319d7670-7304-4cb9-9b6b-afe9d3f2b94f
+Alaska,Sumter County,Anvik,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/c0a23263-bd61-47ba-9bd4-8152e95aed1a
+Alaska,Sumter County,Atka,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/1416bd82-ae8b-413c-a12c-5c56c233e3e3
+Alaska,Sumter County,Atqasuk,https://www.commerce.alaska.gov/dcra/DCRAExternal/community/Details/ac7acc77-e5ba-495e-a707-20889836248b
+Alaska,Sumter County,Bethel,https://www.cityofbethel.org/
+Alaska,Sumter County,Coffman Cove,http://www.CCAlaska.com/
+Alaska,Sumter County,Cordova,http://www.cityofcordova.net
+Alaska,Sumter County,Craig,http://www.craigak.com
+Alaska,Sumter County,Delta Junction,http://ci.delta-junction.ak.us
+Alaska,Sumter County,Denali Borough,http://www.denaliborough.com
+Alaska,Sumter County,Dillingham,http://dillinghamak.us
+Alaska,Sumter County,Edna Bay,http://www.ednabayalaska.net
+Alaska,Sumter County,Fairbanks,https://www.fairbanksalaska.us/
+Alaska,Sumter County,Fairbanks North Star Borough,http://www.co.fairbanks.ak.us
+Alaska,Sumter County,False Pass,http://home.gci.net/~cityoffalsepass/
+Alaska,Sumter County,Galena,http://www.ci.galena.ak.us/
+Alaska,Sumter County,Gustavus,http://www.gustavus-ak.gov
+Alaska,Sumter County,Homer,http://www.ci.homer.ak.us/
+Alaska,Sumter County,Hoonah,http://www.cityofhoonah.org
+Alaska,Sumter County,Houston,http://www.houstonak.com/
+Alaska,Sumter County,Juneau,https://juneau.org/
+Alaska,Sumter County,Kenai,http://www.kenai.city
+Alaska,Sumter County,Kenai Peninsula Borough,http://www.borough.kenai.ak.us
+Alaska,Sumter County,Ketchikan,http://www.city.ketchikan.ak.us
+Alaska,Sumter County,Ketchikan Gateway Borough,http://www.kgbak.us
+Alaska,Sumter County,King Cove,http://www.cityofkingcove.com/
+Alaska,Sumter County,Klawock,http://www.cityofklawock.com
+Alaska,Sumter County,Kodiak,https://www.city.kodiak.ak.us
+Alaska,Sumter County,Kodiak Island Borough,http://www.kodiakak.us
+Alaska,Sumter County,Kotzebue,http://www.cityofkotzebue.com
+Alaska,Sumter County,Lake and Peninsula Borough,http://www.lakeandpen.com
+Alaska,Sumter County,Matanuska-Susitna Borough,http://www.matsugov.us
+Alaska,Sumter County,Nome,https://www.nomealaska.org
+Alaska,Sumter County,North Pole,http://www.northpolealaska.com
+Alaska,Sumter County,North Slope Borough,https://www.north-slope.org/
+Alaska,Sumter County,Northwest Arctic Borough,http://www.nwabor.org
+Alaska,Sumter County,Palmer,https://www.palmerak.org/
+Alaska,Sumter County,Pelican,http://pelican.net
+Alaska,Sumter County,Petersburg Borough,https://www.petersburgak.gov/
+Alaska,Sumter County,Sand Point,http://www.sandpointak.com/
+Alaska,Sumter County,Seldovia,https://cityofseldovia.com/
+Alaska,Sumter County,Seward,http://www.cityofseward.us
+Alaska,Sumter County,Sitka,https://www.cityofsitka.com
+Alaska,Sumter County,Soldotna,http://www.soldotna.org
+Alaska,Sumter County,St. George,http://www.stgeorgealaska.com/index.asp
+Alaska,Sumter County,Tenakee Springs,http://www.tenakeespringsak.com
+Alaska,Sumter County,Unalaska,http://www.ci.unalaska.ak.us
+Alaska,Sumter County,Valdez,http://www.ci.valdez.ak.us/
+Alaska,Sumter County,Wasilla,https://www.cityofwasilla.gov
+Alaska,Sumter County,Whittier,http://www.whittieralaska.gov
+Alaska,Sumter County,Wrangell,http://www.wrangell.com
+Arizona,Pinal County,Apache Junction,http://www.ajcity.net
+Arizona,Maricopa County,Avondale,http://www.ci.avondale.az.us/
+Arizona,Cochise County,Benson,http://www.cityofbenson.com
+Arizona,Cochise County,Bisbee,http://www.cityofbisbee.com
+Arizona,Maricopa County,Buckeye,http://www.buckeyeaz.gov
+Arizona,Mohave County,Bullhead City,http://www.bullheadcity.com
+Arizona,Yavapai County,Camp Verde,http://www.campverde.az.gov/
+Arizona,Maricopa County,Carefree,https://www.carefree.org/
+Arizona,Pinal County,Casa Grande,http://www.casagrandeaz.gov
+Arizona,Maricopa County,Cave Creek,https://www.cavecreekaz.gov
+Arizona,Maricopa County,Chandler,http://www.chandleraz.gov
+Arizona,Yavapai County,Chino Valley,http://www.chinoaz.net/
+Arizona,Yavapai County,Clarkdale,http://www.clarkdale.az.gov/
+Arizona,Greenlee County,Clifton,http://cliftonaz.com
+Arizona,Mohave County,Colorado City,http://www.tocc.us
+Arizona,Pinal County,Coolidge,https://www.coolidgeaz.com/
+Arizona,Pinal County,Cottonwood,https://cottonwoodaz.gov/
+Arizona,Yavapai County,Dewey-Humboldt,https://www.dhaz.gov/
+Arizona,Cochise County,Douglas,http://www.douglasaz.gov/
+Arizona,Greenlee County,Duncan,http://duncanaz.us
+Arizona,Apache County,Eagar,http://www.eagaraz.gov
+Arizona,Maricopa County,El Mirage,http://www.cityofelmirage.org
+Arizona,Pinal County,Eloy,https://www.eloyaz.gov
+Arizona,Coconino County,Flagstaff,http://flagstaff.az.gov/
+Arizona,Pinal County,Florence,http://www.florenceaz.gov/
+Arizona,Pinal County,Fountain Hills,http://www.fountainhillsaz.gov
+Arizona,Coconino County,Fredonia,http://www.fredoniaaz.net
+Arizona,Maricopa County,Gila Bend,http://www.gilabendaz.org
+Arizona,Maricopa County,Gilbert,http://www.gilbertaz.gov
+Arizona,Maricopa County,Glendale,http://www.glendaleaz.com
+Arizona,Gila County,Globe,http://www.globeaz.gov
+Arizona,Maricopa County,Goodyear,http://www.goodyearaz.gov
+Arizona,Maricopa County,Guadalupe,http://www.guadalupeaz.org
+Arizona,Gila County,Hayden,http://www.townofhaydenaz.gov/
+Arizona,Navajo County,Holbrook,http://www.ci.holbrook.az.us
+Arizona,Navajo County,Huachuca City,http://www.huachucacityaz.gov
+Arizona,Yavapai County,Jerome,http://www.jerome.az.gov/
+Arizona,Pinal County,Kearny,http://www.townofkearny.com/
+Arizona,Mohave County,Kingman,http://www.cityofkingman.gov
+Arizona,Mohave County,Lake Havasu City,http://www.lhcaz.gov
+Arizona,Maricopa County,Litchfield Park,http://www.litchfield-park.org
+Arizona,Pinal County,Mammoth,http://www.townofmammoth.com
+Arizona,Pima County,Marana,http://www.marana.com/
+Arizona,Pinal County,Maricopa,https://www.maricopa-az.gov/home
+Arizona,Pinal County,Mesa,http://www.mesaaz.gov
+Arizona,Gila County,Miami,http://miamiaz.gov
+Arizona,Santa Cruz County,Nogales,http://www.nogalesaz.gov
+Arizona,Pima County,Oro Valley,https://www.orovalleyaz.gov/
+Arizona,Coconino County,Page,http://www.cityofpage.org/
+Arizona,Maricopa County,Paradise Valley,http://www.ci.paradise-valley.az.us
+Arizona,La Paz County,Parker,http://www.townofparkerarizona.com/
+Arizona,Santa Cruz County,Patagonia,https://patagonia-az.gov
+Arizona,Gila County,Payson,http://www.paysonaz.gov
+Arizona,Maricopa County,Peoria,http://www.peoriaaz.gov
+Arizona,Maricopa County,Phoenix,http://www.phoenix.gov
+Arizona,Graham County,Pima,http://www.pimatown.az.gov
+Arizona,Navajo County,Pinetop-Lakeside,http://www.pinetoplakesideaz.gov/
+Arizona,Yavapai County,Prescott,http://www.prescott-az.gov
+Arizona,Yavapai County,Prescott Valley,http://www.prescottvalley-az.gov
+Arizona,La Paz County,Quartzsite,http://www.ci.quartzsite.az.us/
+Arizona,Maricopa County,Queen Creek,https://www.queencreekaz.gov
+Arizona,Graham County,Safford,http://www.cityofsafford.us/
+Arizona,Pima County,Sahuarita,http://www.sahuaritaaz.gov/
+Arizona,Yuma County,San Luis,https://www.sanluisaz.gov
+Arizona,Maricopa County,Scottsdale,http://www.scottsdaleaz.gov
+Arizona,Yavapai County,Sedona,http://www.sedonaaz.gov
+Arizona,Navajo County,Show Low,http://www.ci.show-low.az.us
+Arizona,Cochise County,Sierra Vista,http://www.SierraVistaAZ.gov
+Arizona,Navajo County,Snowflake,http://www.ci.snowflake.az.us/
+Arizona,Yuma County,Somerton,http://Somertonaz.gov
+Arizona,Pima County,South Tucson,http://www.southtucsonaz.gov/
+Arizona,Apache County,Springerville,http://www.springervilleaz.gov
+Arizona,Apache County,St. Johns,https://www.sjaz.us
+Arizona,Gila County,Star Valley,https://starvalleyaz.com/
+Arizona,Pinal County,Superior,http://www.superioraz.gov/
+Arizona,Maricopa County,Surprise,http://www.surpriseaz.gov
+Arizona,Navajo County,Taylor,http://www.tayloraz.org/
+Arizona,Navajo County,Tempe,http://www.tempe.gov
+Arizona,Graham County,Thatcher,http://thatcher.az.gov/
+Arizona,Maricopa County,Tolleson,http://www.tollesonaz.org
+Arizona,Cochise County,Tombstone,http://www.cityoftombstone.com
+Arizona,Pima County,Tucson,http://tucsonaz.gov
+Arizona,Coconino County,Tusayan,https://tusayan-az.gov/
+Arizona,Yuma County,Wellton,http://www.town.wellton.az.us/
+Arizona,Maricopa County,Wickenburg,http://www.wickenburgaz.org
+Arizona,Cochise County,Willcox,http://www.cityofwillcox.org
+Arizona,Coconino County,Williams,http://www.williamsaz.gov
+Arizona,Gila County,Winkelman,http://winkelmanaz.com/
+Arizona,Maricopa County,Youngtown,http://www.youngtownaz.org
+Arizona,Yuma County,Yuma,http://www.YumaAZ.gov/
+Arkansas,Pulaski County,Alexander,http://www.cityofalexander.com/
+Arkansas,Crawford County,Alma,http://cityofalma.org
+Arkansas,Arkansas County,Almyra,http://www.encyclopediaofarkansas.net/encyclopedia/entry-detail.aspx?entryID=6345
+Arkansas,Clark County,Amity,http://amityarkansas.us/
+Arkansas,Clark County,Arkadelphia,http://cityofarkadelphia.com
+Arkansas,Sharp County,Ash Flat,http://www.ash-flat.com/
+Arkansas,Little River County,Ashdown,http://ashdownarkansas.org
+Arkansas,Lonoke County,Austin,http://www.austin-ar.com
+Arkansas,Benton County,Avoca,http://www.avocaarkansas.info
+Arkansas,Independence County,Batesville,http://www.cityofbatesville.com/
+Arkansas,Craighead County,Bay,http://cityofbay.org/
+Arkansas,Carroll County,Beaver,http://www.beavertownarkansas.com
+Arkansas,White County,Beebe,http://www.beebeark.org
+Arkansas,Benton County,Bella Vista,http://www.bellavistaar.gov
+Arkansas,Yell County,Belleville,http://encyclopediaofarkansas.net/encyclopedia/entry-detail.aspx?entryID=6096
+Arkansas,Saline County,Benton,https://www.bentonar.org
+Arkansas,Benton County,Bentonville,http://www.bentonvillear.com
+Arkansas,Boone County,Bergman,https://townofbergman.com/
+Arkansas,Carroll County,Berryville,https://berryvillear.gov
+Arkansas,Mississippi County,Blytheville,http://www.cityofblytheville.com
+Arkansas,Craighead County,Bono,http://bonoar.com/
+Arkansas,Monroe County,Brinkley,http://cityofbrinkley.org
+Arkansas,Craighead County,Brookland,http://www.brooklandarkansas.org
+Arkansas,Saline County,Bryant,http://cityofbryant.com/
+Arkansas,Marion County,Bull Shoals,http://www.cityofbullshoals.org
+Arkansas,Lonoke County,Cabot,http://www.cabotar.gov
+Arkansas,Clark County,Caddo Valley,https://www.thecityofcaddovalley.com/
+Arkansas,Izard County,Calico Rock,http://www.calicorock.com
+Arkansas,Ouachita County,Camden,http://camden.ar.gov
+Arkansas,Pulaski County,Cammack Village,http://cammackvillage.org
+Arkansas,Craighead County,Caraway,http://www.cityofcarawayar.org
+Arkansas,Lonoke County,Carlisle,http://www.carlislear.org
+Arkansas,Barren Township,Cave City,https://www.cavecity.us/
+Arkansas,Benton County,Cave Springs,http://cavespringsar.gov/
+Arkansas,Benton County,Centerton,http://www.centertonar.us
+Arkansas,Franklin County,Charleston,http://aboutcharleston.com
+Arkansas,Sharp County,Cherokee Village,http://www.cherokeevillage.org
+Arkansas,Monroe County,Clarendon,http://www.cityofclarendonar.com
+Arkansas,Johnson County,Clarksville,https://www.clarksvillear.gov/
+Arkansas,Van Buren County,Clinton,http://www.clintonark.com/
+Arkansas,Johnson County,Coal Hill,https://www.cityofcoalhillar.municipalimpact.com/
+Arkansas,Cleburne County,Conway,http://www.cityofconway.org
+Arkansas,Clay County,Corning,http://www.corningar.gov
+Arkansas,Baxter County,Cotter,http://www.cotterweb.com
+Arkansas,Ashley County,Crossett,https://www.cityofcrossett-ar.com/
+Arkansas,Pike County,Damascus,http://www.townofdamascus.net
+Arkansas,Yell County,Dardanelle,http://www.dardanelle.com/
+Arkansas,Sevier County,De Queen,http://cityofdequeen.com
+Arkansas,Benton County,Decatur,https://decaturarkansas.com/
+Arkansas,Boone County,Diamond City,https://diamondcityar.com/
+Arkansas,Pope County,Dover,https://www.doverar.com/
+Arkansas,Desha County,Dumas,http://dumasar.net
+Arkansas,Crawford County,Dyer,https://www.cityofdyerar.com/
+Arkansas,Union County,El Dorado,http://goeldorado.com/
+Arkansas,Washington County,Elkins,http://elkins.arkansas.gov/
+Arkansas,Lonoke County,England,http://www.cityofengland.org/
+Arkansas,Chicot County,Eudora,http://cityofeudora.municipalimpact.com
+Arkansas,Carroll County,Eureka Springs,http://www.cityofeurekasprings.us
+Arkansas,Van Buren County,Fairfield Bay,http://www.cityoffairfieldbay.com
+Arkansas,Washington County,Farmington,http://www.cityoffarmingtonar.com/
+Arkansas,Washington County,Fayetteville,https://www.fayetteville-ar.gov/
+Arkansas,Marion County,Flippin,http://www.flippincity.com
+Arkansas,St. Francis County,Forrest City,http://www.cityofforrestcityar.com/
+Arkansas,Sebastian County,Fort Smith,http://www.fortsmithar.gov
+Arkansas,Miller County,Fouke,http://cityoffouke.com
+Arkansas,Benton County,Garfield,http://www.garfieldarkansas.org
+Arkansas,Baxter County,Gassville,http://www.gassville.com/
+Arkansas,Benton County,Gentry,http://www.gentryarkansas.us
+Arkansas,Arkansas County,Gillett,http://www.encyclopediaofarkansas.net/encyclopedia/entry-detail.aspx?entryID=6117
+Arkansas,Washington County,Goshen,http://www.cityofgoshen.net
+Arkansas,Mississippi County,Gosnell,http://cityofgosnell.net
+Arkansas,Benton County,Gravette,http://www.cityofgravette-ar.gov
+Arkansas,Carroll County,Green Forest,http://greenforestar.net/
+Arkansas,Faulkner County,Greenbrier,http://cityofgreenbrierar.com
+Arkansas,Washington County,Greenland,http://www.greenland-ar.com/
+Arkansas,Sebastian County,Greenwood,http://www.greenwoodar.org/
+Arkansas,Sharp County,Hardy,https://www.cityofhardy.org/
+Arkansas,Boone County,Harrison,http://www.cityofharrison.com
+Arkansas,Saline County,Haskell,https://cityofhaskell.org/
+Arkansas,Prairie County,Hazen,https://www.cityofhazen.org/home
+Arkansas,Cleburne County,Heber Springs,http://cityofhebersprings.com
+Arkansas,Pope County,Hector,https://www.hectorar.com/
+Arkansas,Phillips County,Helena-West Helena,http://www.cityofhelenawesthelena.com/
+Arkansas,Benton County,Highfill,http://www.highfillar.com/
+Arkansas,Sharp County,Highland,http://highland-arkansas.com/
+Arkansas,Faulkner County,Holland,http://hollandar.com
+Arkansas,Hempstead County,Hope,http://www.hopearkansas.net
+Arkansas,Izard County,Horseshoe Bend,https://cityofhorseshoebend.wordpress.com/
+Arkansas,Garland County,Hot Springs,http://www.cityhs.net
+Arkansas,Lonoke County,Humnoke,http://www.humnoke.com
+Arkansas,Madison County,Huntsville,http://www.huntsvillearkansas.org
+Arkansas,Lawrence County,Imboden,http://www.imbodenarkansas.com
+Arkansas,Pulaski County,Jacksonville,http://www.cityofjacksonville.net/
+Arkansas,Newton County,Jasper,https://cityofjasper.org/
+Arkansas,Washington County,Johnson,http://cityofjohnson.com/
+Arkansas,Craighead County,Jonesboro,http://jonesboro.org
+Arkansas,White County,Kensett,https://cityofkensett.com/
+Arkansas,Lonoke County,Keo,http://www.keoar.com
+Arkansas,Lee County,Lake City,http://lakecityar.com/
+Arkansas,Chicot County,Lake Village,http://www.cityoflakevillage.com/
+Arkansas,Baxter County,Lakeview,http://cityoflakeview.com/
+Arkansas,Sebastian County,Lavaca,http://cityoflavaca.com/
+Arkansas,Washington County,Lincoln,#cite_note-PopEstCBSA-4
+Arkansas,Benton County,Little Flock,http://cityoflittleflock.com/
+Arkansas,Pulaski County,Little Rock,http://www.littlerock.gov
+Arkansas,Lonoke County,Lonoke,http://cityoflonoke.com/
+Arkansas,Benton County,Lowell,http://www.lowellarkansas.gov
+Arkansas,Columbia County,Magnolia,http://www.magnolia-ar.com
+Arkansas,Hot Spring County,Malvern,http://malvernar.gov
+Arkansas,Sebastian County,Mansfield,http://mansfieldar.org/
+Arkansas,Crittenden County,Marion,http://www.marionar.org
+Arkansas,Greene County,Marmaduke,http://www.marmadukear.com
+Arkansas,Searcy County,Marshall,https://marshallar.net/
+Arkansas,Pulaski County,Maumelle,https://www.maumelle.org/
+Arkansas,Faulkner County,Mayflower,http://cityofmayflower.com/
+Arkansas,Woodruff County,McCrory,http://cityofmccrory.com
+Arkansas,Desha County,McGehee,http://cityofmcgehee.com
+Arkansas,Izard County,Melbourne,http://www.melbournear.com
+Arkansas,Polk County,Mena,http://cityofmena.org/
+Arkansas,Drew County,Monticello,http://monticelloarkansas.us/
+Arkansas,Ashley County,Montrose,http://www.cityofmontrose.net/
+Arkansas,Conway County,Morrilton,http://www.cityofmorrilton.com
+Arkansas,Baxter County,Mountain Home,http://cityofmountainhome.com
+Arkansas,Stone County,Mountain View,https://www.cityofmtnview.org/
+Arkansas,Crawford County,Mulberry,http://cityofmulberry.org
+Arkansas,Pike County,Murfreesboro,http://www.mboroarkansas.com/
+Arkansas,Howard County,Nashville,http://www.nashar.org
+Arkansas,Independence County,Newark,http://www.newarkarkansas.com
+Arkansas,Jackson County,Newport,http://www.newportarcity.org
+Arkansas,Baxter County,Norfork,https://cityofnorfork.org
+Arkansas,Union County,Norphlet,http://www.cityofnorphlet.com/
+Arkansas,Pulaski County,North Little Rock,http://www.northlittlerock.ar.gov/
+Arkansas,Carroll County,Oak Grove,http://oakgrovear.com/
+Arkansas,Greene County,Oak Grove Heights,http://www.cityofoakgroveheightsar.com/
+Arkansas,Boone County,Omaha,http://omahaarkansas.com/
+Arkansas,Conway County,Oppelo,http://cityofoppelo.com
+Arkansas,Mississippi County,Osceola,http://osceolaarkansas.com
+Arkansas,Franklin County,Ozark,http://www.cityofozarkar.com
+Arkansas,Greene County,Paragould,http://www.cityofparagould.com/
+Arkansas,Logan County,Paris,http://www.paris-ar.us/
+Arkansas,Benton County,Pea Ridge,http://cityofpearidge.com
+Arkansas,Clay County,Piggott,http://www.cityofpiggott.org/
+Arkansas,Jefferson County,Pine Bluff,http://www.cityofpinebluff.com/
+Arkansas,Randolph County,Pocahontas,http://cityofpocahontas.com/
+Arkansas,Pope County,Pottsville,https://cityofpottsville.com/
+Arkansas,Washington County,Prairie Grove,http://www.prairiegrovearkansas.org/
+Arkansas,Nevada County,Prescott,http://www.prescottar.com/
+Arkansas,Marion County,Pyatt,http://www.pyatt.net
+Arkansas,Clay County,Rector,http://www.rectorarkansas.com/
+Arkansas,Jefferson County,Redfield,http://redfieldar.com/
+Arkansas,Hot Spring County,Rockport,https://rockportar.org
+Arkansas,Benton County,Rogers,http://www.rogersar.gov
+Arkansas,Pope County,Russellville,http://russellvillearkansas.org/
+Arkansas,White County,Searcy,https://www.cityofsearcy.org/
+Arkansas,Saline County,Shannon Hills,https://www.shannonhills.ar.gov/
+Arkansas,Grant County,Sheridan,http://www.sheridanark.com
+Arkansas,Pulaski County,Sherwood,https://www.cityofsherwood.net/
+Arkansas,Van Buren County,Shirley,http://www.shirleyarkansas.org/
+Arkansas,Benton County,Siloam Springs,https://www.siloamsprings.com/
+Arkansas,Union County,Smackover,https://smackover.org/
+Arkansas,Washington County,Springdale,http://www.springdalear.gov/
+Arkansas,Arkansas County,Stuttgart,http://cityofstuttgartar.com/
+Arkansas,Miller County,Texarkana,http://cityoftexarkanaar.com
+Arkansas,Washington County,Tontitown,http://www.tontitown.com/
+Arkansas,Poinsett County,Trumann,https://cityoftrumann.org/
+Arkansas,Jackson County,Tuckerman,http://www.tuckermanar.net
+Arkansas,Crawford County,Van Buren,http://vanburencity.org
+Arkansas,Faulkner County,Vilonia,http://www.cityofvilonia.net
+Arkansas,Lawrence County,Walnut Ridge,http://www.cityofwalnutridge.com
+Arkansas,Lonoke County,Ward,https://www.wardarkansas.org/
+Arkansas,Bradley County,Warren,https://cityofwarren.us/
+Arkansas,Poinsett County,Weiner,http://www.cityofweiner.com/
+Arkansas,Washington County,West Fork,http://www.westforkar.com/
+Arkansas,Crittenden County,West Memphis,http://www.westmemphisar.gov/
+Arkansas,Washington Township,White Hall,http://whitehallar.org
+Arkansas,Washington County,Winslow,http://www.winslowar.com
+Arkansas,Faulkner County,Wooster,http://woosterar.com
+Arkansas,Pulaski County,Wrightsville,http://cityofwrightsville-ar.org/
+Arkansas,Cross County,Wynne,http://www.cityofwynne.com
+Arkansas,Marion County,Yellville,http://www.yellvilleweb.com
+California,San Bernardino County,Adelanto,http://www.ci.adelanto.ca.us
+California,Los Angeles County,Agoura Hills,https://www.agourahillscity.org
+California,Alameda County,Alameda,http://alamedaca.gov
+California,Alameda County,Albany,http://www.albanyca.org
+California,Los Angeles County,Alhambra,http://www.cityofalhambra.org
+California,Orange County,Aliso Viejo,http://avcity.org
+California,Modoc County,Alturas,http://www.cityofalturas.us
+California,Amador County,Amador City,http://www.amador-city.com
+California,Napa County,American Canyon,http://www.cityofamericancanyon.org
+California,Orange County,Anaheim,http://www.anaheim.net
+California,Shasta County,Anderson,http://ci.anderson.ca.us/
+California,Calaveras County,Angels Camp,http://angelscamp.gov
+California,Contra Costa County,Antioch,http://www.ci.antioch.ca.us
+California,San Bernardino County,Apple Valley,http://www.applevalley.org
+California,Los Angeles County,Arcadia,http://www.ArcadiaCA.gov
+California,Humboldt County,Arcata,http://www.cityofarcata.org
+California,San Luis Obispo County,Arroyo Grande,http://www.arroyogrande.org
+California,Los Angeles County,Artesia,http://www.cityofartesia.us
+California,Kern County,Arvin,http://www.arvin.org
+California,San Luis Obispo County,Atascadero,http://www.atascadero.org
+California,San Mateo County,Atherton,http://www.ci.atherton.ca.us
+California,Merced County,Atwater,http://www.atwater.org
+California,Placer County,Auburn,http://auburn.ca.gov
+California,Los Angeles County,Avalon,http://cityofavalon.com/
+California,Los Angeles County,Avenal,https://www.cityofavenal.com/
+California,Los Angeles County,Azusa,http://www.ci.azusa.ca.us
+California,Kern County,Bakersfield,http://www.bakersfieldcity.us/
+California,Los Angeles County,Baldwin Park,http://www.baldwinpark.com
+California,Los Angeles County,Banning,http://www.banning.ca.us
+California,San Bernardino County,Barstow,http://www.barstowca.org/
+California,San Bernardino County,Beaumont,http://beaumontca.gov
+California,Los Angeles County,Bell,http://www.cityofbell.org
+California,Los Angeles County,Bell Gardens,http://www.bellgardens.org
+California,Los Angeles County,Bellflower,http://www.bellflower.org
+California,San Mateo County,Belmont,http://www.belmont.gov
+California,Marin County,Belvedere,http://www.cityofbelvedere.org
+California,Solano County,Benicia,http://www.ci.benicia.ca.us
+California,Alameda County,Berkeley,https://berkeleyca.gov/
+California,Los Angeles County,Beverly Hills,http://www.beverlyhills.org
+California,San Bernardino County,Big Bear Lake,http://citybigbearlake.com
+California,Butte County,Biggs,http://www.biggs-ca.gov
+California,Bishop Creek (Inyo County),Bishop,http://www.cityofbishop.com/
+California,Humboldt County,Blue Lake,http://bluelake.ca.gov
+California,Humboldt County,Blythe,http://www.cityofblythe.ca.gov
+California,Los Angeles County,Bradbury,http://www.cityofbradbury.org
+California,Imperial County,Brawley,http://www.brawley-ca.gov
+California,Orange County,Brea,http://www.cityofbrea.net
+California,Contra Costa County,Brentwood,http://www.brentwoodca.gov
+California,San Mateo County,Brisbane,https://www.brisbaneca.org/
+California,Santa Barbara County,Buellton,http://www.cityofbuellton.com
+California,Orange County,Buena Park,http://www.buenapark.com
+California,List of cities in Los Angeles County,Burbank,http://www.burbankca.gov
+California,List of cities in Los Angeles County,Burlingame,https://www.burlingame.org/
+California,Los Angeles County,Calabasas,http://www.cityofcalabasas.com
+California,Imperial County,Calexico,http://www.calexico.ca.gov
+California,Kern County,California City,http://www.californiacity-ca.gov
+California,Kern County,Calimesa,http://www.cityofcalimesa.net
+California,Imperial County,Calipatria,http://www.calipatria.com
+California,Napa County,Calistoga,http://www.ci.calistoga.ca.us
+California,Ventura County,Camarillo,http://www.cityofcamarillo.org
+California,Santa Clara County,Campbell,http://www.ci.campbell.ca.us
+California,Santa Clara County,Canyon Lake,http://www.cityofcanyonlake.org/
+California,Santa Cruz County,Capitola,http://www.cityofcapitola.org
+California,San Diego County,Carlsbad,http://www.carlsbadca.gov
+California,Monterey County,Carmel-by-the-Sea,http://ci.carmel.ca.us
+California,Santa Barbara County,Carpinteria,http://www.carpinteria.ca.us
+California,Los Angeles County,Carson,http://ci.carson.ca.us
+California,Riverside County,Cathedral City,http://www.cathedralcity.gov
+California,File:Seal of Stanislaus County,Ceres,http://www.ci.ceres.ca.us
+California,Los Angeles County,Cerritos,http://www.cerritos.us
+California,Butte County,Chico,http://www.chico.ca.us
+California,San Bernardino County,Chino,http://www.cityofchino.org
+California,San Bernardino County,Chino Hills,http://www.chinohills.org
+California,San Bernardino County,Chowchilla,http://www.cityofchowchilla.org
+California,San Diego County,Chula Vista,http://www.chulavistaca.gov
+California,Sacramento County,Citrus Heights,http://www.citrusheights.net
+California,Los Angeles County,City of Industry,http://www.cityofindustry.org
+California,Los Angeles County,Claremont,http://www.ci.claremont.ca.us
+California,Contra Costa County,Clayton,http://www.ci.clayton.ca.us/
+California,Lake County,Clearlake,http://www.clearlake.ca.us
+California,Sonoma County,Cloverdale,http://www.cloverdale.net
+California,Fresno County,Clovis,http://cityofclovis.com
+California,Riverside County,Coachella,http://www.coachella.org
+California,Fresno County,Coalinga,http://www.coalinga.com
+California,Placer County,Colfax,http://www.colfax-ca.gov
+California,San Mateo County,Colma,http://www.colma.ca.gov
+California,San Mateo County,Colton,http://www.ci.colton.ca.us
+California,Colusa County,Colusa,http://www.cityofcolusa.com
+California,Los Angeles County,Commerce,http://www.ci.commerce.ca.us
+California,Los Angeles County,Compton,http://www.comptoncity.org
+California,Contra Costa County,Concord,http://www.ci.concord.ca.us
+California,Contra Costa County,Corcoran,http://www.cityofcorcoran.com
+California,Tehama County,Corning,http://corning.org
+California,Riverside County,Corona,https://www.coronaca.gov/
+California,San Diego County,Coronado,http://www.coronado.ca.us
+California,Marin County,Corte Madera,http://www.townofcortemadera.org
+California,Orange County,Costa Mesa,http://www.costamesaca.gov
+California,Sonoma County,Cotati,http://ci.cotati.ca.us
+California,Los Angeles County,Covina,http://www.covinaca.gov/
+California,Del Norte County,Crescent City,http://www.crescentcity.org
+California,Los Angeles County,Cudahy,http://www.cityofcudahy.com
+California,Los Angeles County,Culver City,http://www.culvercity.org
+California,Santa Clara County,Cupertino,http://www.cupertino.org
+California,Orange County,Cypress,http://www.cypressca.org
+California,San Mateo County,Daly City,http://www.dalycity.org
+California,Orange County,Dana Point,http://www.danapoint.org
+California,Contra Costa County,Danville,http://www.danville.ca.gov
+California,Yolo County,Davis,http://cityofdavis.org
+California,San Diego County,Del Mar,http://www.delmar.ca.us
+California,Monterey County,Del Rey Oaks,http://www.delreyoaks.org
+California,Kern County,Delano,http://www.cityofdelano.org/
+California,Kern County,Desert Hot Springs,http://www.cityofdhs.org
+California,Los Angeles County,Diamond Bar,https://www.diamondbarca.gov/
+California,Tulare County,Dinuba,http://www.dinuba.org
+California,Solano County,Dixon,http://www.cityofdixon.us
+California,Solano County,Dorris,http://www.dorrisca.us/
+California,Merced County,Dos Palos,http://dospaloscity.wixsite.com/dospalos
+California,List of cities in Los Angeles County,Downey,http://www.downeyca.org
+California,Los Angeles County,Duarte,http://www.accessduarte.com
+California,Alameda County,Dublin,https://dublin.ca.gov/
+California,Alameda County,Dunsmuir,http://ci.dunsmuir.ca.us
+California,San Mateo County,East Palo Alto,http://www.cityofepa.org
+California,San Mateo County,Eastvale,http://www.eastvaleca.gov
+California,San Diego County,El Cajon,http://www.ci.el-cajon.ca.us
+California,San Diego County,El Centro,http://www.cityofelcentro.org
+California,Contra Costa County,El Cerrito,http://www.el-cerrito.org
+California,List of cities in Los Angeles County,El Monte,http://elmonteca.gov
+California,Los Angeles County,El Segundo,http://www.elsegundo.org
+California,Sacramento County,Elk Grove,http://elkgrovecity.org
+California,Alameda County,Emeryville,http://www.emeryville.org
+California,San Diego County,Encinitas,http://www.encinitasca.gov
+California,San Joaquin County,Escalon,http://www.cityofescalon.org
+California,San Diego County,Escondido,http://www.escondido.org
+California,San Diego County,Etna,http://www.cityofetna.org
+California,Humboldt County,Eureka,http://www.ci.eureka.ca.gov
+California,Tulare County,Exeter,http://www.cityofexeter.com
+California,Marin County,Fairfax,https://www.townoffairfax.org/
+California,Solano County,Fairfield,http://www.fairfield.ca.gov
+California,Tulare County,Farmersville,https://www.cityoffarmersville-ca.gov
+California,Humboldt County,Ferndale,http://ci.ferndale.ca.us
+California,Ventura County,Fillmore,http://www.fillmoreca.com
+California,Fresno County,Firebaugh,http://www.firebaugh.org
+California,Sacramento County,Folsom,https://www.folsom.ca.us/
+California,San Bernardino County,Fontana,http://fontana.org
+California,Mendocino County,Fort Bragg,http://city.fortbragg.com
+California,Mendocino County,Fort Jones,https://fortjonesca.org/
+California,Humboldt County,Fortuna,http://friendlyfortuna.com
+California,San Mateo County,Foster City,http://www.fostercity.org
+California,Orange County,Fountain Valley,http://www.fountainvalley.org
+California,Fresno County,Fowler,http://www.fowlercity.org
+California,Alameda County,Fremont,http://www.fremont.gov
+California,Fresno County,Fresno,http://www.fresno.gov
+California,Orange County,Fullerton,http://www.cityoffullerton.com
+California,Orange County,Galt,http://www.ci.galt.ca.us
+California,Orange County,Garden Grove,https://ggcity.org
+California,Los Angeles County,Gardena,http://www.cityofgardena.org
+California,Santa Clara County,Gilroy,http://www.ci.gilroy.ca.us
+California,List of cities in Los Angeles County,Glendale,http://glendaleca.gov
+California,Los Angeles County,Glendora,http://www.ci.glendora.ca.us
+California,Santa Barbara County,Goleta,https://www.cityofgoleta.org
+California,Monterey County,Gonzales,https://www.gonzalesca.gov
+California,Monterey County,Grand Terrace,http://www.grandterrace-ca.gov
+California,Nevada County,Grass Valley,http://www.cityofgrassvalley.com/home
+California,Monterey County,Greenfield,http://ci.greenfield.ca.us
+California,Butte County,Gridley,http://www.gridley.ca.us
+California,San Luis Obispo County,Grover Beach,http://www.grover.org
+California,Santa Barbara County,Guadalupe,http://ci.guadalupe.ca.us
+California,Merced County,Gustine,http://www.cityofgustine.com
+California,San Mateo County,Half Moon Bay,http://www.half-moon-bay.ca.us
+California,Kings County,Hanford,https://www.cityofhanfordca.com/
+California,Los Angeles County,Hawaiian Gardens,http://hgcity.org
+California,Los Angeles County,Hawthorne,http://www.cityofhawthorne.org
+California,Alameda County,Hayward,http://www.hayward-ca.gov
+California,Sonoma County,Healdsburg,http://cityofhealdsburg.net
+California,Sonoma County,Hemet,http://www.hemetca.gov
+California,Contra Costa County,Hercules,http://www.ci.hercules.ca.us
+California,Los Angeles County,Hermosa Beach,https://www.hermosabeach.gov/
+California,Los Angeles County,Hesperia,http://www.cityofhesperia.us
+California,Los Angeles County,Hidden Hills,http://hiddenhillscity.org
+California,San Bernardino County,Highland,http://www.cityofhighland.org
+California,San Mateo County,Hillsborough,http://www.hillsborough.net
+California,San Benito County,Hollister,http://www.hollister.ca.gov
+California,Imperial County,Holtville,http://www.holtville.ca.gov
+California,Stanislaus County,Hughson,http://www.hughson.org
+California,Orange County,Huntington Beach,http://huntingtonbeachca.gov
+California,Los Angeles County,Huntington Park,http://www.huntingtonpark.org
+California,Fresno County,Huron,http://cityofhuron.com/
+California,Imperial County,Imperial,http://www.cityofimperial.org
+California,San Diego County,Imperial Beach,http://www.ImperialBeachCA.gov
+California,Riverside County,Indian Wells,http://cityofindianwells.org
+California,Riverside County,Indio,http://indio.org
+California,List of cities in Los Angeles County,Inglewood,http://www.cityofinglewood.org
+California,Amador County,Ione,http://ione-ca.com
+California,Orange County,Irvine,http://cityofirvine.org
+California,Los Angeles County,Irwindale,http://www.irwindaleca.gov
+California,Los Angeles County,Isleton,http://www.cityofisleton.com/
+California,Amador County,Jackson,https://ci.jackson.ca.us/
+California,Riverside County,Jurupa Valley,http://jurupavalley.org
+California,Fresno County,Kerman,http://www.cityofkerman.net
+California,Monterey County,King City,http://www.kingcity.com
+California,Fresno County,Kingsburg,http://www.cityofkingsburg-ca.gov
+California,Los Angeles County,La Cañada Flintridge,https://cityoflcf.org
+California,Orange County,La Habra,http://www.lahabraca.gov/
+California,Los Angeles County,La Habra Heights,http://www.lhhcity.org
+California,San Diego County,La Mesa,http://cityoflamesa.us
+California,Los Angeles County,La Mirada,http://www.cityoflamirada.org
+California,Orange County,La Palma,http://www.cityoflapalma.org
+California,Orange County,La Puente,http://www.lapuente.org
+California,Riverside County,La Quinta,http://www.laquintaca.gov
+California,Los Angeles County,La Verne,http://cityoflaverne.org
+California,Contra Costa County,Lafayette,https://www.lovelafayette.org/
+California,Orange County,Laguna Beach,http://www.lagunabeachcity.net
+California,Orange County,Laguna Hills,http://www.ci.laguna-hills.ca.us
+California,Orange County,Laguna Niguel,http://cityoflagunaniguel.org
+California,Orange County,Laguna Woods,https://www.cityoflagunawoods.org/
+California,Orange County,Lake Elsinore,http://www.lake-elsinore.org
+California,Orange County,Lake Forest,http://www.lakeforestca.gov
+California,Lake County,Lakeport,http://cityoflakeport.com
+California,Los Angeles County,Lakewood,http://www.lakewoodcity.org
+California,Los Angeles County,Lancaster,http://www.cityoflancasterca.org
+California,Marin County,Larkspur,http://www.ci.larkspur.ca.us
+California,San Joaquin County,Lathrop,http://www.ci.lathrop.ca.us
+California,Los Angeles County,Lawndale,http://www.lawndalecity.org
+California,San Diego County,Lemon Grove,http://www.lemongrove.ca.gov
+California,San Diego County,Lemoore,http://www.lemoore.com
+California,Placer County,Lincoln,http://www.ci.lincoln.ca.us
+California,Tulare County,Lindsay,http://www.lindsay.ca.us
+California,Sutter County,Live Oak,http://www.liveoakcity.org
+California,Alameda County,Livermore,http://www.cityoflivermore.net
+California,Merced County,Livingston,http://www.livingstoncity.com
+California,San Joaquin County,Lodi,http://www.lodi.gov
+California,San Bernardino County,Loma Linda,http://www.lomalinda-ca.gov
+California,Los Angeles County,Lomita,http://www.lomita.com/cityhall
+California,Santa Barbara County,Lompoc,http://www.cityoflompoc.com
+California,Los Angeles County,Long Beach,http://www.longbeach.gov
+California,Los Angeles County,Loomis,http://www.loomis.ca.gov/
+California,Orange County,Los Alamitos,http://www.cityoflosalamitos.org
+California,Santa Clara County,Los Altos,http://www.losaltosca.gov
+California,Santa Clara County,Los Altos Hills,http://www.losaltoshills.ca.gov/
+California,Merced County,Los Banos,http://www.losbanos.org
+California,Santa Clara County,Los Gatos,http://www.losgatosca.gov
+California,Sierra County,Loyalton,http://www.cityofloyalton.org/
+California,Los Angeles County,Lynwood,http://www.lynwood.ca.us
+California,Madera County,Madera,http://www.madera.gov
+California,Madera County,Malibu,http://www.malibucity.org/
+California,Mono County,Mammoth Lakes,http://www.ci.mammoth-lakes.ca.us
+California,Los Angeles County,Manhattan Beach,http://www.citymb.info
+California,San Joaquin County,Manteca,http://www.ci.manteca.ca.us
+California,Kern County,Maricopa,http://www.cityofmaricopa.org
+California,Monterey County,Marina,http://cityofmarina.org
+California,Contra Costa County,Martinez,http://www.cityofmartinez.org
+California,Yuba County,Marysville,http://www.marysville.ca.us
+California,Los Angeles County,Maywood,http://www.cityofmaywood.com
+California,Kern County,McFarland,http://www.mcfarlandcity.org
+California,Fresno County,Mendota,http://ci.mendota.ca.us/
+California,Riverside County,Menifee,http://www.cityofmenifee.us
+California,Menlo,Menlo Park,http://menlopark.gov
+California,Merced County,Merced,http://www.cityofmerced.org/
+California,Marin County,Mill Valley,http://www.cityofmillvalley.org
+California,San Mateo County,Millbrae,http://www.ci.millbrae.ca.us
+California,Santa Clara County,Milpitas,https://www.milpitas.gov
+California,Orange County,Mission Viejo,http://cityofmissionviejo.org
+California,Stanislaus County,Modesto,http://www.modestogov.com
+California,Los Angeles County,Monrovia,http://www.cityofmonrovia.org
+California,Los Angeles County,Montague,https://cityofmontagueca.com
+California,San Bernardino County,Montclair,http://www.cityofmontclair.org
+California,Santa Clara County,Monte Sereno,http://www.montesereno.org/
+California,Los Angeles County,Montebello,https://www.cityofmontebello.com/
+California,Monterey County,Monterey,http://www.monterey.org
+California,Los Angeles County,Monterey Park,https://www.montereypark.ca.gov
+California,Ventura County,Moorpark,http://www.moorparkca.gov
+California,Contra Costa County,Moraga,http://www.moraga.ca.us
+California,Riverside County,Moreno Valley,http://www.moval.org/index.shtml
+California,Santa Clara County,Morgan Hill,http://Morgan-Hill.ca.gov
+California,San Luis Obispo County,Morro Bay,http://www.morro-bay.ca.us
+California,San Luis Obispo County,Mount Shasta,http://mtshastaca.gov
+California,Santa Clara County,Mountain View,http://www.mountainview.gov
+California,Riverside County,Murrieta,https://www.murrietaca.gov
+California,Napa County,Napa,http://www.cityofnapa.org
+California,San Diego County,National City,http://www.nationalcityca.gov
+California,San Bernardino County,Needles,http://www.cityofneedles.com
+California,Nevada County,Nevada City,http://www.nevadacityca.gov
+California,Alameda County,Newark,http://www.ci.newark.ca.us
+California,Stanislaus County,Newman,http://www.cityofnewman.com
+California,Orange County,Newport Beach,http://www.newportbeachca.gov
+California,Riverside County,Norco,http://www.ci.norco.ca.us
+California,List of cities in Los Angeles County,Norwalk,http://www.norwalk.org
+California,Marin County,Novato,http://novato.org
+California,Stanislaus County,Oakdale,http://www.oakdalegov.com
+California,Alameda County,Oakland,https://www.oaklandca.gov
+California,Contra Costa County,Oakley,https://www.ci.oakley.ca.us/
+California,San Diego County,Oceanside,http://www.ci.oceanside.ca.us
+California,Ventura County,Ojai,http://ojaicity.org
+California,San Bernardino County,Ontario,http://www.ontarioca.gov/
+California,Orange County,Orange,http://www.cityoforange.org
+California,Fresno County,Orange Cove,http://www.cityoforangecove.com
+California,Contra Costa County,Orinda,http://www.cityoforinda.org
+California,Glenn County,Orland,http://www.cityoforland.com/
+California,Butte County,Oroville,http://cityoforoville.org
+California,Ventura County,Oxnard,https://www.oxnard.org
+California,Monterey County,Pacific Grove,http://www.cityofpacificgrove.org
+California,San Mateo County,Pacifica,http://www.cityofpacifica.org
+California,Riverside County,Palm Desert,http://www.cityofpalmdesert.org
+California,Riverside County,Palm Springs,http://palmspringsca.gov
+California,List of cities in Los Angeles County,Palmdale,https://www.cityofpalmdaleca.gov
+California,Santa Clara County,Palo Alto,https://www.cityofpaloalto.org
+California,Los Angeles County,Palos Verdes Estates,http://www.pvestates.org
+California,Butte County,Paradise,http://townofparadise.com
+California,Los Angeles County,Paramount,http://www.paramountcity.com
+California,Fresno County,Parlier,http://www.parlier.ca.us
+California,List of cities in Los Angeles County,Pasadena,http://www.cityofpasadena.net
+California,San Luis Obispo County,Paso Robles,http://prcity.com
+California,List of cities in Stanislaus County (by population),Patterson,http://www.ci.patterson.ca.us
+California,List of cities in Stanislaus County (by population),Perris,http://www.cityofperris.org
+California,Sonoma County,Petaluma,http://cityofpetaluma.net
+California,Los Angeles County,Pico Rivera,https://www.pico-rivera.org
+California,Alameda County,Piedmont,http://www.ci.piedmont.ca.us
+California,Contra Costa County,Pinole,http://www.ci.pinole.ca.us
+California,San Luis Obispo County,Pismo Beach,http://pismobeach.org
+California,Contra Costa County,Pittsburg,http://www.ci.pittsburg.ca.us
+California,Orange County,Placentia,http://www.placentia.org
+California,Orange County,Placerville,http://www.cityofplacerville.org
+California,Contra Costa County,Pleasant Hill,http://www.ci.pleasant-hill.ca.us
+California,Alameda County,Pleasanton,http://www.cityofpleasantonca.gov
+California,Amador County,Plymouth,http://www.cityofplymouth.org/
+California,Mendocino County,Point Arena,http://pointarena.ca.gov
+California,List of cities in Los Angeles County,Pomona,http://www.ci.pomona.ca.us
+California,Ventura County,Port Hueneme,http://www.cityofporthueneme.org
+California,Tulare County,Porterville,http://www.ci.porterville.ca.us
+California,Plumas County,Portola,http://www.ci.portola.ca.us
+California,San Mateo County,Portola Valley,http://www.portolavalley.net
+California,San Diego County,Poway,http://www.ci.poway.ca.us
+California,San Diego County,Rancho Cordova,http://www.cityofranchocordova.org
+California,San Bernardino County,Rancho Cucamonga,http://www.cityofrc.us
+California,Riverside County,Rancho Mirage,http://www.ranchomirageca.gov
+California,Los Angeles County,Rancho Palos Verdes,http://rpvca.gov
+California,Orange County,Rancho Santa Margarita,http://www.cityofrsm.org
+California,Tehama County,Red Bluff,http://www.cityofredbluff.org
+California,Shasta County,Redding,https://www.cityofredding.org
+California,San Bernardino County,Redlands,http://www.cityofredlands.org
+California,Los Angeles County,Redondo Beach,http://redondo.org
+California,San Mateo County,Redwood City,http://www.redwoodcity.org/
+California,Fresno County,Reedley,http://www.reedley.ca.gov
+California,San Bernardino County,Rialto,http://www.yourrialto.com/
+California,Contra Costa County,Richmond,http://www.ci.richmond.ca.us
+California,Kern County,Ridgecrest,https://www.ridgecrest-ca.gov/
+California,Humboldt County,Rio Dell,http://cityofriodell.ca.gov/
+California,Solano County,Rio Vista,http://www.riovistacity.com
+California,San Joaquin County,Ripon,http://www.cityofripon.org/
+California,Stanislaus County,Riverbank,http://www.riverbank.org
+California,Riverside County,Riverside,http://riversideca.gov
+California,Riverside County,Rocklin,http://www.rocklin.ca.us
+California,Sonoma County,Rohnert Park,https://www.rpcity.org
+California,Los Angeles County,Rolling Hills,http://www.rolling-hills.org
+California,Los Angeles County,Rolling Hills Estates,http://www.ci.rolling-hills-estates.ca.us
+California,Los Angeles County,Rosemead,http://www.cityofrosemead.org
+California,Placer County,Roseville,http://www.roseville.ca.us
+California,Marin County,Ross,http://www.townofross.org
+California,Sacramento County,Sacramento,http://cityofsacramento.org
+California,Monterey County,Salinas,http://www.cityofsalinas.org
+California,Marin County,San Anselmo,http://townofsananselmo.org
+California,San Bernardino County,San Bernardino,http://sbcity.org
+California,San Mateo County,San Bruno,http://sanbruno.ca.gov
+California,San Mateo County,San Carlos,http://www.cityofsancarlos.org
+California,Orange County,San Clemente,https://www.san-clemente.org
+California,Los Angeles County,San Dimas,http://www.sandimasca.gov
+California,Los Angeles County,San Fernando,http://www.ci.san-fernando.ca.us
+California,Los Angeles County,San Gabriel,http://www.sangabrielcity.com
+California,Los Angeles County,San Jacinto,https://www.sanjacintoca.gov/
+California,Fresno County,San Joaquin,http://www.cityofsanjoaquin.org
+California,Santa Clara County,San Jose,https://www.sanjoseca.gov
+California,San Benito County,San Juan Bautista,http://www.san-juan-bautista.ca.us
+California,Orange County,San Juan Capistrano,http://www.sanjuancapistrano.org
+California,Alameda County,San Leandro,http://www.sanleandro.org
+California,San Luis Obispo County,San Luis Obispo,http://slocity.org
+California,San Diego County,San Marcos,http://www.san-marcos.net
+California,Los Angeles County,San Marino,http://ci.san-marino.ca.us
+California,San Mateo County,San Mateo,http://www.cityofsanmateo.org
+California,Contra Costa County,San Pablo,https://www.sanpabloca.gov/
+California,Marin County,San Rafael,http://www.cityofsanrafael.org
+California,Contra Costa County,San Ramon,http://www.ci.san-ramon.ca.us
+California,Monterey County,Sand City,http://www.sandcity.org
+California,Fresno County,Sanger,http://www.ci.sanger.ca.us
+California,Orange County,Santa Ana,http://www.santa-ana.org
+California,Santa Barbara County,Santa Barbara,https://www.santabarbaraca.gov
+California,Santa Clara County,Santa Clara,http://SantaClaraCA.gov
+California,List of cities in Los Angeles County,Santa Clarita,http://santa-clarita.com
+California,Santa Cruz County,Santa Cruz,http://www.cityofsantacruz.com
+California,Los Angeles County,Santa Fe Springs,http://www.santafesprings.org
+California,Los Angeles County,Santa Maria,https://www.cityofsantamaria.org/
+California,Los Angeles County,Santa Monica,http://santamonica.gov
+California,Ventura County,Santa Paula,https://spcity.org/
+California,Sonoma County,Santa Rosa,https://www.srcity.org
+California,San Diego County,Santee,http://www.cityofsanteeca.gov
+California,Santa Clara County,Saratoga,http://www.saratoga.ca.us
+California,Marin County,Sausalito,http://www.ci.sausalito.ca.us
+California,Santa Cruz County,Scotts Valley,http://www.scottsvalley.org/
+California,Orange County,Seal Beach,http://www.sealbeachca.gov/
+California,Monterey County,Seaside,http://www.ci.seaside.ca.us
+California,Sonoma County,Sebastopol,http://www.ci.sebastopol.ca.us
+California,Fresno County,Selma,http://www.cityofselma.com
+California,Kern County,Shafter,http://www.shafter.com
+California,Shasta County,Shasta Lake,https://www.cityofshastalake.org/
+California,Los Angeles County,Sierra Madre,http://www.cityofsierramadre.com
+California,Los Angeles County,Signal Hill,http://www.cityofsignalhill.org
+California,Ventura County,Simi Valley,https://www.simivalley.org/
+California,Ventura County,Solana Beach,http://www.ci.solana-beach.ca.us
+California,Monterey County,Soledad,http://cityofsoledad.com
+California,Santa Barbara County,Solvang,http://www.cityofsolvang.com
+California,Sonoma County,Sonoma,http://www.sonomacity.org
+California,Tuolumne County,Sonora,http://www.sonoraca.com
+California,Los Angeles County,South El Monte,http://www.ci.south-el-monte.ca.us
+California,Los Angeles County,South Gate,http://www.cityofsouthgate.org
+California,El Dorado County,South Lake Tahoe,http://www.cityofslt.us
+California,Los Angeles County,South Pasadena,http://www.southpasadenaca.gov
+California,San Mateo County,South San Francisco,http://www.ssf.net
+California,Napa County,St. Helena,http://www.ci.st-helena.ca.us
+California,San Mateo County,Stanton,https://www.stantonca.gov/
+California,San Joaquin County,Stockton,http://www.stocktongov.com
+California,Solano County,Suisun City,http://www.suisun.com
+California,Santa Clara County,Sunnyvale,http://sunnyvale.ca.gov
+California,Lassen County,Susanville,http://cityofsusanville.org
+California,Amador County,Sutter Creek,http://www.cityofsuttercreek.org
+California,Kern County,Taft,http://www.cityoftaft.org
+California,Kern County,Tehachapi,http://www.liveuptehachapi.com
+California,Tehama County,Tehama,http://cityoftehama.us
+California,Riverside County,Temecula,http://temeculaca.gov
+California,Los Angeles County,Temple City,http://www.ci.temple-city.ca.us
+California,Ventura County,Thousand Oaks,http://www.toaks.org
+California,Marin County,Tiburon,http://townoftiburon.org
+California,List of cities in Los Angeles County,Torrance,http://www.torranceca.gov
+California,San Joaquin County,Tracy,http://cityoftracy.org
+California,Humboldt County,Trinidad,https://trinidad.ca.gov
+California,Nevada County,Truckee,http://www.townoftruckee.com
+California,Tulare County,Tulare,https://www.tulare.ca.gov/
+California,Tulare County,Tulelake,http://www.cityoftulelake.com/
+California,Stanislaus County,Turlock,http://www.cityofturlock.org
+California,Orange County,Tustin,http://www.tustinca.org
+California,San Bernardino County,Twentynine Palms,http://www.ci.twentynine-palms.ca.us
+California,Mendocino County,Ukiah,http://www.cityofukiah.com
+California,File:Flag of Alameda County,Union City,https://www.unioncity.org/
+California,San Bernardino County,Upland,https://www.uplandca.gov/
+California,Solano County,Vacaville,http://www.cityofvacaville.com
+California,Solano County,Vallejo,https://www.cityofvallejo.net
+California,Ventura County,Ventura,https://www.cityofventura.ca.gov/
+California,Los Angeles County,Vernon,http://cityofvernon.org
+California,San Bernardino County,Victorville,http://www.victorvilleca.gov/
+California,San Bernardino County,Villa Park,http://www.villapark.org/
+California,Tulare County,Visalia,https://www.visalia.city
+California,San Diego County,Vista,http://www.cityofvista.com
+California,Los Angeles County,Walnut,http://www.ci.walnut.ca.us
+California,Contra Costa County,Walnut Creek,http://www.walnut-creek.org
+California,Kern County,Wasco,http://www.ci.wasco.ca.us
+California,Stanislaus County,Waterford,http://cityofwaterford.org
+California,Santa Cruz County,Watsonville,https://cityofwatsonville.org/
+California,Santa Cruz County,Weed,http://www.ci.weed.ca.us/
+California,List of cities in Los Angeles County,West Covina,http://www.westcovina.org
+California,Los Angeles County,West Hollywood,http://www.weho.org
+California,Yolo County,West Sacramento,http://www.cityofwestsacramento.org
+California,Los Angeles County,Westlake Village,http://www.wlv.org
+California,Orange County,Westminster,http://www.westminster-ca.gov
+California,Imperial County,Westmorland,http://www.cityofwestmorland.net
+California,Yuba County,Wheatland,http://www.wheatland.ca.gov
+California,Los Angeles County,Whittier,http://www.cityofwhittier.org
+California,Los Angeles County,Wildomar,http://www.cityofwildomar.org
+California,Colusa County,Williams,http://www.cityofwilliams.org
+California,Mendocino County,Willits,http://cityofwillits.org
+California,Glenn County,Willows,http://www.cityofwillows.org
+California,Sonoma County,Windsor,http://www.townofwindsor.com/
+California,Sonoma County,Winters,http://www.cityofwinters.org
+California,Tulare County,Woodlake,http://www.cityofwoodlake.com/
+California,Yolo County,Woodland,http://www.cityofwoodland.org
+California,San Mateo County,Woodside,http://www.woodsidetown.org
+California,Orange County,Yorba Linda,http://www.yorbalindaca.gov/
+California,Napa County,Yountville,http://www.townofyountville.com
+California,Siskiyou County,Yreka,http://ci.yreka.ca.us
+California,Sutter County,Yuba City,http://www.yubacity.net
+California,San Bernardino County,Yucaipa,http://yucaipa.org
+California,San Bernardino County,Yucca Valley,http://www.yucca-valley.org
+Colorado,Las Animas County,Aguilar,http://aguilarco.us/
+Colorado,Washington County,Akron,https://townofakron.colorado.gov/
+Colorado,Alamosa County,Alamosa,https://cityofalamosa.org/
+Colorado,Park County,Alma,http://townofalma.com/
+Colorado,Conejos County,Antonito,http://townofantonito.org/
+Colorado,Lincoln County,Arriba,https://townofarriba.colorado.gov/
+Colorado,Jefferson County,Arvada,https://arvada.org/
+Colorado,Pitkin County,Aspen,https://www.aspen.gov
+Colorado,Weld County,Ault,https://www.townofault.org/
+Colorado,Arapahoe County,Aurora,https://www.auroragov.org/
+Colorado,Eagle County,Avon,http://www.avon.org/
+Colorado,Eagle County,Basalt,http://www.basalt.net/
+Colorado,La Plata County,Bayfield,https://www.colorado.gov/townofbayfield
+Colorado,Adams County,Bennett,http://www.bennett.co.us
+Colorado,Larimer County,Berthoud,https://www.berthoud.org/
+Colorado,Gilpin County,Black Hawk,http://www.cityofblackhawk.org/
+Colorado,Summit County,Blue River,https://townofblueriver.colorado.gov/
+Colorado,Boulder County,Boulder,https://bouldercolorado.gov/
+Colorado,Arapahoe County,Bow Mar,https://www.bowmar.gov
+Colorado,Las Animas County,Branson,https://www.bransoncolorado.com/
+Colorado,Summit County,Breckenridge,http://www.townofbreckenridge.com/
+Colorado,Adams County,Brighton,https://www.brightonco.gov/
+Colorado,Fremont County,Brookside,https://townofbrookside.colorado.gov/
+Colorado,Fremont County,Broomfield,http://www.broomfield.org
+Colorado,Morgan County,Brush,http://www.brushcolo.com/
+Colorado,Chaffee County,Buena Vista,http://www.buenavistaco.gov
+Colorado,Kit Carson County,Burlington,http://www.burlingtoncolo.com/
+Colorado,Fremont County,Cañon City,http://www.canoncity.org/
+Colorado,El Paso County,Calhan,https://www.calhan.co/
+Colorado,Baca County,Campo,https://www.bacacountyco.gov/towns/campo-colorado/
+Colorado,Garfield County,Carbondale,http://carbondalegov.org
+Colorado,Douglas County,Castle Pines,https://www.castlepinesgov.com/
+Colorado,Douglas County,Castle Rock,http://www.crgov.com/
+Colorado,Delta County,Cedaredge,http://www.cedaredgecolorado.com/
+Colorado,Arapahoe County,Centennial,http://www.centennialco.gov/
+Colorado,Saguache County,Center,https://www.colorado.gov/townofcenter
+Colorado,Gilpin County,Central City,http://www.centralcitycolorado.us
+Colorado,Arapahoe County,Cherry Hills Village,http://www.cherryhillsvillage.com
+Colorado,Cheyenne County,Cheyenne Wells,http://townofcheyennewells.com
+Colorado,Fremont County,Coal Creek,https://www.colorado.gov/pacific/coalcreekco
+Colorado,Mesa County,Collbran,https://www.colorado.gov/townofcollbran
+Colorado,El Paso County,Colorado Springs,http://coloradosprings.gov
+Colorado,Arapahoe County,Columbine Valley,https://columbinevalley.org/
+Colorado,Adams County,Commerce City,http://www.c3gov.com/
+Colorado,Montezuma County,Cortez,http://www.cityofcortez.com/
+Colorado,Moffat County,Craig,http://www.ci.craig.co.us
+Colorado,Mineral County,Creede,https://www.colorado.gov/creede
+Colorado,Gunnison County,Crested Butte,https://www.crestedbutte-co.gov/
+Colorado,Saguache County,Crestone,https://townofcrestone.colorado.gov/
+Colorado,Teller County,Cripple Creek,https://cityofcripplecreek.com/
+Colorado,Weld County,Dacono,https://www.cityofdacono.com/
+Colorado,Mesa County,De Beque,http://www.debeque.org/
+Colorado,Arapahoe County,Deer Trail,https://townofdeertrail.colorado.gov/
+Colorado,Rio Grande County,Del Norte,https://www.delnortecolorado.com/
+Colorado,Delta County,Delta,http://cityofdelta.net
+Colorado,Summit County,Dillon,https://www.townofdillon.com/
+Colorado,Moffat County,Dinosaur,http://townofdinosaur.colorado.gov
+Colorado,Montezuma County,Dolores,https://townofdolores.colorado.gov/
+Colorado,Dolores County,Dove Creek,https://townofdovecreek.colorado.gov/
+Colorado,La Plata County,Durango,https://www.durangogov.org/
+Colorado,Kiowa County,Eads,http://www.kcedfonline.org/eads.htm
+Colorado,Eagle County,Eagle,http://www.townofeagle.org
+Colorado,Weld County,Eaton,https://townofeaton.colorado.gov/
+Colorado,Yuma County,Eckley,https://townofeckley.colorado.gov/
+Colorado,Jefferson County,Edgewater,https://edgewaterco.com/
+Colorado,Elbert County,Elizabeth,http://www.townofelizabeth.org
+Colorado,Clear Creek County,Empire,https://townofempire.colorado.gov/
+Colorado,Arapahoe County,Englewood,https://www.englewoodco.gov
+Colorado,Weld County,Erie,http://www.erieco.gov
+Colorado,Larimer County,Estes Park,https://estespark.colorado.gov/
+Colorado,Weld County,Evans,https://www.evanscolorado.gov/
+Colorado,Park County,Fairplay,http://fairplayco.us
+Colorado,Adams County,Federal Heights,http://www.fedheights.org
+Colorado,Weld County,Firestone,https://www.firestoneco.gov/
+Colorado,Kit Carson County,Flagler,http://flaglercolorado.com/
+Colorado,Logan County,Fleming,https://www.flemingcolorado.us/
+Colorado,Fremont County,Florence,https://cityofflorence.colorado.gov/
+Colorado,Larimer County,Fort Collins,https://www.fcgov.com/
+Colorado,Weld County,Fort Lupton,https://www.fortluptonco.gov/
+Colorado,Morgan County,Fort Morgan,https://www.cityoffortmorgan.com/
+Colorado,El Paso County,Fountain,http://www.fountaincolorado.org/
+Colorado,Otero County,Fowler,https://www.fowlercolorado.com/
+Colorado,Arapahoe County,Foxfield,https://townoffoxfield.colorado.gov/
+Colorado,Grand County,Fraser,http://www.frasercolorado.com
+Colorado,Weld County,Frederick,https://www.frederickco.gov/
+Colorado,Summit County,Frisco,http://www.townoffrisco.com/
+Colorado,Mesa County,Fruita,https://www.fruita.org/
+Colorado,Weld County,Garden City,http://townofgardencity.com/
+Colorado,Lincoln County,Genoa,https://townofgenoa.colorado.gov/
+Colorado,Clear Creek County,Georgetown,http://www.townofgeorgetown.US
+Colorado,Weld County,Gilcrest,http://townofgilcrest.org/
+Colorado,Arapahoe County,Glendale,https://www.glendale.co.us/
+Colorado,Garfield County,Glenwood Springs,https://www.ci.glenwood-springs.co.us/
+Colorado,Jefferson County,Golden,https://www.cityofgolden.net/
+Colorado,Grand County,Granby,https://www.townofgranby.com/
+Colorado,Mesa County,Grand Junction,https://www.gjcity.org/
+Colorado,Grand County,Grand Lake,http://www.townofgrandlake.com/
+Colorado,Weld County,Greeley,http://greeleygov.com
+Colorado,El Paso County,Green Mountain Falls,https://greenmountainfalls.colorado.gov/
+Colorado,Arapahoe County,Greenwood Village,https://www.greenwoodvillage.com/
+Colorado,Gunnison County,Gunnison,https://www.gunnisonco.gov/
+Colorado,Eagle County,Gypsum,http://www.townofgypsum.com
+Colorado,Kiowa County,Haswell,http://www.kcedfonline.org/haswell.htm
+Colorado,Routt County,Hayden,https://www.haydencolorado.com/
+Colorado,Morgan County,Hillrose,http://www.hillrosecolorado.org/
+Colorado,Prowers County,Holly,http://www.townofholly.com
+Colorado,Phillips County,Holyoke,http://www.holyokechamber.org/
+Colorado,Grand County,Hot Sulphur Springs,http://www.hotsulphurspringsco.com
+Colorado,Delta County,Hotchkiss,http://townofhotchkiss.com
+Colorado,Weld County,Hudson,http://www.hudsoncolorado.org/
+Colorado,Lincoln County,Hugo,https://townhugo.com/
+Colorado,Clear Creek County,Idaho Springs,http://www.colorado.gov/idahosprings
+Colorado,La Plata County,Ignacio,https://www.colorado.gov/ignacio
+Colorado,Boulder County,Jamestown,http://www.jamestownco.org
+Colorado,Larimer County,Johnstown,http://www.townofjohnstown.com/
+Colorado,Sedgwick County,Julesburg,https://townofjulesburg.com/
+Colorado,Weld County,Keenesburg,http://www.townofkeenesburg.com/
+Colorado,Weld County,Kersey,http://www.kerseygov.com/
+Colorado,Elbert County,Kiowa,https://townofkiowa.colorado.gov/
+Colorado,Cheyenne County,Kit Carson,http://kitcarsoncolorado.com/
+Colorado,Grand County,Kremmling,http://www.townofkremmling.org/
+Colorado,Conejos County,La Jara,https://colorado.gov/townoflajara
+Colorado,Otero County,La Junta,https://lajuntacolorado.org
+Colorado,Huerfano County,La Veta,http://www.townoflaveta-co.gov
+Colorado,Boulder County,Lafayette,https://lafayetteco.gov
+Colorado,Hinsdale County,Lake City,http://www.lakecity.com
+Colorado,Jefferson County,Lakewood,https://www.lakewood.org/
+Colorado,Prowers County,Lamar,http://www.ci.lamar.co.us
+Colorado,Douglas County,Larkspur,http://www.townoflarkspur.org
+Colorado,Bent County,Las Animas,https://www.colorado.gov/cityoflasanimas
+Colorado,Weld County,LaSalle,http://www.lasalletown.com/
+Colorado,Lake County,Leadville,https://www.colorado.gov/leadville
+Colorado,Lincoln County,Limon,http://www.townoflimon.com/
+Colorado,Arapahoe County,Littleton,http://www.littletongov.org/
+Colorado,Weld County,Lochbuie,http://www.lochbuie.org/
+Colorado,Douglas County,Lone Tree,http://www.cityoflonetree.com
+Colorado,Boulder County,Longmont,http://www.longmontcolorado.gov
+Colorado,Boulder County,Louisville,http://www.louisvilleco.gov
+Colorado,Larimer County,Loveland,http://www.cityofloveland.org
+Colorado,Boulder County,Lyons,http://www.townoflyons.com
+Colorado,Conejos County,Manassa,http://manassa.com
+Colorado,Montezuma County,Mancos,http://www.mancoscolorado.com
+Colorado,El Paso County,Manitou Springs,http://www.manitouspringsgov.com
+Colorado,Otero County,Manzanola,https://www.colorado.com/cities-and-towns/manzanola
+Colorado,Gunnison County,Marble,https://www.townofmarble.com/
+Colorado,Weld County,Mead,https://www.townofmead.org/
+Colorado,Rio Blanco County,Meeker,http://www.townofmeeker.org/
+Colorado,Weld County,Milliken,https://www.millikenco.gov/
+Colorado,Eagle County,Minturn,http://www.minturn.org
+Colorado,Saguache County,Moffat,http://www.colorado.gov/townofmoffat
+Colorado,Rio Grande County,Monte Vista,https://www.cityofmontevista.com/
+Colorado,Montrose County,Montrose,http://www.cityofmontrose.org
+Colorado,El Paso County,Monument,http://www.townofmonument.org/
+Colorado,Jefferson County,Morrison,http://town.morrison.co.us
+Colorado,Gunnison County,Mount Crested Butte,http://www.mtcrestedbuttecolorado.us
+Colorado,Jefferson County,Mountain View,http://mtvgov.org
+Colorado,San Miguel County,Mountain Village,https://townofmountainvillage.com/
+Colorado,Boulder County,Nederland,https://townofnederland.colorado.gov/
+Colorado,Garfield County,New Castle,http://www.newcastlecolorado.org
+Colorado,Adams County,Northglenn,http://www.northglenn.org
+Colorado,San Miguel County,Norwood,http://www.norwoodtown.com/
+Colorado,Montrose County,Nucla,http://www.colorado.gov/nucla
+Colorado,Weld County,Nunn,http://www.nunncolorado.com
+Colorado,Routt County,Oak Creek,http://townofoakcreek.com/
+Colorado,Montrose County,Olathe,http://www.townofolathe.org
+Colorado,San Miguel County,Ophir,https://townofophir.colorado.gov/
+Colorado,Delta County,Orchard City,http://www.orchardcityco.org
+Colorado,Crowley County,Ordway,https://www.townofordway.com/
+Colorado,Washington County,Otis,https://townofotis.colorado.gov/
+Colorado,Ouray County,Ouray,http://www.ci.ouray.co.us/
+Colorado,Sedgwick County,Ovid,https://www.facebook.com/OvidColorado
+Colorado,Archuleta County,Pagosa Springs,https://visitpagosasprings.com/
+Colorado,Mesa County,Palisade,http://www.townofpalisade.org
+Colorado,El Paso County,Palmer Lake,http://www.townofpalmerlake.com
+Colorado,Delta County,Paonia,http://www.townofpaonia.com/
+Colorado,Garfield County,Parachute,http://www.parachutecolorado.com
+Colorado,Douglas County,Parker,http://www.parkeronline.org
+Colorado,Logan County,Peetz,https://www.townofpeetz.com/
+Colorado,Weld County,Pierce,https://townofpierce.org/
+Colorado,Gunnison County,Pitkin,https://colorado.gov/pitkin
+Colorado,Weld County,Platteville,http://www.plattevillegov.org/
+Colorado,Chaffee County,Poncha Springs,http://www.ponchaspringscolorado.us
+Colorado,Pueblo County,Pueblo,http://www.pueblo.us/
+Colorado,El Paso County,Ramah,https://www.colorado.gov/ramah
+Colorado,Rio Blanco County,Rangely,http://www.rangely.com/
+Colorado,Eagle County,Red Cliff,https://townofredcliff.colorado.gov/
+Colorado,Dolores County,Rico,http://ricocolorado.gov
+Colorado,Ouray County,Ridgway,http://town.ridgway.co.us/
+Colorado,Garfield County,Rifle,http://www.rifleco.org
+Colorado,Fremont County,Rockvale,https://townofrockvale.colorado.gov/
+Colorado,Otero County,Rocky Ford,http://cityofrockyford.colorado.gov
+Colorado,Pueblo County,Rye,https://townofrye.colorado.gov/
+Colorado,Saguache County,Saguache,https://www.colorado.gov/saguache
+Colorado,Chaffee County,Salida,http://cityofsalida.com/
+Colorado,Costilla County,San Luis,http://townofsanluisco.org
+Colorado,Sedgwick County,Sedgwick,https://www.sedgwickcolorado.com/
+Colorado,Weld County,Severance,https://townofseverance.org/
+Colorado,Arapahoe County,Sheridan,http://www.ci.sheridan.co.us
+Colorado,Kiowa County,Sheridan Lake,http://www.kcedfonline.org/sheridanlake.htm
+Colorado,Garfield County,Silt,http://www.townofsilt.org
+Colorado,Custer County,Silver Cliff,http://silvercliffco.com
+Colorado,Clear Creek County,Silver Plume,https://townofsilverplume.com/
+Colorado,Summit County,Silverthorne,http://www.silverthorne.org/
+Colorado,San Juan County,Silverton,https://www.colorado.gov/townofsilverton/
+Colorado,Elbert County,Simla,http://townofsimla.com
+Colorado,Pitkin County,Snowmass Village,http://www.tosv.com/
+Colorado,Rio Grande County,South Fork,https://townofsouthfork.colorado.gov/
+Colorado,Baca County,Springfield,https://townofspringfield.colorado.gov
+Colorado,Routt County,Steamboat Springs,http://www.steamboatsprings.net/
+Colorado,Logan County,Sterling,http://www.sterlingcolo.com/
+Colorado,Kit Carson County,Stratton,https://townofstratton.colorado.gov/
+Colorado,Boulder County,Superior,https://www.superiorcolorado.gov/
+Colorado,Otero County,Swink,http://townofswinkco.ourlocalview.com//HomeTown/
+Colorado,San Miguel County,Telluride,http://www.telluride-co.gov/
+Colorado,Adams County,Thornton,http://www.cityofthornton.net/
+Colorado,Larimer County,Timnath,https://timnath.org/
+Colorado,Las Animas County,Trinidad,http://trinidad.co.gov/
+Colorado,Eagle County,Vail,http://www.vailgov.com/
+Colorado,Teller County,Victor,https://cityofvictor.com/
+Colorado,Jackson County,Walden,https://www.colorado.gov/townofwalden
+Colorado,Huerfano County,Walsenburg,https://www.colorado.gov/walsenburg
+Colorado,Baca County,Walsh,https://www.colorado.gov/townofwalsh
+Colorado,Boulder County,Ward,https://www.ward-co.org/
+Colorado,Larimer County,Wellington,http://www.wellingtoncolorado.gov/
+Colorado,Custer County,Westcliffe,http://www.townofwestcliffe.com
+Colorado,Jefferson County,Westminster,http://www.cityofwestminster.us
+Colorado,Jefferson County,Wheat Ridge,http://www.ci.wheatridge.co.us/
+Colorado,Morgan County,Wiggins,http://townofwiggins.colorado.gov
+Colorado,Prowers County,Wiley,http://www.townofwiley.us/
+Colorado,Fremont County,Williamsburg,http://williamsburgcolorado.com
+Colorado,Larimer County,Windsor,http://www.windsorgov.com/
+Colorado,Grand County,Winter Park,http://www.wpgov.com
+Colorado,Teller County,Woodland Park,http://www.city-woodlandpark.org/
+Colorado,Yuma County,Wray,https://cityofwray.org/
+Colorado,Routt County,Yampa,https://www.townofyampa.com/
+Colorado,Yuma County,Yuma,https://www.colorado.gov/pacific/cityofyuma
+Connecticut,Tolland County,Andover,https://www.andoverconnecticut.org/
+Connecticut,New Haven County,Ansonia,http://www.cityofansonia.com
+Connecticut,Windham County,Ashford,http://www.ashfordtownhall.org/
+Connecticut,Hartford County,Avon,http://www.avonct.gov/
+Connecticut,Litchfield County,Barkhamsted,http://barkhamsted.us
+Connecticut,New Haven County,Beacon Falls,http://www.beaconfalls-ct.org/
+Connecticut,Hartford County,Berlin,http://www.town.berlin.ct.us
+Connecticut,New Haven County,Bethany,http://www.bethany-ct.com
+Connecticut,Fairfield County,Bethel,http://www.bethel-ct.gov/
+Connecticut,Litchfield County,Bethlehem,http://www.bethlehemct.org
+Connecticut,Hartford County,Bloomfield,http://www.bloomfieldct.org
+Connecticut,Tolland County,Bolton,http://bolton.govoffice.com/
+Connecticut,New London County,Bozrah,http://www.townofbozrah.org
+Connecticut,New Haven County,Branford,http://www.branford-ct.gov
+Connecticut,Fairfield County,Bridgeport,http://bridgeportct.gov/
+Connecticut,Litchfield County,Bridgewater,https://www.bridgewater-ct.gov/
+Connecticut,Hartford County,Bristol,http://www.ci.bristol.ct.us
+Connecticut,Fairfield County,Brookfield,https://www.brookfieldct.gov/
+Connecticut,Windham County,Brooklyn,http://www.brooklynct.org/
+Connecticut,Hartford County,Burlington,http://www.burlingtonct.us
+Connecticut,Litchfield County,Canaan,http://www.canaanfallsvillage.org
+Connecticut,Windham County,Canterbury,http://www.canterburyct.org/
+Connecticut,Hartford County,Canton,http://www.townofcantonct.org
+Connecticut,Tolland County,Capitol Planning Region,http://crcog.org
+Connecticut,Hartford County,Capitol Planning Region,http://crcog.org
+Connecticut,Windham County,Chaplin,http://chaplinct.org/
+Connecticut,New Haven County,Cheshire,http://www.cheshirect.org
+Connecticut,Middlesex County,Chester,http://www.chesterct.com/
+Connecticut,Middlesex County,Clinton,http://www.clintonct.org/
+Connecticut,New London County,Colchester,http://www.colchesterct.gov
+Connecticut,Litchfield County,Colebrook,http://www.townofcolebrook.org
+Connecticut,Tolland County,Columbia,http://www.columbiact.org/
+Connecticut,Litchfield County,Cornwall,http://www.cornwallct.org
+Connecticut,Middlesex County,Cromwell,http://www.cromwellct.com/
+Connecticut,Fairfield County,Danbury,http://www.danbury-ct.gov/
+Connecticut,Fairfield County,Darien,http://www.darienct.gov/
+Connecticut,Middlesex County,Deep River,http://www.deepriverct.us/
+Connecticut,New Haven County,Derby,http://www.derbyct.gov
+Connecticut,Middlesex County,Durham,http://www.townofdurhamct.org/
+Connecticut,Hartford County,East Granby,http://www.eastgranbyct.org
+Connecticut,Middlesex County,East Haddam,http://www.easthaddam.org/
+Connecticut,Middlesex County,East Hampton,http://www.easthamptonct.gov
+Connecticut,Hartford County,East Hartford,http://www.easthartfordct.gov
+Connecticut,New Haven County,East Haven,http://www.townofeasthavenct.org
+Connecticut,New London County,East Lyme,http://eltownhall.com
+Connecticut,Hartford County,East Windsor,http://www.eastwindsor-ct.gov
+Connecticut,Windham County,Eastford,https://www.eastfordct.org/townofeastford
+Connecticut,Fairfield County,Easton,http://www.eastonct.gov/
+Connecticut,Tolland County,Ellington,http://www.ellington-ct.gov/
+Connecticut,Hartford County,Enfield,http://www.enfield-ct.gov
+Connecticut,Middlesex County,Essex,http://www.essexct.gov/
+Connecticut,Fairfield County,Fairfield,https://www.fairfieldct.org/
+Connecticut,Hartford County,Farmington,http://www.farmington-ct.org
+Connecticut,New London County,Franklin,http://www.franklinct.com
+Connecticut,Hartford County,Glastonbury,http://www.glastonbury-ct.gov
+Connecticut,Litchfield County,Goshen,http://www.goshenct.gov
+Connecticut,Hartford County,Granby,http://www.granby-ct.gov
+Connecticut,Fairfield County,Greater Bridgeport Planning Region,http://ctmetro.org
+Connecticut,Fairfield County,Greenwich,http://www.greenwichct.org/
+Connecticut,New London County,Griswold,http://www.griswold-ct.org
+Connecticut,New London County,Groton,http://www.groton-ct.gov
+Connecticut,New Haven County,Guilford,https://www.guilfordct.gov
+Connecticut,Middlesex County,Haddam,http://www.haddam.org/
+Connecticut,New Haven County,Hamden,http://www.hamden.com
+Connecticut,Windham County,Hampton,http://hamptonct.org/
+Connecticut,Hartford County,Hartford,http://www.hartford.gov
+Connecticut,Hartford County,Hartland,https://www.hartlandct.org
+Connecticut,Litchfield County,Harwinton,http://harwinton.us
+Connecticut,Tolland County,Hebron,http://www.hebronct.com/
+Connecticut,Litchfield County,Kent,http://www.townofkentct.org
+Connecticut,Windham County,Killingly,https://www.killingly.org/
+Connecticut,Middlesex County,Killingworth,http://www.townofkillingworth.com/
+Connecticut,New London County,Lebanon,http://www.lebanonct.gov
+Connecticut,New London County,Ledyard,http://www.ledyardct.org
+Connecticut,New London County,Lisbon,http://www.lisbonct.com
+Connecticut,Litchfield County,Litchfield,http://www.townoflitchfield.org
+Connecticut,Middlesex County,Lower Connecticut River Valley Planning Region,http://rivercog.org
+Connecticut,New London County,Lower Connecticut River Valley Planning Region,http://rivercog.org
+Connecticut,New London County,Lyme,http://townlyme.org
+Connecticut,New Haven County,Madison,http://www.madisonct.org
+Connecticut,Hartford County,Manchester,http://www.manchesterct.gov
+Connecticut,Tolland County,Mansfield,http://www.mansfieldct.org/
+Connecticut,Hartford County,Marlborough,https://marlboroughct.net
+Connecticut,New Haven County,Meriden,http://www.meridenct.gov
+Connecticut,New Haven County,Middlebury,http://www.middlebury-ct.org
+Connecticut,Middlesex County,Middlefield,http://www.middlefieldct.org/
+Connecticut,Middlesex County,Middletown,https://www.middletownct.gov/
+Connecticut,New Haven County,Milford,http://www.ci.milford.ct.us
+Connecticut,Fairfield County,Monroe,https://www.monroect.gov/
+Connecticut,New London County,Montville,http://www.montville-ct.org
+Connecticut,Litchfield County,Morris,http://www.townofmorrisct.com
+Connecticut,New Haven County,Naugatuck,http://www.naugatuck-ct.gov
+Connecticut,New Haven County,Naugatuck Valley Planning Region,https://nvcogct.gov
+Connecticut,Litchfield County,Naugatuck Valley Planning Region,https://nvcogct.gov
+Connecticut,Hartford County,Naugatuck Valley Planning Region,https://nvcogct.gov
+Connecticut,Fairfield County,Naugatuck Valley Planning Region,https://nvcogct.gov
+Connecticut,Hartford County,New Britain,http://www.newbritainct.gov
+Connecticut,Fairfield County,New Canaan,http://www.newcanaan.info/
+Connecticut,Fairfield County,New Fairfield,https://www.newfairfield.org/
+Connecticut,Litchfield County,New Hartford,http://newhartfordct.gov
+Connecticut,New Haven County,New Haven,http://www.newhavenct.gov
+Connecticut,New London County,New London,https://www.newlondonct.org/
+Connecticut,Litchfield County,New Milford,http://www.newmilford.org
+Connecticut,Hartford County,Newington,http://www.newingtonct.gov
+Connecticut,Fairfield County,Newtown,http://www.newtown-ct.gov
+Connecticut,Litchfield County,Norfolk,http://www.norfolkct.org
+Connecticut,New Haven County,North Branford,http://www.townofnorthbranfordct.com
+Connecticut,Litchfield County,North Canaan,http://www.northcanaan.org
+Connecticut,New Haven County,North Haven,http://www.town.north-haven.ct.us
+Connecticut,New London County,North Stonington,http://www.northstoningtonct.gov
+Connecticut,Windham County,Northeastern Connecticut Planning Region,http://neccog.org
+Connecticut,Tolland County,Northeastern Connecticut Planning Region,http://neccog.org
+Connecticut,New London County,Northeastern Connecticut Planning Region,http://neccog.org
+Connecticut,Litchfield County,Northwest Hills Planning Region,http://northwesthillscog.org
+Connecticut,Hartford County,Northwest Hills Planning Region,http://northwesthillscog.org
+Connecticut,Fairfield County,Norwalk,https://www.norwalkct.gov/
+Connecticut,New London County,Norwich,http://www.norwichct.org/
+Connecticut,New London County,Old Lyme,http://www.oldlyme-ct.gov
+Connecticut,Middlesex County,Old Saybrook,http://www.oldsaybrookct.org/
+Connecticut,New Haven County,Orange,http://www.orange-ct.gov
+Connecticut,New Haven County,Oxford,http://www.oxford-ct.gov
+Connecticut,Windham County,Plainfield,http://www.plainfieldct.org/
+Connecticut,Hartford County,Plainville,http://www.plainvillect.com
+Connecticut,Litchfield County,Plymouth,http://www.plymouthct.us
+Connecticut,Windham County,Pomfret,http://www.pomfretct.com/
+Connecticut,Middlesex County,Portland,http://www.portlandct.org/
+Connecticut,New London County,Preston,http://www.preston-ct.org
+Connecticut,New Haven County,Prospect,http://www.townofprospect.com
+Connecticut,Windham County,Putnam,http://www.putnamct.us/
+Connecticut,Fairfield County,Redding,http://www.townofreddingct.org/
+Connecticut,Fairfield County,Ridgefield,http://www.ridgefieldct.org/
+Connecticut,Hartford County,Rocky Hill,http://www.rockyhillct.gov
+Connecticut,Litchfield County,Roxbury,http://www.roxburyct.com
+Connecticut,New London County,Salem,http://www.salemct.gov
+Connecticut,Litchfield County,Salisbury,http://salisburyct.us
+Connecticut,Windham County,Scotland,http://www.scotlandct.org/
+Connecticut,New Haven County,Seymour,http://www.seymourct.org
+Connecticut,Litchfield County,Sharon,http://www.sharonct.org
+Connecticut,Fairfield County,Shelton,http://www.cityofshelton.org/
+Connecticut,Fairfield County,Sherman,http://www.townofshermanct.org/
+Connecticut,Hartford County,Simsbury,http://www.simsbury-ct.gov
+Connecticut,Tolland County,Somers,http://www.somersct.gov/
+Connecticut,New Haven County,South Central Connecticut Planning Region,http://scrcog.org
+Connecticut,Hartford County,South Windsor,http://www.southwindsor.org
+Connecticut,New Haven County,Southbury,http://www.southbury-ct.org
+Connecticut,New London County,Southeastern Connecticut Planning Region,http://seccog.org
+Connecticut,Windham County,Southeastern Connecticut Planning Region,http://seccog.org
+Connecticut,Hartford County,Southington,http://www.southington.org
+Connecticut,New London County,Sprague,http://www.ctsprague.org
+Connecticut,Tolland County,Stafford,http://www.staffordct.org
+Connecticut,Fairfield County,Stamford,http://www.stamfordct.gov/
+Connecticut,Windham County,Sterling,http://www.sterlingct.us/
+Connecticut,New London County,Stonington,http://www.stonington-ct.gov
+Connecticut,Fairfield County,Stratford,http://www.townofstratford.com
+Connecticut,Hartford County,Suffield,https://www.suffieldct.gov
+Connecticut,Litchfield County,Thomaston,http://www.thomastonct.org
+Connecticut,Windham County,Thompson,http://www.thompsonct.org/
+Connecticut,Tolland County,Tolland,http://www.tolland.org/
+Connecticut,Litchfield County,Torrington,http://www.torringtonct.org/
+Connecticut,Fairfield County,Trumbull,http://www.trumbull-ct.gov/
+Connecticut,Tolland County,Union,http://www.unionconnecticut.org
+Connecticut,Tolland County,Vernon,http://www.vernon-ct.gov/
+Connecticut,New London County,Voluntown,http://www.voluntown.gov
+Connecticut,New Haven County,Wallingford,http://www.town.wallingford.ct.us
+Connecticut,Litchfield County,Warren,http://www.warrenct.org
+Connecticut,Litchfield County,Washington,http://www.washingtonct.org
+Connecticut,New Haven County,Waterbury,http://www.waterburyct.org
+Connecticut,New London County,Waterford,http://www.waterfordct.org
+Connecticut,Litchfield County,Watertown,http://www.watertownct.org
+Connecticut,Hartford County,West Hartford,http://www.westhartfordct.gov
+Connecticut,New Haven County,West Haven,http://www.cityofwesthaven.com
+Connecticut,Middlesex County,Westbrook,http://www.westbrookct.us/
+Connecticut,Fairfield County,Western Connecticut Planning Region,http://westcog.org
+Connecticut,Litchfield County,Western Connecticut Planning Region,http://westcog.org
+Connecticut,Fairfield County,Weston,http://www.westonct.gov/
+Connecticut,Fairfield County,Westport,http://www.westportct.gov/
+Connecticut,Hartford County,Wethersfield,http://wethersfieldct.gov
+Connecticut,Tolland County,Willington,http://www.willingtonct.org/
+Connecticut,Fairfield County,Wilton,http://www.wiltonct.org/
+Connecticut,Litchfield County,Winchester,http://www.townofwinchester.org
+Connecticut,Windham County,Windham,http://www.windhamct.com/
+Connecticut,Hartford County,Windsor,http://www.townofwindsorct.com
+Connecticut,Hartford County,Windsor Locks,http://www.windsorlocksct.org
+Connecticut,New Haven County,Wolcott,http://www.wolcottct.org
+Connecticut,New Haven County,Woodbridge,http://www.woodbridgect.org
+Connecticut,Litchfield County,Woodbury,http://www.woodburyct.org
+Connecticut,Windham County,Woodstock,http://www.woodstockct.gov/
+Delaware,Windham County,Arden,http://arden.delaware.gov/
+Delaware,Windham County,Ardentown,https://ardentown.delaware.gov/
+Delaware,New Castle County,Bellefonte,http://www.townofbellefonte.com
+Delaware,Sussex County,Bethany Beach,http://www.townofbethanybeach.com
+Delaware,Sussex County,Bethel,https://bethel.delaware.gov/
+Delaware,Sussex County,Blades,http://blades.delaware.gov/
+Delaware,Sussex County,Bowers,https://bowersbeach.delaware.gov/
+Delaware,Sussex County,Bridgeville,http://bridgeville.delaware.gov/
+Delaware,Sussex County,Camden,https://camden.delaware.gov/
+Delaware,Sussex County,Cheswold,https://cheswold.delaware.gov/
+Delaware,Kent County,Clayton,http://www.clayton.delaware.gov/
+Delaware,Kent County,Dagsboro,https://dagsboro.delaware.gov/
+Delaware,Kent County,Delaware City,https://www.delawarecity.org/
+Delaware,Kent County,Delmar,http://www.townofdelmar.us/index.cfm
+Delaware,Sussex County,Dewey Beach,http://www.townofdeweybeach.com/
+Delaware,Kent County,Dover,http://www.cityofdover.com
+Delaware,Kent County,Ellendale,https://ellendale.delaware.gov/
+Delaware,New Castle County,Elsmere,https://www.townofelsmere.com/
+Delaware,New Castle County,Felton,https://felton.delaware.gov/
+Delaware,New Castle County,Fenwick Island,https://www.fenwickisland.delaware.gov
+Delaware,New Castle County,Frankford,https://frankford.delaware.gov/
+Delaware,New Castle County,Frederica,http://frederica.delaware.gov/
+Delaware,Sussex County,Georgetown,http://www.georgetowndel.com/
+Delaware,Sussex County,Greenwood,https://greenwood.delaware.gov/
+Delaware,Sussex County,Harrington,https://harrington.delaware.gov/
+Delaware,Sussex County,Hartly,https://hartly.delaware.gov/
+Delaware,Sussex County,Henlopen Acres,https://henlopenacres.delaware.gov/
+Delaware,Sussex County,Houston,http://www.townofhouston.com/
+Delaware,Sussex County,Kenton,https://kenton.delaware.gov/
+Delaware,Sussex County,Laurel,http://www.townoflaurel.net/
+Delaware,Sussex County,Lewes,http://www.ci.lewes.de.us
+Delaware,Sussex County,Little Creek,https://littlecreek.delaware.gov/
+Delaware,Sussex County,Magnolia,https://magnolia.delaware.gov/
+Delaware,New Castle County,Middletown,https://www.middletown.delaware.gov/
+Delaware,Kent County,Milford,http://www.cityofmilford.com/
+Delaware,Sussex County,Millsboro,http://www.millsboro.org/
+Delaware,Sussex County,Millville,https://millville.delaware.gov/
+Delaware,Sussex County,Milton,http://www.ci.milton.de.us/
+Delaware,New Castle County,New Castle,http://newcastlecity.delaware.gov/
+Delaware,New Castle County,Newark,https://www.newarkde.gov/
+Delaware,New Castle County,Newport,https://newport.delaware.gov
+Delaware,New Castle County,Ocean View,http://www.oceanviewde.com/
+Delaware,New Castle County,Odessa,http://odessa.delaware.gov
+Delaware,Sussex County,Rehoboth Beach,http://www.cityofrehoboth.com/
+Delaware,Sussex County,Seaford,http://www.seafordde.com/
+Delaware,Sussex County,Selbyville,https://selbyville.delaware.gov/
+Delaware,Sussex County,Slaughter Beach,https://slaughterbeach.delaware.gov/
+Delaware,Kent County,Smyrna,https://smyrna.delaware.gov/
+Delaware,Kent County,South Bethany,https://southbethany.delaware.gov
+Delaware,New Castle County,Townsend,http://townsend.delaware.gov
+Delaware,New Castle County,Viola,http://www.violade.com/
+Delaware,New Castle County,Wilmington,https://www.wilmingtonde.gov/
+Delaware,New Castle County,Woodside,https://woodside.delaware.gov/
+Delaware,New Castle County,Wyoming,https://wyoming.delaware.gov/
+Florida,New Castle County,Alachua,http://www.cityofalachua.com
+Florida,New Castle County,Altamonte Springs,http://www.altamonte.org/
+Florida,New Castle County,Anna Maria,http://www.cityofannamaria.com
+Florida,Franklin County,Apalachicola,http://www.cityofapalachicola.com/
+Florida,Orange County,Apopka,https://www.apopka.gov
+Florida,DeSoto County,Arcadia,http://www.arcadia-fl.gov
+Florida,DeSoto County,Archer,http://www.cityofarcher.com
+Florida,DeSoto County,Astatula,http://www.townofastatula.com
+Florida,DeSoto County,Atlantic Beach,http://www.coab.us
+Florida,Palm Beach County,Atlantis,http://www.atlantisfl.gov/
+Florida,Polk County,Auburndale,http://www.auburndalefl.com
+Florida,Miami-Dade County,Aventura,http://www.cityofaventura.com
+Florida,Highlands County,Avon Park,http://www.avonpark.cc
+Florida,Miami-Dade County,Bal Harbour,http://www.balharbourfl.gov/
+Florida,Duval County,Baldwin,https://baldwinfl.govoffice2.com
+Florida,Polk County,Bartow,http://www.cityofbartow.net/
+Florida,Polk County,Bay Harbor Islands,http://www.bayharborislands-fl.gov
+Florida,Metrorail (Miami-Dade County),Bell,http://townofbellflorida.com
+Florida,Palm Beach County,Belle Glade,http://www.bellegladegov.com/
+Florida,Palm Beach County,Belle Isle,http://www.cityofbelleislefl.org
+Florida,Palm Beach County,Belleair,http://www.townofbelleair.com/
+Florida,Palm Beach County,Belleair Beach,http://www.cityofbelleairbeach.com
+Florida,Palm Beach County,Belleair Bluffs,http://www.belleairbluffs.org
+Florida,Palm Beach County,Belleair Shore,http://belleairshore.com/
+Florida,Palm Beach County,Belleview,http://www.belleviewfl.org
+Florida,Palm Beach County,Beverly Beach,http://mybeverlybeach.org
+Florida,Palm Beach County,Biscayne Park,http://www.biscayneparkfl.gov
+Florida,Metrorail (Miami-Dade County),Blountstown,https://blountstownfl.govoffice3.com/
+Florida,Palm Beach County,Boca Raton,http://www.myboca.us
+Florida,Palm Beach County,Bonifay,http://cityofbonifayfl.com/
+Florida,Lee County,Bonita Springs,http://www.cityofbonitasprings.org/
+Florida,Lee County,Bowling Green,http://www.bowlinggreenfl.org/
+Florida,Palm Beach County,Boynton Beach,http://www.boynton-beach.org
+Florida,Manatee County,Bradenton,http://cityofbradenton.com
+Florida,Manatee County,Bradenton Beach,http://www.cityofbradentonbeach.com
+Florida,Manatee County,Branford,http://townofbranford.net/
+Florida,Manatee County,Briny Breezes,http://www.brinybreezes.us/
+Florida,Manatee County,Bristol,http://www.cityofbristolflorida.org
+Florida,Manatee County,Bronson,http://townofbronson.org
+Florida,Manatee County,Brooker,http://townofbrooker.com
+Florida,Hernando County,Brooksville,https://www.cityofbrooksville.us/
+Florida,Hernando County,Bunnell,http://www.bunnellcity.us
+Florida,Hernando County,Bushnell,http://cityofbushnellfl.com/
+Florida,Hernando County,Callahan,https://www.townofcallahan-fl.gov/
+Florida,Hernando County,Callaway,http://www.cityofcallaway.com
+Florida,Hernando County,Cape Canaveral,http://www.cityofcapecanaveral.org/
+Florida,Lee County,Cape Coral,http://www.capecoral.net
+Florida,Lee County,Carrabelle,http://www.mycarrabelle.com
+Florida,Seminole County,Casselberry,http://www.casselberry.org/
+Florida,Seminole County,Century,http://www.townofcenturyflorida.com
+Florida,Seminole County,Chattahoochee,https://www.chattgov.org/
+Florida,Seminole County,Chiefland,https://chiefland.govoffice.com/
+Florida,Seminole County,Chipley,http://www.cityofchipley.com
+Florida,Seminole County,Cinco Bayou,http://www.cincobayou.com/
+Florida,Pinellas County,Clearwater,http://www.myclearwater.com
+Florida,Pinellas County,Clermont,http://www.clermontfl.gov/
+Florida,Pinellas County,Clewiston,http://www.clewiston-fl.gov
+Florida,Pinellas County,Cocoa,http://www.cocoafl.org/
+Florida,Pinellas County,Cocoa Beach,http://www.cityofcocoabeach.com
+Florida,Broward County,Coconut Creek,http://www.coconutcreek.net
+Florida,Broward County,Coleman,http://www.cityofcolemanfl.com/
+Florida,Broward County,Cooper City,http://www.coopercityfl.org
+Florida,Miami-Dade County,Coral Gables,http://www.citybeautiful.net/
+Florida,Broward County,Coral Springs,http://www.coralsprings.org/
+Florida,Broward County,Cottondale,http://www.cityofcottondale.net/
+Florida,Broward County,Crescent City,http://www.crescentcity-fl.com/
+Florida,Broward County,Crestview,http://www.cityofcrestview.org/
+Florida,Citrus County,Crystal River,http://www.crystalriverfl.org
+Florida,Citrus County,Cutler Bay,http://www.cutlerbay-fl.gov
+Florida,Pasco County,Dade City,http://www.dadecityfl.com
+Florida,File:Logo of Broward County,Dania Beach,http://www.daniabeachfl.gov
+Florida,Polk County,Davenport,https://www.mydavenport.org/
+Florida,File:Logo of Broward County,Davie,http://www.davie-fl.gov
+Florida,Volusia County,Daytona Beach,http://www.codb.us
+Florida,File:Logo of Volusia County,Daytona Beach Shores,http://www.dbshores.org/
+Florida,Volusia County,DeBary,http://www.debary.org
+Florida,Broward County,Deerfield Beach,http://www.deerfield-beach.com
+Florida,Walton County,DeFuniak Springs,http://www.defuniaksprings.net
+Florida,Volusia County,DeLand,http://www.deland.org
+Florida,Palm Beach County,Delray Beach,http://www.mydelraybeach.com
+Florida,Volusia County,Deltona,http://www.deltonafl.gov
+Florida,Volusia County,Destin,http://www.cityofdestin.com/
+Florida,Volusia County,Doral,http://www.cityofdoral.com
+Florida,Polk County,Dundee,http://www.townofdundee.com
+Florida,Pinellas County,Dunedin,http://www.dunedingov.com
+Florida,Pinellas County,Dunnellon,http://www.dunnellon.org
+Florida,Polk County,Eagle Lake,http://www.eaglelake-fla.com
+Florida,Polk County,Eatonville,http://www.townofeatonville.org
+Florida,Volusia County,Edgewater,http://www.cityofedgewater.org
+Florida,Volusia County,Edgewood,http://www.edgewood-fl.gov
+Florida,Volusia County,El Portal,http://www.elportalvillage.com
+Florida,Lee County,Estero,https://estero-fl.gov/
+Florida,Lee County,Esto,https://estoflorida.com/
+Florida,Lee County,Eustis,http://www.eustis.org/
+Florida,Lee County,Everglades City,https://www.cityofeverglades.org/
+Florida,Levy County,Fanning Springs,http://www.fanningsprings.org/
+Florida,Levy County,Fellsmere,http://www.cityoffellsmere.org/
+Florida,Nassau County,Fernandina Beach,http://www.fbfl.us
+Florida,Flagler County,Flagler Beach,http://www.cityofflaglerbeach.com
+Florida,Miami-Dade County,Florida City,http://www.floridacityfl.gov
+Florida,Broward County,Fort Lauderdale,http://www.fortlauderdale.gov
+Florida,Polk County,Fort Meade,http://www.cityoffortmeade.com/
+Florida,Lee County,Fort Myers,http://www.cityftmyers.com
+Florida,Lee County,Fort Myers Beach,http://www.fortmyersbeachfl.gov/
+Florida,St. Lucie County,Fort Pierce,http://cityoffortpierce.com
+Florida,St. Lucie County,Fort Walton Beach,http://www.fwb.org
+Florida,St. Lucie County,Fort White,http://fortwhitefl.com/
+Florida,Walton County,Freeport,https://www.freeportflorida.gov/
+Florida,Polk County,Frostproof,http://www.cityoffrostproof.com/
+Florida,Lake County,Fruitland Park,http://www.fruitlandpark.org/
+Florida,Alachua County,Gainesville,http://www.gainesvillefl.gov
+Florida,Alachua County,Glen Ridge,https://www.townofglenridgefl.com/
+Florida,Alachua County,Glen St. Mary,https://glenstmary.govoffice.com/
+Florida,Alachua County,Golden Beach,http://www.goldenbeach.us
+Florida,Metrorail (Miami-Dade County),Golf,http://www.villageofgolf.org/
+Florida,Metrorail (Miami-Dade County),Grant-Valkaria,http://www.grantvalkaria.org/
+Florida,Clay County,Green Cove Springs,http://www.greencovesprings.com
+Florida,Palm Beach County,Greenacres,http://greenacresfl.gov/
+Florida,Palm Beach County,Greensboro,http://www.greensboro-fl.com
+Florida,Palm Beach County,Greenville,http://mygreenvillefl.com
+Florida,Palm Beach County,Greenwood,http://www.townofgreenwood.org/
+Florida,Palm Beach County,Gretna,http://mygretna.com
+Florida,Palm Beach County,Groveland,http://groveland-fl.gov/
+Florida,Santa Rosa County Library System,Gulf Breeze,http://www.cityofgulfbreeze.com
+Florida,Santa Rosa County Library System,Gulf Stream,https://www.gulf-stream.org/
+Florida,Pinellas County,Gulfport,http://www.mygulfport.us
+Florida,Polk County,Haines City,http://www.hainescity.com
+Florida,Broward County,Hallandale Beach,http://www.hallandalebeach.org/
+Florida,Broward County,Hampton,http://hamptonfl.com/
+Florida,Broward County,Havana,http://www.townofhavana.com
+Florida,Broward County,Haverhill,https://www.townofhaverhill-fl.gov
+Florida,Alachua County,Hawthorne,http://www.cityofhawthorne.net
+Florida,Alachua County,Hialeah,http://www.hialeahfl.gov
+Florida,Metrorail (Miami-Dade County),Hialeah Gardens,http://www.cityofhialeahgardens.com
+Florida,Alachua County,High Springs,http://highsprings.us
+Florida,Alachua County,Highland Beach,http://www.highlandbeach.us/
+Florida,Polk County,Highland Park,http://www.highlandpark-fl.org/
+Florida,Polk County,Hillcrest Heights,http://www.townofhillcrestheights.com/
+Florida,Polk County,Hilliard,http://www.townofhilliard.com/
+Florida,Broward County,Hillsboro Beach,http://www.townofhillsborobeach.com
+Florida,Broward County,Holly Hill,https://www.hollyhillfl.org
+Florida,Broward County,Hollywood,http://www.hollywoodfl.org/
+Florida,Manatee County,Holmes Beach,http://holmesbeachfl.org
+Florida,Manatee County,Homestead,http://www.cityofhomestead.com
+Florida,Metrorail (Miami-Dade County),Howey-in-the-Hills,http://www.howey.org
+Florida,Metrorail (Miami-Dade County),Hypoluxo,http://www.hypoluxo.org/
+Florida,Metrorail (Miami-Dade County),Indialantic,http://www.indialantic.com/
+Florida,Metrorail (Miami-Dade County),Indian Creek,http://indiancreekvillagefl.gov
+Florida,Metrorail (Miami-Dade County),Indian Harbour Beach,http://www.indianharbourbeach.org
+Florida,Metrorail (Miami-Dade County),Indian River Shores,http://irshores.com
+Florida,Metrorail (Miami-Dade County),Indian Rocks Beach,http://www.indian-rocks-beach.com
+Florida,Metrorail (Miami-Dade County),Indian Shores,http://www.myindianshores.com/
+Florida,Metrorail (Miami-Dade County),Indiantown,http://www.indiantownfl.gov
+Florida,Metrorail (Miami-Dade County),Inglis,http://townofinglis.org
+Florida,Metrorail (Miami-Dade County),Interlachen,http://www.interlachen-fl.gov
+Florida,Metrorail (Miami-Dade County),Inverness,https://inverness-fl.gov/
+Florida,Metrorail (Miami-Dade County),Islamorada,http://www.islamorada.fl.us
+Florida,Duval County,Jacksonville,http://www.coj.net
+Florida,Duval County,Jacksonville Beach,http://www.jacksonvillebeach.org
+Florida,Duval County,Jacob City,http://www.jacobcityfl.org
+Florida,Duval County,Jasper,http://jasperflonline.com
+Florida,Duval County,Jay,http://www.townofjayfl.com/
+Florida,Duval County,Juno Beach,https://www.juno-beach.fl.us/
+Florida,File:Flag of Palm Beach County,Jupiter,http://jupiter.fl.us/
+Florida,File:Flag of Palm Beach County,Jupiter Inlet Colony,http://www.jupiterinletcolony.org/
+Florida,File:Flag of Palm Beach County,Jupiter Island,http://townofjupiterisland.com
+Florida,Pinellas County,Kenneth City,https://www.kennethcityfl.org/
+Florida,Pinellas County,Key Biscayne,http://www.keybiscayne.fl.gov
+Florida,Metrorail (Miami-Dade County),Key Colony Beach,http://www.keycolonybeach.net
+Florida,Monroe County,Key West,http://www.cityofkeywest-fl.gov
+Florida,Clay County,Keystone Heights,https://www.keystoneheights.us/
+Florida,Clay County,Kissimmee,https://www.kissimmee.gov/
+Florida,Hendry County,LaBelle,http://www.citylabelle.com
+Florida,Hendry County,LaCrosse,http://townoflacrosse.net
+Florida,Hendry County,Lady Lake,https://www.ladylake.org/
+Florida,Polk County,Lake Alfred,http://mylakealfred.com/
+Florida,Union County,Lake Butler,http://www.cityoflakebutler.org/
+Florida,Columbia County,Lake City,http://www.lcfla.com
+Florida,Columbia County,Lake Clarke Shores,https://www.townoflcs.com/
+Florida,Polk County,Lake Hamilton,http://www.townoflakehamilton.com/
+Florida,Polk County,Lake Helen,http://www.lakehelen.org/
+Florida,Polk County,Lake Mary,http://www.lakemaryfl.com/
+Florida,Polk County,Lake Park,https://www.lakeparkflorida.gov/
+Florida,Highlands County,Lake Placid,http://www.lakeplacidfl.net
+Florida,Polk County,Lake Wales,http://www.cityoflakewales.com
+Florida,Palm Beach County,Lake Worth Beach,https://www.lakeworthbeachfl.gov/
+Florida,Polk County,Lakeland,https://www.lakelandgov.net/
+Florida,File:Flag of Palm Beach County,Lantana,https://www.lantana.org/
+Florida,Pinellas County,Largo,http://www.largo.com
+Florida,File:Logo of Broward County,Lauderdale Lakes,http://www.lauderdalelakes.org
+Florida,Broward County,Lauderdale-by-the-Sea,http://www.lauderdalebythesea-fl.gov/
+Florida,File:Logo of Broward County,Lauderhill,http://www.lauderhill-fl.gov/
+Florida,File:Logo of Broward County,Lawtey,http://www.lawtey-fl.com
+Florida,File:Logo of Broward County,Layton,http://www.cityoflayton.com
+Florida,Broward County,Lazy Lake,http://lazylakefl.us/
+Florida,Broward County,Lee,http://www.leeflorida.org
+Florida,Broward County,Leesburg,https://www.leesburgflorida.gov/
+Florida,File:Logo of Broward County,Lighthouse Point,http://www.lighthousepoint.com
+Florida,File:Logo of Broward County,Live Oak,http://www.cityofliveoak.org/
+Florida,Sarasota County,Longboat Key,http://www.longboatkey.org
+Florida,Sarasota County,Longwood,http://www.longwoodfl.org/
+Florida,Palm Beach County,Loxahatchee Groves,https://www.loxahatcheegrovesfl.gov/
+Florida,Palm Beach County,Lynn Haven,http://www.cityoflynnhaven.com
+Florida,Palm Beach County,Macclenny,http://www.cityofmacclenny.com
+Florida,Palm Beach County,Madeira Beach,http://www.madeirabeachfl.gov
+Florida,Palm Beach County,Madison,http://www.cityofmadisonfl.com
+Florida,Palm Beach County,Maitland,https://www.itsmymaitland.org/
+Florida,Brevard County,Malabar,http://www.townofmalabar.org/
+Florida,Palm Beach County,Manalapan,http://www.manalapan.org/
+Florida,Palm Beach County,Mangonia Park,https://tompfl.com/
+Florida,File:Seal of Monroe County,Marathon,http://www.ci.marathon.fl.us
+Florida,Collier County,Marco Island,http://www.cityofmarcoisland.com/
+Florida,Broward County,Margate,http://www.margatefl.com/
+Florida,Broward County,Marianna,http://www.cityofmarianna.com
+Florida,Flagler County,Mary Esther,http://cityofmaryesther.com/
+Florida,Flagler County,Mascotte,https://www.cityofmascotte.com/
+Florida,Flagler County,McIntosh,http://www.townofmcintosh.org
+Florida,Flagler County,Medley,http://www.townofmedley.com
+Florida,Brevard County,Melbourne,http://www.melbourneflorida.org/
+Florida,Brevard County,Melbourne Beach,http://www.melbournebeachfl.org/
+Florida,Brevard County,Melbourne Village,http://www.melbournevillage.org/
+Florida,Bay County,Mexico Beach,http://mexicobeachgov.com/
+Florida,Metrorail (Miami-Dade County),Miami Beach,https://www.miamibeachfl.gov/
+Florida,Miami-Dade County,Miami Gardens,http://www.miamigardens-fl.gov/
+Florida,Metrorail (Miami-Dade County),Miami Lakes,http://miamilakes-fl.gov
+Florida,Metrorail (Miami-Dade County),Miami Shores,http://www.msvfl.gov
+Florida,Metrorail (Miami-Dade County),Miami Springs,http://www.miamisprings-fl.gov
+Florida,Metrorail (Miami-Dade County),Micanopy,http://www.micanopytown.com
+Florida,Gadsden County,Midway,http://www.mymidwayfl.com
+Florida,Gadsden County,Milton,http://www.ci.milton.fl.us/
+Florida,Gadsden County,Minneola,http://www.minneola.us/
+Florida,Broward County,Miramar,http://www.miramarfl.gov
+Florida,Broward County,Monticello,http://www.cityofmonticello.us
+Florida,Broward County,Montverde,http://www.mymontverde.com
+Florida,Broward County,Moore Haven,http://www.moorehaven.org
+Florida,Broward County,Mount Dora,http://www.ci.mount-dora.fl.us
+Florida,Polk County,Mulberry,https://www.cityofmulberryfl.org/
+Florida,Collier County,Naples,http://www.naplesgov.com
+Florida,Duval County,Neptune Beach,http://ci.neptune-beach.fl.us
+Florida,Pasco County,New Port Richey,http://www.cityofnewportrichey.org/
+Florida,Volusia County,New Smyrna Beach,http://www.cityofnsb.com
+Florida,Alachua County,Newberry,https://www.newberryfl.gov
+Florida,Alachua County,Niceville,https://www.cityofniceville.org/
+Florida,Alachua County,North Bay Village,https://northbayvillage-fl.gov
+Florida,File:Logo of Broward County,North Lauderdale,http://www.nlauderdale.org
+Florida,File:Logo of Broward County,North Miami,http://www.northmiamifl.gov
+Florida,Miami-Dade County,North Miami Beach,http://www.citynmb.com
+Florida,File:Flag of Palm Beach County,North Palm Beach,http://www.village-npb.org/
+Florida,File:Flag of Palm Beach County,North Port,http://cityofnorthport.com
+Florida,File:Flag of Palm Beach County,North Redington Beach,http://www.townofnorthredingtonbeach.com/
+Florida,File:Flag of Palm Beach County,Oak Hill,http://www.oakhillfl.com
+Florida,File:Flag of Palm Beach County,Oakland,http://www.oaklandfl.gov
+Florida,Broward County,Oakland Park,http://www.oaklandparkfl.gov
+Florida,Marion County,Ocala,http://www.ocalafl.org
+Florida,Marion County,Ocean Breeze,http://townofoceanbreeze.org
+Florida,Marion County,Ocean Ridge,http://www.oceanridgeflorida.com/
+Florida,Marion County,Ocoee,http://www.ocoee.org
+Florida,Okeechobee County,Okeechobee,http://www.cityofokeechobee.com
+Florida,Okeechobee County,Oldsmar,http://www.myoldsmar.com
+Florida,Miami-Dade County,Opa-locka,http://www.opalockafl.gov
+Florida,Volusia County,Orange City,https://www.orangecityfl.gov
+Florida,Volusia County,Orange Park,http://www.townoforangepark.com
+Florida,Orange County,Orlando,http://www.orlando.gov
+Florida,Orange County,Ormond Beach,http://www.ormondbeach.org/
+Florida,Seminole County,Oviedo,http://www.cityofoviedo.net/
+Florida,Palm Beach County,Pahokee,http://cityofpahokee.com/Pages/index
+Florida,Putnam County,Palatka,http://palatka-fl.gov
+Florida,Putnam County,Palm Bay,http://www.palmbayflorida.org/
+Florida,Putnam County,Palm Beach,https://townofpalmbeach.com/
+Florida,Palm Beach County,Palm Beach Gardens,http://www.pbgfl.com
+Florida,Palm Beach County,Palm Beach Shores,http://www.palmbeachshoresfl.us/
+Florida,Flagler County,Palm Coast,https://www.palmcoast.gov
+Florida,Flagler County,Palm Shores,http://www.townofpalmshores.org/
+Florida,Flagler County,Palm Springs,https://www.vpsfl.org/
+Florida,Manatee County,Palmetto,http://palmettofl.org
+Florida,Manatee County,Palmetto Bay,http://www.palmettobay-fl.gov
+Florida,Metrorail (Miami-Dade County),Panama City,http://www.pcgov.org/
+Florida,Bay County,Panama City Beach,http://www.pcbgov.com
+Florida,Bay County,Parker,http://www.cityofparker.com
+Florida,File:Logo of Broward County,Parkland,http://www.cityofparkland.org
+Florida,File:Logo of Broward County,Paxton,http://paxtonfl.net/
+Florida,Broward County,Pembroke Park,http://www.townofpembrokepark.com
+Florida,Broward County,Pembroke Pines,http://www.ppines.com/
+Florida,Broward County,Penney Farms,http://www.penneyfarmsfl.govoffice2.com
+Florida,Escambia County,Pensacola,http://www.cityofpensacola.com
+Florida,Escambia County,Perry,https://cityofperry.net/
+Florida,Volusia County,Pierson,http://www.townofpierson.org
+Florida,Volusia County,Pinecrest,http://pinecrest-fl.gov
+Florida,Pinellas County,Pinellas Park,https://www.pinellas-park.com
+Florida,Pinellas County,Plant City,http://www.plantcitygov.com
+Florida,Broward County,Plantation,http://www.plantation.org
+Florida,Polk County,Polk City,http://www.mypolkcity.org/
+Florida,Polk County,Pomona Park,http://pomonapark.com/
+Florida,Broward County,Pompano Beach,http://pompanobeachfl.gov
+Florida,Broward County,Ponce de Leon,http://www.poncedeleonfl.com
+Florida,Broward County,Ponce Inlet,http://ponce-inlet.org/
+Florida,Broward County,Port Orange,http://www.port-orange.org
+Florida,Pasco County,Port Richey,https://cityofportrichey.com/
+Florida,Pasco County,Port St. Joe,http://www.cityofportstjoe.com
+Florida,St. Lucie County,Port St. Lucie,https://www.cityofpsl.com/
+Florida,Charlotte County,Punta Gorda,http://www.ci.punta-gorda.fl.us
+Florida,Gadsden County,Quincy,http://www.myquincy.net
+Florida,Lake Butler,Reddick,http://www.townofreddick.com
+Florida,Lake Butler,Redington Beach,https://www.townofredingtonbeach.com/
+Florida,Lake Butler,Redington Shores,https://townofredingtonshores.com/
+Florida,Palm Beach County,Riviera Beach,http://rivierabch.com/
+Florida,Palm Beach County,Rockledge,http://www.cityofrockledge.org/
+Florida,File:Flag of Palm Beach County,Royal Palm Beach,http://www.royalpalmbeach.com/
+Florida,Pinellas County,Safety Harbor,http://www.cityofsafetyharbor.com
+Florida,Pasco County,San Antonio,http://www.sanantonioflorida.org/
+Florida,Seminole County,Sanford,http://sanfordfl.gov
+Florida,Seminole County,Sanibel,http://www.mysanibel.com
+Florida,Sarasota County,Sarasota,http://www.sarasotafl.gov
+Florida,Sarasota County,Satellite Beach,http://www.satellitebeachfl.org/
+Florida,Indian River County,Sebastian,http://www.cityofsebastian.org/
+Florida,Highlands County,Sebring,http://www.mysebring.com
+Florida,Highlands County,Seminole,http://www.myseminole.com
+Florida,Highlands County,Sewall's Point,http://sewallspoint.org
+Florida,Okaloosa County,Shalimar,http://www.shalimarflorida.org
+Florida,Okaloosa County,Sneads,http://www.sneadsfl.com/
+Florida,Okaloosa County,Sopchoppy,http://www.sopchoppy.org/
+Florida,Palm Beach County,South Bay,http://www.southbaycity.com
+Florida,Palm Beach County,South Daytona,https://www.southdaytona.org/
+Florida,Palm Beach County,South Miami,http://www.southmiamifl.gov
+Florida,Metrorail (Miami-Dade County),South Palm Beach,http://www.southpalmbeach.com/
+Florida,Metrorail (Miami-Dade County),South Pasadena,http://mysouthpasadena.com/
+Florida,File:Logo of Broward County,Southwest Ranches,http://southwestranches.org
+Florida,File:Logo of Broward County,Springfield,http://springfield.fl.gov
+Florida,File:Logo of Broward County,St. Augustine,http://www.ci.st-augustine.fl.us/
+Florida,File:Logo of Broward County,St. Augustine Beach,http://www.staugbch.com
+Florida,Osceola County,St. Cloud,http://www.stcloud.org
+Florida,Pasco County,St. Leo,http://www.townofstleo.org
+Florida,Pasco County,St. Lucie Village,https://stlucievillagefl.gov/
+Florida,Pasco County,St. Marks,http://www.cityofstmarks.com/
+Florida,Pasco County,St. Pete Beach,http://www.stpetebeach.org
+Florida,Pinellas County,St. Petersburg,https://www.stpete.org/
+Florida,Pinellas County,Starke,http://www.cityofstarke.org
+Florida,Martin County,Stuart,http://cityofstuart.us
+Florida,Martin County,Sunny Isles Beach,http://www.sibfl.net
+Florida,File:Logo of Broward County,Sunrise,http://www.sunrisefl.gov
+Florida,File:Logo of Broward County,Surfside,https://www.townofsurfsidefl.gov/
+Florida,Metrorail (Miami-Dade County),Sweetwater,http://www.cityofsweetwater.fl.gov
+Florida,Leon County,Tallahassee,http://www.talgov.com
+Florida,Broward County,Tamarac,http://www.tamarac.org
+Florida,Hillsborough County,Tampa,https://www.tampa.gov/
+Florida,Pinellas County,Tarpon Springs,http://www.ctsfl.us
+Florida,Pinellas County,Tavares,http://www.tavares.org
+Florida,Pinellas County,Temple Terrace,http://www.templeterrace.com
+Florida,Palm Beach County,Tequesta,http://www.tequesta.org/
+Florida,Palm Beach County,Titusville,http://www.titusville.com
+Florida,Pinellas County,Treasure Island,http://www.mytreasureisland.org
+Florida,Pinellas County,Trenton,http://www.trentonflorida.org
+Florida,Pinellas County,Umatilla,http://www.umatillafl.org
+Florida,Pinellas County,Valparaiso,http://www.valp.org/
+Florida,Sarasota County,Venice,https://www.venicegov.com
+Florida,Sarasota County,Vernon,http://vernonflorida.net/
+Florida,Indian River County,Vero Beach,http://www.covb.org
+Florida,Miami-Dade County,Virginia Gardens,https://www.virginiagardens-fl.gov
+Florida,Metrorail (Miami-Dade County),Waldo,http://waldo-fl.com
+Florida,Metrorail (Miami-Dade County),Wauchula,http://cityofwauchula.com
+Florida,Metrorail (Miami-Dade County),Webster,http://www.websterfl.com/
+Florida,Metrorail (Miami-Dade County),Welaka,https://www.welaka-fl.gov/
+Florida,File:Flag of Palm Beach County,Wellington,http://wellingtonfl.gov/
+Florida,Palm Beach County,West Melbourne,http://www.westmelbourne.org/
+Florida,Palm Beach County,West Miami,http://www.cityofwestmiamifl.com
+Florida,Palm Beach County,West Palm Beach,http://wpb.org/
+Florida,File:Logo of Broward County,West Park,https://www.cityofwestpark.org/
+Florida,Palm Beach County,Westlake,https://www.westlakegov.com/
+Florida,File:Logo of Broward County,Weston,http://www.westonfl.org
+Florida,File:Logo of Broward County,Wewahitchka,http://cityofwewahitchka.com
+Florida,File:Logo of Broward County,White Springs,http://www.whitesprings.org
+Florida,File:Logo of Broward County,Wildwood,https://www.wildwood-fl.gov/
+Florida,File:Logo of Broward County,Williston,http://www.willistonfl.org/
+Florida,File:Logo of Broward County,Wilton Manors,http://www.wiltonmanors.com
+Florida,File:Logo of Broward County,Windermere,http://www.town.windermere.fl.us
+Florida,File:Logo of Broward County,Winter Garden,http://www.cwgdn.com
+Florida,Polk County,Winter Haven,http://www.mywinterhaven.com
+Florida,Orange County,Winter Park,http://cityofwinterpark.org
+Florida,Orange County,Winter Springs,http://www.winterspringsfl.org/
+Florida,Lake Butler,Yankeetown,http://yankeetownfl.govoffice2.com
+Florida,Pasco County,Zephyrhills,http://www.ci.zephyrhills.fl.us/
+Florida,Pasco County,Zolfo Springs,http://www.townofzolfo.com
+Georgia,Wilcox County,Abbeville,http://www.abbevillegeorgia.org
+Georgia,Cobb County,Acworth,http://www.acworth.org
+Georgia,Bartow County,Adairsville,http://www.adairsvillega.net
+Georgia,Cook County,Adel,http://www.cityofadel.us
+Georgia,Johnson County,Adrian,https://cityofadrianga.org/
+Georgia,Dougherty County,Albany,http://www.albanyga.gov
+Georgia,Wilkinson County,Allentown,http://cityofallentownga.org
+Georgia,Bacon County,Alma,http://www.cityofalmaga.gov
+Georgia,Fulton County,Alpharetta,https://www.alpharetta.ga.us/
+Georgia,Habersham County,Alto,http://townofaltoga.org
+Georgia,Sumter County,Americus,http://www.cityofamericus.net
+Georgia,Sumter County,Andersonville,http://andersonvillegeorgia.info
+Georgia,Crisp County,Arabi,http://cityofarabi.com
+Georgia,Jackson County,Arcade,http://cityofarcade.org
+Georgia,Turner County,Ashburn,https://www.cityofashburn.net
+Georgia,Clarke County,Athens,http://www.athensclarkecounty.com/
+Georgia,Decatur County,Attapulgus,http://georgiainfo.galileo.usg.edu/topics/historical_markers/county/decatur/attapulgus
+Georgia,Barrow County,Auburn,http://www.cityofauburn-ga.org
+Georgia,Richmond County,Augusta,http://www.augustaga.gov
+Georgia,Cobb County,Austell,http://www.austellga.gov
+Georgia,DeKalb County,Avondale Estates,https://www.avondaleestates.org/
+Georgia,Mitchell County,Baconton,http://www.cityofbacontonga.com
+Georgia,Decatur County,Bainbridge,http://bainbridgecity.com
+Georgia,Habersham County,Baldwin,http://www.cityofbaldwin.org
+Georgia,Cherokee County,Ball Ground,http://cityofballground.com
+Georgia,Lamar County,Barnesville,http://www.cityofbarnesville.com
+Georgia,Thomas County,Barwick,http://www.cityofbarwick.org
+Georgia,Appling County,Baxley,http://www.baxley.org
+Georgia,Evans County,Bellville,http://georgiainfo.galileo.usg.edu/topics/historical_markers/county/evans/bellville
+Georgia,Gwinnett County,Berkeley Lake,http://www.berkeley-lake.com
+Georgia,Colquitt County,Berlin,https://cityofberlinga.com
+Georgia,Barrow County,Bethlehem,http://www.bethlehemga.org
+Georgia,Oconee County,Bishop,http://www.townofbishop.org
+Georgia,Pierce County,Blackshear,http://blackshearga.com
+Georgia,Union County,Blairsville,http://www.blairsville-ga.gov
+Georgia,Early County,Blakely,http://cityofblakely.net/
+Georgia,Chatham County,Bloomingdale,http://www.bloomingdale-ga.com
+Georgia,Fannin County,Blue Ridge,http://www.cityofblueridgega.gov
+Georgia,Richmond County,Blythe,http://cityofblythega.com/
+Georgia,Oconee County,Bogart,http://www.cityofbogart.com
+Georgia,Thomas County,Boston,http://www.bostonga.com/
+Georgia,Morgan County,Bostwick,http://bostwickga.com
+Georgia,Carroll County,Bowdon,http://www.bowdon.net/
+Georgia,Hart County,Bowersville,https://townofbowersville.com/
+Georgia,Elbert County,Bowman,http://www.cityofbowmanga.gov
+Georgia,Jackson County,Braselton,http://www.braselton.net
+Georgia,Haralson County,Bremen,http://www.bremenga.gov
+Georgia,Decatur County,Brinson,http://georgiainfo.galileo.usg.edu/topics/historical_markers/county/decatur/brinson-side-1
+Georgia,DeKalb County,Brookhaven,http://brookhavenga.gov
+Georgia,Fayette County,Brooks,http://www.brooksga.com
+Georgia,Coffee County,Broxton,http://www.cityofbroxton.com/
+Georgia,Glynn County,Brunswick,http://www.brunswickga.org
+Georgia,Haralson County,Buchanan,http://buchananga.com
+Georgia,Gwinnett County,Buford,http://www.cityofbuford.com
+Georgia,Taylor County,Butler,https://www.cityofbutlerga.com/
+Georgia,Peach County,Byron,http://byronga.com
+Georgia,Grady County,Cairo,http://www.syrupcity.net
+Georgia,Gordon County,Calhoun,http://www.cityofcalhoun-ga.com
+Georgia,Mitchell County,Camilla,http://www.camillaga.net
+Georgia,Franklin County,Canon,http://www.canongeorgia.com
+Georgia,Cherokee County,Canton,http://www.cantonga.gov
+Georgia,Barrow County,Carl,http://www.townofcarl.com
+Georgia,Carroll County,Carrollton,http://www.carrollton-ga.gov
+Georgia,Bartow County,Cartersville,http://www.cityofcartersville.org
+Georgia,Floyd County,Cave Spring,http://www.cityofcavespring.com
+Georgia,Polk County,Cedartown,http://cedartowngeorgia.gov/
+Georgia,Houston County,Centerville,http://www.centervillega.org
+Georgia,DeKalb County,Chamblee,http://www.chambleega.com/
+Georgia,Murray County,Chatsworth,http://www.chatsworthga.gov
+Georgia,Fulton County,Chattahoochee Hills,http://www.chatthillsga.us
+Georgia,Habersham County,Clarkesville,http://clarkesvillega.com
+Georgia,DeKalb County,Clarkston,http://www.clarkstonga.gov/
+Georgia,Evans County,Claxton,http://cityofclaxton.net/
+Georgia,Rabun County,Clayton,https://cityofclaytonga.gov/
+Georgia,Hall County,Clermont,http://www.clermontga.com
+Georgia,White County,Cleveland,http://www.cityofclevelandga.org
+Georgia,Bleckley County,Cochran,http://www.cityofcochran.com
+Georgia,Whitfield County,Cohutta,https://cohuttaga.com/
+Georgia,Madison County,Colbert,http://www.colbertgeorgia.com
+Georgia,Fulton County,College Park,http://www.collegeparkga.com
+Georgia,Tattnall County,Colquitt,http://www.colquittga.org
+Georgia,Muscogee County,Columbus,http://www.columbusga.gov
+Georgia,Madison County,Comer,http://www.cityofcomer.com
+Georgia,Jackson County,Commerce,http://www.commercega.org
+Georgia,Pike County,Concord,http://www.concordga.com/
+Georgia,Rockdale County,Conyers,http://www.conyersga.com/
+Georgia,Crisp County,Cordele,http://www.cityofcordele.com
+Georgia,Habersham County,Cornelia,http://corneliageorgia.org
+Georgia,Newton County,Covington,http://www.cityofcovington.org
+Georgia,Taliaferro County,Crawfordville,http://www.crawfordvillega.org/
+Georgia,Forsyth County,Cumming,http://www.cityofcumming.net
+Georgia,Chattahoochee County,Cusseta,http://cusseta.georgia.gov/
+Georgia,Gwinnett County,Dacula,http://daculaga.gov
+Georgia,Lumpkin County,Dahlonega,http://dahlonega-ga.gov
+Georgia,Paulding County,Dallas,https://www.dallasga.gov/
+Georgia,Whitfield County,Dalton,http://www.cityofdalton-ga.gov/
+Georgia,Madison County,Danielsville,http://www.danielsvillega.com
+Georgia,Twiggs County,Danville,http://cityofdanvillega.com/
+Georgia,McIntosh County,Darien,http://www.cityofdarienga.com
+Georgia,Lowndes County,Dasher,http://www.dasherga.com
+Georgia,Dawson County,Dawsonville,http://www.dawsonville-ga.gov
+Georgia,DeKalb County,Decatur,http://decaturga.com
+Georgia,Habersham County,Demorest,http://www.cityofdemorest.org
+Georgia,Rabun County,Dillard,http://www.dillardgeorgia.com
+Georgia,Colquitt County,Doerun,http://www.cityofdoerun.com
+Georgia,Seminole County,Donalsonville,http://www.donalsonvillega.org/
+Georgia,DeKalb County,Doraville,http://doravillega.us
+Georgia,Coffee County,Douglas,http://www.cityofdouglas.com
+Georgia,Douglas County,Douglasville,http://www.douglasvillega.gov
+Georgia,Laurens County,Dublin,http://www.cityofdublin.org
+Georgia,Gwinnett County,Duluth,http://www.duluthga.net
+Georgia,DeKalb County,Dunwoody,http://dunwoodyga.gov
+Georgia,Laurens County,East Dublin,http://cityofeastdublin.org
+Georgia,Fulton County,East Point,http://www.eastpointcity.org
+Georgia,Dodge County,Eastman,http://cityofeastman.com
+Georgia,Putnam County,Eatonton,http://www.eatontonga.us/
+Georgia,Glascock County,Edge Hill,https://edgehillga.com/
+Georgia,Elbert County,Elberton,http://www.cityofelberton.net
+Georgia,Schley County,Ellaville,http://www.ellavillega.org/
+Georgia,Colquitt County,Ellenton,http://www.ellentonga.com/
+Georgia,Gilmer County,Ellijay,http://www.pickellijay.com
+Georgia,Bartow County,Emerson,http://www.cityofemerson.org
+Georgia,Murray County,Eton,http://www.etongeorgia.com
+Georgia,Bartow County,Euharlee,http://www.euharlee.com
+Georgia,Fulton County,Fairburn,http://www.fairburn.com/
+Georgia,Gordon County,Fairmount,http://fairmountga.gov
+Georgia,Fayette County,Fayetteville,http://www.fayetteville-ga.gov
+Georgia,Ben Hill County,Fitzgerald,http://www.fitzgeraldga.org
+Georgia,Liberty County,Flemington,http://cityofflemington.org
+Georgia,Butts County,Flovilla,http://cityofflovilla.org/
+Georgia,Hall County,Flowery Branch,https://www.flowerybranchga.org/
+Georgia,Charlton County,Folkston,http://www.folkston.com
+Georgia,Clayton County,Forest Park,http://forestparkga.org/
+Georgia,Monroe County,Forsyth,http://www.cityofforsyth.com
+Georgia,Clay County,Fort Gaines,http://www.fortgaines.com
+Georgia,Catoosa County,Fort Oglethorpe,http://www.fortogov.com
+Georgia,Peach County,Fort Valley,http://fortvalleyga.org/
+Georgia,Heard County,Franklin,http://www.FranklinGeorgia.com
+Georgia,Franklin County,Franklin Springs,https://www.cityoffranklinsprings.com/
+Georgia,Hall County,Gainesville,http://www.gainesville.org
+Georgia,Chatham County,Garden City,http://www.gardencityga.org
+Georgia,Meriwether County,Gay,https://gayga.gov
+Georgia,Hall County,Gillsville,http://gillsvillega.com/
+Georgia,Burke County,Girard,http://georgia.gov/cities-counties/girard
+Georgia,Tattnall County,Glennville,http://www.cityofglennville.com/
+Georgia,Walton County,Good Hope,https://goodhopega.com
+Georgia,Wilkinson County,Gordon,http://cityofgordonga.org/
+Georgia,Appling County,Graham,https://cityofgrahamga.com/
+Georgia,Coweta County,Grantville,http://www.grantvillega.org
+Georgia,Jones County,Gray,http://grayga.us
+Georgia,Gwinnett County,Grayson,http://www.cityofgrayson.org
+Georgia,Greene County,Greensboro,http://www.greensboroga.gov
+Georgia,Meriwether County,Greenville,http://www.cityofgreenvillega.com
+Georgia,Spalding County,Griffin,http://www.cityofgriffin.com/
+Georgia,Columbia County,Grovetown,http://cityofgrovetown.com
+Georgia,Effingham County,Guyton,http://www.cityofguyton.com
+Georgia,Lowndes County,Hahira,http://www.hahiraga.gov
+Georgia,Harris County,Hamilton,http://hamiltoncityhall.net
+Georgia,Henry County,Hampton,http://hamptonga.gov
+Georgia,Fulton County,Hapeville,http://www.hapeville.org/
+Georgia,Columbia County,Harlem,http://harlemga.org
+Georgia,Hart County,Hartwell,http://www.hartwell-ga.info
+Georgia,Pulaski County,Hawkinsville,https://hawkinsville-pulaski.org/
+Georgia,Jeff Davis County,Hazlehurst,http://www.hazlehurstga.gov
+Georgia,White County,Helen,https://www.cityofhelen.org/
+Georgia,Towns County,Hiawassee,http://hiawasseega.gov/
+Georgia,Liberty County,Hinesville,http://www.cityofhinesville.org
+Georgia,Paulding County,Hiram,http://www.cityofhiramga.gov/
+Georgia,Troup County,Hogansville,http://www.cityofhogansville.org/
+Georgia,Cherokee County,Holly Springs,http://www.hollyspringsga.us
+Georgia,Clinch County,Homerville,http://www.cityofhomerville.com/
+Georgia,Jackson County,Hoschton,http://www.cityofhoschton.com
+Georgia,Butts County,Jackson,http://www.cityofjacksonga.com
+Georgia,Early County,Jakin,http://www.ircusa.com/jakin/
+Georgia,Pickens County,Jasper,https://www.jasper-ga.us/
+Georgia,Jackson County,Jefferson,http://www.cityofjeffersonga.com
+Georgia,Twiggs County,Jeffersonville,https://cityofjeffersonville.org/
+Georgia,Butts County,Jenkinsburg,http://www.cityofjenkinsburg.com
+Georgia,Wayne County,Jesup,http://www.jesupga.gov/
+Georgia,Fulton County,Johns Creek,http://www.johnscreekga.gov
+Georgia,Clayton County,Jonesboro,http://jonesboroga.com
+Georgia,Cobb County,Kennesaw,http://www.kennesaw-ga.gov
+Georgia,Burke County,Keysville,http://keysvillega.org
+Georgia,Camden County,Kingsland,http://www.visitkingsland.com/
+Georgia,Bartow County,Kingston,http://www.cityofkingstonga.org
+Georgia,Johnson County,Kite,http://kite.georgia.gov/
+Georgia,Walker County,LaFayette,http://cityoflafayettega.org
+Georgia,Troup County,LaGrange,http://www.lagrange-ga.org/
+Georgia,Clayton County,Lake City,http://www.lakecityga.net
+Georgia,Lowndes County,Lake Park,http://cityoflakeparkga.com
+Georgia,Franklin County,Lavonia,https://www.lavoniaga.gov
+Georgia,Gwinnett County,Lawrenceville,http://www.lawrencevillega.org
+Georgia,Lee County,Leesburg,http://cityofleesburgga.com
+Georgia,Cook County,Lenox,https://www.cityoflenox.municipalimpact.com/
+Georgia,Oglethorpe County,Lexington,https://lexingtonga.org/
+Georgia,Gwinnett County,Lilburn,http://www.cityoflilburn.com
+Georgia,DeKalb County,Lithonia,http://cityoflithoniaga.org
+Georgia,Henry County,Locust Grove,http://www.locustgrove-ga.gov
+Georgia,Walton County,Loganville,http://www.loganville-ga.gov
+Georgia,Walker County,Lookout Mountain,https://www.lookoutmtnga.com/
+Georgia,Jefferson County,Louisville,http://cityoflouisvillegeorgia.com
+Georgia,Clayton County,Lovejoy,http://www.cityoflovejoy.com
+Georgia,Hall County,Lula,https://www.cityoflula.com/
+Georgia,Stewart County,Lumpkin,http://cityoflumpkin.org/
+Georgia,Chattooga County,Lyerly,http://www.townoflyerly.com
+Georgia,Toombs County,Lyons,https://lyonsga.org/
+Georgia,Bibb County,Macon,http://maconbibb.us/
+Georgia,Morgan County,Madison,http://madisonga.com
+Georgia,Meriwether County,Manchester,http://manchester-ga.gov
+Georgia,Newton County,Mansfield,http://www.mansfieldga.gov/
+Georgia,Cobb County,Marietta,http://www.mariettaga.gov
+Georgia,Macon County,Marshallville,http://www.cityofmarshallville.org
+Georgia,Stephens County,Martin,http://www.townofmartin.com
+Georgia,Banks County,Maysville,http://cityofmaysvillega.org
+Georgia,Fannin County,McCaysville,http://cityofmccaysvillega.gov
+Georgia,Henry County,McDonough,http://www.mcdonoughga.org
+Georgia,Wilkinson County,McIntyre,http://www.mcintyrega.com/
+Georgia,Telfair County,McRae–Helena,http://mcrae-helena.org
+Georgia,Candler County,Metter,http://www.metter-candler.com
+Georgia,Liberty County,Midway,http://historicmidway.com
+Georgia,Baldwin County,Milledgeville,http://milledgevillega.us
+Georgia,Lamar County,Milner,http://milnerga.com
+Georgia,Fulton County,Milton,http://www.cityofmiltonga.us
+Georgia,Glascock County,Mitchell,https://mitchellgeorgia.com/
+Georgia,Walton County,Monroe,http://www.monroega.com/
+Georgia,Macon County,Montezuma,http://www.montezuma-ga.org
+Georgia,Jasper County,Monticello,http://www.monticelloga.org
+Georgia,Coweta County,Moreland,http://morelandgausa.com/
+Georgia,Clayton County,Morrow,http://cityofmorrow.com
+Georgia,Brooks County,Morven,http://georgia.gov/cities-counties/morven
+Georgia,Colquitt County,Moultrie,http://www.moultriega.com/
+Georgia,Habersham County,Mount Airy,http://townofmtairy.com
+Georgia,Montgomery County,Mount Vernon,http://mtvernonga.org
+Georgia,Carroll County,Mount Zion,http://www.cityofmountzion.com
+Georgia,Fulton County,Mountain Park,http://mountainparkgov.com/
+Georgia,Berrien County,Nashville,http://www.cityofnashvillega.net
+Georgia,Newton County,Newborn,http://newbornga.com
+Georgia,Screven County,Newington,https://www.newingtonga.com/
+Georgia,Coweta County,Newnan,http://newnanga.gov
+Georgia,Jackson County,Nicholson,http://nicholson-ga.com
+Georgia,Gwinnett County,Norcross,http://www.norcrossga.net
+Georgia,Colquitt County,Norman Park,https://normanparkga.gov/
+Georgia,Oconee County,North High Shoals,http://northhighshoals.org/
+Georgia,Emanuel County,Oak Park,http://www.oakparkga.org
+Georgia,Hall County,Oakwood,http://www.cityofoakwood.net
+Georgia,Irwin County,Ocilla,http://www.cityofocillaga.net/
+Georgia,Wayne County,Odum,http://odumgeorgia.com/
+Georgia,Macon County,Oglethorpe,http://www.cityofoglethorpe.com
+Georgia,Newton County,Oxford,https://oxfordgeorgia.org/
+Georgia,Fulton County,Palmetto,http://www.citypalmetto.com
+Georgia,Terrell County,Parrott,http://www.parrottga.com
+Georgia,Pierce County,Patterson,https://thecityofpatterson.com/
+Georgia,Thomas County,Pavo,http://cityofpavo.com/
+Georgia,Fayette County,Peachtree City,http://www.peachtree-city.org
+Georgia,Gwinnett County,Peachtree Corners,http://peachtreecornersga.gov
+Georgia,Atkinson County,Pearson,http://www.pearson-ga.com
+Georgia,Mitchell County,Pelham,http://cityofpelhamga.com
+Georgia,Bryan County,Pembroke,https://www.pembrokega.net/
+Georgia,Jackson County,Pendergrass,http://cityofpendergrass.com
+Georgia,Houston County,Perry,http://www.perry-ga.gov
+Georgia,DeKalb County,Pine Lake,https://www.pinelakega.net/
+Georgia,Harris County,Pine Mountain,http://pinemountainga.org
+Georgia,Dooly County,Pinehurst,https://cityofpinehurstga.com/
+Georgia,Sumter County,Plains,http://www.plainsgeorgia.org/
+Georgia,Gordon County,Plainville,https://plainvillega.com/
+Georgia,Chatham County,Pooler,http://pooler-ga.gov
+Georgia,Chatham County,Port Wentworth,http://www.cityofportwentworth.com
+Georgia,Newton County,Porterdale,http://www.cityofporterdale.com/
+Georgia,Worth County,Poulan,http://www.cityofpoulan.com/
+Georgia,Cobb County,Powder Springs,http://www.cityofpowdersprings.org
+Georgia,Candler County,Pulaski,http://georgiainfo.galileo.usg.edu/topics/historical_markers/county/candler/pulaski-georgia
+Georgia,Brooks County,Quitman,http://www.cityofquitmanga.com
+Georgia,Tattnall County,Reidsville,https://cityofreidsvillega.com/
+Georgia,Lowndes County,Remerton,http://cityofremerton.com/
+Georgia,Taylor County,Reynolds,http://reynoldsga.com/
+Georgia,Liberty County,Riceboro,https://www.cityofriceboro.org/
+Georgia,Bryan County,Richmond Hill,http://www.richmondhill-ga.gov
+Georgia,Effingham County,Rincon,http://www.cityofrincon.com
+Georgia,Catoosa County,Ringgold,http://www.cityofringgoldga.gov
+Georgia,Clayton County,Riverdale,http://www.riverdalega.gov
+Georgia,Crawford County,Roberta,http://cityofroberta.com
+Georgia,Polk County,Rockmart,http://www.rockmart-ga.gov/
+Georgia,Floyd County,Rome,https://romega.gov/
+Georgia,Walker County,Rossville,http://www.rossvillegagov.us/
+Georgia,Fulton County,Roswell,http://www.roswellgov.com
+Georgia,Franklin County,Royston,http://cityofroyston.com
+Georgia,Morgan County,Rutledge,http://www.rutledgega.us
+Georgia,Washington County,Sandersville,http://www.sandersville.net/
+Georgia,Fulton County,Sandy Springs,http://www.sandyspringsga.gov
+Georgia,Chatham County,Savannah,http://www.savannahga.gov/
+Georgia,Wayne County,Screven,http://www.cityofscreven.com/
+Georgia,Coweta County,Senoia,http://www.senoia.com
+Georgia,Coweta County,Sharpsburg,http://www.townofsharpsburg.com/
+Georgia,Rabun County,Sky Valley,http://www.skyvalleyga.com/
+Georgia,Lee County,Smithville,https://georgia.gov/cities-counties/smithville
+Georgia,Cobb County,Smyrna,http://www.smyrnaga.gov
+Georgia,Gwinnett County,Snellville,http://www.snellville.org
+Georgia,Walton County,Social Circle,https://socialcirclega.gov/visitors/welcome/
+Georgia,Treutlen County,Soperton,http://www.soperton-treutlen.org/soperton.html
+Georgia,Fulton County,South Fulton,http://cityofsouthfultonga.gov/
+Georgia,Hancock County,Sparta,https://www.cityofsparta.org/
+Georgia,Effingham County,Springfield,http://www.cityofspringfield.com/
+Georgia,Camden County,St. Marys,http://www.stmarysga.gov/
+Georgia,Bulloch County,Statesboro,http://www.statesboroga.gov
+Georgia,Barrow County,Statham,http://www.cityofstatham.com
+Georgia,Henry County,Stockbridge,http://www.cityofstockbridge.com
+Georgia,DeKalb County,Stone Mountain,http://www.stonemountaincity.org/
+Georgia,DeKalb County,Stonecrest,https://www.stonecrestga.gov/
+Georgia,Gwinnett County,Sugar Hill,http://www.cityofsugarhill.com
+Georgia,Chattooga County,Summerville,http://www.summervillega.org/
+Georgia,Gwinnett County,Suwanee,http://www.suwanee.com
+Georgia,Emanuel County,Swainsboro,http://cityofswainsboro.org
+Georgia,Turner County,Sycamore,https://www.sycamorega.com
+Georgia,Screven County,Sylvania,http://www.citysylvaniaga.net/
+Georgia,Worth County,Sylvester,http://www.cityofsylvester.com/
+Georgia,Talbot County,Talbotton,https://talbottonga.org/
+Georgia,Pickens County,Talking Rock,http://talkingrockga.com/
+Georgia,Haralson County,Tallapoosa,http://tallapoosaga.gov
+Georgia,Rabun County,Tallulah Falls,http://www.tallulahfallsga.gov/
+Georgia,Jackson County,Talmo,http://www.city-data.com/city/Talmo-Georgia.html
+Georgia,Carroll County,Temple,http://www.templega.us
+Georgia,Washington County,Tennille,https://www.tennille-ga.gov/
+Georgia,Upson County,Thomaston,http://www.cityofthomaston.com/
+Georgia,Thomas County,Thomasville,http://www.thomasvillega.com
+Georgia,McDuffie County,Thomson,https://www.thomson-mcduffie.gov
+Georgia,Chatham County,Thunderbolt,http://www.thunderboltga.org/
+Georgia,Tift County,Tifton,http://www.tifton.net
+Georgia,Stephens County,Toccoa,http://www.cityoftoccoa.com
+Georgia,Dade County,Trenton,https://trentonga.gov/
+Georgia,Chattooga County,Trion,http://www.townoftrion.net/
+Georgia,DeKalb County,Tucker,http://tuckerga.gov/
+Georgia,Coweta County,Turin,https://townofturin.com/
+Georgia,Emanuel County,Twin City,https://www.twincityga.com
+Georgia,Chatham County,Tybee Island,http://www.cityoftybee.org
+Georgia,County Tyrone,Tyrone,http://tyrone.org
+Georgia,Dooly County,Unadilla,https://cityofunadillaga.com/
+Georgia,Fulton County,Union City,http://www.unioncityga.org
+Georgia,Greene County,Union Point,http://www.unionpointga.org
+Georgia,Lowndes County,Valdosta,http://www.valdostacity.com
+Georgia,Whitfield County,Varnell,http://cityofvarnell.com/
+Georgia,Toombs County,Vidalia,http://www.vidaliaga.com
+Georgia,Dooly County,Vienna,http://www.cityofvienna.org
+Georgia,Carroll County,Villa Rica,https://www.villarica.gov
+Georgia,Haralson County,Waco,http://www.wacoga.net
+Georgia,Cherokee County,Waleska,http://cityofwaleska.com
+Georgia,Walton County,Walnut Grove,https://www.walnutgrovegeorgia.com/
+Georgia,Liberty County,Walthourville,http://cityofwalthourville.com
+Georgia,Meriwether County,Warm Springs,http://warmspringsga.com
+Georgia,Houston County,Warner Robins,http://www.wrga.gov/
+Georgia,Warren County,Warrenton,https://www.warrentonga.gov/
+Georgia,Wilkes County,Washington,http://cityofwashingtonga.gov
+Georgia,Oconee County,Watkinsville,http://cityofwatkinsville.com/
+Georgia,Harris County,Waverly Hall,http://waverlyhallga.gov/
+Georgia,Ware County,Waycross,http://www.waycrossga.com
+Georgia,Burke County,Waynesboro,http://www.waynesboroga.com
+Georgia,Troup County,West Point,http://www.cityofwestpointga.com
+Georgia,Bartow County,White,http://www.cityofwhitega.com
+Georgia,Carroll County,Whitesburg,http://www.whitesburgcity.com
+Georgia,Atkinson County,Willacoochee,http://www.willacoochee.com
+Georgia,Pike County,Williamson,https://cityofwilliamsonga.org/
+Georgia,Barrow County,Winder,http://www.cityofwinder.com
+Georgia,Clarke County,Winterville,http://www.cityofwinterville.com/
+Georgia,Camden County,Woodbine,http://woodbinegeorgia.net
+Georgia,Meriwether County,Woodbury,http://www.cityofwoodburyga.gov
+Georgia,Cherokee County,Woodstock,http://www.woodstockga.gov
+Georgia,Fayette County,Woolsey,http://woolseyga.com/
+Georgia,Jefferson County,Wrens,https://cityofwrens.com/
+Georgia,Towns County,Young Harris,http://www.youngharrisga.net/
+Georgia,Pike County,Zebulon,http://cityofzebulonga.us/
+Hawaii,Honolulu County,Ahuimanu,http://www.ahuimanu.k12.hi.us/
+Hawaii,Honolulu County,Honolulu,http://www.honolulu.gov/
+Hawaii,Maui County,Ocean Pointe,http://www.ocean-pointe.com/home.html
+Idaho,Bingham County,Aberdeen,http://www.aberdeenidaho.us/
+Idaho,Cassia County,Albion,http://www.albionidaho.org/
+Idaho,Power County,American Falls,http://www.cityofamericanfalls.com/
+Idaho,Bonneville County,Ammon,http://www.ci.ammon.id.us/
+Idaho,Fremont County,Ashton,http://www.cityofashton.com/
+Idaho,Kootenai County,Athol,http://cityofathol.us/
+Idaho,Caribou County,Bancroft,http://www.cityofbancroft.com/
+Idaho,Blaine County,Bellevue,http://www.bellevueidaho.us/
+Idaho,Bingham County,Blackfoot,http://www.cityofblackfoot.org/
+Idaho,Bear Lake County,Bloomington,http://bloomingtonidaho.net/
+Idaho,Ada County,Boise,https://www.cityofboise.org
+Idaho,Boundary County,Bonners Ferry,https://bonnersferry.id.gov/
+Idaho,Latah County,Bovill,https://www.cityofbovill.net/
+Idaho,Twin Falls County,Buhl,http://www.cityofbuhl.us/
+Idaho,Cassia County,Burley,http://burleyidaho.org
+Idaho,Canyon County,Caldwell,http://www.cityofcaldwell.com
+Idaho,Washington County,Cambridge,http://www.cambridge.id.gov/
+Idaho,Blaine County,Carey,http://cityofcarey.org/
+Idaho,Valley County,Cascade,http://cascadeid.us/
+Idaho,Bannock County,Chubbuck,http://www.cityofchubbuck.us
+Idaho,Kootenai County,Coeur d'Alene,http://cdaid.org
+Idaho,Adams County,Council,http://www.councilidaho.org
+Idaho,Kootenai County,Dalton Gardens,http://daltongardens.govoffice.com
+Idaho,Latah County,Deary,http://www.dearyidaho.com/
+Idaho,Lincoln County,Dietrich,http://www.dietrichidaho.com/
+Idaho,Valley County,Donnelly,http://www.cityofdonnelly.org
+Idaho,Bonner County,Dover,https://cityofdover.id.gov/
+Idaho,Bannock County,Downey,https://www.downeyidaho.us
+Idaho,Teton County,Driggs,http://www.driggs.govoffice.com/
+Idaho,Clark County,Dubois,http://www.duboisidaho.com
+Idaho,Ada County,Eagle,http://www.cityofeagle.org/
+Idaho,Gem County,Emmett,http://www.cityofemmett.org/
+Idaho,Camas County,Fairfield,http://cityoffairfieldidaho.com/
+Idaho,Kootenai County,Fernan Lake Village,http://www.fernanvillage.org
+Idaho,Twin Falls County,Filer,http://www.cityoffiler.com/
+Idaho,Franklin County,Franklin,http://franklinidaho.org/
+Idaho,Payette County,Fruitland,http://fruitland.org/
+Idaho,Ada County,Garden City,https://gardencityidaho.org/
+Idaho,Latah County,Genesee,http://www.cityofgenesee.com/
+Idaho,Bear Lake County,Georgetown,http://georgetown.id.gov/
+Idaho,Elmore County,Glenns Ferry,http://glennsferryidaho.org
+Idaho,Gooding County,Gooding,http://www.goodingidaho.org
+Idaho,Owyhee County,Grand View,http://www.grandview.id.gov/
+Idaho,Idaho County,Grangeville,http://www.grangeville.us/
+Idaho,Canyon County,Greenleaf,http://www.greenleaf-idaho.us/
+Idaho,Blaine County,Hailey,http://www.haileycityhall.org
+Idaho,Twin Falls County,Hansen,https://cityofhansen.org/
+Idaho,Kootenai County,Harrison,https://www.cityofharrisonid.com/
+Idaho,Kootenai County,Hauser,http://www.cityofhauser.org
+Idaho,Kootenai County,Hayden,http://www.cityofhaydenid.us
+Idaho,Minidoka County,Heyburn,http://heyburn.id.gov
+Idaho,Owyhee County,Homedale,http://www.cityofhomedale.com/
+Idaho,Bonneville County,Idaho Falls,https://www.idahofallsidaho.gov/
+Idaho,Bannock County,Inkom,https://inkomcity.org
+Idaho,Bonneville County,Iona,http://www.cityofiona.org/
+Idaho,Jerome County,Jerome,http://www.ci.jerome.id.us/
+Idaho,Latah County,Juliaetta,http://www.kendrick-juliaetta.org/
+Idaho,Lewis County,Kamiah,http://www.kamiahchamber.com/
+Idaho,Shoshone County,Kellogg,http://kellogg.id.gov/
+Idaho,Latah County,Kendrick,http://www.kendrick-juliaetta.org/
+Idaho,Blaine County,Ketchum,http://ketchumidaho.org/
+Idaho,Twin Falls County,Kimberly,http://www.cityofkimberly.org/
+Idaho,Kootenai County,Kootenai,http://cityofkootenai.org
+Idaho,Ada County,Kuna,http://kunacity.id.gov/
+Idaho,Nez Perce County,Lapwai,http://cityoflapwai.com
+Idaho,Nez Perce County,Lewiston,http://www.cityoflewiston.org
+Idaho,Jefferson County,Lewisville,http://www.cityoflewisville.org/
+Idaho,Custer County,Mackay,http://mackayidaho-city.com/
+Idaho,Oneida County,Malad City,http://www.maladidaho.org
+Idaho,Owyhee County,Marsing,https://cityofmarsing.org/
+Idaho,Valley County,McCall,http://www.mccall.id.us
+Idaho,Canyon County,Melba,http://www.cityofmelba.org/
+Idaho,Jefferson County,Menan,http://www.cityofmenan.org/
+Idaho,Ada County,Meridian,http://www.meridiancity.org
+Idaho,Canyon County,Middleton,http://www.middleton.id.gov/
+Idaho,Washington County,Midvale,http://midvaleidaho.com/
+Idaho,Bear Lake County,Montpelier,http://montpelier.id.gov/
+Idaho,Latah County,Moscow,http://www.ci.moscow.id.us/
+Idaho,Elmore County,Mountain Home,http://mountain-home.us
+Idaho,Canyon County,Nampa,http://www.cityofnampa.us/
+Idaho,Adams County,New Meadows,http://www.newmeadowsidaho.us/
+Idaho,Payette County,New Plymouth,http://www.npidaho.com/
+Idaho,Fremont County,Newdale,https://cityofnewdale.org/
+Idaho,Lewis County,Nezperce,http://www.cityofnezperce.com/
+Idaho,Canyon County,Notus,http://notusidaho.org/index.html
+Idaho,Clearwater County,Orofino,http://www.cityoforofino.org/
+Idaho,Canyon County,Parma,http://www.cityofparma.org/
+Idaho,Minidoka County,Paul,http://cityofpaul.org
+Idaho,Payette County,Payette,http://payette.govoffice.com
+Idaho,Clearwater County,Pierce,http://www.cityofpierce.com/
+Idaho,Boise County,Placerville,https://placervilleidaho.org/
+Idaho,Benewah County,Plummer,http://www.plummerid.govoffice3.com/
+Idaho,Bannock County,Pocatello,https://pocatello.gov/
+Idaho,Bonner County,Ponderay,http://www.cityofponderay.org/
+Idaho,Kootenai County,Post Falls,http://www.postfallsidaho.org/
+Idaho,Latah County,Potlatch,http://www.cityofpotlatch.org/
+Idaho,Franklin County,Preston,http://www.prestonidaho.net/
+Idaho,Bonner County,Priest River,http://priestriver-id.gov/
+Idaho,Kootenai County,Rathdrum,http://www.rathdrum.org/
+Idaho,Madison County,Rexburg,http://www.rexburg.org
+Idaho,Lincoln County,Richfield,http://www.cityofrichfield.us/
+Idaho,Jefferson County,Rigby,http://www.cityofrigby.com/
+Idaho,Idaho County,Riggins,http://www.rigginsidaho.com/
+Idaho,Minidoka County,Rupert,http://www.rupert-idaho.com
+Idaho,Lemhi County,Salmon,http://www.cityofsalmon.com/
+Idaho,Bonner County,Sandpoint,http://www.cityofsandpoint.com/
+Idaho,Bingham County,Shelley,https://ci.shelley.id.us/
+Idaho,Lincoln County,Shoshone,http://www.shoshonecity.com/
+Idaho,Caribou County,Soda Springs,http://www.sodaspringsid.com/
+Idaho,Kootenai County,Spirit Lake,http://www.spiritlakeid.gov/
+Idaho,Fremont County,St. Anthony,http://www.cityofstanthony.org/
+Idaho,Bear Lake County,St. Charles,http://stcharlesidaho.org/
+Idaho,Custer County,Stanley,http://www.stanley.id.gov/
+Idaho,Ada County,Star,http://staridaho.org/
+Idaho,Madison County,Sugar City,http://www.sugarcityidaho.gov
+Idaho,Blaine County,Sun Valley,http://www.sunvalley.govoffice.com/
+Idaho,Bonneville County,Swan Valley,http://www.cityofswanvalley.com
+Idaho,Teton County,Tetonia,https://tetoniaidaho.com/
+Idaho,Latah County,Troy,http://www.troyidaho.net/
+Idaho,Twin Falls County,Twin Falls,http://www.tfid.org
+Idaho,Bonneville County,Ucon,http://www.cityofucon.us/
+Idaho,Teton County,Victor,https://www.victoridaho.gov
+Idaho,Shoshone County,Wallace,http://wallace.id.gov
+Idaho,Shoshone County,Wardner,http://www.wardner.id.gov/
+Idaho,Clearwater County,Weippe,http://www.weippe.com/
+Idaho,Washington County,Weiser,https://cityofweiser.net/
+Idaho,Gooding County,Wendell,https://wendell.id.gov/
+Idaho,Idaho County,White Bird,http://www.visitwhitebird.com/
+Idaho,Canyon County,Wilder,http://cityofwilder.org/
+Illinois,Addison Township,Addison,http://www.addisonadvantage.org
+Illinois,Clinton County,Albers,http://www.albersil.com/
+Illinois,Mercer Township,Aledo,http://www.aledoil.org
+Illinois,Algonquin Township,Algonquin,http://www.algonquin.org
+Illinois,Alhambra Township,Alhambra,http://villageofalhambra.com
+Illinois,Henry County,Alpha,http://villageofalpha.org/
+Illinois,Worth Township,Alsip,http://villageofalsip.org
+Illinois,Effingham County,Altamont,http://www.altamontil.net
+Illinois,Madison County,Alton,https://www.cityofaltonil.com/
+Illinois,Walnut Grove Township,Altona,http://altonaillinois.weebly.com/
+Illinois,South Ross Township,Alvin,https://villageofalvin.com/
+Illinois,Lee County,Amboy,https://cityofamboy.com/
+Illinois,Rock Island County,Andalusia,https://villageofandalusiail.org/
+Illinois,Henry County,Andover,http://www.andoveril.org/
+Illinois,Henry County,Anna,https://cityofanna.org/
+Illinois,Henry County,Annawan,https://www.annawanil.org/
+Illinois,Antioch Township,Antioch,http://www.antioch.il.gov
+Illinois,Arcola Township,Arcola,http://www.arcolaillinois.org/
+Illinois,Friends Creek Township,Argenta,http://argentail.com
+Illinois,Wheeling Township,Arlington Heights,https://www.vah.com/
+Illinois,Aroma Township,Aroma Park,https://villageofaromapark.com/
+Illinois,Bourbon Township,Arthur,http://www.arthur-il.gov
+Illinois,Ashkum Township,Ashkum,http://www.ashkum.net
+Illinois,Cass County,Ashland,https://www.ashlandil.com/
+Illinois,Lee County,Ashton,http://www.ashtonusa.com/
+Illinois,Christian County,Assumption,https://cityofassumption.org
+Illinois,Menard County,Athens,http://www.athensil.com
+Illinois,Henry County,Atkinson,http://www.atkinsonil.org/
+Illinois,Logan County,Atlanta,http://www.atlantaillinois.org/
+Illinois,Sangamon County,Auburn,http://www.auburnillinois.us/
+Illinois,Aurora Township,Aurora,http://www.aurora-il.org
+Illinois,Clinton County,Aviston,http://www.avistonil.org
+Illinois,West Deerfield Township,Bannockburn,http://www.bannockburn.org
+Illinois,Barrington Township,Barrington,http://www.barrington-il.gov
+Illinois,Barrington Township,Barrington Hills,http://barringtonhills-il.gov
+Illinois,Barry Township,Barry,http://www.barryil.org
+Illinois,Clinton County,Bartelso,http://bartelsoil.org
+Illinois,Hanover Township,Bartlett,http://village.bartlett.il.us
+Illinois,Limestone Township,Bartonville,https://bartonville.org/
+Illinois,Batavia Township,Batavia,http://www.cityofbatavia.net
+Illinois,Lake County,Beach Park,http://www.villageofbeachpark.com
+Illinois,Cass County,Beardstown,http://cityofbeardstown.org/
+Illinois,Clinton County,Beckemeyer,http://beckemeyeril.gov/
+Illinois,Lyons Township,Bedford Park,http://www.villageofbedfordpark.com
+Illinois,Will County,Beecher,http://www.villageofbeecher.org
+Illinois,Danville Township,Belgium,http://www.belgiumillinois.us/
+Illinois,St. Clair County,Belleville,http://belleville.net/
+Illinois,Peoria County,Bellevue,http://villageofbellevueil.com/
+Illinois,Proviso Township,Bellwood,http://www.vil.bellwood.il.us
+Illinois,Boone County,Belvidere,http://www.ci.belvidere.il.us/
+Illinois,Addison Township,Bensenville,https://www.bensenville.il.us/
+Illinois,Woodford County,Benson,https://www.villageofbenson.com/
+Illinois,Franklin County,Benton,https://bentonil.com/
+Illinois,Proviso Township,Berkeley,http://www.berkeley.il.us
+Illinois,Berwyn Township,Berwyn,http://www.berwyn-il.gov
+Illinois,Wood River Township,Bethalto,http://www.bethalto.com
+Illinois,Marrowbone Township,Bethany,http://www.villageofbethany.com
+Illinois,Big Rock Township,Big Rock,http://www.villageofbigrock.us
+Illinois,Henry County,Bishop Hill,http://www.bishophill.com/
+Illinois,Bloomingdale Township,Bloomingdale,https://www.villageofbloomingdale.org/
+Illinois,McLean County,Bloomington,http://www.cityblm.org
+Illinois,Bremen Township,Blue Island,http://www.blueisland.org
+Illinois,DuPage Township,Bolingbrook,http://www.bolingbrook.com
+Illinois,Salina Township,Bonfield,http://www.villageofbonfield.org
+Illinois,Spring Garden Township,Bonnie,http://www.villageofbonnie.com/
+Illinois,Kankakee County,Bourbonnais,http://www.villageofbourbonnais.com/
+Illinois,Hancock County,Bowen,https://www.villageofbowen.com/
+Illinois,Stark County,Bradford,http://bradfordil.com
+Illinois,Bourbonnais Township,Bradley,http://www.bradleyil.org
+Illinois,Will County,Braidwood,https://braidwood.us/
+Illinois,Clinton County,Breese,http://www.breese.org/
+Illinois,Lyons Township,Bridgeview,http://www.bridgeview-il.gov
+Illinois,Brighton Township,Brighton,http://www.brightonil.com
+Illinois,Peoria County,Brimfield,https://www.brimfieldil.org/
+Illinois,Proviso Township,Broadview,http://www.broadview-il.gov
+Illinois,Embarrass Township,Brocton,https://www.brocton.org/
+Illinois,Lyons Township,Brookfield,http://www.BrookfieldIL.gov
+Illinois,St. Clair County,Brooklyn,https://thevillageofbrooklyn.org/
+Illinois,Vernon Township,Buffalo Grove,http://www.vbg.org
+Illinois,Cook County Board of Commissioners,Bull Valley,http://www.thevillageofbullvalley.com/
+Illinois,Bunker Hill Township,Bunker Hill,http://www.cityofbunkerhillil.org
+Illinois,Stickney Township,Burbank,http://www.burbankil.gov
+Illinois,Burlington Township,Burlington,http://www.vil.burlington.il.us
+Illinois,Thornton Township,Burnham,https://burnham-il.gov/
+Illinois,Downers Grove Township,Burr Ridge,https://www.burr-ridge.gov/
+Illinois,Bushnell Township,Bushnell,http://bushnell.illinois.gov
+Illinois,Byron Township,Byron,http://byron.govoffice.com
+Illinois,St. Clair County,Cahokia,http://www.cahokiaillinois.org
+Illinois,Alexander County,Cairo,http://www.cairodevelopment.com/
+Illinois,Boone County,Caledonia,http://www.villageofcaledonia.com/
+Illinois,Thornton Township,Calumet City,http://www.calumetcity.org
+Illinois,Calumet Township,Calumet Park,http://calumetparkvillage.org
+Illinois,Camargo Township,Camargo,http://camargoinfo.com/
+Illinois,Cambridge Township,Cambridge,https://www.cambridgeil.org/
+Illinois,Camp Point Township,Camp Point,https://www.camppoint.com/
+Illinois,Campton Township,Campton Hills,http://villageofcamptonhills.org
+Illinois,Canton Township,Canton,http://www.cantonillinois.org
+Illinois,Boone County,Capron,http://www.villageofcapron.net/
+Illinois,Rock Island County,Carbon Cliff,http://www.carbon-cliff.com
+Illinois,Grundy County,Carbon Hill,https://villageofcarbonhill-il.gov/
+Illinois,Carterville Precinct,Carbondale,http://www.explorecarbondale.com
+Illinois,Carlinville Township,Carlinville,http://www.cityofcarlinville.com
+Illinois,Clinton County,Carlyle,https://carlylelake.com/
+Illinois,White County,Carmi,http://www.cityofcarmi.com
+Illinois,Bloomingdale Township,Carol Stream,http://www.carolstream.org
+Illinois,Kane County,Carpentersville,http://www.cville.org
+Illinois,Saline County,Carrier Mills,http://www.cmsf.saline.k12.il.us/main.html
+Illinois,Greene County,Carrollton,http://www.carrolltonil.net
+Illinois,Williamson County,Carterville,https://www.visitcarterville.com/
+Illinois,Carthage Township,Carthage,http://carthage-il.com
+Illinois,Algonquin Township,Cary,http://www.caryillinois.com/
+Illinois,Casey Township,Casey,http://www.cityofcaseyil.org/
+Illinois,St. Clair County,Caseyville,http://www.caseyville.org
+Illinois,Catlin Township,Catlin,http://catlinil.com/
+Illinois,Centralia Township,Central City,http://www.centralcityil.com
+Illinois,Centralia Township,Centralia,http://cityofcentralia.org
+Illinois,St. Clair County,Centreville,http://www.cityofcentreville-il.com/
+Illinois,Cerro Gordo Township,Cerro Gordo,http://www.fathill.com
+Illinois,Carroll County,Chadwick,http://www.chadwickil.com/
+Illinois,Champaign County,Champaign,http://www.champaignil.gov
+Illinois,Channahon Township,Channahon,https://www.channahon.org/
+Illinois,Morgan County,Chapin,http://www.villageofchapin.com
+Illinois,Charleston Township,Charleston,http://www.charlestonillinois.org/
+Illinois,Chatham Township,Chatham,https://www.chathamil.net/
+Illinois,Chatsworth Township,Chatsworth,https://www.chatsworthil.gov/
+Illinois,Chebanse Township,Chebanse,http://www.chebanseillinois.org
+Illinois,Chenoa Township,Chenoa,http://www.chenoail.org
+Illinois,Cherry Valley Township,Cherry Valley,http://www.cherryvalley.org/
+Illinois,Randolph County,Chester,http://www.chesterill.com
+Illinois,Cook County,Chicago,http://chicago.gov
+Illinois,Bloom Township,Chicago Heights,http://cityofchicagoheights.org
+Illinois,Worth Township,Chicago Ridge,http://chicagoridge.org
+Illinois,Peoria County,Chillicothe,http://www.cityofchillicotheil.com
+Illinois,Ross Township,Chrisman,https://www.cityofchrisman.com/
+Illinois,Franklin County,Christopher,http://www.cityofchristopher.org/
+Illinois,Cicero Township,Cicero,http://www.thetownofcicero.com
+Illinois,Pigeon Grove Township,Cissna Park,https://cissnapark.com/
+Illinois,Downers Grove Township,Clarendon Hills,https://www.clarendonhills.us/
+Illinois,Clay County,Clay City,https://www.villageofclaycityil.com/
+Illinois,Clayton Township,Clayton,https://villageofclayton.municipalimpact.com/
+Illinois,Chebanse Township,Clifton,http://www.cliftonillinois.com
+Illinois,Clintonia Township,Clinton,http://www.clintonillinois.com/
+Illinois,Braceville Township,Coal City,https://coalcity-il.gov/
+Illinois,Rock Island County,Coal Valley,http://www.coalvalleyil.org
+Illinois,Union County,Cobden,http://www.cobdenil.com
+Illinois,Martin Township,Colfax,http://colfaxillinois.com
+Illinois,Collinsville Township,Collinsville,http://www.collinsvilleil.org
+Illinois,Henry County,Colona,http://www.colonail.com
+Illinois,St. Clair County,Columbia,http://www.columbiaillinois.com/
+Illinois,Rock Island County,Cordova,https://villageofcordova.com/
+Illinois,DeKalb County,Cortland,https://www.cortlandil.org/
+Illinois,Randolph County,Coulterville,https://www.coulterville.org
+Illinois,Bremen Township,Country Club Hills,http://countryclubhills.org
+Illinois,Lyons Township,Countryside,http://www.countryside-il.org
+Illinois,Williamson County,Crainville,https://www.crainville.net/
+Illinois,Williamson County,Creal Springs,https://crealsprings.net/
+Illinois,Lockport Township,Crest Hill,http://www.cityofcresthill.com
+Illinois,Dement Township,Creston,http://www.villageofcreston.org/
+Illinois,Worth Township,Crestwood,http://crestwood.illinois.gov/
+Illinois,Will County,Crete,http://www.villageofcrete.org/
+Illinois,Groveland Township,Creve Coeur,http://www.villageofcc.com/
+Illinois,Algonquin Township,Crystal Lake,http://www.crystallake.org
+Illinois,Sullivan Township,Cullom,http://villageofcullomillinois.com
+Illinois,Curran Township,Curran,https://curranil.govoffice2.com/
+Illinois,Dallas City Township,Dallas City,http://www.dallascity-il.com
+Illinois,Clinton County,Damiansville,http://www.damiansville.org
+Illinois,Danvers Township,Danvers,https://danversil.com/
+Illinois,Blount Township,Danville,http://www.cityofdanville.org
+Illinois,Downers Grove Township,Darien,http://www.darien.il.us
+Illinois,Scott Township,Davis Junction,http://www.davisjunction.com
+Illinois,Sangamon County,Dawson,http://www.dawson.illinois.gov/
+Illinois,Selby Township,De Pue,http://www.villageofdepue.com
+Illinois,DeSoto Township,De Soto,http://villageofdesoto.com
+Illinois,Decatur Township,Decatur,http://www.decaturil.gov/
+Illinois,Tazewell County,Deer Creek,http://deercreekillinois.org
+Illinois,Ela Township,Deer Park,http://villageofdeerpark.com
+Illinois,West Deerfield Township,Deerfield,http://www.deerfield.il.us
+Illinois,DeKalb County,DeKalb,https://www.cityofdekalb.com
+Illinois,Tazewell County,Delavan,http://www.Delavanil.org
+Illinois,Maine Township,Des Plaines,http://www.desplaines.org/
+Illinois,Grundy County,Diamond,https://www.villageofdiamond.org/
+Illinois,Effingham County,Dieterich,http://www.dieterichillinois.com
+Illinois,Effingham County,Divernon,http://divernonil.com/
+Illinois,Rome Township,Dix,http://villageofdixillinois.com
+Illinois,Thornton Township,Dixmoor,http://www.villageofdixmoor.org
+Illinois,Lee County,Dixon,http://www.discoverdixon.org/
+Illinois,Thornton Township,Dolton,http://vodolton.org
+Illinois,Grisham Township,Donnellson,http://www.villageofdonnellson.com
+Illinois,Downers Grove Township,Downers Grove,http://www.downers.us/
+Illinois,Downs Township,Downs,http://www.villageofdowns.org
+Illinois,Perry County,Du Quoin,http://duquoin.org/
+Illinois,Radnor Township,Dunlap,http://www.villageofdunlap-il.gov/
+Illinois,St. Clair County,Dupo,http://www.villageofdupo.org/
+Illinois,Durand Township,Durand,https://villageofdurand.com/
+Illinois,Dwight Township,Dwight,http://www.dwightillinois.org
+Illinois,Earl Township,Earlville,https://earlvilleil.org/
+Illinois,Wood River Township,East Alton,http://www.eastaltonvillage.org
+Illinois,Dunleith Township,East Dubuque,http://www.cityofeastdubuque.com
+Illinois,Dundee Township,East Dundee,http://eastdundee.net
+Illinois,Thornton Township,East Hazel Crest,http://easthazelcrest.com
+Illinois,Rock Island County,East Moline,http://www.eastmoline.com
+Illinois,Tazewell County,East Peoria,http://www.cityofeastpeoria.com/
+Illinois,St. Clair County,East St. Louis,http://www.cesl.us/
+Illinois,Madison County,Edwardsville,http://cityofedwardsville.com
+Illinois,Effingham County,Effingham,http://www.effinghamil.com/
+Illinois,El Paso Township,El Paso,http://www.elpasoil.org
+Illinois,Kane County,Elburn,http://elburn.il.us
+Illinois,Elgin Township,Elgin,https://www.cityofelgin.org/
+Illinois,Elizabeth Township,Elizabeth,http://www.villageofelizabethil.com/
+Illinois,Elk Grove Township,Elk Grove Village,http://www.elkgrove.com
+Illinois,Elkhart Township,Elkhart,http://elkhartillinois.us
+Illinois,Randolph County,Ellis Grove,http://www.villageofellisgrove.com/
+Illinois,Dawson Township,Ellsworth,https://www.villageofellsworthil.com/
+Illinois,Addison Township,Elmhurst,https://www.elmhurst.org/
+Illinois,Peoria County,Elmwood,http://www.elmwoodil.com
+Illinois,Leyden Township,Elmwood Park,http://www.elmwoodpark.org
+Illinois,Elsah Township,Elsah,http://www.elsah.org/
+Illinois,Will County,Elwood,https://www.villageofelwood.com/
+Illinois,Logan County,Emden,https://emdenil.weebly.com/
+Illinois,Williamson County,Energy,http://www.villageofenergy.com/
+Illinois,Whiteside County,Erie,http://www.villageoferie.com/
+Illinois,Essex Township,Essex,http://villageofessex.com
+Illinois,Woodford County,Eureka,http://www.eurekaillinois.net/
+Illinois,Cook County,Evanston,http://cityofevanston.org
+Illinois,Randolph County,Evansville,http://evansvilleil.org/
+Illinois,Worth Township,Evergreen Park,http://evergreenpark-ill.com
+Illinois,Livingston County,Fairbury,http://ww2.cityoffairbury.com/wp/
+Illinois,Wayne County,Fairfield,http://www.fairfield-il.com
+Illinois,Canteen Township,Fairmont City,http://www.fairmontcityil.com
+Illinois,Vance Township,Fairmount,http://fairmountil.com/
+Illinois,St. Clair County,Fairview Heights,http://cofh.org
+Illinois,Santa Anna Township,Farmer City,https://cityoffarmercity.org/
+Illinois,Farmington Township,Farmington,https://www.cityoffarmingtonil.com/
+Illinois,Champaign County,Fisher,http://www.fisher.il.us
+Illinois,Nebraska Township,Flanagan,http://www.flanaganil.org
+Illinois,Clay County,Flora,http://florail.govoffice2.com/
+Illinois,Rich Township,Flossmoor,http://flossmoor.org
+Illinois,Bloom Township,Ford Heights,http://www.villageoffordheights.org/
+Illinois,Proviso Township,Forest Park,http://www.forestpark.net
+Illinois,Stickney Township,Forest View,http://villageofforestview.com/
+Illinois,Forrest Township,Forrest,http://www.forrestil.org
+Illinois,Forreston Township,Forreston,https://forreston.municipalimpact.com/
+Illinois,Hickory Point Township,Forsyth,http://forsythvillage.us
+Illinois,Grant Township,Fox Lake,http://www.foxlake.org
+Illinois,McHenry County,Fox River Grove,http://www.foxrivergrove.org
+Illinois,Frankfort Township,Frankfort,http://villageoffrankfort.com
+Illinois,Morgan County,Franklin,http://www.franklinillinois.net
+Illinois,Lee County,Franklin Grove,http://www.franklingrove.org/
+Illinois,Leyden Township,Franklin Park,http://vofp.com
+Illinois,St. Clair County,Freeburg,http://www.freeburg.com
+Illinois,Freeport Township,Freeport,http://www.cityoffreeport.org/
+Illinois,Whiteside County,Fulton,https://www.cityoffulton.us/
+Illinois,East Galena Township,Galena,http://www.cityofgalena.org/
+Illinois,Galesburg City Township,Galesburg,http://www.ci.galesburg.il.us
+Illinois,Henry County,Galva,http://www.galvail.gov/
+Illinois,Henry County,Geneseo,http://www.cityofgeneseo.com/
+Illinois,Kane County,Geneva,http://geneva.il.us
+Illinois,DeKalb County,Genoa,http://www.genoa-il.com
+Illinois,Georgetown Township,Georgetown,https://georgetownil.net/
+Illinois,Clinton County,Germantown,http://www.germantownil.net
+Illinois,Worth Township,Germantown Hills,https://germantownhillsillinois.org/
+Illinois,Ford County,Gibson City,http://gibsoncityillinois.com
+Illinois,Champaign County,Gifford,https://villageofgifford.com/
+Illinois,Rutland Township,Gilberts,http://villageofgilberts.com
+Illinois,Douglas Township,Gilman,http://cityofgilman.com
+Illinois,Peoria County,Glasford,http://www.glasfordil.com
+Illinois,Edwardsville Township,Glen Carbon,http://www.glen-carbon.il.us
+Illinois,Milton Township,Glen Ellyn,http://www.glenellyn.org
+Illinois,New Trier Township,Glencoe,http://www.villageofglencoe.org
+Illinois,DuPage County,Glendale Heights,http://www.glendaleheights.org
+Illinois,Northfield Township,Glenview,http://www.glenview.il.us
+Illinois,Thornton Township,Glenwood,http://villageofglenwood.com
+Illinois,Madison County,Godfrey,http://www.godfreyil.org
+Illinois,Cook County,Golf,http://villageofgolf.us
+Illinois,Woodford County,Goodfield,http://goodfieldillinois.com/
+Illinois,Johnson County,Goreville,http://villageofgoreville.com/
+Illinois,Quarry Township,Grafton,http://cityofgraftonil.com/
+Illinois,Farm Ridge Township,Grand Ridge,https://villageofgrandridge.org/
+Illinois,Sangamon County,Grandview,http://villageofgrandview.com/
+Illinois,Madison County,Granite City,http://www.granitecity.illinois.gov
+Illinois,Kankakee County,Grant Park,http://www.grantpark-il.org/
+Illinois,Leef Township,Grantfork,http://villageofgrantfork.wixsite.com/home
+Illinois,Granville Township,Granville,http://villageofgranville.org/
+Illinois,Lake County,Grayslake,http://villageofgrayslake.com
+Illinois,Edwards County,Grayville,https://grayville-il.gov/
+Illinois,Lake County,Green Oaks,http://www.greenoaks.org
+Illinois,Tazewell County,Green Valley,http://villageofgvil.org/
+Illinois,Greene County,Greenfield,http://www.greenfieldillinois.org/
+Illinois,Greenup Township,Greenup,http://villageofgreenup.com
+Illinois,Greenview No. 6 Precinct,Greenview,http://thevillageofgreenview.com
+Illinois,Bond County,Greenville,http://www.greenvilleillinois.com
+Illinois,Gridley Township,Gridley,http://www.gridleyillinois.org
+Illinois,Pike County,Griggsville,http://www.griggsville-il.org/
+Illinois,Lake County,Gurnee,http://www.gurnee.il.us
+Illinois,Lake County,Hainesville,http://www.hainesville.org
+Illinois,Calhoun County,Hamburg,http://www.hamburgillinois.com/
+Illinois,Hamel Township,Hamel,http://www.villageofhamel.com
+Illinois,Hamel Township,Hamilton,http://www.hamiltonillinois.org
+Illinois,Unity Township,Hammond,https://villageofhammond.us/
+Illinois,Hampshire Township,Hampshire,http://www.hampshireil.org
+Illinois,Rock Island County,Hampton,http://hamptonil.org/
+Illinois,Peoria County,Hanna City,http://hannacityil.com/
+Illinois,Hanover Township,Hanover,http://www.hanover-il.com/
+Illinois,Hanover Township,Hanover Park,http://hanoverparkillinois.org
+Illinois,Saline County,Harrisburg,http://www.thecityofharrisburgil.com/
+Illinois,Harristown Township,Harristown,http://villageofharristown.com
+Illinois,Chouteau Township,Hartford,http://hartfordillinois.net
+Illinois,Chemung Township,Harvard,http://www.cityofharvard.org
+Illinois,Thornton Township,Harvey,http://www.cityofharvey.org
+Illinois,Norwood Park Township,Harwood Heights,http://www.harwoodheights.org/
+Illinois,Havana Township,Havana,https://www.havanail.gov/
+Illinois,Lake County,Hawthorn Woods,http://www.vhw.org
+Illinois,Bremen Township,Hazel Crest,http://www.villageofhazelcrest.com
+Illinois,McHenry County,Hebron,http://www.villageofhebron.org
+Illinois,Monroe County,Hecker,http://hecker.illinois.gov
+Illinois,Hennepin Township,Hennepin,http://www.villageofhennepin.com
+Illinois,Henry Township,Henry,http://www.cityofhenryil.org
+Illinois,Williamson County,Herrin,http://www.cityofherrin.com/
+Illinois,Pilot Township,Herscher,https://herscher.net/
+Illinois,Randolph Township,Heyworth,http://heyworth-il.gov
+Illinois,Palos Township,Hickory Hills,http://www.hickoryhillsil.org
+Illinois,Helvetia Township,Highland,http://www.highlandil.gov
+Illinois,File:Flag of Lake County,Highland Park,https://www.cityhpil.com/
+Illinois,Lake County,Highwood,http://www.cityofhighwood.com
+Illinois,Flagg Township,Hillcrest,http://www.hillcrestil.us
+Illinois,Hillsboro Township,Hillsboro,http://www.hillsboroillinois.net
+Illinois,Cook County,Hillside,http://www.hillside-il.org
+Illinois,Squaw Grove Township,Hinckley,https://hinckleyil.com/
+Illinois,Downers Grove Township,Hinsdale,http://www.villageofhinsdale.org
+Illinois,Cook County,Hodgkins,http://www.villageofhodgkins.org
+Illinois,Clinton County,Hoffman,http://www.villageofhoffman.us
+Illinois,Schaumburg Township,Hoffman Estates,http://www.hoffmanestates.org
+Illinois,McHenry County,Holiday Hills,http://www.villageofholidayhills.com
+Illinois,Champaign County,Homer,http://homervillage.com/
+Illinois,Homer Township,Homer Glen,http://homerglenil.org
+Illinois,Worth Township,Hometown,http://www.cityofhometown.org
+Illinois,Bremen Township,Homewood,http://www.homesweethomewood.com
+Illinois,Grant Township,Hoopeston,http://www.cityofhoopeston.com
+Illinois,Tazewell County,Hopedale,http://www.hopedale.net/
+Illinois,Steuben Township,Hopewell,http://villageofhopewell.com
+Illinois,Pembroke Township,Hopkins Park,https://www.hopkinspark-il.org/
+Illinois,Hudson Township,Hudson,http://my.hudsonil.org
+Illinois,Grafton Township,Huntley,http://www.huntley.il.us
+Illinois,Sangamon County,Illiopolis,http://illiopolis.illinois.gov/
+Illinois,Spring Garden Township,Ina,https://www.villageofina.org/
+Illinois,Lyons Township,Indian Head Park,http://www.indianheadpark-il.gov
+Illinois,Palatine Township,Inverness,http://inverness-il.gov
+Illinois,Clay County,Iola,https://iolaillinois.org/
+Illinois,Lake County,Island Lake,http://www.villageofislandlake.com
+Illinois,DuPage County,Itasca,http://www.itasca.com/
+Illinois,Morgan County,Jacksonville,http://www.jacksonvilleil.com
+Illinois,Sangamon County,Jerome,https://www.villageofjerome.com/
+Illinois,Jersey Township,Jerseyville,http://www.jerseyville-il.us
+Illinois,McHenry County,Johnsburg,https://www.johnsburg.org/
+Illinois,Joliet Township,Joliet,https://www.joliet.gov/
+Illinois,Union County,Jonesboro,http://www.cojil.org/
+Illinois,Millersburg Township,Joy,http://joyillinois.com
+Illinois,Cook County,Justice,http://www.villageofjustice.org
+Illinois,Kaneville Township,Kaneville,http://villageofkaneville.com
+Illinois,Kankakee County,Kankakee,http://www.citykankakee-il.gov
+Illinois,Kansas Township,Kansas,https://kansasillinois.com/
+Illinois,Keithsburg Township,Keithsburg,http://www.cityofkeithsburg.com
+Illinois,New Trier Township,Kenilworth,https://www.vok.org/
+Illinois,Henry County,Kewanee,http://cityofkewanee.com
+Illinois,Lake County,Kildeer,http://www.villageofkildeer.com
+Illinois,Christian County,Kincaid,https://www.villageofkincaid.com/
+Illinois,DeKalb County,Kingston,http://www.villageofkingston.org/
+Illinois,Kinmundy Township,Kinmundy,http://cityofkinmundy.com
+Illinois,DeKalb County,Kirkland,https://villageofkirkland.com/
+Illinois,Tompkins Township,Kirkwood,https://villageofkirkwood.municipalimpact.com/home
+Illinois,Knox Township,Knoxville,http://kville.org/
+Illinois,Lyons Township,La Grange,http://www.villageoflagrange.com
+Illinois,Cook County,La Grange Park,http://www.lagrangepark.org
+Illinois,Hancock County,La Harpe,http://cityoflaharpe.com/
+Illinois,Lacon Township,Lacon,http://laconcity.com
+Illinois,Hall Township,Ladd,http://www.villageofladd.com/
+Illinois,Cuba Township,Lake Barrington,http://www.lakebarrington.org
+Illinois,Shields Township,Lake Bluff,http://www.lakebluff.org
+Illinois,Moraine Township,Lake Forest,http://www.cityoflakeforest.com
+Illinois,Grafton Township,Lake in the Hills,http://www.lith.org
+Illinois,Lake County,Lake Villa,http://www.lake-villa.org
+Illinois,Ela Township,Lake Zurich,http://lakezurich.org
+Illinois,Lake County,Lakemoor,http://www.lakemoor.net
+Illinois,Algonquin Township,Lakewood,http://www.village.lakewood.il.us/
+Illinois,Carroll County,Lanark,http://www.lanarkil.com/
+Illinois,Thornton Township,Lansing,http://villageoflansing.org
+Illinois,LaSalle Township,LaSalle,http://lasalle-il.gov/
+Illinois,Lawrence County,Lawrenceville,http://www.lawrencecity.com
+Illinois,Empire Township,Le Roy,http://www.leroy.org
+Illinois,Leaf River Township,Leaf River,http://leafriver.homestead.com/VillageLR.html
+Illinois,St. Clair County,Lebanon,http://www.lebanonil.org/city
+Illinois,DeKalb County,Lee,https://www.villageoflee.com/
+Illinois,Sangamon County,Leland Grove,http://www.lelandgrove.com/
+Illinois,Lemont Township,Lemont,http://lemont.il.us
+Illinois,West Point Township,Lena,http://www.villageoflena.com/
+Illinois,Lewistown Township,Lewistown,http://lewistownillinois.org
+Illinois,Lexington Township,Lexington,https://www.lexingtonillinois.org/
+Illinois,Liberty Township,Liberty,http://www.libertyschool.net
+Illinois,Libertyville Township,Libertyville,http://www.libertyville.com
+Illinois,Campton Township,Lily Lake,http://www.villageoflilylake.org
+Illinois,Limestone Township,Limestone,http://thevillageoflimestone.org/
+Illinois,East Lincoln Township,Lincoln,https://www.lincolnil.gov/
+Illinois,Vernon Township,Lincolnshire,https://www.lincolnshireil.gov/
+Illinois,Niles Township,Lincolnwood,http://www.lincolnwoodil.org
+Illinois,Lake County,Lindenhurst,http://www.lindenhurstil.org
+Illinois,Lisle Township,Lisle,http://www.villageoflisle.org/
+Illinois,North Litchfield Township,Litchfield,http://www.cityoflitchfieldil.com
+Illinois,Olive Township,Livingston,http://villageoflivingston.us/
+Illinois,Sangamon County,Loami,https://loamiil.com/
+Illinois,Lockport Township,Lockport,http://www.cityoflockport.net
+Illinois,Loda Township,Loda,http://www.villageofloda.com
+Illinois,York Township,Lombard,http://www.villageoflombard.org
+Illinois,Ela Township,Long Grove,https://www.longgroveil.gov
+Illinois,Hope Township,Lostant,http://www.villageoflostant.com
+Illinois,Clay County,Louisville,http://villageoflouisvilleil.com
+Illinois,Winnebago County,Loves Park,https://cityoflovespark.com/
+Illinois,Lovington Township,Lovington,http://www.lovingtonil.com
+Illinois,Champaign County,Ludlow,https://villageofludlow.com/home
+Illinois,Whiteside County,Lyndon,https://villageoflyndon.org/
+Illinois,Bloom Township,Lynwood,https://www.lynwoodil.us/
+Illinois,Cook County,Lyons,http://www.villageoflyons-il.net/
+Illinois,Winnebago County,Machesney Park,http://machesneypark.org/
+Illinois,Tazewell County,Mackinaw,https://mackinawil.gov/
+Illinois,McDonough County,Macomb,http://cityofmacomb.com
+Illinois,South Macon Township,Macon,http://maconcity.us
+Illinois,Venice Township,Madison,http://cityofmadisonil.com
+Illinois,Champaign County,Mahomet,https://www.mahomet-il.gov/
+Illinois,Makanda Township,Makanda,http://villageofmakanda.com/
+Illinois,DeKalb County,Malta,https://www.villageofmaltail.com/
+Illinois,Will County,Manhattan,https://www.villageofmanhattan.org/
+Illinois,Manito Township,Manito,http://villageofmanito.com
+Illinois,Blue Ridge Township,Mansfield,http://villageofmansfield.net/
+Illinois,Manteno Township,Manteno,http://www.villageofmanteno.com
+Illinois,Cortland Township,Maple Park,https://villageofmaplepark.org/
+Illinois,Peoria County,Mapleton,https://www.mapletonillinois.com/
+Illinois,Maquon Township,Maquon,http://maquon.org
+Illinois,Marengo Township,Marengo,http://www.cityofmarengo.com/
+Illinois,Marine Township,Marine,http://villageofmarine.net
+Illinois,Williamson County,Marion,http://cityofmarionil.gov/
+Illinois,St. Clair County,Marissa,http://www.villageofmarissa.com/
+Illinois,Granville Township,Mark,http://www.vil.mark.il.us/
+Illinois,Bremen Township,Markham,http://www.cityofmarkham.net
+Illinois,Maroa Township,Maroa,http://maroaillinois.gov
+Illinois,Tazewell County,Marquette Heights,http://cityofmhgov.org/
+Illinois,Manlius Township,Marseilles,http://cityofmarseilles.com/
+Illinois,Clark County,Marshall,http://www.marshall-il.com/
+Illinois,Clark County,Martinsville,http://martinsvilleil.com/
+Illinois,Collinsville Township,Maryville,http://www.vil.maryville.il.us
+Illinois,St. Clair County,Mascoutah,http://www.mascoutah.org
+Illinois,Mason City Township,Mason City,http://www.masoncityillinois.org
+Illinois,Preemption Township,Matherville,https://mathervilleil.govoffice2.com/
+Illinois,Rich Township,Matteson,http://www.villageofmatteson.org
+Illinois,Mattoon Township,Mattoon,http://www.mattoon.illinois.gov/
+Illinois,Proviso Township,Maywood,http://www.maywood-il.org
+Illinois,Cook County,McCook,http://www.villageofmccook.org
+Illinois,McHenry Township,McCullom Lake,https://voml.org/
+Illinois,McHenry Township,McHenry,http://www.ci.mchenry.il.us
+Illinois,Mount Hope Township,McLean,http://www.mclean-il.com
+Illinois,McLeansboro Township,McLeansboro,https://mcleansboro.us/
+Illinois,Magnolia Township,McNabb,http://www.villageofmcnabb.org/
+Illinois,Sangamon County,Mechanicsburg,https://sites.google.com/view/mechanicsburgil
+Illinois,Proviso Township,Melrose Park,http://melrosepark.org
+Illinois,Ford County,Melvin,https://www.melvinill.com/
+Illinois,Mendon Township,Mendon,https://www.mendonillinois.com/
+Illinois,Mendon Township,Mendota,http://www.mendota.il.us/
+Illinois,Worth Township,Merrionette Park,http://merrionettepark.org
+Illinois,Woodford County,Metamora,http://villageofmetamora.com/
+Illinois,Massac County,Metropolis,https://www.metropolisil.gov
+Illinois,Lake County,Mettawa,http://www.mettawa.org
+Illinois,Corwin Township,Middletown,http://middletownillinois.com
+Illinois,Bremen Township,Midlothian,http://villageofmidlothian.net
+Illinois,Rock Island County,Milan,http://www.milanil.org/
+Illinois,Milford Township,Milford,https://www.villageofmilfordil.com/
+Illinois,Fox Township,Millbrook,http://www.thevillageofmillbrook.com
+Illinois,Wysox Township,Milledgeville,http://www.milledgevilleil.net/
+Illinois,Fox Township,Millington,http://www.millingtonil.com
+Illinois,St. Clair County,Millstadt,https://www.villageofmillstadt.org/
+Illinois,Tazewell County,Minier,https://minier.com/
+Illinois,Woodford County,Minonk,https://cityofminonk.com/
+Illinois,Aux Sable Township,Minooka,http://www.minooka.com
+Illinois,Frankfort Township,Mokena,http://www.mokena.org/
+Illinois,Rock Island County,Moline,http://www.moline.il.us
+Illinois,Kankakee County,Momence,http://cityofmomence.com
+Illinois,Monee Township,Monee,http://villageofmonee.org/
+Illinois,Monmouth Township,Monmouth,http://cityofmonmouth.com/
+Illinois,Monroe Township,Monroe Center,http://www.monroecenter.org/
+Illinois,Aurora Township,Montgomery,http://ci.montgomery.il.us
+Illinois,Monticello Township,Monticello,http://www.monticelloillinois.net/
+Illinois,Morris Township,Morris,http://morrisil.org/
+Illinois,Whiteside County,Morrison,http://www.morrisonil.org/
+Illinois,Tazewell County,Morton,http://www.morton-il.gov/
+Illinois,Maine Township,Morton Grove,http://www.mortongroveil.org
+Illinois,Carroll County,Mount Carroll,http://www.mtcarrollil.org
+Illinois,Mt. Morris Township,Mount Morris,http://mtmorrisil.net/
+Illinois,Elk Grove Township,Mount Prospect,http://www.mountprospect.org
+Illinois,Logan County,Mount Pulaski,https://cityofmtpulaski.com/
+Illinois,Brown County,Mount Sterling,https://mtsterlingil.com/
+Illinois,Mt. Vernon Township,Mount Vernon,http://mtvernon.com
+Illinois,Mount Zion Township,Mount Zion,http://www.mtzion.com
+Illinois,Shelby County,Moweaqua,https://moweaqua.org/
+Illinois,Fremont Township,Mundelein,http://www.mundelein.org
+Illinois,Murphysboro Township,Murphysboro,http://www.murphysboro.com
+Illinois,DuPage County,Naperville,http://naperville.il.us/
+Illinois,Ottawa Township,Naplate,https://villageofnaplate.com/
+Illinois,Nauvoo Township,Nauvoo,https://www.beautifulnauvoo.com/
+Illinois,Neoga Township,Neoga,http://www.neoga.org
+Illinois,Neponset Township,Neponset,https://www.villageofneponsetil.com
+Illinois,St. Clair County,New Athens,http://www.newathens.us/
+Illinois,Clinton County,New Baden,http://www.newbadenil.com/
+Illinois,Sangamon County,New Berlin,http://www.newberlin.il.us/
+Illinois,New Boston Township,New Boston,http://cityofnewbostonil.com
+Illinois,Sheridan Township,New Holland,http://www.newhollandil.com
+Illinois,Will County,New Lenox,http://newlenox.net
+Illinois,Rockford Township,New Milford,https://villageofnewmilford.org/
+Illinois,Big Grove Township,Newark,http://newark-il.us
+Illinois,Wade Township,Newton,http://www.cityofnewtonil.com
+Illinois,Maine Township,Niles,http://www.vniles.com
+Illinois,Richland County,Noble,http://www.nobleillinois.com/
+Illinois,Normal Township,Normal,http://www.normal.org/
+Illinois,Cook County,Norridge,http://www.villageofnorridge.com
+Illinois,Aurora Township,North Aurora,http://www.northaurora.org
+Illinois,Lake County,North Barrington,http://www.northbarrington.org
+Illinois,Lake County,North Chicago,http://northchicago.org
+Illinois,Tazewell County,North Pekin,http://northpekin.us
+Illinois,Cook County,North Riverside,http://www.northriverside-il.org
+Illinois,Utica Township,North Utica,http://www.utica-il.gov/
+Illinois,Northfield Township,Northbrook,http://www.northbrook.il.us
+Illinois,Cook County,Northfield,http://www.northfieldil.org
+Illinois,Cook County,Northlake,http://www.northlakecity.com/
+Illinois,Peoria County,Norwood,http://villageofnorwoodil.com/
+Illinois,York Township,Oak Brook,http://www.oak-brook.org/
+Illinois,Menard County,Oak Forest,http://www.oak-forest.org
+Illinois,Worth Township,Oak Lawn,http://www.oaklawn-il.gov
+Illinois,Oak Park Township,Oak Park,http://www.oak-park.us
+Illinois,York Township,Oakbrook Terrace,http://www.oakbrookterrace.net
+Illinois,Oakwood Township,Oakwood,http://oakwoodil.org/
+Illinois,Nunda Township,Oakwood Hills,http://www.oakwoodhills.org
+Illinois,Crawford County,Oblong,http://www.villageofoblong.com/
+Illinois,Odell Township,Odell,http://odell-il.com
+Illinois,Odin Township,Odin,http://www.odinishome.com
+Illinois,O'Fallon Township,O'Fallon,http://ofallon.org
+Illinois,Champaign County,Ogden,http://www.ogdenil.com/
+Illinois,LaSalle Township,Oglesby,http://www.oglesby.il.us
+Illinois,Washington County,Okawville,http://www.okawvillecc.com/
+Illinois,Richland County,Olney,http://www.ci.olney.il.us/
+Illinois,Bloom Township,Olympia Fields,http://www.olympia-fields.com
+Illinois,Onarga Township,Onarga,http://villageofonarga.com/
+Illinois,Ontario Township,Oneida,https://www.cityofoneidail.com/
+Illinois,Oquawka Township,Oquawka,http://www.oquawkail.com/
+Illinois,Oneco Township,Orangeville,http://villageoforangeville.com/
+Illinois,Whitmore Township,Oreana,http://oreanail.com
+Illinois,Oregon-Nashua Township,Oregon,http://cityoforegon.org/
+Illinois,Denning Township,Orient,http://www.cityoforient.com
+Illinois,Henry County,Orion,http://orionil.org/
+Illinois,Orland Township,Orland Hills,http://www.orlandhills.org
+Illinois,Cook County,Orland Park,http://www.orlandpark.org
+Illinois,Oswego Township,Oswego,http://www.oswegoil.org
+Illinois,Ottawa Township,Ottawa,https://cityofottawa.org/
+Illinois,Palatine Township,Palatine,http://www.palatine.il.us
+Illinois,Crawford County,Palestine,http://www.villageofpalestine.net/
+Illinois,Palos Township,Palos Heights,http://www.palosheights.org
+Illinois,Palos Township,Palos Hills,http://www.paloshillsweb.org
+Illinois,Palos Township,Palos Park,http://www.palospark.org
+Illinois,Christian County,Pana,https://www.cityofpana.org/
+Illinois,Paris Township,Paris,http://www.parisillinois.org
+Illinois,Lake County,Park City,http://parkcityil.org/
+Illinois,Cook County,Park Forest,http://www.villageofparkforest.com
+Illinois,Maine Township,Park Ridge,http://www.parkridge.us
+Illinois,Lee County,Paw Paw,http://pawpawil.org/
+Illinois,Sangamon County,Pawnee,http://www.pawneeil.net/
+Illinois,Ford County,Paxton,http://www.cityofpaxton.com/
+Illinois,Payson Township,Payson,https://paysonil.com/
+Illinois,Loran Township,Pearl City,http://villageofpearlcity.com/
+Illinois,Pecatonica Township,Pecatonica,http://www.villageofpecatonica.com/
+Illinois,Pekin Township,Pekin,http://www.ci.pekin.il.us/
+Illinois,Peoria County,Peoria,http://www.peoriagov.org
+Illinois,Richwoods Township,Peoria Heights,https://www.peoriaheights.org/home
+Illinois,Peotone Township,Peotone,https://villageofpeotone.com/
+Illinois,Peru Township,Peru,http://www.peru.il.us
+Illinois,Champaign County,Pesotum,https://pesotum.org/
+Illinois,Menard County,Petersburg,http://www.petersburgil.org
+Illinois,Champaign County,Philo,http://villageofphilo.com/
+Illinois,Thornton Township,Phoenix,http://www.villageofphoenix.org
+Illinois,Perry County,Pinckneyville,http://www.ci.pinckneyville.il.us/
+Illinois,Rutland Township,Pingree Grove,http://www.villageofpingreegrove.org
+Illinois,Ford County,Piper City,http://pipercity.com/
+Illinois,Pike County,Pittsfield,http://www.pittsfieldil.org/
+Illinois,Plainfield Township,Plainfield,http://www.plainfield-il.org
+Illinois,Little Rock Township,Plano,http://www.cityofplanoil.com/
+Illinois,Sangamon County,Pleasant Plains,http://pleasantplainsillinois.com/
+Illinois,Buffalo Township,Polo,http://www.poloil.org/
+Illinois,Livingston County,Pontiac,http://www.pontiac.org
+Illinois,Nameoki Township,Pontoon Beach,http://pontoonbeachil.com
+Illinois,Poplar Grove Township,Poplar Grove,https://villageofpoplargrove.com/
+Illinois,Lake County,Port Barrington,http://www.portbarrington.net
+Illinois,Rock Island County,Port Byron,https://portbyronil.com/
+Illinois,Bremen Township,Posen,http://www.villageofposen.org
+Illinois,Nunda Township,Prairie Grove,https://www.prairiegrove.org/
+Illinois,Princeton Township,Princeton,http://www.princeton-il.com
+Illinois,Peoria County,Princeville,https://princeville.org/
+Illinois,Whiteside County,Prophetstown,http://prophetstownil.org/
+Illinois,Cook County,Prospect Heights,http://www.prospect-heights.il.us
+Illinois,Adams County,Quincy,http://www.quincyil.gov
+Illinois,Allen Township,Ransom,http://www.villageofransom.com
+Illinois,Rantoul Township,Rantoul,http://www.myrantoul.com/
+Illinois,Rock Island County,Rapids City,http://www.rapidscity.us/
+Illinois,Randolph County,Red Bud,http://www.cityofredbud.org
+Illinois,McHenry County,Richmond,http://richmond-il.com/
+Illinois,Rich Township,Richton Park,http://www.richtonpark.org
+Illinois,Elwood Township,Ridge Farm,https://ridgefarmillinois.com/
+Illinois,McHenry Township,Ringwood,http://ringwood-il.us
+Illinois,River Forest Township,River Forest,http://www.vrf.us
+Illinois,Cook County Board of Commissioners,River Grove,http://rivergroveil.gov
+Illinois,Thornton Township,Riverdale,http://www.villageofriverdale.net
+Illinois,Riverside Township,Riverside,http://www.riverside.il.us
+Illinois,Sangamon County,Riverton,http://riverton.illinois.gov/
+Illinois,Lake County,Riverwoods,http://villageofriverwoods.com
+Illinois,Woodford County,Roanoke,http://www.roanokeil.org/
+Illinois,Bremen Township,Robbins,http://www.robbins-il.com
+Illinois,Crawford County,Robinson,http://cityofrobinson.com
+Illinois,Flagg Township,Rochelle,http://www.cityofrochelle.net/
+Illinois,Sangamon County,Rochester,http://www.rochesteril.org
+Illinois,Whiteside County,Rock Falls,https://rockfalls61071.net/
+Illinois,Rock Island County,Rock Island,http://www.rigov.org/
+Illinois,Will County,Rockdale,https://rockdaleillinois.org/
+Illinois,Rockford Township,Rockford,https://rockfordil.gov/
+Illinois,Rockton Township,Rockton,http://www.rocktonvillage.com/
+Illinois,Cook County,Rolling Meadows,http://www.cityrm.org
+Illinois,DuPage Township,Romeoville,http://www.romeoville.org/
+Illinois,Roscoe Township,Roscoe,https://www.villageofroscoe.com/
+Illinois,DuPage County,Roselle,http://www.roselle.il.us
+Illinois,Cook County,Rosemont,http://www.rosemont.com
+Illinois,Roseville Township,Roseville,https://rosevilleil.com/
+Illinois,Hardin County,Rosiclare,http://www.cityofrosiclare.com/
+Illinois,Grant Township,Rossville,http://www.villageofrossville.org/
+Illinois,Lake County,Round Lake,http://roundlakeil.gov
+Illinois,Avon Township,Round Lake Beach,http://www.villageofroundlakebeach.com
+Illinois,Lake County,Round Lake Heights,http://www.villageofroundlakeheights.org
+Illinois,Lake County,Round Lake Park,http://www.villageofroundlakepark.com
+Illinois,Wood River Township,Roxana,http://www.roxana-il.org
+Illinois,Champaign County,Royal,https://villageofroyal.com/
+Illinois,Six Mile Township,Royalton,http://www.royaltonillinois.com
+Illinois,Schuyler County,Rushville,http://rushvilleillinois.us/
+Illinois,Champaign County,Sadorus,http://www.sadorus.com
+Illinois,Salem Township,Salem,http://www.salemil.us
+Illinois,Otto Township,Sammons Point,https://villageofsammonspoint.org/
+Illinois,Allens Grove Township,San Jose,http://www.sanjoseil.com
+Illinois,Sandoval Township,Sandoval,http://villageofsandoval.com
+Illinois,Sandwich Township,Sandwich,http://www.sandwich.il.us/
+Illinois,Bloom Township,Sauk Village,http://www.saukvillage.org
+Illinois,Saunemin Township,Saunemin,http://www.sauneminillinois.org
+Illinois,Savanna Township,Savanna,https://www.savanna-il.us/
+Illinois,Champaign County,Savoy,http://www.savoy.illinois.gov/
+Illinois,Scales Mound Township,Scales Mound,http://scalesmound.com
+Illinois,Schaumburg Township,Schaumburg,http://www.ci.schaumburg.il.us
+Illinois,Cook County,Schiller Park,http://www.villageofschillerpark.com
+Illinois,Manlius Township,Seneca,http://senecail.org/
+Illinois,Franklin County,Sesser,http://www.sesser.org
+Illinois,DeKalb County,Shabbona,http://shabbona-il.com/
+Illinois,Cherry Grove-Shannon Township,Shannon,http://www.shannonillinois.com/
+Illinois,Concord Township,Sheffield,https://sheffieldil.org/
+Illinois,Shelbyville Township,Shelbyville,http://www.shelbyvilleillinois.net/
+Illinois,Sheldon Township,Sheldon,https://villageofsheldonil.org/
+Illinois,Mission Township,Sheridan,http://www.sheridan-il.us/
+Illinois,Sangamon County,Sherman,https://www.shermanil.org/
+Illinois,St. Clair County,Shiloh,http://www.shilohil.org/
+Illinois,Troy Township,Shorewood,http://vil.shorewood.il.us/
+Illinois,Champaign County,Sidney,http://villageofsidney.com/index.html
+Illinois,Rock Island County,Silvis,http://www.silvisil.org/
+Illinois,Niles Township,Skokie,http://skokie.org
+Illinois,Dundee Township,Sleepy Hollow,http://www.sleepyhollowil.org
+Illinois,St. Clair County,Smithton,https://smithton-village.com/
+Illinois,Somonauk Township,Somonauk,https://www.vil.somonauk.il.us/
+Illinois,Barrington Township,South Barrington,http://www.southbarrington.org
+Illinois,Winnebago County,South Beloit,http://www.southbeloit.org/
+Illinois,Bloom Township,South Chicago Heights,http://www.southchicagoheights.com
+Illinois,Elgin Township,South Elgin,http://www.southelgin.com
+Illinois,Thornton Township,South Holland,http://www.southholland.org
+Illinois,Morgan County,South Jacksonville,https://southjacksonville-il.gov
+Illinois,Cincinnati Township,South Pekin,http://villageofsouthpekin.org/
+Illinois,Grundy County,South Wilmington,https://villageofsouthwilmington.com/
+Illinois,Sangamon County,Southern View,http://www.southernview.us/
+Illinois,Randolph County,Sparta,http://spartaillinois.us/
+Illinois,Sangamon County,Spaulding,https://www.villageofspaulding.com/
+Illinois,Woodford County,Spring Bay,https://www.villageofspringbay.org/
+Illinois,McHenry County,Spring Grove,http://www.springgrovevillage.com/
+Illinois,Hall Township,Spring Valley,https://spring-valley.il.us/
+Illinois,Capital Township,Springfield,https://www.springfield.il.us/
+Illinois,St. Anne Township,St. Anne,http://www.villageofstanne.com
+Illinois,Kane County,St. Charles,http://www.stcharlesil.gov
+Illinois,Fayette County,St. Elmo,https://www.cityofstelmo.com
+Illinois,St. Jacob Township,St. Jacob,http://www.stjacobil.com
+Illinois,Champaign County,St. Joseph,http://www.stjosephillinois.org/
+Illinois,Clinton County,St. Rose,https://stroseil.org/
+Illinois,Allin Township,Stanford,https://www.stanford-il.org/
+Illinois,Staunton Township,Staunton,http://www.cityofstauntonil.com
+Illinois,Randolph County,Steeleville,http://steeleville.org/
+Illinois,Bloom Township,Steger,http://villageofsteger.org/
+Illinois,Whiteside County,Sterling,http://ci.sterling.il.us/
+Illinois,Lee County,Steward,http://www.stewardil.com/
+Illinois,Shelby County,Stewardson,http://www.stewardsonil.com
+Illinois,Stickney Township,Stickney,http://www.villageofstickney.com
+Illinois,Marion Township,Stillman Valley,http://www.stillmanvalley.us/
+Illinois,Stockton Township,Stockton,http://www.villageofstockton.com/
+Illinois,Cook County,Stone Park,http://www.vosp.us/
+Illinois,Christian County,Stonington,http://www.villageofstonington.com/
+Illinois,Shelby County,Strasburg,http://www.strasburgil.com/
+Illinois,Cook County,Streamwood,http://www.streamwood.org
+Illinois,Bruce Township,Streator,http://www.ci.streator.il.us/cms/
+Illinois,Stronghurst Township,Stronghurst,https://www.villageofstronghurst.org/
+Illinois,Sublette Township,Sublette,http://www.subletteweb.com
+Illinois,Sugar Grove Township,Sugar Grove,http://sugargroveil.gov
+Illinois,Sullivan Township,Sullivan,http://sullivanil.us
+Illinois,Cook County,Summit,https://www.summit-il.org
+Illinois,Lawrence County,Sumner,http://sumnerillinois.com/
+Illinois,Ganeer Township,Sun River Terrace,https://sunriverterrace.com/
+Illinois,St. Clair County,Swansea,http://swanseail.org/
+Illinois,DeKalb County,Sycamore,http://www.cityofsycamore.com/
+Illinois,Tampico Township,Tampico,https://www.tampicoil.com/
+Illinois,Hillsboro Township,Taylor Springs,http://taylorspringsil.com
+Illinois,Christian County,Taylorville,http://taylorville.net/
+Illinois,Effingham County,Teutopolis,http://teutopolis.com
+Illinois,Sangamon County,Thayer,http://villageofthayer.org/
+Illinois,Lake County,Third Lake,http://www.thirdlakevillage.com
+Illinois,Champaign County,Thomasboro,http://thomasboro.us/
+Illinois,York Township,Thomson,http://www.thomsonil.com
+Illinois,Thornton Township,Thornton,http://www.thornton60476.com
+Illinois,Danville Township,Tilton,http://www.tiltonil.com/
+Illinois,Boone County,Timberlane,http://villageoftimberlane.org/
+Illinois,Cook County,Tinley Park,http://www.tinleypark.org
+Illinois,Indiantown Township,Tiskilwa,https://villageoftiskilwa.org/
+Illinois,Tolono Township,Tolono,http://tolonoil.us/
+Illinois,Bennington Township,Toluca,http://www.cityoftoluca.org
+Illinois,Eden Township,Tonica,http://www.tonicavillage.com
+Illinois,Stark County,Toulon,http://www.cityoftoulon.com/
+Illinois,Towanda Township,Towanda,http://villageoftowanda.org
+Illinois,Lake County,Tower Lakes,http://www.towerlakes-il.gov/
+Illinois,Tazewell County,Tremont,https://www.tremontil.com/
+Illinois,Clinton County,Trenton,http://trentonil.org/
+Illinois,Jarvis Township,Troy,http://www.troyil.us
+Illinois,Tuscola Township,Tuscola,http://tuscola.org/home
+Illinois,Monee Township,University Park,http://university-park-il.com
+Illinois,Champaign County,Urbana,http://urbanaillinois.us/
+Illinois,Ursa Township,Ursa,http://ursavillage.org/
+Illinois,Monroe County,Valmeyer,http://www.valmeyerillinois.com
+Illinois,Vandalia Township,Vandalia,http://vandaliaillinois.com/
+Illinois,Vermont Township,Vermont,http://villageofvermont.com/
+Illinois,Libertyville Township,Vernon Hills,https://www.vernonhills.org/
+Illinois,Brown County,Versailles,https://villageofversailles.org/
+Illinois,Johnson County,Vienna,http://www.cityofviennail.net/
+Illinois,Camargo Township,Villa Grove,https://villagrove.org/
+Illinois,York Township,Villa Park,http://www.invillapark.com
+Illinois,Greene Township,Viola,http://villageofviola.org
+Illinois,Virden Township,Virden,http://virden.municipalimpact.com
+Illinois,Virgil Township,Virgil,http://villageofvirgil.net
+Illinois,Virginia Township,Virginia,http://virginiaillinois.net/
+Illinois,Lake County,Volo,http://www.villageofvolo.com
+Illinois,Lake County,Wadsworth,http://www.villageofwadsworth.org
+Illinois,Walnut Township,Walnut,https://www.villageofwalnut.org/
+Illinois,Bald Hill Township,Waltonville,http://www.thevillageofwaltonville.com/
+Illinois,Irvington Township,Wamac,http://wamac.illinois.gov
+Illinois,DeWitt County,Wapella,https://www.villageofwapella.org/
+Illinois,Warren Township,Warren,https://villageofwarren.com/
+Illinois,Illini Township,Warrensburg,http://warrensburgil.com
+Illinois,Winfield Township,Warrenville,http://www.warrenville.il.us
+Illinois,Hancock County,Warsaw,http://warsawillinois.org
+Illinois,Cazenovia Township,Washburn,http://washburnil.com
+Illinois,Washington Township,Washington,http://ci.washington.il.us/
+Illinois,St. Clair County,Washington Park,https://villageofwp.com/
+Illinois,Monroe County,Waterloo,http://www.waterloo.il.us
+Illinois,DeKalb County,Waterman,https://villageofwaterman.com/
+Illinois,Belmont Township,Watseka,https://www.watsekacity.org/
+Illinois,Wauconda Township,Wauconda,http://wauconda-il.gov
+Illinois,Lake County,Waukegan,http://www.waukeganil.gov
+Illinois,Morgan County,Waverly,http://www.waverlyil.com
+Illinois,St. Charles Township,Wayne,http://www.villageofwayne.org/
+Illinois,Wayne County,Wayne City,https://www.villageofwaynecity.com/
+Illinois,Evans Township,Wenona,http://www.cityofwenona.org
+Illinois,Winfield Township,West Chicago,http://www.westchicago.org
+Illinois,Browning Township,West City,http://www.villageofwestcity.com
+Illinois,Dundee Township,West Dundee,http://www.wdundee.org/
+Illinois,Denning Township,West Frankfort,http://www.westfrankfort-il.com/
+Illinois,Peoria County,West Peoria,http://cityofwestpeoria.org/
+Illinois,Cook County,Westchester,http://www.westchester-il.org
+Illinois,Lyons Township,Western Springs,http://www.wsprings.com
+Illinois,Clark County,Westfield,http://westfieldillinois.com/
+Illinois,Downers Grove Township,Westmont,http://www.westmont.il.gov/
+Illinois,Georgetown Township,Westville,http://www.villageofwestville.com/
+Illinois,Milton Township,Wheaton,https://www.wheaton.il.us/
+Illinois,Cook County,Wheeling,http://www.wheelingil.gov
+Illinois,Mount Olive Township,White City,http://thevillageofwhitecity.com
+Illinois,Greene County,White Hall,http://www.whitehallcitygov.com/
+Illinois,Truro Township,Williamsfield,https://www.williamsfield.org/
+Illinois,Sangamon County,Williamsville,http://williamsville.illinois.gov/
+Illinois,Lyons Township,Willow Springs,http://www.willowsprings-il.gov
+Illinois,Downers Grove Township,Willowbrook,http://www.willowbrookil.org
+Illinois,New Trier Township,Wilmette,http://www.wilmette.com
+Illinois,Will County,Wilmington,https://www.wilmington-il.com
+Illinois,Scott County,Winchester,http://www.winchesteril.com/
+Illinois,Shelby County,Windsor,https://windsorillinois.net/
+Illinois,Milton Township,Winfield,https://www.villageofwinfield.com/
+Illinois,Winnebago Township,Winnebago,http://www.villageofwinnebago.com/
+Illinois,New Trier Township,Winnetka,http://www.villageofwinnetka.org
+Illinois,Lake County,Winthrop Harbor,http://www.winthropharbor.com
+Illinois,McHenry County,Wonder Lake,https://villageofwonderlake.org/
+Illinois,Addison Township,Wood Dale,http://www.wooddale.com
+Illinois,Wood River Township,Wood River,http://www.woodriver.org
+Illinois,Henry County,Woodhull,http://www.woodhullil.org/
+Illinois,Lisle Township,Woodridge,http://www.vil.woodridge.il.us
+Illinois,Morgan County,Woodson,http://woodsonillinois.com
+Illinois,Dorr Township,Woodstock,http://www.woodstockil.gov/
+Illinois,Worth Township,Worth,http://www.villageofworth.com
+Illinois,Wyanet Township,Wyanet,https://www.wyanetil.com/
+Illinois,Stark County,Wyoming,http://wyomingil.com/
+Illinois,Bristol Township,Yorkville,http://www.yorkville.il.us
+Illinois,Franklin County,Zeigler,http://cityofzeiglerillinois.com
+Illinois,Lake County,Zion,http://www.cityofzion.com
+Indiana,Jackson Township,Advance,http://townofadvance.com/
+Indiana,Henry Township,Akron,http://www.akronindiana.com/
+Indiana,Albion Township,Albion,http://www.albion-in.org
+Indiana,Monroe Township,Alexandria,http://www.in.gov/cities/alexandria
+Indiana,Anderson Township,Anderson,http://www.cityofanderson.com
+Indiana,Pleasant Township,Angola,https://www.angolain.org
+Indiana,Green Township,Argos,http://townofargos.com/
+Indiana,Smithfield Township,Ashley,http://www.ashley.in.gov
+Indiana,Logan Township,Attica,http://www.atticaonline.com
+Indiana,Grant Township,Auburn,http://www.ci.auburn.in.us
+Indiana,Center Township,Aurora,http://www.aurora.in.us
+Indiana,Jennings Township,Austin,http://cityofaustin.in.gov/
+Indiana,Allen Township,Avilla,http://avilla-in.org/
+Indiana,Washington Township,Avon,http://www.avongov.org
+Indiana,Monroe Township,Bainbridge,http://www.townofbainbridge.com
+Indiana,White River Township,Bargersville,http://www.townofbargersville.org
+Indiana,Ripley County,Batesville,http://www.batesvilleindiana.us
+Indiana,Tippecanoe Township,Battle Ground,http://www.battleground.in.gov/
+Indiana,Shawswick Township,Bedford,http://bedford.in.us
+Indiana,Marion County,Beech Grove,http://www.beechgrove.com/
+Indiana,Monroe Township,Berne,http://www.cityofberne.com
+Indiana,Pine Township,Beverly Shores,http://www.beverlyshoresindiana.org/
+Indiana,Monroe County Airport (Indiana),Bloomington,http://www.bloomington.in.gov
+Indiana,Harrison Township,Bluffton,http://www.ci.bluffton.in.us
+Indiana,Boon Township,Boonville,http://cityofboonvilleindiana.com
+Indiana,Wood Township,Borden,http://www.bordenindiana.com
+Indiana,Bourbon Township,Bourbon,https://www.bourbon-in.gov/
+Indiana,Clay County,Brazil,http://www.brazil.in.gov/
+Indiana,German Township,Bremen,http://www.townofbremen.com
+Indiana,Washington Township,Bristol,http://www.bristolindiana.net
+Indiana,Iroquois Township,Brook,http://www.brookindiana.com
+Indiana,Brookville Township,Brookville,https://brookvilleindiana.org/
+Indiana,Hendricks County,Brownsburg,http://www.brownsburg.org
+Indiana,Westchester Township,Burns Harbor,http://www.burnsharbor-in.gov
+Indiana,DeKalb County,Butler,http://www.butler.in.us
+Indiana,Jackson Township,Camden,http://www.townofcamden.org
+Indiana,Troy Township,Cannelton,http://www.canneltonindiana.com/
+Indiana,Clay Township,Carmel,http://www.carmel.in.gov/
+Indiana,Hanover Township,Cedar Lake,http://www.cedarlakein.org/
+Indiana,Center Township,Centerville,http://www.town.centerville.in.us/
+Indiana,Big Creek Township,Chalmers,http://chalmers.in.gov/
+Indiana,Boon Township,Chandler,http://www.townofchandler.org/
+Indiana,Charlestown Township,Charlestown,http://www.cityofcharlestown.com
+Indiana,Union Township,Chesterfield,http://chesterfield.in.gov
+Indiana,Westchester Township,Chesterton,http://www.chestertonin.org/
+Indiana,Smith Township,Churubusco,http://www.townofchurubusco.com
+Indiana,Jackson Township,Cicero,http://www.ciceroin.org
+Indiana,Silver Creek Township,Clarksville,http://www.townofclarksville.com/
+Indiana,Harrison Township,Clay City,http://www.claycity.net/
+Indiana,Clay Township,Claypool,http://www.claypoolindiana.com
+Indiana,Clear Lake Township,Clear Lake,http://www.townofclearlake.org
+Indiana,Pike Township,Clermont,http://clermont.in.gov
+Indiana,Cloverdale Township,Cloverdale,https://www.cloverdalein.com/home.html
+Indiana,Clay Township,Coatesville,http://CoatesvilleIndiana.org
+Indiana,Columbia Township,Columbia City,http://www.columbiacity.net
+Indiana,Bartholomew County,Columbus,http://www.columbus.in.gov
+Indiana,Fayette County,Connersville,http://www.connersvillein.gov
+Indiana,Jackson Township,Converse,http://www.townofconverse.com
+Indiana,Harrison Township,Corydon,http://www.thisisindiana.org/
+Indiana,Troy Township,Covington,http://covingtonin.net/
+Indiana,Union Township,Crawfordsville,http://www.crawfordsville.net/
+Indiana,Vernon Township,Crothersville,http://www.crothersville.net
+Indiana,Center Township,Crown Point,http://www.crownpoint.in.gov
+Indiana,Washington Township,Crows Nest,mw-data:TemplateStyles:r1066479718
+Indiana,Union Township,Culver,https://townofculver.org/
+Indiana,Marion County,Cumberland,http://www.town.cumberland.in.us
+Indiana,Center Township,Danville,http://www.danvilleindiana.org
+Indiana,Franklin Township,Darlington,http://www.darlingtonindiana.com
+Indiana,Root Township,Decatur,http://www.decaturin.org/
+Indiana,Deer Creek Township,Delphi,http://www.cityofdelphi.org/
+Indiana,Keener Township,DeMotte,https://www.townofdemotte.com/
+Indiana,Richland Township,Dunkirk,http://www.cityofdunkirkin.com/
+Indiana,St. John Township,Dyer,http://www.townofdyer.com
+Indiana,North Township,East Chicago,http://www.eastchicago.com
+Indiana,Blue River Township,Edinburgh,http://www.edinburgh.in.us
+Indiana,Elkhart County,Elkhart,http://www.elkhartindiana.org/
+Indiana,Richland Township,Elletsville,http://www.ellettsville.in.us
+Indiana,Pipe Creek Township,Elwood,http://www.elwoodcity-in.org
+Indiana,Vanderburgh County,Evansville,http://www.evansvillegov.org
+Indiana,Fairmount Township,Fairmount,http://www.fairmount-in.com/
+Indiana,Ferdinand Township,Ferdinand,http://www.ferdinandindiana.org
+Indiana,Fall Creek Township,Fishers,http://www.fishers.in.us
+Indiana,Aboite Township,Fort Wayne,http://www.cityoffortwayne.org
+Indiana,Vernon Township,Fortville,http://www.fortvilleindiana.org/
+Indiana,Center Township,Fowler,http://www.townoffowler.com/
+Indiana,Center Township,Frankfort,http://frankfort-in.gov/
+Indiana,Franklin Township,Franklin,http://www.franklin.in.gov/
+Indiana,Fremont Township,Fremont,http://www.townoffremont.org
+Indiana,DeKalb County,Garrett,http://www.garrettindiana.us
+Indiana,Calumet Township,Gary,https://gary.gov/
+Indiana,Grant County,Gas City,http://www.gascityindiana.com/
+Indiana,Elkhart County,Goshen,http://www.goshenindiana.org/
+Indiana,Greencastle Township,Greencastle,http://www.cityofgreencastle.com
+Indiana,Dearborn County,Greendale,http://www.cityofgreendale.net/
+Indiana,Hancock County,Greenfield,http://www.greenfieldin.org
+Indiana,Decatur County,Greensburg,https://www.cityofgreensburg.com/
+Indiana,Pleasant Township,Greenwood,http://www.greenwood.in.gov
+Indiana,North Township,Griffith,http://griffith.in.gov
+Indiana,North Township,Hammond,http://www.gohammond.com/
+Indiana,Hanover Township,Hanover,https://townofhanover.net/
+Indiana,Blackford County,Hartford City,http://www.hartfordcity.net
+Indiana,Boone Township,Hebron,https://www.hebronindiana.org/
+Indiana,North Township,Highland,http://www.highland.in.gov/
+Indiana,Hobart Township,Hobart,http://www.cityofhobart.org/
+Indiana,Allen County,Huntertown,http://www.huntertown.org/
+Indiana,Patoka Township,Huntingburg,http://www.huntingburg-in.gov/
+Indiana,Huntington County,Huntington,http://www.huntington.in.us/city/
+Indiana,Green Township,Ingalls,http://townofingalls.us
+Indiana,Bainbridge Township,Jasper,http://www.jasperindiana.gov
+Indiana,Clark County,Jeffersonville,http://www.cityofjeff.net/
+Indiana,Grant County,Jonesboro,http://jonesboroindiana.net/
+Indiana,Wayne Township,Kendallville,http://www.kendallville-in.org
+Indiana,Wayne Township,Knightstown,http://www.knightstownonline.com
+Indiana,Center Township,Knox,http://www.cityofknox.net
+Indiana,Howard County,Kokomo,https://www.cityofkokomo.org/
+Indiana,Center Township,La Porte,http://www.cityoflaporte.com
+Indiana,Fairfield Township,Lafayette,http://www.lafayette.in.gov
+Indiana,Lake County,Lake Station,http://www.lakestation-in.gov/
+Indiana,Marion County,Lawrence,http://www.cityoflawrence.org
+Indiana,Dearborn County,Lawrenceburg,http://lawrenceburg-in.com/
+Indiana,Center Township,Lebanon,http://www.lebanon.in.gov/
+Indiana,Cedar Creek Township,Leo-Cedarville,http://www.leocedarville.com/
+Indiana,Center Township,Liberty,https://libertyin.gov/
+Indiana,Perry Township,Ligonier,http://ligonier-in.org/
+Indiana,Stockton Township,Linton,https://www.cityoflinton.com/
+Indiana,Cass County,Logansport,http://www.cityoflogansport.org/
+Indiana,Perry Township,Loogootee,http://loogootee.in.gov
+Indiana,West Creek Township,Lowell,http://www.lowell.net/
+Indiana,Madison Township,Madison,http://madison-in.gov
+Indiana,Grant County,Marion,http://www.cityofmarion.in.gov/
+Indiana,Washington Township,Martinsville,http://www.martinsville.in.gov/
+Indiana,Vernon Township,McCordsville,http://www.mccordsville.org/
+Indiana,Ross Township,Merrillville,http://www.merrillville.in.gov/
+Indiana,Michigan Township,Michigan City,http://emichigancity.com
+Indiana,Middlebury Township,Middlebury,http://www.middleburyin.org/publishsite/index.cfm
+Indiana,Fall Creek Township,Middletown,http://www.middletownin.com/
+Indiana,Penn Township,Mishawaka,http://www.mishawaka.in.gov/
+Indiana,Lawrence County,Mitchell,http://www.mitchell-in.gov/
+Indiana,Union Township,Monticello,http://www.monticelloin.gov
+Indiana,Harrison Township,Montpelier,http://montpelier-indiana.com/
+Indiana,Brown Township,Mooresville,http://mooresville.in.gov
+Indiana,Black Township,Mount Vernon,http://www.mountvernon.in.gov/
+Indiana,Delaware County Regional Airport,Muncie,http://www.cityofmuncie.com/
+Indiana,North Township,Munster,http://www.munster.org
+Indiana,Elkhart County,Nappanee,http://www.nappanee.org/
+Indiana,Floyd County,New Albany,http://www.cityofnewalbany.com/
+Indiana,Henry County,New Castle,http://www.cityofnewcastle.net/
+Indiana,Adams Township,New Haven,http://www.newhavenin.org
+Indiana,Pleasant Township,New Whiteland,http://newwhiteland.in.gov
+Indiana,Ohio Township,Newburgh,http://www.newburgh-in.gov/
+Indiana,Hamilton County,Noblesville,http://www.cityofnoblesville.org
+Indiana,Chester Township,North Manchester,http://www.nmanchester.org/
+Indiana,Center Township,North Vernon,http://northvernon-in.gov/
+Indiana,Columbia Township,Oakland City,http://www.ocindiana.com/
+Indiana,Orleans Township,Orleans,http://www.town.orleans.in.us/
+Indiana,Jefferson Township,Ossian,http://www.ossianin.com/
+Indiana,Fall Creek Township,Pendleton,http://town.pendleton.in.us
+Indiana,Peru Township,Peru,http://www.cityofperu.org
+Indiana,Washington Township,Petersburg,http://www.petersburg.in.gov/
+Indiana,Middle Township,Pittsboro,http://www.townofpittsboro.org
+Indiana,Guilford Township,Plainfield,http://www.townofplainfield.com
+Indiana,Marshall County,Plymouth,https://www.plymouthin.com/
+Indiana,Portage Township,Portage,http://www.ci.portage.in.us
+Indiana,Westchester Township,Porter,http://www.townofporter.com/
+Indiana,Wayne Township,Portland,http://www.thecityofportland.net
+Indiana,Patoka Township,Princeton,https://www.princeton.in.gov/
+Indiana,Marion Township,Rensselaer,http://cityofrensselaerin.com
+Indiana,Boston Township,Richmond,http://richmondindiana.gov
+Indiana,Randolph Township,Rising Sun,http://www.cityofrisingsun.com/
+Indiana,Fulton County,Rochester,http://www.rochester.in.us/
+Indiana,Ohio Township,Rockport,http://www.cityofrockport-in.gov/index.html
+Indiana,Adams Township,Rockville,https://www.rockville-in.gov
+Indiana,Rushville Township,Rushville,http://www.cityofrushville.in.gov/
+Indiana,Washington Township,Salem,http://www.cityofsalemin.com/
+Indiana,Carter Township,Santa Claus,http://www.townofsantaclaus.com/
+Indiana,St. John Township,Schererville,http://www.schererville.org
+Indiana,Vienna Township,Scottsburg,http://www.cityofscottsburg.com/
+Indiana,Silver Creek Township,Sellersburg,https://www.sellersburg.org/
+Indiana,Jackson Township,Seymour,http://www.seymourin.org
+Indiana,Addison Township,Shelbyville,http://www.cityofshelbyvillein.com/
+Indiana,Adams Township,Sheridan,http://www.sheridan.org/
+Indiana,St. Joseph County,South Bend,http://www.southbendin.gov
+Indiana,Marion County,Southport,https://southport.in.gov
+Indiana,Wayne Township,Speedway,http://www.speedwayin.gov
+Indiana,Washington Township,Spencer,http://www.spencer.in.gov/
+Indiana,Center Township,St. John,https://www.stjohnin.com
+Indiana,Hamilton Township,Sullivan,https://www.cityofsullivan.org/
+Indiana,Turkey Creek Township,Syracuse,http://www.syracusein.org
+Indiana,Troy Township,Tell City,https://tellcity.in.gov/
+Indiana,Vigo County,Terre Haute,http://www.terrehaute.in.gov/
+Indiana,Tipton County,Tipton,https://www.tiptongov.com/
+Indiana,Wayne Township,Union City,http://www.unioncity-in.com/
+Indiana,Jefferson Township,Upland,https://uplandindiana.com/
+Indiana,Center Township,Valparaiso,http://www.ci.valparaiso.in.us/
+Indiana,Van Buren Township,Veedersburg,https://www.veedersburg.in.gov
+Indiana,Johnson Township,Versailles,http://townofversailles.com/
+Indiana,Vincennes Township,Vincennes,http://www.vincennes.org
+Indiana,Noble Township,Wabash,http://www.cityofwabash.com/
+Indiana,Lincoln Township,Walkerton,http://www.walkerton.org/
+Indiana,Plain Township,Warsaw,http://warsaw.in.gov/
+Indiana,Washington Township,Washington,http://www.washingtonin.us
+Indiana,Wabash Township,West Lafayette,https://www.westlafayette.in.gov/
+Indiana,Hamilton County,Westfield,http://westfield.in.gov
+Indiana,New Durham Township,Westville,http://www.westville.us
+Indiana,Pleasant Township,Whiteland,http://www.townofwhiteland.com
+Indiana,Worth Township,Whitestown,http://whitestown.in.gov/
+Indiana,North Township,Whiting,http://whitingindiana.com
+Indiana,Monroe Township,Winamac,http://townofwinamac.com/
+Indiana,White River Township,Winchester,http://www.winchester-in.gov/
+Indiana,Wayne Township,Winona Lake,http://www.winonalake.net/
+Indiana,Maumee Township,Woodburn,https://www.cityofwoodburn.org/
+Indiana,Mount Pleasant Township,Yorktown,http://www.yorktownindiana.org/
+Indiana,Eagle Township,Zionsville,http://www.zionsville-in.gov/
+Iowa,Polk County,Altoona,http://www.altoona-iowa.com/
+Iowa,Story County,Ames,http://www.cityofames.org/
+Iowa,Polk County,Ankeny,http://www.ankenyiowa.gov/
+Iowa,Scott County,Bettendorf,http://www.bettendorf.org/
+Iowa,Des Moines County,Burlington,http://burlingtoniowa.org/
+Iowa,Black Hawk County,Cedar Falls,https://www.cedarfalls.com/
+Iowa,Linn County,Cedar Rapids,http://www.cedar-rapids.org/
+Iowa,Clinton County,Clinton,http://www.cityofclintoniowa.us/
+Iowa,Polk County,Clive,http://www.cityofclive.com
+Iowa,Johnson County,Coralville,http://www.coralville.org/
+Iowa,Pottawattamie County,Council Bluffs,http://www.councilbluffs-ia.gov/
+Iowa,Scott County,Davenport,http://www.davenportiowa.com/
+Iowa,Polk County,Des Moines,http://www.dmgov.org/
+Iowa,Dubuque County,Dubuque,http://www.cityofdubuque.org
+Iowa,Webster County,Fort Dodge,http://www.fortdodgeiowa.org/
+Iowa,Warren County,Indianola,http://www.indianolaiowa.gov/
+Iowa,Johnson County,Iowa City,https://www.icgov.org/
+Iowa,Polk County,Johnston,http://www.cityofjohnston.com/
+Iowa,Linn County,Marion,http://www.cityofmarion.org
+Iowa,Marshall County,Marshalltown,http://www.marshalltown-ia.gov/
+Iowa,Cerro Gordo County,Mason City,http://www.masoncity.net/
+Iowa,Muscatine County,Muscatine,http://www.muscatineiowa.gov/
+Iowa,Jasper County,Newton,http://www.newtongov.org
+Iowa,Johnson County,North Liberty,http://www.northlibertyiowa.org/
+Iowa,Douglas County,Omaha,http://www.cityofomaha.org
+Iowa,Wapello County,Ottumwa,http://ottumwa.us
+Iowa,Woodbury County,Sioux City,http://sioux-city.org
+Iowa,Polk County,Urbandale,http://www.urbandale.org
+Iowa,Black Hawk County,Waterloo,http://cityofwaterlooiowa.com/
+Iowa,Dallas County,Waukee,http://www.waukee.org
+Iowa,Polk County,West Des Moines,http://www.wdm.iowa.gov/
+Kansa,Dickinson County,Abilene,https://www.abilenecityhall.com/
+Kansa,Butler County,Andover,https://www.andoverks.com/
+Kansa,Cowley County,Arkansas City,https://www.arkcity.org/
+Kansa,Shannon Township,Atchison,https://cityofatchison.com/
+Kansa,Butler County,Augusta,https://www.augustaks.org/
+Kansa,Leavenworth County,Basehor,https://www.cityofbasehor.org/
+Kansa,Sedgwick County,Bel Aire,https://www.belaireks.gov/
+Kansa,Wyandotte County,Bonner Springs,https://bonnersprings.org/
+Kansa,Neosho County,Chanute,https://www.chanute.org/
+Kansa,Montgomery County,Coffeyville,https://www.coffeyville.com/
+Kansa,Thomas County,Colby,https://www.cityofcolby.com/
+Kansa,Cloud County,Concordia,https://www.concordiaks.org/
+Kansa,Lexington Township,De Soto,http://www.desotoks.us/
+Kansa,Sedgwick County,Derby,http://www.derbyweb.com/
+Kansa,Ford County,Dodge City,https://www.dodgecity.org/
+Kansa,Butler County,El Dorado,https://eldoks.com/
+Kansa,Lyon County,Emporia,https://www.emporiaks.gov/
+Kansa,Douglas County,Eudora,https://www.cityofeudoraks.gov/
+Kansa,Bourbon County,Fort Scott,https://www.fscity.org/
+Kansa,Finney County,Garden City,https://www.garden-city.org/
+Kansa,Johnson County,Gardner,https://www.gardnerkansas.gov/
+Kansa,Sedgwick County,Goddard,https://www.goddardks.gov/
+Kansa,Barton County,Great Bend,https://www.greatbendks.net/
+Kansa,Ellis County,Hays,https://www.haysusa.com/
+Kansa,Sedgwick County,Haysville,https://www.haysville-ks.com/
+Kansa,Reno County,Hutchinson,https://www.hutchgov.com/
+Kansa,Montgomery County,Independence,https://www.independenceks.gov/
+Kansa,Allen County,Iola,https://www.cityofiola.com/
+Kansa,Geary County,Junction City,https://www.junctioncity-ks.gov/
+Kansa,Wyandotte County,Kansas City,https://www.wycokck.org/
+Kansa,Leavenworth County,Lansing,https://www.lansingks.org/
+Kansa,Douglas County,Lawrence,https://lawrenceks.org/
+Kansa,Leavenworth County,Leavenworth,https://www.leavenworthks.org/
+Kansa,Johnson County,Leawood,https://www.leawood.org/
+Kansa,Johnson County,Lenexa,https://www.lenexa.com/
+Kansa,Seward County,Liberal,https://www.cityofliberal.org/
+Kansa,Sedgwick County,Maize,https://cityofmaize.org/
+Kansa,Riley County,Manhattan,https://cityofmhk.com/
+Kansa,McPherson County,McPherson,https://www.mcphersonks.org/
+Kansa,Johnson County,Merriam,https://www.merriam.org/
+Kansa,Johnson County,Mission,https://www.missionks.org/
+Kansa,Sedgwick County,Mulvane,https://www.mulvanekansas.com/
+Kansa,Newton Township,Newton,https://www.newtonkansas.com/
+Kansa,Johnson County,Olathe,https://www.olatheks.org/
+Kansa,Franklin County,Ottawa,https://www.ottawaks.gov/
+Kansa,Johnson County,Overland Park,https://www.opkansas.org/
+Kansa,Miami County,Paola,https://cityofpaola.com/
+Kansa,Sedgwick County,Park City,https://www.parkcityks.com/
+Kansa,Labette County,Parsons,https://www.parsonsks.com/
+Kansa,Crawford County,Pittsburg,https://www.pittks.org/
+Kansa,Johnson County,Prairie Village,https://www.pvkansas.com/
+Kansa,Pratt County,Pratt,https://www.cityofprattks.com/
+Kansa,Johnson County,Roeland Park,https://www.roelandpark.net/
+Kansa,Saline County,Salina,https://salina-ks.gov/
+Kansa,Johnson County,Shawnee,https://www.cityofshawnee.org/
+Kansa,Johnson County,Spring Hill,https://www.springhillks.gov/
+Kansa,Leavenworth County,Tonganoxie,https://www.tonganoxie.org/
+Kansa,Shawnee County,Topeka,https://www.topeka.org/
+Kansa,Grant County,Ulysses,https://www.cityofulysses.com/
+Kansa,Sedgwick County,Valley Center,https://valleycenterks.org/
+Kansa,Sumner County,Wellington,https://www.cityofwellington.net/
+Kansa,Sedgwick County,Wichita,http://www.wichita.gov/
+Kansa,Walnut Township,Winfield,https://www.winfieldks.org/
+Kentucky,Logan County,Adairville,http://adairvilleky.us
+Kentucky,Campbell County,Alexandria,http://alexandriaky.org/
+Kentucky,Jefferson County,Anchorage,http://www.cityofanchorage.org
+Kentucky,Boyd County,Ashland,http://www.ashlandky.gov
+Kentucky,Logan County,Auburn,http://auburnky.us
+Kentucky,Jefferson County,Audubon Park,https://www.audubonparkky.org/
+Kentucky,Bracken County,Augusta,http://www.augustaky.com
+Kentucky,Jefferson County,Bancroft,http://cityofbancroftky.org
+Kentucky,Jefferson County,Barbourmeade,http://barbourmeade.org
+Kentucky,Knox County,Barbourville,http://www.cityofbarbourville.com
+Kentucky,Nelson County,Bardstown,http://www.cityofbardstown.org/
+Kentucky,Lee County,Beattyville,http://www.beattyville.org
+Kentucky,Ohio County,Beaver Dam,https://beaverdam.ky.gov//
+Kentucky,Jefferson County,Beechwood Village,http://www.beechwoodvillage.org
+Kentucky,Greenup County,Bellefonte,http://bellefonte.ky.gov
+Kentucky,Jefferson County,Bellemeade,http://www.cityofbellemeade.org
+Kentucky,Campbell County,Bellevue,http://www.bellevueky.org
+Kentucky,Harlan County,Benham,http://www.benhamky.org
+Kentucky,Marshall County,Benton,http://www.cityofbenton.org
+Kentucky,Madison County,Berea,http://bereaky.gov
+Kentucky,Harrison County,Berry,http://cityofberry.com/
+Kentucky,Nelson County,Bloomfield,http://www.bloomfieldky.com
+Kentucky,Jefferson County,Blue Ridge Manor,http://blueridgemanorky.org
+Kentucky,Warren County,Bowling Green,http://www.bgky.org/
+Kentucky,Meade County,Brandenburg,http://www.brandenburgky.org
+Kentucky,Jefferson County,Briarwood,http://www.briarwoodky.com
+Kentucky,Kenton County,Bromley,http://www.cityofbromley.com
+Kentucky,Jefferson County,Brownsboro Farm,http://brownsborofarm.org
+Kentucky,Jefferson County,Brownsboro Village,http://www.brownsborovillage.org
+Kentucky,Cumberland County,Burkesville,http://www.cityofburkesville.org/
+Kentucky,Trigg County,Cadiz,http://cadiz.ky.gov
+Kentucky,Marshall County,Calvert City,http://www.calvertcity.com
+Kentucky,Henry County,Campbellsburg,http://www.cityofcampbellsburg.org
+Kentucky,Taylor County,Campbellsville,http://www.campbellsville.us
+Kentucky,Grayson County,Caneyville,http://caneyville.ky.gov
+Kentucky,Nicholas County,Carlisle,https://carlisle.ky.gov
+Kentucky,Carroll County,Carrollton,http://carrolltonky.net
+Kentucky,Barren County,Cave City,http://www.cityofcavecity.com
+Kentucky,Muhlenberg County,Central City,http://cityofcentralcity.com/
+Kentucky,Grayson County,Clarkson,http://clarkson.ky.gov
+Kentucky,Powell County,Clay City,https://claycity.ky.gov/
+Kentucky,Breckinridge County,Cloverport,http://www.cloverport.com
+Kentucky,Pike County,Coal Run Village,http://www.coalrunky.gov/
+Kentucky,Campbell County,Cold Spring,http://www.coldspringky.com
+Kentucky,Jefferson County,Coldstream,http://www.coldstreamky.org
+Kentucky,Adair County,Columbia,http://www.cityofcolumbiaky.com
+Kentucky,Whitley County,Corbin,http://www.corbin-ky.gov/
+Kentucky,Grant County,Corinth,http://corinth.ky.gov
+Kentucky,Henderson County,Corydon,http://www.corydonkentucky.com/
+Kentucky,Kenton County,Covington,http://www.covingtonky.gov/
+Kentucky,Jefferson County,Creekside,http://www.creeksidecity.com
+Kentucky,Kenton County,Crescent Springs,http://www.crescent-springs.ky.us
+Kentucky,Kenton County,Crestview Hills,http://www.crestviewhills.com
+Kentucky,Grant County,Crittenden,https://crittenden.ky.gov/
+Kentucky,Christian County,Crofton,http://www.croftonky.com
+Kentucky,Jefferson County,Crossgate,http://crossgateky.org
+Kentucky,Harrison County,Cynthiana,http://www.cynthianaky.com
+Kentucky,Boyle County,Danville,http://www.danvilleky.gov
+Kentucky,Caldwell County,Dawson Springs,http://dawsonspringsky.com
+Kentucky,Campbell County,Dayton,http://www.daytonky.com
+Kentucky,Webster County,Dixon,http://www.cityofdixon.net/
+Kentucky,Jefferson County,Douglass Hills,http://cityofdouglasshills.com
+Kentucky,Jefferson County,Druid Hills,http://druidhillsky.gov
+Kentucky,Grant County,Dry Ridge,http://cdrky.org
+Kentucky,Hopkins County,Earlington,https://earlingtongovcity.com/
+Kentucky,Lyon County,Eddyville,http://eddyvilleky.org
+Kentucky,Kenton County,Edgewood,http://www.edgewoodky.com
+Kentucky,Metcalfe County,Edmonton,http://cityofedmontonky.com/
+Kentucky,Hardin County,Elizabethtown,http://www.elizabethtownky.org
+Kentucky,Pike County,Elkhorn City,http://www.elkhorncity.org/
+Kentucky,Todd County,Elkton,http://www.elktonky.com
+Kentucky,Kenton County,Elsmere,http://www.cityofelsmere.com
+Kentucky,Henry County,Eminence,http://eminence.ky.gov
+Kentucky,Kenton County,Erlanger,http://erlangerky.gov/
+Kentucky,Harlan County,Evarts,http://evartskentucky.com
+Kentucky,Kenton County,Fairview,http://fairview.ky.gov
+Kentucky,Pendleton County,Falmouth,http://cityoffalmouth.com/
+Kentucky,Jefferson County,Fincastle,http://www.cityoffincastle.com/
+Kentucky,Greenup County,Flatwoods,http://www.flatwoodsky.org
+Kentucky,Fleming County,Flemingsburg,http://www.flemingsburgky.org
+Kentucky,Boone County,Florence,https://www.florence-ky.gov/
+Kentucky,Ohio County,Fordsville,http://www.fordsvilleky.com/
+Kentucky,Jefferson County,Forest Hills,http://www.city-of-forest-hills.com/
+Kentucky,Kenton County,Fort Mitchell,http://fortmitchell.com/
+Kentucky,Campbell County,Fort Thomas,http://ftthomas.org
+Kentucky,Kenton County,Fort Wright,http://www.fortwright.com
+Kentucky,Monroe County,Fountain Run,https://www.fountainrunkentucky.com
+Kentucky,Bullitt County,Fox Chase,http://www.cityoffoxchase.org
+Kentucky,Franklin County,Frankfort,http://www.frankfort.ky.gov/
+Kentucky,Simpson County,Franklin,http://www.franklinky.org
+Kentucky,Fulton County,Fulton,http://fulton-ky.com
+Kentucky,Scott County,Georgetown,https://www.georgetownky.gov/
+Kentucky,Barren County,Glasgow,http://www.cityofglasgow.org
+Kentucky,Jefferson County,Glenview,http://www.glenviewky.gov
+Kentucky,Jefferson County,Glenview Hills,http://glenviewhillsky.blogspot.com
+Kentucky,Oldham County,Goshen,http://cityofgoshen.com/
+Kentucky,Livingston County,Grand Rivers,http://www.grandrivers.org
+Kentucky,Jefferson County,Graymoor-Devondale,http://www.graymoor-devondale.com
+Kentucky,Carter County,Grayson,http://graysonky.net
+Kentucky,Jefferson County,Green Spring,http://www.cityofgreenspring.com
+Kentucky,Green County,Greensburg,http://www.greensburgonline.com
+Kentucky,Greenup County,Greenup,http://www.greenupky.net
+Kentucky,Muhlenberg County,Greenville,https://www.greenvilleky.org/
+Kentucky,Todd County,Guthrie,http://guthrieky.com/
+Kentucky,Hopkins County,Hanson,http://www.cityofhanson.com
+Kentucky,Breckinridge County,Hardinsburg,http://hardinsburg.ky.gov
+Kentucky,Mercer County,Harrodsburg,http://www.harrodsburgcity.org/
+Kentucky,Ohio County,Hartford,https://hartfordky.org/
+Kentucky,Hancock County,Hawesville,http://www.hawesville.us
+Kentucky,Perry County,Hazard,http://hazardky.gov/
+Kentucky,Calloway County,Hazel,http://hazelky.com
+Kentucky,Henderson County,Henderson,http://www.cityofhendersonky.org
+Kentucky,Jefferson County,Heritage Creek,http://www.heritagecreek.ky.gov
+Kentucky,Fulton County,Hickman,https://hickman.cityof.org/
+Kentucky,Campbell County,Highland Heights,http://hhky.com
+Kentucky,Bullitt County,Hillview,http://www.hillviewky.org/
+Kentucky,LaRue County,Hodgenville,http://hodgenville.ky.gov
+Kentucky,Jefferson County,Hollyvilla,http://hollyvilla.org/
+Kentucky,Christian County,Hopkinsville,http://www.hopkinsvilleky.us
+Kentucky,Hart County,Horse Cave,http://www.horsecaveky.com
+Kentucky,Jefferson County,Houston Acres,http://www.neighborhoodlink.com/Houston_Acres
+Kentucky,Jefferson County,Hurstbourne,http://www.hurstbourne.org
+Kentucky,Jefferson County,Hurstbourne Acres,http://hurstbourneacres.org
+Kentucky,Lincoln County,Hustonville,http://www.hustonvilleky.com/index.html
+Kentucky,Leslie County,Hyden,http://www.cityofhyden.com
+Kentucky,Kenton County,Independence,http://www.cityofindependence.org
+Kentucky,Jefferson County,Indian Hills,http://www.indianhillsky.org/
+Kentucky,Martin County,Inez,http://www.inez.ky.gov/
+Kentucky,Breckinridge County,Irvington,http://irvington.ky.gov
+Kentucky,Jefferson County,Jeffersontown,http://www.jeffersontownky.com
+Kentucky,Letcher County,Jenkins,http://www.cityofjenkins.org
+Kentucky,Boyle County,Junction City,http://jcky.us/
+Kentucky,Jefferson County,Kingsley,http://www.cityofkingsley.org
+Kentucky,Lyon County,Kuttawa,http://www.cityofkuttawa.com
+Kentucky,Oldham County,La Grange,http://www.lagrangeky.net/
+Kentucky,Kenton County,Lakeside Park,http://www.cityoflakesidepark.com/
+Kentucky,Rowan County,Lakeview Heights,http://www.lakeviewheightsky.us
+Kentucky,Garrard County,Lancaster,http://www.cityoflancasterky.com
+Kentucky,Jefferson County,Langdon Place,http://www.langdonplace.com
+Kentucky,Anderson County,Lawrenceburg,http://www.lawrenceburgky.org/
+Kentucky,Marion County,Lebanon,http://lebanon.ky.gov
+Kentucky,Grayson County,Leitchfield,http://www.leitchfield.org
+Kentucky,Logan County,Lewisburg,http://cityoflewisburgky.com
+Kentucky,Hancock County,Lewisport,http://www.lewisport.cityof.org
+Kentucky,Fayette County,Lexington,http://www.lexingtonky.gov
+Kentucky,Casey County,Liberty,http://libertykentucky.org
+Kentucky,Jefferson County,Lincolnshire,http://www.cityoflincolnshire.com
+Kentucky,McLean County,Livermore,http://www.cityoflivermore.info
+Kentucky,Rockcastle County,Livingston,http://www.livingstonky.com/
+Kentucky,Laurel County,London,http://www.londonky.gov
+Kentucky,Lawrence County,Louisa,http://www.cityoflouisa.org
+Kentucky,Jefferson County,Louisville,http://louisvilleky.gov/
+Kentucky,Kenton County,Ludlow,http://www.ludlow.org/
+Kentucky,Jefferson County,Lyndon,http://cityoflyndon.org
+Kentucky,Jefferson County,Lynnview,http://cityoflynnview.com
+Kentucky,Hopkins County,Madisonville,http://madisonvilleliving.com/
+Kentucky,Clay County,Manchester,https://welovemanchester.com/
+Kentucky,Crittenden County,Marion,http://www.marionky.gov
+Kentucky,Graves County,Mayfield,http://mayfieldky.gov/
+Kentucky,Mason County,Maysville,http://www.cityofmaysville.com
+Kentucky,Jefferson County,Meadow Vale,http://cityofmeadowvale.org
+Kentucky,Bell County,Middlesboro,http://www.middlesborokentucky.net
+Kentucky,Jefferson County,Middletown,http://www.cityofmiddletownky.org
+Kentucky,Woodford County,Midway,https://www.meetmeinmidway.com/
+Kentucky,Bourbon County,Millersburg,http://www.millersburgky.com
+Kentucky,Trimble County,Milton,http://milton.ky.gov/
+Kentucky,Wayne County,Monticello,https://www.monticelloky.gov/
+Kentucky,Rowan County,Morehead,http://morehead-ky.gov
+Kentucky,Union County,Morganfield,https://morganfield.ky.gov/
+Kentucky,Butler County,Morgantown,http://www.morgantown-ky.com
+Kentucky,Hopkins County,Mortons Gap,http://mortonsgap.ky.gov
+Kentucky,Montgomery County,Mount Sterling,http://mtsterling.ky.gov/
+Kentucky,Rockcastle County,Mount Vernon,https://mtvernonky.org/
+Kentucky,Bullitt County,Mount Washington,https://mtwashingtonky.org/
+Kentucky,Meade County,Muldraugh,http://muldraugh.ky.gov
+Kentucky,Hart County,Munfordville,http://cityofmunfordville.com
+Kentucky,Calloway County,Murray,http://www.murrayky.gov
+Kentucky,Jefferson County,Murray Hill,http://www.cityofmurrayhill.com
+Kentucky,Henry County,New Castle,http://www.newcastleky.com
+Kentucky,Campbell County,Newport,http://www.newportky.gov
+Kentucky,Jessamine County,Nicholasville,http://www.nicholasville.org
+Kentucky,Jefferson County,Norbourne Estates,http://www.norbourneestates.org
+Kentucky,Jefferson County,Northfield,http://www.cityofnorthfield.com
+Kentucky,Hopkins County,Nortonville,http://www.nortonvilleky.us/
+Kentucky,Jefferson County,Norwood,http://norwoodky.com
+Kentucky,Christian County,Oak Grove,http://www.oakgroveky.org
+Kentucky,Warren County,Oakland,https://oakland.ky.gov
+Kentucky,Carter County,Olive Hill,http://olivehill.ky.gov
+Kentucky,Daviess County,Owensboro,http://www.owensboro.org
+Kentucky,McCracken County,Paducah,http://paducahky.gov
+Kentucky,Johnson County,Paintsville,http://www.cityofpaintsville.net
+Kentucky,Bourbon County,Paris,http://paris.ky.gov
+Kentucky,Barren County,Park City,http://parkcity.ky.gov
+Kentucky,Kenton County,Park Hills,http://www.parkhillsky.net
+Kentucky,Jefferson County,Parkway Village,http://www.parkwayvillageky.com
+Kentucky,Oldham County,Pewee Valley,http://www.peweevalleyky.org
+Kentucky,Pike County,Pikeville,http://www.pikevilleky.gov
+Kentucky,Bell County,Pineville,http://www.thecityofpineville.com
+Kentucky,Bullitt County,Pioneer Village,http://www.cityofpioneervillage.org
+Kentucky,Jefferson County,Plantation,http://www.plantationky.com
+Kentucky,Henry County,Pleasureville,http://pleasurevilleky.com/
+Kentucky,Floyd County,Prestonsburg,http://prestonsburgcity.org/
+Kentucky,Caldwell County,Princeton,http://www.princeton.ky.gov
+Kentucky,Jefferson County,Prospect,http://prospectky.us
+Kentucky,Webster County,Providence,http://www.webstercountyky.com/providence.php
+Kentucky,Greenup County,Raceland,https://www.racelandky.org
+Kentucky,Hardin County,Radcliff,http://www.radcliff.org
+Kentucky,Jefferson County,Richlawn,http://www.cityofrichlawn.com
+Kentucky,Madison County,Richmond,http://www.richmond.ky.us
+Kentucky,Oldham County,River Bluff,https://cityofriverbluff.com/
+Kentucky,Jefferson County,Riverwood,https://www.riverwoodky.org/
+Kentucky,Jefferson County,Rolling Fields,http://rollingfieldsky.org
+Kentucky,Jefferson County,Rolling Hills,http://cityofrollinghillsky.com
+Kentucky,Greenup County,Russell,http://www.russellky.net
+Kentucky,Russell County,Russell Springs,https://russellsprings.net/
+Kentucky,Logan County,Russellville,http://www.russellvilleky.org
+Kentucky,Scott County,Sadieville,http://www.cityofsadieville.com
+Kentucky,Pulaski County,Science Hill,http://www.cityofsciencehill.com
+Kentucky,Allen County,Scottsville,http://www.scottsvilleky.org
+Kentucky,Jefferson County,Seneca Gardens,http://www.cityofsenecagardens.com
+Kentucky,Shelby County,Shelbyville,http://shelbyvillekentucky.com
+Kentucky,Bullitt County,Shepherdsville,http://shepherdsville.net
+Kentucky,Jefferson County,Shively,http://www.shivelyky.gov
+Kentucky,Campbell County,Silver Grove,http://cityofsilvergroveky.com
+Kentucky,Shelby County,Simpsonville,http://www.cityofsimpsonvilleky.com
+Kentucky,Warren County,Smiths Grove,http://www.smithsgrove.org/
+Kentucky,Pulaski County,Somerset,http://www.cityofsomerset.com/
+Kentucky,Campbell County,Southgate,http://southgateky.org/
+Kentucky,Jefferson County,Spring Mill,http://cityofspringmill.com
+Kentucky,Washington County,Springfield,http://www.springfieldky.org/
+Kentucky,Jefferson County,St. Matthews,http://www.stmatthewsky.gov
+Kentucky,Jefferson County,St. Regis Park,http://www.stregispark.net
+Kentucky,Lincoln County,Stanford,http://www.stanford.ky.gov
+Kentucky,Powell County,Stanton,https://www.stantonky.gov/
+Kentucky,Jefferson County,Strathmoor Manor,http://www.cityofstrathmoormanor.com/
+Kentucky,Jefferson County,Strathmoor Village,http://www.cityofstrathmoorvillage.com
+Kentucky,Jefferson County,Sycamore,http://www.cityofsycamore.net
+Kentucky,Kenton County,Taylor Mill,http://www.taylormillky.gov
+Kentucky,Spencer County,Taylorsville,http://taylorsville.ky.gov/Pages/default.aspx
+Kentucky,Jefferson County,Thornhill,http://cityofthornhill.org
+Kentucky,Monroe County,Tompkinsville,http://tompkinsvilleky.gov/
+Kentucky,Todd County,Trenton,http://www.trentonky.org/
+Kentucky,Boone County,Union,http://www.cityofunionky.org/
+Kentucky,Lewis County,Vanceburg,http://www.cityofvanceburg.com
+Kentucky,Woodford County,Versailles,https://versailles.ky.gov/
+Kentucky,Kenton County,Villa Hills,http://villahillsky.org/
+Kentucky,Hardin County,Vine Grove,http://www.vinegrove.org
+Kentucky,Boone County,Walton,http://www.cityofwalton.org
+Kentucky,Gallatin County,Warsaw,http://www.cityofwarsawky.org
+Kentucky,Jefferson County,Watterson Park,http://wattersonparkky.com
+Kentucky,Jefferson County,Wellington,http://cityofwellingtonky.com
+Kentucky,Jefferson County,West Buechel,http://www.westbuechelky.gov
+Kentucky,Morgan County,West Liberty,http://www.cityofwestliberty.com/
+Kentucky,Hardin County,West Point,http://westpoint.ky.gov
+Kentucky,Jefferson County,Westwood,http://www.cityofwestwood.org
+Kentucky,Letcher County,Whitesburg,http://www.cityofwhitesburg.com
+Kentucky,Ballard County,Wickliffe,https://wickliffe.ky.gov
+Kentucky,Campbell County,Wilder,https://WilderKY.gov/
+Kentucky,Whitley County,Williamsburg,http://www.williamsburgky.com/
+Kentucky,Grant County,Williamstown,http://wtownky.org
+Kentucky,Jessamine County,Wilmore,http://www.wilmore.org/
+Kentucky,Clark County,Winchester,http://winchesterky.com
+Kentucky,Jefferson County,Windy Hills,http://cityofwindyhills.com
+Kentucky,Jefferson County,Woodlawn Park,http://www.woodlawnpark.com
+Kentucky,Jefferson County,Worthington Hills,http://www.cityofworthingtonhillsky.gov/
+Lousiana,Greenup County,Abbeville,http://www.cityofabbeville.net
+Lousiana,Greenup County,Abita Springs,https://www.townofabitasprings.com
+Lousiana,Greenup County,Addis,http://www.addisla.org/
+Lousiana,Greenup County,Albany,http://townofalbanyla.com/
+Lousiana,Greenup County,Alexandria,http://www.cityofalexandriala.com
+Lousiana,Greenup County,Amite City,http://www.townofamitecity.com/
+Lousiana,Greenup County,Arcadia,http://www.arcadialouisiana.org
+Lousiana,Greenup County,Arnaudville,http://www.arnaudvillela.com
+Lousiana,Greenup County,Athens,http://www.athensla.com
+Lousiana,Greenup County,Baker,http://cityofbakerla.us
+Lousiana,Greenup County,Ball,http://www.ball.govoffice2.com/
+Lousiana,Greenup County,Bastrop,https://www.cityofbastrop.com/
+Lousiana,Greenup County,Baton Rouge,https://www.brla.gov
+Lousiana,Greenup County,Benton,http://www.bentonlouisiana.webs.com/
+Lousiana,Greenup County,Bernice,http://www.bernicela.org
+Lousiana,Greenup County,Berwick,http://www.townofberwick.org
+Lousiana,Greenup County,Blanchard,http://www.townofblanchard.us
+Lousiana,Greenup County,Bogalusa,http://www.bogalusa.org
+Lousiana,Greenup County,Bossier City,http://www.bossiercity.org
+Lousiana,Greenup County,Breaux Bridge,http://www.breauxbridgelive.com
+Lousiana,Greenup County,Broussard,http://www.broussardla.com
+Lousiana,Greenup County,Brusly,https://www.bruslyla.com/
+Lousiana,Greenup County,Bunkie,http://bunkiecityhall.com
+Lousiana,Greenup County,Carencro,http://www.carencro.org/
+Lousiana,Greenup County,Central,http://centralgov.com
+Lousiana,Greenup County,Chatham,http://www.townofchatham.org
+Lousiana,Greenup County,Choudrant,http://www.choudrant.org
+Lousiana,Greenup County,Church Point,http://www.churchpoint.org
+Lousiana,Greenup County,Clinton,http://www.townofclintonla.com/
+Lousiana,Greenup County,Cottonport,https://townofcottonport.com
+Lousiana,Greenup County,Coushatta,https://townofcoushatta.com/
+Lousiana,Greenup County,Covington,http://www.covla.com
+Lousiana,Greenup County,Crowley,http://www.crowley-la.com/
+Lousiana,Greenup County,Delcambre,http://www.townofdelcambre.net
+Lousiana,Greenup County,Delhi,https://townofdelhi.municipalimpact.com/
+Lousiana,Greenup County,Denham Springs,https://www.cityofdenhamsprings.com
+Lousiana,Greenup County,DeQuincy,http://www.dequincy.org/
+Lousiana,Greenup County,DeRidder,http://www.cityofderidder.org
+Lousiana,Greenup County,Dixie Inn,http://villageofdixieinn.com/
+Lousiana,Greenup County,Donaldsonville,http://www.donaldsonville-la.gov/
+Lousiana,Greenup County,Dubach,http://www.dubachla.com
+Lousiana,Greenup County,Duson,http://townofduson.com
+Lousiana,Greenup County,Elizabeth,https://villageofelizabeth.com
+Lousiana,Greenup County,Erath,http://townoferath.com/
+Lousiana,Greenup County,Eunice,http://www.eunice-la.com
+Lousiana,Greenup County,Evergreen,http://www.evergreenla.org
+Lousiana,Greenup County,Farmerville,http://www.farmerville.org
+Lousiana,Greenup County,Fenton,http://www.villageoffenton.com
+Lousiana,Greenup County,Fisher,http://www.toledobendlakecountry.com/
+Lousiana,Greenup County,Florien,http://villageofflorien.com/
+Lousiana,Greenup County,Folsom,http://www.villageoffolsom.com/
+Lousiana,Greenup County,Fordoche,https://www.fordoche.org/
+Lousiana,Greenup County,Forest Hill,https://foresthill-la.com/
+Lousiana,Greenup County,Franklin,http://www.franklin-la.com
+Lousiana,Greenup County,Franklinton,http://www.townoffranklinton.com
+Lousiana,Greenup County,French Settlement,https://www.livingstonparishla.gov/our-parish/page/french-settlement
+Lousiana,Greenup County,Golden Meadow,https://www.townofgoldenmeadow-la.gov/
+Lousiana,Greenup County,Gonzales,http://www.gonzalesla.com
+Lousiana,Greenup County,Grambling,http://cityofgrambling.org/
+Lousiana,Greenup County,Gramercy,http://www.townofgramercy.com/
+Lousiana,Greenup County,Grand Cane,http://www.villageofgrandcane.com
+Lousiana,Greenup County,Grand Isle,https://www.townofgrandisle.com
+Lousiana,Greenup County,Greenwood,http://greenwoodla.org
+Lousiana,Greenup County,Gretna,http://www.gretnala.com
+Lousiana,Greenup County,Gueydan,http://www.gueydan.org/
+Lousiana,Greenup County,Hammond,http://www.hammond.org/
+Lousiana,Greenup County,Harahan,http://www.cityofharahan.com
+Lousiana,Greenup County,Haughton,http://www.townofhaughton.org
+Lousiana,Greenup County,Haynesville,http://haynesvillela.org/
+Lousiana,Greenup County,Hessmer,http://www.hessmer.com
+Lousiana,Greenup County,Homer,https://www.townofhomer.com/
+Lousiana,Greenup County,Hornbeck,http://townofhornbeck.com
+Lousiana,Greenup County,Houma,http://www.tpcg.org/
+Lousiana,Greenup County,Iowa,http://iowala.org
+Lousiana,Greenup County,Jackson,http://www.jacksonla.com
+Lousiana,Greenup County,Jean Lafitte,http://www.townofjeanlafitte.com/
+Lousiana,Greenup County,Jeanerette,http://www.jeanerette.com
+Lousiana,Greenup County,Jena,http://townofjena.com
+Lousiana,Greenup County,Jennings,http://www.cityofjennings.com
+Lousiana,Greenup County,Jonesboro,https://www.jonesborola.net
+Lousiana,Greenup County,Kaplan,https://www.kaplanla.com/
+Lousiana,Greenup County,Kenner,http://www.kenner.la.us
+Lousiana,Greenup County,Kinder,https://townofkinder.com/
+Lousiana,Greenup County,Krotz Springs,http://krotzsprings.net/
+Lousiana,Greenup County,Lafayette,https://www.lafayettela.gov/
+Lousiana,Greenup County,Lake Arthur,http://www.townoflakearthur.org
+Lousiana,Greenup County,Lake Charles,http://www.cityoflakecharles.com
+Lousiana,Greenup County,Lake Providence,http://www.lakeprovidencela.gov/
+Lousiana,Greenup County,Leesville,http://leesvillela.gov/
+Lousiana,Greenup County,Leonville,https://townofleonville.com/
+Lousiana,Greenup County,Lincoln Parish,http://www.lincolnparish.org/
+Lousiana,Greenup County,Livingston,http://www.townoflivingston.com/
+Lousiana,Greenup County,Livonia,http://www.livoniala.net/
+Lousiana,Greenup County,Lockport,http://www.townoflockport.com
+Lousiana,Greenup County,Logansport,http://www.townoflogansport.com
+Lousiana,Greenup County,Loreauville,http://www.loreauville.us/
+Lousiana,Greenup County,Madisonville,http://www.townofmadisonville.org
+Lousiana,Greenup County,Mamou,https://mamou.municipalimpact.com/
+Lousiana,Greenup County,Mandeville,http://www.cityofmandeville.com/
+Lousiana,Greenup County,Mansfield,http://cityofmansfield.net/
+Lousiana,Greenup County,Maringouin,https://www.townofmaringouin.net/
+Lousiana,Greenup County,Marion,http://www.townofmarionla.com/
+Lousiana,Greenup County,Marksville,https://www.cityofmarksville.com/
+Lousiana,Greenup County,Melville,https://www.melvillela.com/
+Lousiana,Greenup County,Merryville,http://www.merryville.us
+Lousiana,Greenup County,Minden,http://www.mindenusa.com
+Lousiana,Greenup County,Monroe,https://monroela.us/
+Lousiana,Greenup County,Moreauville,https://www.moreauville.org/
+Lousiana,Greenup County,Morgan City,http://www.cityofmc.com
+Lousiana,Greenup County,Natchitoches,http://www.natchitochesla.gov/
+Lousiana,Greenup County,New Iberia,http://www.cityofnewiberia.com/site.php
+Lousiana,Greenup County,New Llano,http://www.townofnewllano.com
+Lousiana,Greenup County,New Roads,https://newroads.net
+Lousiana,Greenup County,Oak Grove,http://townofoakgrove.com
+Lousiana,Greenup County,Oakdale,https://www.cityofoakdale.net/
+Lousiana,Greenup County,Oil City,http://www.townofoilcity.com
+Lousiana,Greenup County,Olla,http://www.townofolla.com/
+Lousiana,Greenup County,Opelousas,http://www.cityofopelousas.com
+Lousiana,Greenup County,Palmetto,https://palmetto-la.com/
+Lousiana,Greenup County,Parks,http://www.villageofparks.com/
+Lousiana,Greenup County,Patterson,http://cityofpattersonla.gov/
+Lousiana,Greenup County,Pearl River,http://pearlriverla.com/
+Lousiana,Greenup County,Pineville,https://www.pineville.net
+Lousiana,Greenup County,Pioneer,http://www.villageofpioneer.org
+Lousiana,Greenup County,Plaquemine,http://www.plaquemine.org
+Lousiana,Greenup County,Pollock,http://www.pollockla.us
+Lousiana,Greenup County,Ponchatoula,http://www.cityofponchatoula.com
+Lousiana,Greenup County,Port Allen,http://www.portallen.org
+Lousiana,Greenup County,Port Barre,https://www.townofportbarre.com
+Lousiana,Greenup County,Port Vincent,https://portvincent-la.gov/
+Lousiana,Greenup County,Quitman,https://villageofquitman.com/
+Lousiana,Greenup County,Rayne,http://www.rayne.org
+Lousiana,Greenup County,Rayville,http://www.townofrayville.com/
+Lousiana,Greenup County,Reeves,http://villageofreeves.com/
+Lousiana,Greenup County,Richwood,http://www.townofrichwood.com/
+Lousiana,Greenup County,Rosepine,http://townofrosepine.com/
+Lousiana,Greenup County,Ruston,http://ruston.org
+Lousiana,Greenup County,Sarepta,https://sarepta.govoffice2.com/
+Lousiana,Greenup County,Scott,http://cityofscott.org
+Lousiana,Greenup County,Shreveport,https://www.shreveportla.gov
+Lousiana,Greenup County,Sibley,https://www.sibleyla.com/
+Lousiana,Greenup County,Simmesport,https://simmesportla.com/
+Lousiana,Greenup County,Simpson,http://www.villageofsimpson.com/
+Lousiana,Greenup County,Slaughter,http://www.townofslaughter.org/
+Lousiana,Greenup County,Slidell,http://myslidell.com/
+Lousiana,Greenup County,Sorrento,http://www.sorrentola.gov/
+Lousiana,Greenup County,Springfield,https://townofspringfield.org/
+Lousiana,Greenup County,Springhill,https://www.springhilllouisiana.gov/
+Lousiana,Greenup County,St. Francisville,http://stfrancisville.net
+Lousiana,Greenup County,St. Gabriel,http://www.cityofstgabriel.us
+Lousiana,Greenup County,St. James Parish,http://www.stjamesla.com
+Lousiana,Greenup County,St. Martinville,http://www.stmartinville.org/
+Lousiana,Greenup County,St. Mary Parish,http://www.stmaryparishla.gov/
+Lousiana,Greenup County,Sterlington,http://www.townofsterlington.com
+Lousiana,Greenup County,Stonewall,http://www.thetownofstonewall.com
+Lousiana,Greenup County,Sulphur,http://www.sulphur.org
+Lousiana,Greenup County,Sunset,http://www.sunset.govoffice2.com/
+Lousiana,Greenup County,Tallulah,http://cityoftallulah.org/
+Lousiana,Greenup County,Terrebonne Parish,http://www.tpcg.org
+Lousiana,Greenup County,Thibodaux,http://ci.thibodaux.la.us
+Lousiana,Greenup County,Urania,https://www.facebook.com/pages/Town-of-Urania-Louisiana/494502287258175
+Lousiana,Greenup County,Vidalia,http://cityofvidaliala.com
+Lousiana,Greenup County,Ville Platte,http://www.cityofvilleplatte.com
+Lousiana,Greenup County,Vinton,http://www.cityofvinton.com
+Lousiana,Greenup County,Vivian,http://www.vivian.la.us
+Lousiana,Greenup County,Walker,http://www.walker.la.us
+Lousiana,Greenup County,Welsh,http://www.townofwelsh.com/
+Lousiana,Greenup County,West Monroe,https://www.cityofwestmonroe.com/
+Lousiana,Greenup County,Westlake,http://www.cityofwestlake.com
+Lousiana,Greenup County,Westwego,http://www.cityofwestwego.com
+Lousiana,Greenup County,White Castle,http://towcla.com
+Lousiana,Greenup County,Winnfield,http://www.cityofwinnfield.com
+Lousiana,Greenup County,Woodworth,http://www.townofwoodworth.com
+Lousiana,Greenup County,Youngsville,http://www.youngsville.us
+Lousiana,Greenup County,Zachary,http://www.cityofzachary.org
+Maine,York County,Acton,http://www.actonmaine.org/
+Maine,Kennebec County,Albion,http://www.albionme.com/
+Maine,York County,Alfred,http://www.alfredme.us/
+Maine,Aroostook County,Allagash,http://www.allagash.info
+Maine,Lincoln County,Alna,http://alna.maine.gov
+Maine,York County,Arundel,http://www.arundelmaine.org/
+Maine,Androscoggin County,Auburn,http://www.auburnmaine.gov
+Maine,Kennebec County,Augusta,http://www.augustamaine.gov/
+Maine,Washington County,Baileyville,http://www.baileyville.org/
+Maine,Penobscot County,Bangor,http://www.bangormaine.gov
+Maine,Hancock County,Bar Harbor,http://www.barharbormaine.gov/
+Maine,Sagadahoc County,Bath,http://www.cityofbath.com/
+Maine,Waldo County,Belfast,http://www.cityofbelfast.org/
+Maine,Kennebec County,Belgrade,http://www.townofbelgrade.com/
+Maine,Waldo County,Belmont,http://belmontme.org/
+Maine,York County,Berwick,http://www.berwickmaine.org
+Maine,Oxford County,Bethel,http://www.bethelmaine.org
+Maine,York County,Biddeford,http://www.Biddefordmaine.org
+Maine,Lincoln County,Boothbay,http://www.townofboothbay.org
+Maine,Lincoln County,Boothbay Harbor,http://boothbayharbor.org
+Maine,Sagadahoc County,Bowdoinham,http://www.bowdoinham.com/
+Maine,Penobscot County,Brewer,http://www.brewermaine.gov/
+Maine,Cumberland County,Bridgton,http://www.bridgtonmaine.org
+Maine,Lincoln County,Bristol,http://www.bristolmaine.org/
+Maine,Waldo County,Brooks,http://www.brooks.govoffice2.com/
+Maine,Cumberland County,Brunswick,http://www.brunswickme.org
+Maine,Oxford County,Buckfield,http://www.townofbuckfield.com/
+Maine,Hancock County,Bucksport,https://www.bucksportmaine.gov/
+Maine,York County,Buxton,http://www.buxton.me.us/
+Maine,Washington County,Calais,http://www.calaismaine.org/
+Maine,Somerset County,Cambridge,http://cambridgemaine.com
+Maine,Knox County,Camden,http://www.camdenmaine.gov/
+Maine,Oxford County,Canton,http://www.cantonmaine.org/
+Maine,Cumberland County,Cape Elizabeth,http://www.capeelizabeth.com
+Maine,Aroostook County,Caribou,http://www.cariboumaine.org/
+Maine,Penobscot County,Carmel,http://www.townofcarmel.org
+Maine,Cumberland County,Casco,http://www.cascomaine.org
+Maine,Cumberland County,Chebeague Island,http://www.townofchebeagueisland.org
+Maine,Kennebec County,Chelsea,http://www.chelseamaine.org/
+Maine,Kennebec County,China,http://www.china.govoffice.com
+Maine,Kennebec County,Clinton,http://www.clinton-me.us
+Maine,Penobscot County,Corinna,http://www.corinna.govoffice.com
+Maine,Penobscot County,Corinth,http://www.townofcorinth.com
+Maine,York County,Cornish,http://www.cornishme.com
+Maine,Hancock County,Cranberry Isles,http://cranberryisles-me.gov/
+Maine,Cumberland County,Cumberland,http://www.cumberlandmaine.com/
+Maine,Washington County,Cutler,http://cutlermaine.net/
+Maine,Lincoln County,Damariscotta,http://www.townofdamariscotta.com
+Maine,York County,Dayton,http://www.dayton-me.gov/
+Maine,Penobscot County,Dexter,http://www.dextermaine.org
+Maine,Oxford County,Dixfield,https://dixfield.org/
+Maine,Penobscot County,Dixmont,http://www.townofdixmont.org
+Maine,Piscataquis County,Dover-Foxcroft,http://www.dover-foxcroft.org/
+Maine,Lincoln County,Dresden,http://www.townofdresden.com
+Maine,Penobscot County,East Millinocket,http://www.eastmillinocket.org
+Maine,Washington County,Eastport,http://www.eastport-me.gov/Public_Documents/index
+Maine,Penobscot County,Eddington,http://www.eddingtonmaine.gov
+Maine,Lincoln County,Edgecomb,http://edgecomb.org
+Maine,York County,Eliot,http://www.eliotmaine.org/
+Maine,Hancock County,Ellsworth,http://ellsworthmaine.gov/
+Maine,Penobscot County,Exeter,http://www.townofexetermaine.com/
+Maine,Somerset County,Fairfield,http://www.fairfieldme.com/town/
+Maine,Cumberland County,Falmouth,http://www.falmouthme.org
+Maine,Kennebec County,Farmingdale,http://farmingdalemaine.org
+Maine,Franklin County,Farmington,http://www.farmington-maine.org
+Maine,Kennebec County,Fayette,http://www.fayettemaine.org/
+Maine,Aroostook County,Fort Kent,http://www.fortkent.org
+Maine,Waldo County,Frankfort,http://www.frankfortme.com/
+Maine,Waldo County,Freedom,http://www.freedomme.org/
+Maine,Cumberland County,Freeport,http://www.freeportmaine.com
+Maine,Hancock County,Frenchboro,http://frenchboro.maine.gov/
+Maine,Cumberland County,Frye Island,http://www.fryeisland.com
+Maine,Oxford County,Fryeburg,http://www.fryeburgmaine.org/
+Maine,Kennebec County,Gardiner,http://www.gardinermaine.com/
+Maine,Penobscot County,Glenburn,http://www.glenburn.org
+Maine,Cumberland County,Gorham,http://www.gorham-me.org
+Maine,Cumberland County,Gray,http://www.graymaine.org
+Maine,Penobscot County,Greenbush,http://www.townofgreenbushmaine.org/
+Maine,Piscataquis County,Greenville,http://www.greenvilleme.com
+Maine,Piscataquis County,Guilford,http://www.townofguilford.com/
+Maine,Kennebec County,Hallowell,http://www.hallowell.govoffice.com/
+Maine,Penobscot County,Hampden,https://www.hampdenmaine.gov/
+Maine,Hancock County,Hancock,http://www.hancockmaine.org/
+Maine,Cumberland County,Harpswell,http://www.harpswell.maine.gov/
+Maine,Cumberland County,Harrison,http://www.harrisonmaine.org
+Maine,Penobscot County,Hermon,http://www.hermon.net
+Maine,Penobscot County,Holden,http://www.holdenmaine.com
+Maine,York County,Hollis,http://www.hollismaine.org
+Maine,Knox County,Hope,http://www.hopemaine.org
+Maine,Aroostook County,Houlton,http://www.houlton-maine.com/
+Maine,Penobscot County,Howland,http://www.howlandmaine.com
+Maine,Penobscot County,Hudson,http://hudsonmaine.wordpress.com
+Maine,Waldo County,Islesboro,http://www.townofislesboro.com/
+Maine,Somerset County,Jackman,http://jackmanmaine.org
+Maine,Waldo County,Jackson,https://sites.google.com/site/jacksonmaine
+Maine,Franklin County,Jay,http://www.jay-maine.org
+Maine,Penobscot County,Kenduskeag,https://kenduskeag.org/
+Maine,York County,Kennebunk,http://www.kennebunkmaine.us
+Maine,York County,Kennebunkport,http://kennebunkport.org
+Maine,Franklin County,Kingfield,http://www.kingfield.me
+Maine,York County,Kittery,http://www.kitteryme.gov/
+Maine,Waldo County,Knox,http://knoxmaine.com
+Maine,Penobscot County,Lagrange,http://lagrange.trcmaine.org
+Maine,York County,Lebanon,http://www.lebanon-me.org
+Maine,Penobscot County,Levant,http://townoflevant.net
+Maine,Androscoggin County,Lewiston,http://www.lewistonmaine.gov
+Maine,Waldo County,Liberty,http://www.libertymaine.us
+Maine,Aroostook County,Limestone,http://www.limestonemaine.org
+Maine,York County,Limington,http://www.limington.net
+Maine,Penobscot County,Lincoln,http://lincolnmaine.org/
+Maine,Waldo County,Lincolnville,http://www.town.lincolnville.me.us
+Maine,Androscoggin County,Lisbon,http://www.lisbonme.org
+Maine,Kennebec County,Litchfield,http://www.litchfieldmaine.com
+Maine,Androscoggin County,Livermore Falls,http://www.lfme.org
+Maine,Cumberland County,Long Island,http://www.townoflongisland.us
+Maine,Washington County,Lubec,http://townoflubec.com
+Maine,York County,Lyman,http://www.lyman-me.gov/
+Maine,Washington County,Machias,http://www.machiasme.org
+Maine,Aroostook County,Madawaska,http://www.townofmadawaska.com/
+Maine,Somerset County,Madison,http://www.madisonmaine.com
+Maine,Kennebec County,Manchester,http://www.manchester.govoffice2.com
+Maine,Aroostook County,Mars Hill,http://www.marshillmaine.com
+Maine,Androscoggin County,Mechanic Falls,http://www.mechanicfalls.govoffice.com/
+Maine,Penobscot County,Medway,http://www.medwaymaine.org
+Maine,Oxford County,Mexico,http://www.mexicomaine.net
+Maine,Washington County,Milbridge,https://townofmilbridge.webs.com/
+Maine,Penobscot County,Milford,http://www.milfordmaine.org
+Maine,Penobscot County,Millinocket,http://www.millinocket.org
+Maine,Piscataquis County,Milo,https://www.trcmaine.org/community/milo
+Maine,Androscoggin County,Minot,http://www.minotme.org
+Maine,Kennebec County,Monmouth,http://www.monmouthme.govoffice2.com/
+Maine,Piscataquis County,Monson,https://monsonmaine.org/
+Maine,Waldo County,Montville,http://www.montvillemaine.org
+Maine,Waldo County,Morrill,http://www.morrillme.org
+Maine,Hancock County,Mount Desert,http://www.mtdesert.org
+Maine,Kennebec County,Mount Vernon,http://www.mtvernonme.org
+Maine,Cumberland County,Naples,http://www.townofnaples.org/
+Maine,Cumberland County,New Gloucester,http://www.newgloucester.com
+Maine,Lincoln County,Newcastle,http://www.newcastlemaine.us
+Maine,York County,Newfield,http://newfieldme.org
+Maine,Penobscot County,Newport,http://www.newportmaine.net
+Maine,Lincoln County,Nobleboro,http://www.nobleboro.maine.gov
+Maine,York County,North Berwick,http://www.townofnorthberwick.org/
+Maine,Cumberland County,North Yarmouth,http://www.northyarmouth.org
+Maine,Kennebec County,Oakland,https://www.oaklandmaine.us/
+Maine,York County,Ogunquit,http://townofogunquit.org
+Maine,York County,Old Orchard Beach,http://www.oobmaine.com/
+Maine,Penobscot County,Old Town,http://www.old-town.org/
+Maine,Penobscot County,Orono,http://www.orono.org
+Maine,Penobscot County,Orrington,http://www.orrington.govoffice.com
+Maine,Oxford County,Oxford,http://www.oxfordmaine.org/
+Maine,Waldo County,Palermo,http://www.townofpalermo.org
+Maine,Washington County,Pembroke,http://www.pembrokemaine.org
+Maine,Washington County,Perry,http://www.perrymaine.org/
+Maine,Somerset County,Pittsfield,https://www.pittsfield.org/
+Maine,Cumberland County,Portland,https://www.portlandmaine.gov
+Maine,Cumberland County,Pownal,http://www.pownalmaine.org
+Maine,Aroostook County,Presque Isle,http://presqueislemaine.gov/
+Maine,Waldo County,Prospect,http://www.prospectmaine.org/
+Maine,Kennebec County,Randolph,https://www.randolphmaine.org/
+Maine,Franklin County,Rangeley,http://www.rangeleymaine.com
+Maine,Cumberland County,Raymond,http://www.raymondmaine.org
+Maine,Kennebec County,Readfield,https://www.readfieldmaine.org/
+Maine,Knox County,Rockland,https://rocklandmaine.gov/
+Maine,Knox County,Rockport,http://town.rockport.me.us
+Maine,Kennebec County,Rome,https://www.romemaine.com/
+Maine,Androscoggin County,Sabattus,http://sabattus.org/
+Maine,York County,Saco,http://www.sacomaine.org/
+Maine,York County,Sanford,http://www.sanfordmaine.org/
+Maine,Piscataquis County,Sangerville,https://sangervilleme.com/
+Maine,Cumberland County,Scarborough,http://www.scarboroughmaine.org/
+Maine,Waldo County,Searsmont,http://searsmont.com/
+Maine,Waldo County,Searsport,http://www.searsport.maine.gov/
+Maine,Cumberland County,Sebago,http://www.townofsebago.org
+Maine,York County,Shapleigh,http://www.shapleigh.net/
+Maine,Somerset County,Skowhegan,https://www.skowhegan.org/
+Maine,York County,South Berwick,http://www.southberwickmaine.org
+Maine,Lincoln County,South Bristol,http://www.townofsouthbristol.com
+Maine,Cumberland County,South Portland,http://www.southportland.org/
+Maine,Lincoln County,Southport,http://www.townofsouthport.org
+Maine,Cumberland County,Standish,http://www.standish.org
+Maine,Somerset County,Starks,http://www.starksme.com
+Maine,Penobscot County,Stetson,http://www.stetsonmaine.net
+Maine,Hancock County,Swan's Island,http://www.swansisland.org
+Maine,Knox County,Thomaston,https://www.thomastonmaine.us
+Maine,Waldo County,Thorndike,http://thorndikeme.com/
+Maine,Sagadahoc County,Topsham,https://www.topshammaine.com/
+Maine,Hancock County,Tremont,http://tremont.maine.gov/
+Maine,Androscoggin County,Turner,http://www.turnermaine.com/
+Maine,Knox County,Union,http://www.union.govoffice2.com/
+Maine,Kennebec County,Vassalboro,http://www.vassalboro.net/
+Maine,Penobscot County,Veazie,http://www.veazie.net
+Maine,Kennebec County,Vienna,http://www.viennamaine.org/
+Maine,Waldo County,Waldo,http://www.townofwaldo.com/
+Maine,Lincoln County,Waldoboro,http://www.waldoboromaine.org
+Maine,Knox County,Warren,http://town.warren.me.us/
+Maine,Knox County,Washington,http://www.washington.maine.gov/
+Maine,York County,Waterboro,http://www.waterboro-me.gov
+Maine,Kennebec County,Waterville,http://www.waterville-me.gov
+Maine,York County,Wells,http://www.wellstown.org/
+Maine,Oxford County,West Paris,https://www.westparisme.com/
+Maine,Cumberland County,Westbrook,http://www.westbrookmaine.com/
+Maine,Lincoln County,Westport Island,http://westportisland.us
+Maine,Lincoln County,Whitefield,http://www.townofwhitefield.com
+Maine,Franklin County,Wilton,http://www.wiltonmaine.org/
+Maine,Cumberland County,Windham,http://www.WindhamMaine.us
+Maine,Kennebec County,Winslow,http://www.winslowmaine.org
+Maine,Waldo County,Winterport,http://www.winterportmaine.gov/
+Maine,Kennebec County,Winthrop,http://www.winthropmaine.org
+Maine,Lincoln County,Wiscasset,http://www.wiscasset.org/
+Maine,Cumberland County,Yarmouth,http://www.yarmouth.me.us/
+Maine,York County,York,http://www.yorkmaine.org/
+Maryland,Harford County,Aberdeen,https://www.aberdeenmd.gov/
+Maryland,Harford County,Accident,http://www.accidentmd.org
+Maryland,Anne Arundel County,Annapolis,http://www.annapolis.gov/
+Maryland,Anne Arundel County,Baltimore,http://www.baltimorecity.gov/
+Maryland,Queen Anne's County,Barclay,https://www.barclaymaryland.com/
+Maryland,Montgomery County,Barnesville,http://www.barnesvillemd.org/
+Maryland,Montgomery County,Barton,http://msa.maryland.gov/msa/mdmanual/37mun/barton/html/b.html
+Maryland,Montgomery County,Bel Air,http://www.belairmd.org/
+Maryland,Montgomery County,Berlin,http://berlinmd.gov
+Maryland,Montgomery County,Berwyn Heights,https://www.berwynheightsmd.gov/
+Maryland,Montgomery County,Betterton,http://www.townofbetterton.com
+Maryland,Prince George's County,Bladensburg,https://www.bladensburgmd.gov/
+Maryland,Washington County,Boonsboro,http://www.town.boonsboro.md.us
+Maryland,Washington County,Bowie,http://www.cityofbowie.org/
+Maryland,Washington County,Brentwood,http://brentwoodmd.gov/
+Maryland,Montgomery County,Brookeville,http://townofbrookevillemd.org/
+Maryland,Montgomery County,Brookview,http://www.mdmunicipal.org/DocumentCenter/Home/View/63
+Maryland,Montgomery County,Brunswick,https://brunswickmd.gov/
+Maryland,Montgomery County,Burkittsville,http://www.burkittsville-md.gov/
+Maryland,Montgomery County,Cambridge,http://www.choosecambridge.com
+Maryland,Montgomery County,Capitol Heights,http://www.capitolheightsmd.com/
+Maryland,Montgomery County,Cecilton,http://www.ceciltonmd.gov/
+Maryland,Queen Anne's County,Centreville,http://www.townofcentreville.org/
+Maryland,Queen Anne's County,Charlestown,http://www.charlestownmd.org/
+Maryland,Queen Anne's County,Chesapeake Beach,https://www.chesapeakebeachmd.gov/
+Maryland,Queen Anne's County,Chesapeake City,http://www.chesapeakecity-md.gov/
+Maryland,Queen Anne's County,Chestertown,http://www.chestertown.com/
+Maryland,Queen Anne's County,Cheverly,https://www.cheverly-md.gov/
+Maryland,Montgomery County,Chevy Chase Section Five,http://www.chevychasesection5.org/
+Maryland,Montgomery County,Chevy Chase Section Three,http://www.chevychasesection3.org/
+Maryland,Montgomery County,Chevy Chase View,http://www.chevychaseview.org/
+Maryland,Montgomery County,Chevy Chase Village,http://www.chevychasevillagemd.gov/
+Maryland,Montgomery County,Church Creek,http://msa.maryland.gov/msa/mdmanual/37mun/churchcreek/html/c.html
+Maryland,Queen Anne's County,Church Hill,http://churchhillmd.com/
+Maryland,Washington County,Clear Spring,https://www.clearspringmd.gov/
+Maryland,Prince George's County,College Park,http://www.collegeparkmd.gov
+Maryland,Prince George's County,Colmar Manor,http://colmarmanor.org
+Maryland,Prince George's County,Cottage City,http://www.cottagecitymd.gov/
+Maryland,Prince George's County,Crisfield,http://www.cityofcrisfield-md.gov/
+Maryland,Prince George's County,Cumberland,https://www.cumberlandmd.gov/
+Maryland,Wicomico County,Delmar,http://www.townofdelmar.us/index.cfm
+Maryland,Wicomico County,Denton,http://www.dentonmaryland.com/
+Maryland,Wicomico County,District Heights,http://www.districtheights.org/
+Maryland,Wicomico County,Eagle Harbor,https://www.townofeagleharborincmd.org/
+Maryland,Wicomico County,East New Market,http://www.eastnewmarketmd.org
+Maryland,Wicomico County,Easton,http://www.town-eastonmd.com
+Maryland,Wicomico County,Edmonston,http://www.edmonstonmd.gov
+Maryland,Wicomico County,Elkton,http://www.elkton.org
+Maryland,Wicomico County,Emmitsburg,http://www.emmitsburgmd.gov/
+Maryland,Wicomico County,Fairmount Heights,https://www.fairmountheightsmd.gov/
+Maryland,Wicomico County,Federalsburg,https://www.townoffederalsburg.org/
+Maryland,Wicomico County,Forest Heights,http://forestheightsmd.gov/
+Maryland,Frederick County,Frederick,https://www.cityoffrederickmd.gov/
+Maryland,Garrett County,Friendsville,https://www.friendsville.org/
+Maryland,Garrett County,Frostburg,http://www.frostburgcity.com/
+Maryland,Wicomico County,Fruitland,http://www.cityoffruitland.com
+Maryland,Washington County,Funkstown,http://www.funkstown.com
+Maryland,Washington County,Gaithersburg,http://www.gaithersburgmd.gov/
+Maryland,Washington County,Galena,https://www.townofgalena.com/
+Maryland,Montgomery County,Garrett Park,http://www.garrettparkmd.gov/
+Maryland,Montgomery County,Glen Echo,http://www.glenecho.org/
+Maryland,Montgomery County,Glenarden,http://www.cityofglenarden.org/
+Maryland,Garrett County,Grantsville,https://www.visitgrantsville.com/
+Maryland,Prince George's County,Greenbelt,https://www.greenbeltmd.gov/
+Maryland,Prince George's County,Greensboro,http://www.greensboromd.com/
+Maryland,Washington County,Hagerstown,http://www.Hagerstownmd.org
+Maryland,Carroll County,Hampstead,http://www.hampsteadmd.gov
+Maryland,Washington County,Havre de Grace,http://www.havredegracemd.com/
+Maryland,Wicomico County,Hebron,http://www.hebronmd.com
+Maryland,Anne Arundel County,Highland Beach,http://www.highlandbeachmd.org
+Maryland,Anne Arundel County,Hurlock,http://www.hurlock-md.gov/
+Maryland,Anne Arundel County,Hyattsville,http://www.hyattsville.org/
+Maryland,Charles County,Indian Head,http://www.townofindianhead.org
+Maryland,Washington County,Keedysville,http://www.keedysvillemd.com/
+Maryland,Montgomery County,Kensington,http://tok.md.gov/
+Maryland,Garrett County,Kitzmiller,https://www.kitzmillermd.org
+Maryland,Charles County,La Plata,http://www.townoflaplata.org
+Maryland,Garrett County,Landover Hills,http://www.lhills.sailorsite.net/
+Maryland,Charles County,Laurel,http://www.cityoflaurel.org/
+Maryland,Montgomery County,Laytonsville,http://www.laytonsville.md.us/
+Maryland,St. Mary's County,Leonardtown,http://leonardtown.somd.com
+Maryland,Carroll County,Manchester,https://manchestermd.gov/
+Maryland,Wicomico County,Mardela Springs,http://mardelasprings.org/
+Maryland,Montgomery County,Martin's Additions,https://martinsadditions.org/
+Maryland,Frederick County,Middletown,http://www.middletown.md.us/
+Maryland,Kent County,Millington,http://millingtonmd.us/
+Maryland,Kent County,Morningside,http://www.morningsidemd.gov
+Maryland,Frederick County,Mount Airy,http://www.mountairymd.org
+Maryland,Frederick County,Mount Rainier,http://www.mountrainiermd.org
+Maryland,Kent County,Mountain Lake Park,http://mtnlakepark.org/
+Maryland,Frederick County,Myersville,https://myersville.org/
+Maryland,Frederick County,New Carrollton,https://www.newcarrolltonmd.gov/
+Maryland,Frederick County,New Market,http://www.townofnewmarket.org/
+Maryland,Carroll County,New Windsor,http://www.newwindsormd.org
+Maryland,Carroll County,North Beach,https://www.northbeachmd.org/
+Maryland,Carroll County,North Brentwood,http://northbrentwood.com/
+Maryland,Montgomery County,North Chevy Chase,https://northchevychase.org/
+Maryland,Montgomery County,North East,http://www.northeastmd.org/
+Maryland,Montgomery County,Oakland,http://www.oaklandmd.com/
+Maryland,Worcester County,Ocean City,https://www.oceancitymd.gov
+Maryland,Talbot County,Oxford,http://www.oxfordmd.net/
+Maryland,Cecil County,Perryville,http://www.perryvillemd.org/
+Maryland,Wicomico County,Pittsville,https://pittsvillemd.gov/
+Maryland,Worcester County,Pocomoke City,http://www.cityofpocomoke.com
+Maryland,Worcester County,Poolesville,http://www.poolesvillemd.gov
+Maryland,Worcester County,Port Deposit,http://www.portdeposit.org/
+Maryland,Charles County,Preston,http://www.prestonmaryland.us/
+Maryland,Charles County,Princess Anne,http://www.townofprincessanne.org/
+Maryland,Queen Anne's County,Queenstown,http://www.queenstown-md.com/
+Maryland,Queen Anne's County,Ridgely,http://ridgelymd.org/
+Maryland,Queen Anne's County,Rising Sun,http://www.risingsunmd.org/
+Maryland,Queen Anne's County,Riverdale Park,http://www.riverdaleparkmd.info
+Maryland,Queen Anne's County,Rock Hall,http://www.rockhallmd.com/
+Maryland,Montgomery County,Rockville,http://www.rockvillemd.gov/
+Maryland,Montgomery County,Rosemont,https://sites.google.com/site/rosemontmd/
+Maryland,Wicomico County,Salisbury,http://salisbury.md
+Maryland,Wicomico County,Seat Pleasant,http://www.seatpleasantmd.gov/
+Maryland,Washington County,Sharpsburg,http://sharpsburgmd.com/
+Maryland,Wicomico County,Sharptown,http://www.townofsharptown.org
+Maryland,Washington County,Smithsburg,http://www.townofsmithsburg.org
+Maryland,Worcester County,Snow Hill,http://www.snowhillmd.gov/
+Maryland,Montgomery County,Somerset,https://townofsomerset.com/
+Maryland,Montgomery County,St. Michaels,http://stmichaelsmd.org/
+Maryland,Queen Anne's County,Sudlersville,http://www.townofsudlersville.org/
+Maryland,Carroll County,Sykesville,http://www.sykesville.net
+Maryland,Montgomery County,Takoma Park,http://www.takomaparkmd.gov/
+Maryland,Carroll County,Taneytown,http://www.taneytown.org
+Maryland,Queen Anne's County,Thurmont,http://www.thurmont.com/
+Maryland,Queen Anne's County,Trappe,http://trappemd.net/
+Maryland,Carroll County,Union Bridge,http://townofub.org
+Maryland,Carroll County,University Park,http://www.upmd.org/
+Maryland,Carroll County,Upper Marlboro,http://www.uppermarlboromd.gov/
+Maryland,Dorchester County,Vienna,http://www.viennamd.org
+Maryland,Dorchester County,Walkersville,https://walkersvillemd.gov/
+Maryland,Montgomery County,Washington Grove,http://www.washingtongrovemd.org/
+Maryland,Montgomery County,Westernport,https://townofwesternport.com/?fs=e&s=cl
+Maryland,Carroll County,Westminster,http://www.westminstermd.gov
+Maryland,Washington County,Williamsport,http://williamsportmd.gov/
+Maryland,Washington County,Woodsboro,http://www.woodsboro.org/
+Massachusetts,Plymouth County,Abington,http://www.abingtonma.gov/
+Massachusetts,Middlesex County,Acton,http://www.acton-ma.gov/
+Massachusetts,Bristol County,Acushnet,http://www.acushnet.ma.us
+Massachusetts,Berkshire County,Adams,http://town.adams.ma.us
+Massachusetts,Hampden County,Agawam,http://www.agawam.ma.us/
+Massachusetts,Berkshire County,Alford,http://www.townofalford.org
+Massachusetts,Essex County,Amesbury,http://www.amesburyma.gov
+Massachusetts,Hampshire County,Amherst,http://www.amherstma.gov
+Massachusetts,Essex County,Andover,http://www.andoverma.gov/
+Massachusetts,Dukes County,Aquinnah,http://aquinnah-ma.gov
+Massachusetts,Middlesex County,Arlington,http://www.arlingtonma.gov/
+Massachusetts,Worcester County,Ashburnham,http://www.ashburnham-ma.gov/
+Massachusetts,Middlesex County,Ashby,https://www.ashbyma.gov/
+Massachusetts,Franklin County,Ashfield,http://www.ashfield.org
+Massachusetts,Middlesex County,Ashland,http://www.ashlandmass.com/
+Massachusetts,Worcester County,Athol,http://www.athol-ma.gov/
+Massachusetts,Bristol County,Attleboro,http://www.cityofattleboro.us
+Massachusetts,Worcester County,Auburn,http://www.auburnguide.com
+Massachusetts,Worcester County,Avon,http://www.avon-ma.gov/
+Massachusetts,Middlesex County,Ayer,http://www.ayer.ma.us/
+Massachusetts,Barnstable County,Barnstable,http://town.barnstable.ma.us
+Massachusetts,Worcester County,Barre,http://www.townofbarre.com/
+Massachusetts,Berkshire County,Becket,http://www.townofbecket.org
+Massachusetts,Middlesex County,Bedford,http://www.bedfordma.gov/
+Massachusetts,Hampshire County,Belchertown,http://www.belchertown.org/
+Massachusetts,Hampshire County,Bellingham,https://www.bellinghamma.org/
+Massachusetts,Middlesex County,Belmont,http://www.belmont-ma.gov/
+Massachusetts,Bristol County,Berkley,http://www.townofberkleyma.com
+Massachusetts,Worcester County,Berlin,http://www.townofberlin.com/
+Massachusetts,Franklin County,Bernardston,http://townofbernardston.org
+Massachusetts,Essex County,Beverly,http://www.beverlyma.gov
+Massachusetts,Middlesex County,Billerica,http://www.town.billerica.ma.us/
+Massachusetts,Worcester County,Blackstone,https://www.townofblackstone.org/
+Massachusetts,Hampden County,Blandford,https://townofblandford.com/
+Massachusetts,Worcester County,Bolton,http://www.townofbolton.com/
+Massachusetts,Barnstable County,Bourne,http://www.townofbourne.com
+Massachusetts,Middlesex County,Boxborough,http://boxborough-ma.gov
+Massachusetts,Essex County,Boxford,http://www.town.boxford.ma.us
+Massachusetts,Worcester County,Boylston,http://www.boylston-ma.gov/
+Massachusetts,Norfolk County,Braintree,http://www.braintreema.gov
+Massachusetts,Barnstable County,Brewster,http://www.brewster-ma.gov
+Massachusetts,Plymouth County,Bridgewater,http://www.bridgewaterma.org/
+Massachusetts,Plymouth County,Brockton,http://www.brockton.ma.us/
+Massachusetts,Worcester County,Brookfield,http://www.brookfieldma.us/
+Massachusetts,Norfolk County,Brookline,http://www.brooklinema.gov
+Massachusetts,Franklin County,Buckland,http://town.buckland.ma.us
+Massachusetts,Middlesex County,Burlington,http://www.burlington.org/
+Massachusetts,Middlesex County,Cambridge,http://cambridgema.gov
+Massachusetts,Norfolk County,Canton,http://www.town.canton.ma.us/
+Massachusetts,Middlesex County,Carlisle,http://www.carlislema.gov/
+Massachusetts,Plymouth County,Carver,http://www.carverma.org/
+Massachusetts,Franklin County,Charlemont,http://www.charlemont-ma.us
+Massachusetts,Worcester County,Charlton,http://www.townofcharlton.net/
+Massachusetts,Barnstable County,Chatham,http://www.chatham-ma.gov
+Massachusetts,Middlesex County,Chelmsford,http://www.townofchelmsford.us/
+Massachusetts,Suffolk County,Chelsea,http://www.chelseama.gov
+Massachusetts,Berkshire County,Cheshire,http://www.cheshire-ma.com
+Massachusetts,Hampden County,Chester,http://townofchester.net
+Massachusetts,Hampshire County,Chesterfield,http://www.townofchesterfieldma.com
+Massachusetts,File:Seal of Hampden County,Chicopee,http://www.chicopeema.gov/
+Massachusetts,Dukes County,Chilmark,http://www.chilmarkma.gov
+Massachusetts,Berkshire County,Clarksburg,http://clarksburgma.us
+Massachusetts,Worcester County,Clinton,http://www.clintonma.gov/
+Massachusetts,Worcester County,Cohasset,http://www.townofcohasset.org/
+Massachusetts,Franklin County,Colrain,http://www.colrain-ma.gov
+Massachusetts,Middlesex County,Concord,http://www.concordma.gov/
+Massachusetts,Franklin County,Conway,http://www.townofconway.com
+Massachusetts,Hampshire County,Cummington,http://www.cummington-ma.gov
+Massachusetts,Berkshire County,Dalton,http://dalton-ma.gov
+Massachusetts,Essex County,Danvers,https://www.danversma.gov/
+Massachusetts,Bristol County,Dartmouth,http://www.town.dartmouth.ma.us
+Massachusetts,Norfolk County,Dedham,http://www.dedham-ma.gov
+Massachusetts,Franklin County,Deerfield,http://www.deerfieldma.us
+Massachusetts,Barnstable County,Dennis,http://www.town.dennis.ma.us
+Massachusetts,Bristol County,Dighton,http://www.dighton-ma.gov
+Massachusetts,Worcester County,Douglas,https://www.douglas-ma.gov/
+Massachusetts,Worcester County,Dover,https://www.doverma.gov/
+Massachusetts,Middlesex County,Dracut,http://www.dracutma.gov/
+Massachusetts,Worcester County,Dudley,http://www.dudleyma.gov/
+Massachusetts,Middlesex County,Dunstable,http://www.dunstable-ma.gov/
+Massachusetts,Plymouth County,Duxbury,http://www.town.duxbury.ma.us/
+Massachusetts,Plymouth County,East Bridgewater,http://www.eastbridgewaterma.org/
+Massachusetts,Worcester County,East Brookfield,http://www.eastbrookfieldma.us/
+Massachusetts,Hampden County,East Longmeadow,http://www.eastlongmeadowma.gov/
+Massachusetts,Barnstable County,Eastham,http://www.eastham-ma.gov
+Massachusetts,Hampshire County,Easthampton,https://easthamptonma.gov/
+Massachusetts,Bristol County,Easton,http://www.easton.ma.us/
+Massachusetts,Dukes County,Edgartown,http://www.edgartown-ma.us/
+Massachusetts,Berkshire County,Egremont,http://www.egremont-ma.gov
+Massachusetts,Franklin County,Erving,http://www.erving-ma.org
+Massachusetts,Essex County,Essex,http://www.essexma.org
+Massachusetts,Middlesex County,Everett,http://cityofeverett.com
+Massachusetts,Bristol County,Fairhaven,http://www.fairhaven-ma.gov/
+Massachusetts,Bristol County,Fall River,http://www.fallriverma.org
+Massachusetts,Barnstable County,Falmouth,http://www.falmouthma.gov
+Massachusetts,Worcester County,Fitchburg,http://www.fitchburgma.gov/
+Massachusetts,Berkshire County,Florida,http://townofflorida.org/
+Massachusetts,Norfolk County,Foxborough,http://www.foxboroughma.gov
+Massachusetts,Middlesex County,Framingham,http://www.framinghamma.gov
+Massachusetts,Norfolk County,Franklin,http://www.franklinma.gov
+Massachusetts,Bristol County,Freetown,http://www.freetownma.gov/
+Massachusetts,Worcester County,Gardner,http://www.gardner-ma.gov/
+Massachusetts,Essex County,Georgetown,http://www.georgetownma.gov
+Massachusetts,Franklin County,Gill,http://www.gillmass.org
+Massachusetts,Essex County,Gloucester,http://gloucester-ma.gov
+Massachusetts,Hampshire County,Goshen,http://www.goshen-ma.us
+Massachusetts,Dukes County,Gosnold,https://www.townofgosnold.org/
+Massachusetts,Worcester County,Grafton,http://www.grafton-ma.gov/
+Massachusetts,Hampshire County,Granby,http://www.granby-ma.gov
+Massachusetts,Hampden County,Granville,http://www.townofgranville.net
+Massachusetts,Berkshire County,Great Barrington,http://www.townofgb.org
+Massachusetts,Franklin County,Greenfield,http://Greenfield-MA.gov
+Massachusetts,Middlesex County,Groton,http://www.townofgroton.org/
+Massachusetts,Essex County,Groveland,http://www.grovelandma.com
+Massachusetts,Hampshire County,Hadley,http://www.hadleyma.org
+Massachusetts,Plymouth County,Halifax,http://www.halifax-ma.org/
+Massachusetts,Essex County,Hamilton,http://www.hamiltonma.gov
+Massachusetts,Hampden County,Hampden,http://www.hampdenma.gov/
+Massachusetts,Berkshire County,Hancock,http://town.hancock.ma.us/
+Massachusetts,Plymouth County,Hanover,http://www.hanover-ma.gov/
+Massachusetts,Plymouth County,Hanson,http://www.hanson-ma.gov/
+Massachusetts,Worcester County,Hardwick,http://www.townofhardwick.com/
+Massachusetts,Worcester County,Harvard,http://www.harvard.ma.us/
+Massachusetts,Barnstable County,Harwich,http://www.town.harwich.ma.us
+Massachusetts,Hampshire County,Hatfield,http://www.townofhatfield.org
+Massachusetts,Essex County,Haverhill,http://www.haverhillma.gov
+Massachusetts,Franklin County,Hawley,http://www.townofhawley.com/
+Massachusetts,Franklin County,Heath,http://www.townofheath.org
+Massachusetts,Plymouth County,Hingham,http://www.hingham-ma.gov/
+Massachusetts,Berkshire County,Hinsdale,http://www.hinsdalemass.com
+Massachusetts,Norfolk County,Holbrook,http://holbrookma.gov/
+Massachusetts,Worcester County,Holden,http://www.holdenma.gov//
+Massachusetts,Hampden County,Holland,http://town.holland.ma.us
+Massachusetts,Middlesex County,Holliston,http://www.townofholliston.us/
+Massachusetts,File:Seal of Hampden County,Holyoke,http://www.holyoke.org
+Massachusetts,Worcester County,Hopedale,http://www.hopedale-ma.gov/
+Massachusetts,Middlesex County,Hopkinton,http://www.hopkintonma.gov/
+Massachusetts,Worcester County,Hubbardston,http://www.hubbardstonma.us/
+Massachusetts,Middlesex County,Hudson,http://www.townofhudson.org
+Massachusetts,Plymouth County,Hull,http://www.town.hull.ma.us/
+Massachusetts,Hampshire County,Huntington,http://www.huntingtonma.us
+Massachusetts,Essex County,Ipswich,http://www.ipswichma.gov
+Massachusetts,Plymouth County,Kingston,https://www.kingstonma.gov/
+Massachusetts,Plymouth County,Lakeville,http://www.lakevillema.org/
+Massachusetts,Worcester County,Lancaster,http://www.ci.lancaster.ma.us/
+Massachusetts,Berkshire County,Lanesborough,http://www.lanesborough-ma.gov
+Massachusetts,Essex County,Lawrence,http://www.cityoflawrence.com
+Massachusetts,Berkshire County,Lee,http://www.lee.ma.us
+Massachusetts,Worcester County,Leicester,http://www.leicesterma.org/
+Massachusetts,Berkshire County,Lenox,http://www.townoflenox.com
+Massachusetts,Worcester County,Leominster,http://www.leominster-ma.gov
+Massachusetts,Franklin County,Leverett,http://www.leverett.ma.us
+Massachusetts,Middlesex County,Lexington,http://www.lexingtonma.gov/
+Massachusetts,Franklin County,Leyden,http://www.townofleyden.com
+Massachusetts,Middlesex County,Lincoln,http://www.lincolntown.org/
+Massachusetts,Middlesex County,Littleton,http://www.littletonma.org/
+Massachusetts,Hampden County,Longmeadow,http://www.longmeadow.org
+Massachusetts,Middlesex County,Lowell,http://www.lowellma.gov/
+Massachusetts,Hampden County,Ludlow,http://www.ludlow.ma.us/
+Massachusetts,Worcester County,Lunenburg,http://www.lunenburgma.gov/
+Massachusetts,Essex County,Lynn,http://www.lynnma.gov
+Massachusetts,Essex County,Lynnfield,http://www.town.lynnfield.ma.us
+Massachusetts,Middlesex County,Malden,http://cityofmalden.org
+Massachusetts,Essex County,Manchester-by-the-Sea,http://www.manchester.ma.us
+Massachusetts,Bristol County,Mansfield,http://www.mansfieldma.com/
+Massachusetts,Essex County,Marblehead,http://www.marblehead.org
+Massachusetts,Plymouth County,Marion,http://www.marionma.gov/
+Massachusetts,Middlesex County,Marlborough,http://www.marlborough-ma.gov/gen/index
+Massachusetts,Plymouth County,Marshfield,http://www.townofmarshfield.org
+Massachusetts,Barnstable County,Mashpee,http://www.mashpeema.gov
+Massachusetts,Plymouth County,Mattapoisett,http://www.mattapoisett.net/
+Massachusetts,Middlesex County,Maynard,https://www.townofmaynard-ma.gov/
+Massachusetts,Middlesex County,Medfield,http://www.town.medfield.net/
+Massachusetts,Middlesex County,Medford,https://www.medfordma.org/
+Massachusetts,Middlesex County,Medway,http://www.townofmedway.org/
+Massachusetts,Middlesex County,Melrose,http://www.cityofmelrose.org
+Massachusetts,Worcester County,Mendon,http://mendonma.gov/
+Massachusetts,Essex County,Merrimac,http://www.merrimac01860.info
+Massachusetts,Essex County,Methuen,http://www.cityofmethuen.net
+Massachusetts,Plymouth County,Middleborough,http://www.middleborough.com
+Massachusetts,Hampshire County,Middlefield,http://middlefieldma.net/
+Massachusetts,Essex County,Middleton,http://www.middletonma.gov/
+Massachusetts,Worcester County,Milford,https://www.milfordma.gov/
+Massachusetts,Worcester County,Millbury,http://www.millbury-ma.org/
+Massachusetts,Worcester County,Millis,https://www.millisma.gov/
+Massachusetts,Worcester County,Millville,http://www.millvillema.org/
+Massachusetts,Worcester County,Milton,http://www.townofmilton.org/
+Massachusetts,Hampden County,Monson,http://www.monson-ma.gov
+Massachusetts,Franklin County,Montague,http://www.montague-ma.gov
+Massachusetts,Berkshire County,Monterey,http://www.montereyma.gov
+Massachusetts,Hampden County,Montgomery,http://www.montgomeryma.gov/
+Massachusetts,Berkshire County,Mount Washington,https://mountwashington-ma.gov
+Massachusetts,Essex County,Nahant,http://www.nahant.org
+Massachusetts,Middlesex County,Natick,http://www.natickma.gov/
+Massachusetts,Middlesex County,Needham,http://www.needhamma.gov/
+Massachusetts,Berkshire County,New Ashford,http://newashford-ma.us/
+Massachusetts,Bristol County,New Bedford,http://www.newbedford-ma.gov
+Massachusetts,Worcester County,New Braintree,https://www.newbraintreema.us
+Massachusetts,Berkshire County,New Marlborough,http://www.newmarlboroughma.gov
+Massachusetts,Franklin County,New Salem,http://www.newsalem-massachusetts.org
+Massachusetts,Essex County,Newbury,http://www.townofnewbury.org
+Massachusetts,Essex County,Newburyport,http://www.cityofnewburyport.com
+Massachusetts,Middlesex County,Newton,http://www.newtonma.gov/
+Massachusetts,Middlesex County,Norfolk,http://norfolk.ma.us/
+Massachusetts,Berkshire County,North Adams,http://www.northadams-ma.gov
+Massachusetts,Essex County,North Andover,http://www.northandoverma.gov
+Massachusetts,Bristol County,North Attleborough,http://www.north-attleboro.ma.us/
+Massachusetts,Worcester County,North Brookfield,http://northbrookfield.net
+Massachusetts,Middlesex County,North Reading,http://www.northreadingma.gov
+Massachusetts,Hampshire County,Northampton,http://www.northamptonma.gov/
+Massachusetts,Worcester County,Northborough,http://www.town.northborough.ma.us/
+Massachusetts,Worcester County,Northbridge,http://www.northbridgemass.org/
+Massachusetts,Franklin County,Northfield,https://www.northfieldma.gov/
+Massachusetts,Bristol County,Norton,http://www.nortonma.org/
+Massachusetts,Plymouth County,Norwell,http://www.townofnorwell.net
+Massachusetts,Norfolk County,Norwood,http://www.norwoodma.gov/
+Massachusetts,Dukes County,Oak Bluffs,http://www.oakbluffsma.gov/
+Massachusetts,Worcester County,Oakham,http://www.oakham-ma.gov/
+Massachusetts,Franklin County,Orange,http://www.townoforange.org
+Massachusetts,Barnstable County,Orleans,http://www.town.orleans.ma.us
+Massachusetts,Berkshire County,Otis,http://www.townofotisma.com
+Massachusetts,Worcester County,Oxford,http://www.town.oxford.ma.us/
+Massachusetts,Hampden County,Palmer,http://www.townofpalmer.com/
+Massachusetts,Worcester County,Paxton,http://www.townofpaxton.net/
+Massachusetts,Essex County,Peabody,http://www.peabody-ma.gov
+Massachusetts,Hampshire County,Pelham,http://www.townofpelham.org
+Massachusetts,Plymouth County,Pembroke,http://www.townofpembrokemass.org/
+Massachusetts,Middlesex County,Pepperell,http://town.pepperell.ma.us/
+Massachusetts,Berkshire County,Peru,https://www.townofperuma.com/
+Massachusetts,Worcester County,Petersham,http://townofpetersham.org/
+Massachusetts,Worcester County,Phillipston,http://www.phillipston-ma.gov
+Massachusetts,Berkshire County,Pittsfield,http://cityofpittsfield.org
+Massachusetts,Hampshire County,Plainfield,https://plainfield-ma.us/
+Massachusetts,Norfolk County,Plainville,http://www.plainville.ma.us
+Massachusetts,Plymouth County,Plymouth,http://www.plymouth-ma.gov/
+Massachusetts,Plymouth County,Plympton,http://www.town.plympton.ma.us/
+Massachusetts,Worcester County,Princeton,http://town.princeton.ma.us/
+Massachusetts,Barnstable County,Provincetown,http://www.provincetown-ma.gov/
+Massachusetts,Norfolk County,Quincy,http://www.quincyma.gov/
+Massachusetts,Norfolk County,Randolph,https://www.randolph-ma.gov/
+Massachusetts,Bristol County,Raynham,http://www.town.raynham.ma.us/
+Massachusetts,Middlesex County,Reading,http://www.ci.reading.ma.us/
+Massachusetts,Bristol County,Rehoboth,http://www.town.rehoboth.ma.us/
+Massachusetts,Suffolk County,Revere,http://www.revere.org
+Massachusetts,Berkshire County,Richmond,http://www.richmondma.org
+Massachusetts,Plymouth County,Rochester,http://www.townofrochestermass.com
+Massachusetts,Plymouth County,Rockland,http://www.rockland-ma.gov/
+Massachusetts,Essex County,Rockport,https://www.rockportma.gov/
+Massachusetts,Franklin County,Rowe,http://www.rowe-ma.gov
+Massachusetts,Essex County,Rowley,http://www.townofrowley.net/
+Massachusetts,Worcester County,Royalston,http://www.royalston-ma.gov/
+Massachusetts,Hampden County,Russell,http://www.townofrussell.us
+Massachusetts,Worcester County,Rutland,http://www.townofrutland.org/pages/index
+Massachusetts,Essex County,Salem,http://www.salem.com
+Massachusetts,Essex County,Salisbury,http://www.salisburyma.gov
+Massachusetts,Berkshire County,Sandisfield,http://www.sandisfieldma.gov/
+Massachusetts,Barnstable County,Sandwich,http://www.sandwichmass.org
+Massachusetts,Essex County,Saugus,http://www.saugus-ma.gov
+Massachusetts,Plymouth County,Scituate,https://www.scituatema.gov/
+Massachusetts,Bristol County,Seekonk,http://www.seekonk-ma.gov
+Massachusetts,Bristol County,Sharon,https://www.townofsharon.net/
+Massachusetts,Berkshire County,Sheffield,http://www.sheffieldma.gov
+Massachusetts,Franklin County,Shelburne,http://www.townofshelburne.com
+Massachusetts,Middlesex County,Sherborn,http://www.sherbornma.org/
+Massachusetts,Middlesex County,Shirley,http://www.shirley-ma.gov/
+Massachusetts,Worcester County,Shrewsbury,https://www.shrewsburyma.gov
+Massachusetts,Franklin County,Shutesbury,http://www.shutesbury.org
+Massachusetts,Bristol County,Somerset,http://www.townofsomerset.org/
+Massachusetts,Middlesex County,Somerville,http://somervillema.gov
+Massachusetts,Hampshire County,South Hadley,http://www.southhadley.org/
+Massachusetts,Hampshire County,Southampton,http://www.townofsouthampton.org
+Massachusetts,Worcester County,Southborough,http://www.southboroughtown.com/
+Massachusetts,Worcester County,Southbridge,http://ci.southbridge.ma.us/
+Massachusetts,Hampden County,Southwick,http://www.southwickma.org
+Massachusetts,Worcester County,Spencer,http://www.spencerma.gov/
+Massachusetts,Hampden County,Springfield,http://www.springfield-ma.gov
+Massachusetts,Worcester County,Sterling,http://www.sterling-ma.gov/
+Massachusetts,Berkshire County,Stockbridge,http://www.townofstockbridge.com
+Massachusetts,Middlesex County,Stoneham,https://www.stoneham-ma.gov
+Massachusetts,Middlesex County,Stoughton,http://www.stoughton-ma.gov/
+Massachusetts,Middlesex County,Stow,http://www.stow-ma.gov/
+Massachusetts,Middlesex County,Sudbury,http://sudbury.ma.us/
+Massachusetts,Franklin County,Sunderland,http://www.townofsunderland.us
+Massachusetts,Worcester County,Sutton,http://www.suttonma.org
+Massachusetts,Essex County,Swampscott,http://www.town.swampscott.ma.us
+Massachusetts,Bristol County,Swansea,http://www.346swa.wycliffe.hostingrails.com/
+Massachusetts,Bristol County,Taunton,http://www.taunton-ma.gov
+Massachusetts,Worcester County,Templeton,http://www.TempletonMA.gov/
+Massachusetts,Middlesex County,Tewksbury,http://www.tewksbury-ma.gov/
+Massachusetts,Dukes County,Tisbury,http://www.tisburyma.gov
+Massachusetts,Hampden County,Tolland,http://www.tolland-ma.gov
+Massachusetts,Essex County,Topsfield,http://www.topsfield-ma.gov
+Massachusetts,Middlesex County,Townsend,http://www.townsend.ma.us
+Massachusetts,Barnstable County,Truro,http://www.truro-ma.gov/
+Massachusetts,Middlesex County,Tyngsborough,http://www.tyngsboroughma.gov/
+Massachusetts,Berkshire County,Tyringham,https://www.tyringham-ma.gov/
+Massachusetts,Worcester County,Upton,http://www.uptonma.gov/
+Massachusetts,Worcester County,Uxbridge,http://www.uxbridge-ma.gov/
+Massachusetts,Middlesex County,Wakefield,http://www.wakefield.ma.us/
+Massachusetts,Hampden County,Wales,http://www.townofwales.net
+Massachusetts,Norfolk County,Walpole,http://www.walpole-ma.gov/
+Massachusetts,Middlesex County,Waltham,http://www.city.waltham.ma.us/
+Massachusetts,Hampshire County,Ware,http://www.townofware.com
+Massachusetts,Plymouth County,Wareham,http://www.wareham.ma.us/
+Massachusetts,Worcester County,Warren,http://www.warren-ma.gov/pages/index
+Massachusetts,Franklin County,Warwick,http://www.warwickma.org
+Massachusetts,Berkshire County,Washington,https://www.washington-ma.gov
+Massachusetts,Middlesex County,Watertown,https://www.watertown-ma.gov/
+Massachusetts,Middlesex County,Wayland,http://www.wayland.ma.us/
+Massachusetts,Worcester County,Webster,http://www.webster-ma.gov/
+Massachusetts,Worcester County,Wellesley,http://www.wellesleyma.gov/
+Massachusetts,Barnstable County,Wellfleet,http://www.wellfleetma.org
+Massachusetts,Franklin County,Wendell,http://www.wendellmass.us
+Massachusetts,Essex County,Wenham,http://www.wenhamma.gov
+Massachusetts,Worcester County,West Boylston,https://www.westboylston-ma.gov/
+Massachusetts,Plymouth County,West Bridgewater,https://www.westbridgewaterma.org/
+Massachusetts,Worcester County,West Brookfield,http://www.wbrookfield.com/
+Massachusetts,Essex County,West Newbury,http://www.wnewbury.org/pages/index
+Massachusetts,Hampden County,West Springfield,http://www.townofwestspringfield.org/
+Massachusetts,Berkshire County,West Stockbridge,http://www.weststockbridge-ma.gov
+Massachusetts,Dukes County,West Tisbury,http://www.westtisbury-ma.gov
+Massachusetts,Worcester County,Westborough,http://town.westborough.ma.us
+Massachusetts,Hampden County,Westfield,http://www.cityofwestfield.org
+Massachusetts,Middlesex County,Westford,http://www.westfordma.gov/
+Massachusetts,Hampshire County,Westhampton,http://www.westhampton-ma.com
+Massachusetts,Worcester County,Westminster,http://www.westminster-ma.gov/
+Massachusetts,Middlesex County,Weston,http://www.weston.org
+Massachusetts,Bristol County,Westport,http://www.westport-ma.com
+Massachusetts,Bristol County,Westwood,http://www.townhall.westwood.ma.us/
+Massachusetts,Bristol County,Weymouth,http://www.weymouth.ma.us/
+Massachusetts,Franklin County,Whately,http://www.whately.org
+Massachusetts,Plymouth County,Whitman,http://www.whitman-ma.gov/
+Massachusetts,Hampden County,Wilbraham,http://www.wilbraham-ma.gov/
+Massachusetts,Hampshire County,Williamsburg,http://www.burgy.org
+Massachusetts,Berkshire County,Williamstown,http://williamstownma.gov/
+Massachusetts,Middlesex County,Wilmington,https://www.wilmingtonma.gov/
+Massachusetts,Worcester County,Winchendon,http://www.townofwinchendon.com/
+Massachusetts,Middlesex County,Winchester,http://www.winchester.us/
+Massachusetts,Berkshire County,Windsor,http://windsormass.com
+Massachusetts,Suffolk County,Winthrop,http://www.town.winthrop.ma.us/
+Massachusetts,Middlesex County,Woburn,http://www.woburnma.gov/
+Massachusetts,Worcester County,Worcester,http://www.worcesterma.gov
+Massachusetts,Hampshire County,Worthington,http://www.worthington-ma.us
+Massachusetts,Hampshire County,Wrentham,http://wrentham.ma.us/
+Massachusetts,Barnstable County,Yarmouth,http://www.yarmouth.ma.us
+Michigan,Kent County,Ada Township,http://adamichigan.org/township
+Michigan,Houghton County,Adams Township,https://adamstownship.webs.com/
+Michigan,Lenawee County,Addison,http://addisonmi.us
+Michigan,Oakland County,Addison Township,http://www.twp.addison.mi.us/
+Michigan,Lenawee County,Adrian,http://adriancity.com
+Michigan,Lenawee County,Adrian Charter Township,http://www.adrianchartertownship.com
+Michigan,Tuscola County,Akron,https://www.villageofakron.org/
+Michigan,Ingham County,Alaiedon Township,https://www.alaiedontwp.com/
+Michigan,Kalamazoo County,Alamo Township,http://www.alamotownship.org
+Michigan,Emmet County,Alanson,https://www.villageofalanson.com/
+Michigan,Calhoun County,Alcona Township,http://alconatownship.com/
+Michigan,Branch County,Algansee Township,http://alganseetownship.com
+Michigan,Kent County,Algoma Township,https://www.algomatwp.org/
+Michigan,St. Clair County,Algonac,http://www.cityofalgonac.org/
+Michigan,Allegan County,Allegan,http://www.cityofallegan.org/
+Michigan,Allegan County,Allegan Township,http://www.allegantownship.org
+Michigan,Ottawa County,Allen Park,http://www.cityofallenpark.org/
+Michigan,Ottawa County,Allendale Charter Township,http://www.allendale-twp.org/
+Michigan,Keweenaw County,Allouez Township,https://alloueztwp.com/
+Michigan,Gratiot County,Alma,http://www.ci.alma.mi.us/1/307/index.asp
+Michigan,Benzie County,Almira Township,http://www.almiratownship.org
+Michigan,Lapeer County,Almont Township,http://almonttownship.org
+Michigan,Cheboygan County,Aloha Township,http://www.alohatownship.com
+Michigan,Alpena County,Alpena,http://www.alpena.mi.us/
+Michigan,Alpena County,Alpena Township,http://www.alpenatownship.com
+Michigan,Kent County,Alpine Township,http://www.alpinetwp.org/
+Michigan,Washtenaw County,Ann Arbor,http://www.a2gov.org/
+Michigan,Washtenaw County,Ann Arbor Charter Township,http://aatwp.org/
+Michigan,Manistee County,Arcadia Township,http://www.townshipofarcadia.org/
+Michigan,Genesee County,Argentine Township,http://www.argentinetownship.com
+Michigan,Van Buren County,Arlington Township,https://www.arlingtontownship.com/
+Michigan,Macomb County,Armada,http://www.villageofarmada.org/
+Michigan,Clare County,Arthur Township,https://arthurtownshipmi.com/
+Michigan,County Clare,Arvon Township,http://arvontownship.org/
+Michigan,Monroe County,Ash Township,http://ashtownship.org/
+Michigan,Barry County,Assyria Township,http://www.assyriatownship.com
+Michigan,Genesee County,Atlas Township,http://atlastownship.org
+Michigan,Lapeer County,Attica Township,http://atticatownship.org
+Michigan,Arenac County,Au Gres,http://www.cityofau-gres-mi.org
+Michigan,Iosco County,Au Sable Township,http://www.ausabletownship.net/
+Michigan,Roscommon County,Au Sable Township,http://ausabletownshipmi.com/
+Michigan,Alger County,Au Train Township,http://www.autraintownship.org/
+Michigan,Bay County,Auburn,http://www.auburnmi.org/
+Michigan,Oakland County,Auburn Hills,http://www.auburnhills.org/
+Michigan,Washtenaw County,Augusta Charter Township,https://augustatownship.org/
+Michigan,Ingham County,Aurelius Township,http://www.aureliustwp.org/
+Michigan,Huron County,Bad Axe,http://www.cityofbadaxe.com/
+Michigan,Berrien County,Bainbridge Township,http://www.bainbridgetownship.org/
+Michigan,Barry County,Baltimore Township,http://baltimoretwp.com
+Michigan,Shiawassee County,Bancroft,http://www.villageofbancroftmi.org/
+Michigan,Bay County,Bangor Charter Township,https://bangortownship.org/
+Michigan,Antrim County,Banks Township,https://www.bankstownship.net/
+Michigan,County Antrim,Baraga,http://www.villageofbaraga.com/
+Michigan,County Antrim,Baraga Township,http://www.baragatownship.org
+Michigan,Berrien County,Baroda,https://barodavillage.org/
+Michigan,Berrien County,Baroda Township,https://barodatownship.org/
+Michigan,Barry County,Barry Township,http://www.barrytownship.com
+Michigan,Washtenaw County,Barton Hills,https://bartonhillsvillage.org/
+Michigan,Clinton County,Bath Charter Township,https://bathtownship.us/
+Michigan,Calhoun County,Battle Creek,http://www.battlecreekmi.gov/
+Michigan,Bay County,Bay City,http://www.baycitymi.org
+Michigan,Charlevoix County,Bay Township,http://baytownshipmi.org/
+Michigan,Emmet County,Bear Creek Township,https://bearcreektownship.com/
+Michigan,Manistee County,Bear Lake,http://www.bearlakemichigan.org/
+Michigan,Kalkaska County,Bear Lake Township,https://www.bearlaketownship.org/
+Michigan,Cheboygan County,Beaugrand Township,http://www.beaugrandtwp.org
+Michigan,Crawford County,Beaver Creek Township,http://beavercreektownship.com
+Michigan,Bay County,Beaver Township,https://beavertwp.com/
+Michigan,Gladwin County,Beaverton,http://www.beavertonmi.org/
+Michigan,Calhoun County,Bedford Charter Township,http://bedfordchartertownship.com
+Michigan,Monroe County,Bedford Township,http://www.bedfordmi.org/
+Michigan,Ionia County,Belding,http://www.ci.belding.mi.us/
+Michigan,Antrim County,Bellaire,https://www.bellairemichigan.com/
+Michigan,County Antrim,Belleville,https://belleville.mi.us/
+Michigan,Eaton County,Bellevue,http://www.bellevuemi.net/
+Michigan,Clinton County,Bengal Township,http://www.bengaltownship.com/
+Michigan,Shiawassee County,Bennington Township,http://www.bennington-township.org/
+Michigan,Berrien County,Benton Charter Township,https://bentonchartertwp.org/
+Michigan,Berrien County,Benton Harbor,https://bhcity.us/
+Michigan,Cheboygan County,Benton Township,http://www.bentontwp.org
+Michigan,Benzie County,Benzonia,https://www.villagebenzonia.com/
+Michigan,Benzie County,Benzonia Township,http://www.benzoniatownship.org
+Michigan,Ontonagon County,Bergland Township,http://berglandmi.org/
+Michigan,Oakland County,Berkley,http://www.berkleymich.org/
+Michigan,Monroe County,Berlin Charter Township,http://www.berlinchartertwp.com/
+Michigan,St. Clair County,Berlin Township,https://www.berlintwpstclair.org/
+Michigan,Berrien County,Berrien Springs,https://www.villageofberriensprings.com/
+Michigan,Berrien County,Berrien Township,https://www.berrientownship.org/
+Michigan,Berrien County,Bertrand Township,https://bertrandtownship.com/
+Michigan,Gogebic County,Bessemer,https://www.cityofbessemer.org/
+Michigan,Gogebic County,Bessemer Township,http://bessemertownship.com/
+Michigan,Oakland County,Beverly Hills,http://www.villagebeverlyhills.com
+Michigan,Oscoda County,Big Creek Township,http://www.bigcreektownship.com/
+Michigan,Mecosta County,Big Rapids,http://cityofbr.org/
+Michigan,Gladwin County,Billings Township,http://billingstownship.org
+Michigan,Oakland County,Bingham Farms,http://www.binghamfarms.org/
+Michigan,Clinton County,Bingham Township,http://www.binghamtownship.org/
+Michigan,Saginaw County,Birch Run,http://www.villageofbirchrun.com
+Michigan,Saginaw County,Birch Run Township,http://www.birchruntwp.com/
+Michigan,Oakland County,Birmingham,http://bhamgov.org/
+Michigan,Jackson County,Blackman Charter Township,http://www.blackmantwp.com
+Michigan,Ottawa County,Blendon Township,http://www.blendontownship-mi.gov
+Michigan,Lenawee County,Blissfield,http://www.blissfieldmichigan.gov
+Michigan,Lenawee County,Blissfield Township,http://www.blissfieldtownship.com
+Michigan,Oakland County,Bloomfield Hills,http://www.bloomfieldhillsmi.net
+Michigan,Oakland County,Bloomfield Township,https://www.bloomfieldtwp.org/Home.aspx
+Michigan,Kalkaska County,Blue Lake Township,http://bluelaketwpkalkaska.org/
+Michigan,Saginaw County,Blumfield Township,http://www.blumfieldtwp.org/
+Michigan,Kalkaska County,Boardman Township,https://boardmantownshipmi.net/
+Michigan,Mackinac County,Bois Blanc Township,http://www.boisblanctownship.org/
+Michigan,Gladwin County,Bourret Township,https://www.bourrettownship.com/
+Michigan,Kent County,Bowne Township,http://www.bownetwp.org/
+Michigan,Charlevoix County,Boyne City,http://www.cityofboynecity.com/
+Michigan,Charlevoix County,Boyne Valley Township,http://boynevalleytwp.org/
+Michigan,Kalamazoo County,Brady Township,http://www.bradytwp.org
+Michigan,Saginaw County,Brady Township,https://bradytownship.org/
+Michigan,Oakland County,Brandon Charter Township,http://brandontownship.us/
+Michigan,Gratiot County,Breckenridge,http://www.breckenridgemi.com/
+Michigan,Dickinson County,Breitung Charter Township,http://www.breitungtwp.org/
+Michigan,Mackinac County,Brevort Township,https://www.brevorttownship.com/
+Michigan,Sanilac County,Bridgehampton Township,http://bridgehamptontwp.com
+Michigan,Saginaw County,Bridgeport Charter Township,https://www.bridgeportmi.org/
+Michigan,Newaygo County,Bridgeton Township,https://bridgetontownship.org/
+Michigan,Washtenaw County,Bridgewater Township,http://twp-bridgewater.org/
+Michigan,Berrien County,Bridgman,https://www.bridgman.org/
+Michigan,Livingston County,Brighton,http://www.brightoncity.org
+Michigan,Livingston County,Brighton Township,http://www.brightontwp.com
+Michigan,Lenawee County,Britton,http://www.villageofbritton.org
+Michigan,St. Clair County,Brockway Township,http://www.stclaircounty.org/townships/brockway/
+Michigan,Branch County,Bronson,http://www.bronson-mi.com/
+Michigan,Branch County,Bronson Township,https://www.michigantownships.org/twp_details.asp?fips=10880
+Michigan,Columbia Township,Brooklyn,https://www.villageofbrooklyn.com/
+Michigan,Lapeer County,Brown City,http://www.ci.brown-city.mi.us
+Michigan,Lapeer County,Brownstown Charter Township,http://brownstown-mi.org/
+Michigan,Chippewa County,Bruce Township,http://www.brucetownship.net
+Michigan,Berrien County,Buchanan,https://www.cityofbuchanan.com/
+Michigan,Berrien County,Buchanan Township,https://www.buchanantownship.net/
+Michigan,Saginaw County,Buena Vista Charter Township,http://www.bvct.org/
+Michigan,Ingham County,Bunker Hill Township,http://www.bunkerhilltownship.org/
+Michigan,Calhoun County,Burlington Township,https://burlingtontownshipcalhouncountymi.com/
+Michigan,Shiawassee County,Burns Township,http://burnstownship.org/
+Michigan,St. Joseph County,Burr Oak Township,http://www.burroaktownship.org/
+Michigan,Alger County,Burt Township,http://www.burttownship.com/
+Michigan,Cheboygan County,Burt Township,http://www.burttownship.org
+Michigan,St. Clair County,Burtchville Township,https://burtchville.org/wp/
+Michigan,Genesee County,Burton,http://www.burtonmi.gov
+Michigan,Branch County,Butler Township,http://www.butlertownshipmi.com
+Michigan,Gladwin County,Butman Township,http://butmantwp.com/index.php
+Michigan,Shiawassee County,Byron,http://www.byronmi.org/Home.aspx
+Michigan,Kent County,Byron Township,https://www.byrontownship.org/
+Michigan,Wexford County,Cadillac,http://www.cadillac-mi.net/
+Michigan,Caledonia Township,Caledonia,http://www.villageofcaledonia.org/
+Michigan,Missaukee County,Caledonia Township,http://caledoniatwp.net/
+Michigan,Kent County,Caledonia Township,https://www.caledoniatownship.org/
+Michigan,Shiawassee County,Caledonia Township,http://www.caledoniatwp.com/
+Michigan,Houghton County,Calumet Charter Township,http://calumettownship.org
+Michigan,Cass County,Calvin Township,https://www.calvintownship.org/
+Michigan,Lenawee County,Cambridge Township,http://www.cambridgetownship.net
+Michigan,Hillsdale County,Camden Township,https://camdentownship.info/
+Michigan,Ionia County,Campbell Township,https://www.campbelltownship.org/
+Michigan,Kent County,Cannon Township,https://www.cannontwp.org/
+Michigan,Kent County,Canton Charter Township,http://www.canton-mi.org
+Michigan,St. Clair County,Capac,https://www.villageofcapac.com/
+Michigan,Monroe County,Carleton,http://www.carletonmi.us/
+Michigan,Tuscola County,Caro,http://www.carocity.net/
+Michigan,Saginaw County,Carrollton Township,http://www.carrolltontwp.com/
+Michigan,Montcalm County,Carson City,http://www.carsoncitymi.com/
+Michigan,Kent County,Cascade Charter Township,https://www.cascadetwp.com/
+Michigan,Allegan County,Casco Township,http://www.cascotownship.org
+Michigan,St. Clair County,Casco Township,http://www.cascostclair.com/
+Michigan,Huron County,Caseville,https://www.cityofcaseville.com/
+Michigan,Huron County,Caseville Township,https://www.casevilletownship.com/
+Michigan,Tuscola County,Cass City,http://casscity.org/
+Michigan,Cass County,Cassopolis,http://cassopolis-mi.us/
+Michigan,Muskegon County,Cedar Creek Township,https://cedarcreektownship.org/
+Michigan,Kent County,Cedar Springs,http://www.cityofcedarsprings.org/
+Michigan,Columbia Township,Cement City,http://www.villageofcementcity.com
+Michigan,Emmet County,Center Line,http://www.centerline.gov/
+Michigan,Antrim County,Central Lake,https://www.centrallakemi.org/
+Michigan,Antrim County,Central Lake Township,https://www.centrallaketownship.org/
+Michigan,St. Joseph County,Centreville,https://centrevillemi.com/
+Michigan,Charlevoix County,Chandler Township,http://www.chandlertownship.org/
+Michigan,Kalamazoo County,Charleston Township,http://www.charlestontownship.org
+Michigan,Charlevoix County,Charlevoix,http://www.cityofcharlevoix.org/
+Michigan,Charlevoix County,Charlevoix Township,http://www.charlevoixtownship.com
+Michigan,Eaton County,Charlotte,http://www.charlottemi.org/
+Michigan,Otsego County,Charlton Township,http://www.charltontownship.com/
+Michigan,Houghton County,Chassell Township,http://chassell.net/
+Michigan,Cheboygan County,Cheboygan,http://www.cheboygan.org/
+Michigan,Washtenaw County,Chelsea,https://www.city-chelsea.org/home
+Michigan,Wexford County,Cherry Grove Township,http://www.cherrygrovetwp.org/
+Michigan,Saginaw County,Chesaning,http://www.villageofchesaning.org/
+Michigan,Saginaw County,Chesaning Township,http://www.chesaningtwp.org/
+Michigan,Allegan County,Cheshire Township,https://www.cheshiretownship.org/
+Michigan,Ottawa County,Chester Township,http://www.chester-twp.org
+Michigan,Ottawa County,Chesterfield Township,http://chesterfieldtwp.org/
+Michigan,Berrien County,Chikaming Township,https://www.chikamingtownship.org/
+Michigan,St. Clair County,China Township,http://chinatwp.net/
+Michigan,Marquette County,Chocolay Charter Township,http://www.chocolay.org/
+Michigan,Wexford County,Clam Lake Township,http://www.clamlaketownship.org/
+Michigan,Clare County,Clare,https://cityofclare.org/
+Michigan,Calhoun County,Clarence Township,http://www.clarencetwp.org
+Michigan,Mackinac County,Clark Township,http://www.clarktwp.org/
+Michigan,Ionia County,Clarksville,http://www.clarksvillemi.org
+Michigan,Oakland County,Clawson,http://www.cityofclawson.com/
+Michigan,St. Clair County,Clay Township,http://www.claytownship.org/
+Michigan,Dover Township,Clayton,https://villageofclaytonmi.gov/
+Michigan,Genesee County,Clayton Charter Township,http://www.claytontownship.org
+Michigan,Arenac County,Clayton Township,http://www.claytontownship.com/
+Michigan,Kalkaska County,Clearwater Township,https://www.clearwatertwp.com/
+Michigan,Gladwin County,Clement Township,https://clementtwp.org/
+Michigan,Clinton Township,Clinton,http://www.villageofclinton.org
+Michigan,Lenawee County,Clinton Charter Township,https://clintontownship.com/
+Michigan,Lenawee County,Clinton Township,http://www.twpofclinton.com
+Michigan,Genesee County,Clio,http://www.clio.govoffice.com
+Michigan,Allegan County,Clyde Township,http://www.michigantownshipservices.org/Clyde_Township.htm
+Michigan,St. Clair County,Clyde Township,http://www.clydetownshipscc.org/
+Michigan,Livingston County,Cohoctah Township,http://cohoctahtownship.org
+Michigan,Kalkaska County,Coldsprings Township,http://www.coldspringsexcelsior.org/
+Michigan,Branch County,Coldwater,http://www.coldwater.org/
+Michigan,Branch County,Coldwater Township,http://coldwatertownship.com
+Michigan,Midland County,Coleman,https://www.cityofcoleman.org/
+Michigan,Benzie County,Colfax Township,http://www.colfaxtwp.org
+Michigan,Huron County,Colfax Township,http://colfaxtwp-huron.com/
+Michigan,Wexford County,Colfax Township,https://colfaxtownshipwexfordcountymichigan.org/
+Michigan,Berrien County,Coloma,https://www.cityofcoloma.org/
+Michigan,Berrien County,Coloma Charter Township,https://www.colomatownship.org/
+Michigan,St. Joseph County,Colon,https://www.colonmi.net/
+Michigan,Jackson County,Columbia Township,http://www.twp.columbia.mi.us/
+Michigan,Van Buren County,Columbia Township,https://www.columbiatwp.com/
+Michigan,St. Clair County,Columbus Township,http://www.columbustwp.org/
+Michigan,Oscoda County,Comins Township,http://cominstwp.com/
+Michigan,Oakland County,Commerce Township,http://www.commercetwp.com/
+Michigan,Kalamazoo County,Comstock Township,http://www.comstockmi.gov
+Michigan,Jackson County,Concord,http://villageofconcord.com/
+Michigan,Jackson County,Concord Township,https://concordtownshipmi.org/
+Michigan,St. Joseph County,Constantine,https://constantinemi.com/
+Michigan,St. Joseph County,Constantine Township,https://constantinetwp.com/
+Michigan,Calhoun County,Convis Township,http://convistownship.org
+Michigan,Livingston County,Conway Township,http://www.conwaytownship.com
+Michigan,Kalamazoo County,Cooper Charter Township,http://www.coopertwp.org
+Michigan,Ottawa County,Coopersville,http://www.cityofcoopersville.com/
+Michigan,Shiawassee County,Corunna,http://www.corunna-mi.gov/
+Michigan,St. Clair County,Cottrellville Township,http://www.cott-township.org/
+Michigan,Kent County,Courtland Township,https://www.courtlandtwp.org/
+Michigan,Van Buren County,Covert Township,http://www.coverttwp.com/
+Michigan,Van Buren County,Covington Township,http://www.covingtonmichigan.org/index.html
+Michigan,Newaygo County,Croton Township,https://www.crotontownship.org/
+Michigan,Benzie County,Crystal Lake Township,http://www.crystallaketwp.org
+Michigan,Ogemaw County,Curtis Township,http://www.curtistownship.com
+Michigan,Custer Township,Custer,http://www.villageofcuster.org/
+Michigan,Antrim County,Custer Township,https://www.custertownshipantrim.org/
+Michigan,Chippewa County,Dafter Township,https://www.daftertownship.org/
+Michigan,Clinton County,Dallas Township,http://dallastwp.com/
+Michigan,Muskegon County,Dalton Township,http://daltontownship.org/
+Michigan,Ingham County,Dansville,http://www.inghamtownship.com/VillageofDansville.aspx
+Michigan,Genesee County,Davison,http://cityofdavison.org
+Michigan,Genesee County,Davison Township,http://davisontwp-mi.org
+Michigan,Tuscola County,Dearborn,http://www.cityofdearborn.org
+Michigan,Tuscola County,Dearborn Heights,http://www.ci.dearborn-heights.mi.us/
+Michigan,Van Buren County,Decatur,http://www.decaturmi.org/
+Michigan,Van Buren County,Decatur Township,http://www.decaturmi.org/
+Michigan,Sanilac County,Deckerville,http://www.deckerville.us/
+Michigan,Deerfield Township,Deerfield,http://www.deerfieldmichigan.gov
+Michigan,Lapeer County,Deerfield Township,http://www.deerfieldtownship.com
+Michigan,Livingston County,Deerfield Township,http://www.deerfieldtwp.org
+Michigan,Ingham County,Delhi Charter Township,https://www.delhitownship.com/
+Michigan,Eaton County,Delta Charter Township,http://www.deltami.gov/
+Michigan,Roscommon County,Denton Township,http://www.dentontownship-mi.org/
+Michigan,Chippewa County,Detour Township,http://www.detourvillage.org/
+Michigan,Chippewa County,DeTour Village,http://www.detourvillage.org/
+Michigan,Wayne County,Detroit,http://www.detroitmi.gov/
+Michigan,Wayne County,DeWitt,http://www.dewittmi.org/
+Michigan,Clinton County,DeWitt Charter Township,https://www.dewitttownship.org/
+Michigan,Washtenaw County,Dexter,http://www.DexterMI.gov
+Michigan,Washtenaw County,Dexter Township,http://www.dextertownship.org/
+Michigan,Eaton County,Dimondale,http://www.villageofdimondale.org
+Michigan,Allegan County,Dorr Township,http://www.dorrtownship.org
+Michigan,Allegan County,Douglas,http://www.ci.douglas.mi.us/
+Michigan,Cass County,Dowagiac,http://www.cityofdowagiac.com/
+Michigan,Schoolcraft County,Doyle Township,https://www.doyletownship.com/
+Michigan,Monroe County,Dundee,http://www.dundeevillage.net/
+Michigan,Monroe County,Dundee Township,http://www.dundeetownship.info/
+Michigan,Clinton County,Duplain Township,http://www.duplaintwp.com/
+Michigan,Shiawassee County,Durand,http://www.durandmi.com/
+Michigan,Keweenaw County,Eagle Harbor Township,https://www.eagleharbortwp.org/
+Michigan,Clinton County,Eagle Township,http://eagletownship.org
+Michigan,Keweenaw County,East Bay Township,http://www.eastbaytwp.org/
+Michigan,St. Clair County,East China Township,http://www.eastchinatownship.org/
+Michigan,Kent County,East Grand Rapids,http://www.eastgr.org
+Michigan,Charlevoix County,East Jordan,http://eastjordancity.org/
+Michigan,Clinton County,East Lansing,http://www.cityofeastlansing.com
+Michigan,Iosco County,East Tawas,http://www.easttawas.com/
+Michigan,Ionia County,Eastpointe,http://www.cityofeastpointe.net
+Michigan,Eaton County,Eaton Rapids,http://www.cityofeatonrapids.com/
+Michigan,Calhoun County,Eckford Township,http://www.eckfordtownship.com
+Michigan,Calhoun County,Ecorse,http://www.ecorsemi.gov/
+Michigan,Midland County,Edenville Township,https://www.edenvilletwp.org/
+Michigan,Montcalm County,Edmore,http://www.edmore.org/
+Michigan,Muskegon County,Egelston Township,http://www.egelstontwp.org
+Michigan,Antrim County,Elk Rapids,http://www.elkrapids.org/
+Michigan,Antrim County,Elk Rapids Township,http://www.elkrapids.com/
+Michigan,Oliver Township,Elkton,http://villageofelkton.com/
+Michigan,Antrim County,Ellsworth,http://villageofellsworthmi.com/
+Michigan,Houghton County,Elm River Township,http://www.elmrivertownship.com/
+Michigan,Otsego County,Elmira Township,http://www.elmiratownship.com/
+Michigan,Tuscola County,Elsie,http://elsie.org/
+Michigan,Marquette County,Ely Township,https://elytownship.com/
+Michigan,Calhoun County,Emmett Charter Township,http://www.emmett.org
+Michigan,St. Clair County,Empire,https://www.leelanau.cc/empirevillage.asp
+Michigan,St. Clair County,Empire Township,https://www.leelanau.cc/
+Michigan,Monroe County,Erie Township,http://erietownship.com/
+Michigan,Gogebic County,Erwin Township,https://erwintownship.org/
+Michigan,Delta County,Escanaba,http://www.escanaba.org/
+Michigan,Delta County,Escanaba Township,https://www.escanabatownship.org/
+Michigan,Clinton County,Essex Township,http://www.essextownship.org/
+Michigan,Bay County,Essexville,https://essexville.org/
+Michigan,Monroe County,Estral Beach,http://www.estralbeachvillage.org/index.html
+Michigan,Charlevoix County,Evangeline Township,http://evangelinetwp.org/
+Michigan,Osceola County,Evart,http://evart.org
+Michigan,Charlevoix County,Eveline Township,https://www.evelinetownship.org/
+Michigan,Kalkaska County,Excelsior Township,http://www.excelsiortownship.org/
+Michigan,Monroe County,Exeter Township,https://www.exetertwp.com/
+Michigan,St. Joseph County,Fabius Township,https://www.fabiustownship.org/
+Michigan,Lenawee County,Fairfield Township,http://www.fairfieldtownship.net
+Michigan,Shiawassee County,Fairfield Township,http://fairfieldtwp.us/
+Michigan,Tuscola County,Fairgrove Township,https://fairgrovetwp.org/
+Michigan,Oakland County,Farmington,http://www.farmgov.com/
+Michigan,Oakland County,Farmington Hills,http://www.fhgov.com
+Michigan,Clare County,Farwell,https://villageoffarwell.net/
+Michigan,Allegan County,Fennville,http://fennville.com/
+Michigan,Genesee County,Fenton,http://www.cityoffenton.org
+Michigan,Genesee County,Fenton Township,http://www.fentontownship.org
+Michigan,Oakland County,Ferndale,http://ferndalemi.gov/
+Michigan,Ottawa County,Ferrysburg,http://www.ferrysburg.org/
+Michigan,Ottawa County,Fife Lake,http://www.fifelake.com/
+Michigan,Ottawa County,Fife Lake Township,http://fifelaketwp.com/
+Michigan,Allegan County,Fillmore Township,http://www.fillmoretownship.com
+Michigan,Monroe County,Flat Rock,http://www.flatrockmi.org/index.asp
+Michigan,Genesee County,Flint,http://www.cityofflint.com
+Michigan,Genesee County,Flint Charter Township,http://www.flinttownship.org
+Michigan,Genesee County,Flushing,http://www.flushingcity.com
+Michigan,Genesee County,Flushing Charter Township,http://www.flushingtownship.com
+Michigan,Sanilac County,Flynn Township,http://flynntownship.org/
+Michigan,Delta County,Ford River Township,https://fordriver.org/
+Michigan,Antrim County,Forest Home Township,http://www.foresthometwp.com/
+Michigan,Genesee County,Forest Township,http://www.foresttwp.com
+Michigan,Marquette County,Forsyth Township,https://www.forsythtwpmi.org/
+Michigan,St. Clair County,Fort Gratiot Charter Township,https://fortgratiot.us/
+Michigan,Sherman Township,Fowler,https://fowlermi.com/
+Michigan,Livingston County,Fowlerville,http://www.fowlerville.org
+Michigan,Bay County,Frankenlust Township,http://www.frankenlust.com
+Michigan,Saginaw County,Frankenmuth,http://www.frankenmuth.org
+Michigan,Saginaw County,Frankenmuth Township,http://www.frankenmuthtwp.com/
+Michigan,Benzie County,Frankfort,http://www.frankfortmich.com
+Michigan,Oakland County,Franklin,https://www.franklin.mi.us/
+Michigan,Clare County,Franklin Township,http://www.franklin-twp.com/
+Michigan,Lenawee County,Franklin Township,http://www.franklintownship.net
+Michigan,Bay County,Fraser,http://www.ci.fraser.mi.us/
+Michigan,Bay County,Fraser Township,http://frasertownship.org/
+Michigan,Crawford County,Frederic Township,http://frederictownship.org
+Michigan,Calhoun County,Fredonia Township,http://www.fredoniatownship.com
+Michigan,Washtenaw County,Freedom Township,http://www.twp-freedom.org/
+Michigan,Clare County,Freeman Township,http://freemantwp.com/
+Michigan,Newaygo County,Fremont,http://www.cityoffremont.net/
+Michigan,Saginaw County,Fremont Township,http://www.fremonttownship.org/
+Michigan,Monroe County,Frenchtown Township,http://www.frenchtowntownship.org/
+Michigan,Clare County,Frost Township,http://www.frosttownship.com/
+Michigan,Muskegon County,Fruitland Township,http://www.fruitlandtwp.org/
+Michigan,Muskegon County,Fruitport,http://www.villageoffruitport.com/
+Michigan,Muskegon County,Fruitport Charter Township,http://www.fruitporttownship-mi.gov
+Michigan,Genesee County,Gaines Township,http://www.gainestownship.net
+Michigan,Kent County,Gaines Township,https://www.gainestownship.org/
+Michigan,Kalamazoo County,Galesburg,http://www.galesburgcity.org
+Michigan,Berrien County,Galien Township,https://www.galientownship.org/
+Michigan,Allegan County,Ganges Township,http://www.gangestownship.org
+Michigan,Delta County,Garden City,http://www.gardencitymi.org/
+Michigan,Bay County,Garfield Township,https://www.garfieldtownship-bc.com/
+Michigan,Clare County,Garfield Township,https://www.garfieldtownship.net/
+Michigan,Otsego County,Gaylord,https://cityofgaylord.com/
+Michigan,Genesee County,Genesee Township,http://geneseetwp.com
+Michigan,Midland County,Geneva Township,http://genevatwpmidlandcounty.com/
+Michigan,Livingston County,Genoa Township,http://www.genoa.org
+Michigan,Ottawa County,Georgetown Township,http://www.georgetown-mi.gov
+Michigan,Roscommon County,Gerrish Township,http://www.gerrishtownship.org/
+Michigan,Roscommon County,Gibraltar,http://cityofgibraltar.net/
+Michigan,Branch County,Girard Township,http://girardtownship.net
+Michigan,Delta County,Gladstone,http://www.gladstonemi.org/
+Michigan,Gladwin County,Gladwin,http://www.gladwin.org/
+Michigan,Ogemaw County,Goodar Township,http://goodartwp.com/
+Michigan,Lapeer County,Goodland Township,http://www.goodlandtownship.org/
+Michigan,Genesee County,Goodrich,http://www.villageofgoodrich.com
+Michigan,Berrien County,Grand Beach,https://www.grandbeach.org/
+Michigan,Genesee County,Grand Blanc,http://cityofgrandblanc.com
+Michigan,Genesee County,Grand Blanc Charter Township,http://www.twp.grand-blanc.mi.us
+Michigan,Ottawa County,Grand Haven,http://www.grandhaven.org
+Michigan,Ottawa County,Grand Haven Charter Township,http://www.ght.org/
+Michigan,Eaton County,Grand Ledge,https://www.cityofgrandledge.com/
+Michigan,Eaton County,Grand Rapids,https://www.grandrapidsmi.gov/Home
+Michigan,Kent County,Grand Rapids Charter Township,http://www.grandrapidstwp.org
+Michigan,Kent County,Grandville,http://www.cityofgrandville.com
+Michigan,Newaygo County,Grant,http://www.cityofgrantmi.com
+Michigan,Cheboygan County,Grant Township,http://granttwp.com
+Michigan,Clare County,Grant Township,https://grant-township.org/
+Michigan,Keweenaw County,Grant Township,https://granttownshipmi.org/
+Michigan,Mason County,Grant Township,https://granttwpmi.org/
+Michigan,Oceana County,Grant Township,http://www.granttownshipoceana.com/
+Michigan,St. Clair County,Grant Township,https://granttownship.com/
+Michigan,Jackson County,Grass Lake,https://www.villageofgrasslake.com/
+Michigan,Jackson County,Grass Lake Charter Township,http://www.grasslakect.com/
+Michigan,Kent County,Grattan Township,https://www.grattantownship.org/
+Michigan,Crawford County,Grayling,https://www.cityofgrayling.org/default.asp
+Michigan,Crawford County,Grayling Charter Township,http://twp.grayling.mi.us
+Michigan,Livingston County,Green Oak Township,http://www.greenoaktwp.com
+Michigan,Alpena County,Green Township,http://www.greentownshipmi.org
+Michigan,Mecosta County,Greenbush Township,http://www.greenbushtownship.com/
+Michigan,Clinton County,Greenbush Township,https://www.greenbushtwp.org/
+Michigan,Midland County,Greendale Township,https://greendaletwpmidcomi.org/
+Michigan,Montcalm County,Greenville,http://www.greenvillemi.org
+Michigan,Clare County,Greenwood Township,https://www.greenwoodtownship.org/
+Michigan,Oscoda County,Greenwood Township,http://www.greenwoodtwp.com/
+Michigan,St. Clair County,Greenwood Township,https://www.greenwoodtownship.com/
+Michigan,Gladwin County,Grosse Ile Township,http://grosseile.com/
+Michigan,Gladwin County,Grosse Pointe,http://www.grossepointecity.org/
+Michigan,Gladwin County,Grosse Pointe Farms,https://www.grossepointefarms.org/
+Michigan,Gladwin County,Grosse Pointe Park,http://www.grossepointepark.org/
+Michigan,Gladwin County,Grosse Pointe Woods,http://www.gpwmi.us/
+Michigan,Oakland County,Groveland Township,http://www.grovelandtownship.net/
+Michigan,Allegan County,Gun Plain Township,http://www.gunplain.org
+Michigan,Allegan County,Gustin Township,http://gustintwp.com/
+Michigan,Berrien County,Hagar Township,http://www.hagartownship.org/
+Michigan,Livingston County,Hamburg Township,http://www.hamburg.mi.us
+Michigan,Clare County,Hamilton Township,https://www.hamiltontwp.us/
+Michigan,Mason County,Hamlin Township,http://www.hamlintownship.org/
+Michigan,Bay County,Hampton Township,https://hamptontownship.org/
+Michigan,Bay County,Hamtramck,http://www.hamtramck.us/
+Michigan,Houghton County,Hancock,http://www.cityofhancock.com
+Michigan,Livingston County,Handy Township,http://www.handytownship.org
+Michigan,Jackson County,Hanover Township,https://hanover-twp.org/
+Michigan,Wexford County,Hanover Township,https://hanovertsp.com/
+Michigan,Huron County,Harbor Beach,http://harborbeach.com/
+Michigan,Emmet County,Harbor Springs,http://www.cityofharborsprings.com/
+Michigan,Wexford County,Haring Charter Township,http://www.twpofharing.org/
+Michigan,County Wexford,Harper Woods,http://www.harperwoodscity.org/
+Michigan,Menominee County,Harris Township,http://harristownship.com/
+Michigan,Clare County,Harrison,https://cityofharrisonmi.org/
+Michigan,Macomb County,Harrison Township,http://www.harrison-township.org/
+Michigan,Macomb County,Harrisville Township,https://harrisvilletownship.com/
+Michigan,Oceana County,Hart,https://cityofhart.org/
+Michigan,Van Buren County,Hartford,http://www.cityofhartfordmi.org/
+Michigan,Livingston County,Hartland Township,http://www.hartlandtwp.com
+Michigan,Barry County,Hastings,http://www.hastingsmi.org/
+Michigan,Barry County,Hastings Charter Township,http://www.hastingstownship.com
+Michigan,Clare County,Hatton Township,http://www.hattontownship.com/
+Michigan,Clare County,Hawes Township,http://www.hawestownship.com
+Michigan,Gladwin County,Hay Township,https://haytownship.org/
+Michigan,Charlevoix County,Hayes Township,https://www.hayestownshipmi.gov/
+Michigan,Clare County,Hayes Township,http://www.hayestownship.com/
+Michigan,Oakland County,Hazel Park,http://www.hazelpark.org
+Michigan,Shiawassee County,Hazelton Township,http://hazeltontownship.com/
+Michigan,Allegan County,Heath Township,http://www.heathtownship.net
+Michigan,Antrim County,Helena Township,http://www.helenatownship.com/
+Michigan,Jackson County,Henrietta Township,http://www.henriettatownship.org/
+Michigan,Oceana County,Hesperia,https://www.michigan.org/city/hesperia#?c=44.4299:-85.1166:6&tid=712&page=0&pagesize=20&pagetitle=Hesperia
+Michigan,Roscommon County,Higgins Township,http://www.higginstownship.com/
+Michigan,Wayne County,Highland Park,https://www.highlandparkmi.gov/
+Michigan,Oakland County,Highland Township,https://www.highlandtwp.net/
+Michigan,Hillsdale County,Hillsdale,https://www.cityofhillsdale.org/
+Michigan,Hillsdale County,Hillsdale Township,https://www.hillsdaletownship.org/
+Michigan,Ottawa County,Holland,http://www.cityofholland.com/
+Michigan,Ottawa County,Holland Charter Township,http://www.hct.holland.mi.us/
+Michigan,Oakland County,Holly,http://www.hollyvillage.org/
+Michigan,Oakland County,Holly Township,http://hollytownship.org/
+Michigan,Calhoun County,Homer,https://homermichigan.org/
+Michigan,Midland County,Homer Township,http://www.homertownship.org/
+Michigan,Benzie County,Homestead Township,http://www.homesteadtwp.org
+Michigan,Barry County,Hope Township,http://www.hopetwp.com
+Michigan,Midland County,Hope Township,http://hopetwp.org/
+Michigan,Allegan County,Hopkins,https://www.villageofhopkins.org/
+Michigan,Allegan County,Hopkins Township,http://hopkinstownship.org
+Michigan,Houghton County,Houghton,http://cityofhoughton.com
+Michigan,Keweenaw County,Houghton Township,https://www.houghtontwp.org/
+Michigan,Montcalm County,Howard City,https://www.howardcity.org/
+Michigan,Cass County,Howard Township,http://www.howardtwp.org/
+Michigan,Livingston County,Howell,http://www.cityofhowell.org
+Michigan,Livingston County,Howell Township,http://howelltownshipmi.org
+Michigan,Lenawee County,Hudson,http://www.ci.hudson.mi.us
+Michigan,Charlevoix County,Hudson Township,https://hudsontownship.org/
+Michigan,Lenawee County,Hudson Township,http://www.hudsontownshipmi.com
+Michigan,Ottawa County,Hudsonville,http://www.hudsonville.org/
+Michigan,Marquette County,Humboldt Township,http://www.humboldt.town/
+Michigan,Huron County,Hume Township,http://www.humetownship.com/
+Michigan,Oakland County,Huntington Woods,http://ci.huntington-woods.mi.us/
+Michigan,Huron County,Huron Charter Township,http://www.hurontownship-mi.gov/
+Michigan,Huron County,Huron Township,https://hurontownship-thumbofmi.com/
+Michigan,Monroe County,Ida Township,https://www.idatownship.org/
+Michigan,Lapeer County,Imlay City,https://www.imlaycity.org/
+Michigan,Lapeer County,Imlay Township,http://www.imlaytownship.com
+Michigan,Oakland County,Independence Charter Township,https://www.indtwp.com/
+Michigan,Midland County,Ingersoll Township,http://www.ingersolltownship.com/
+Michigan,Ingham County,Ingham Township,http://www.inghamtownship.com/
+Michigan,Ingham County,Inkster,http://www.cityofinkster.com/
+Michigan,Benzie County,Inland Township,http://inlandtownship.org
+Michigan,Cheboygan County,Inverness Township,http://www.invernesstownship.com
+Michigan,Schoolcraft County,Inwood Township,http://www.inwoodtownship.org/
+Michigan,Ionia County,Ionia,http://www.ci.ionia.mi.us/
+Michigan,Livingston County,Iosco Township,http://ioscotwp.com
+Michigan,St. Clair County,Ira,https://www.iratownship.org/
+Michigan,Dickinson County,Iron Mountain,http://www.cityofironmountain.com
+Michigan,Iron County,Iron River,http://www.ironriver.org/
+Michigan,Gogebic County,Ironwood,https://cityofironwood.org/
+Michigan,Gogebic County,Ironwood Charter Township,http://www.ironwoodtownship.com/
+Michigan,Barry County,Irving Township,http://www.irvingtownship.org
+Michigan,Marquette County,Ishpeming,https://ishpemingcity.org/
+Michigan,Marquette County,Ishpeming Township,http://www.ishpemingtownship.com/
+Michigan,Gratiot County,Ithaca,http://www.ithacami.com/1/260/index.asp
+Michigan,Jackson County,Jackson,http://www.cityofjackson.org/
+Michigan,Saginaw County,James Township,http://www.jamestownship.org/
+Michigan,Ottawa County,Jamestown Charter Township,http://www.twp.jamestown.mi.us/
+Michigan,Cass County,Jefferson Township,https://www.jeffersontownshiponline.org/
+Michigan,Midland County,Jerome Township,http://www.jerometownship.org/
+Michigan,Saginaw County,Jonesfield Township,http://www.jonesfield.com/
+Michigan,Hillsdale County,Jonesville,http://jonesville.org/
+Michigan,Antrim County,Jordan Township,http://www.jordantwp.org/
+Michigan,Kalamazoo County,Kalamazoo,https://www.kalamazoocity.org/
+Michigan,Kalamazoo County,Kalamazoo Township,http://kalamazootownship.org
+Michigan,Maple Grove Township,Kaleva,http://villageofkaleva.com
+Michigan,Kalkaska County,Kalkaska,https://kalkaskavillage.com
+Michigan,Bay County,Kawkawlin Township,http://kawkawlintwp.org/
+Michigan,Antrim County,Kearney Township,http://www.kearneytownship.org/
+Michigan,Oakland County,Keego Harbor,http://www.keegoharbor.org
+Michigan,Tyrone Township,Kent City,https://www.kentcitymi.org/
+Michigan,Kent County,Kentwood,https://www.kentwood.us/
+Michigan,St. Clair County,Kimball Township,http://www.kimballtownship.org/
+Michigan,Branch County,Kinderhook Township,http://kinderhooktownship.com
+Michigan,Dickinson County,Kingsford,http://www.cityofkingsford.com/
+Michigan,Dickinson County,Kingsley,http://www.villageofkingsley.com/
+Michigan,Chippewa County,Kinross Charter Township,http://www.kinrosstownship-mi.gov
+Michigan,Saginaw County,Kochville Township,https://www.kochvilletwp.com/
+Michigan,Tuscola County,Koylton Township,http://www.koyltontownshipmi.org/
+Michigan,Presque Isle County,Krakow Township,http://www.krakowtownship.org/
+Michigan,Monroe County,La Salle Township,http://lasalletwpmi.com/
+Michigan,Gratiot County,Lafayette Township,https://www.lafayettetwp.com
+Michigan,Cass County,LaGrange Township,http://www.lagrangetownshipmi.com/
+Michigan,Shiawassee County,Laingsburg,http://laingsburg.us/
+Michigan,Oakland County,Lake Angelus,http://www.lakeangelus.org/
+Michigan,Benzie County,Lake Ann,https://lakeann-mi.com/
+Michigan,Berrien County,Lake Charter Township,http://www.lake-township.org/
+Michigan,Missaukee County,Lake City,http://cityoflakecity.com/
+Michigan,Schoolcraft Township,Lake Linden,http://www.lakelinden.net/
+Michigan,Ionia County,Lake Odessa,http://www.lakeodessa.org/
+Michigan,Oakland County,Lake Orion,http://www.lakeorion.org/
+Michigan,Benzie County,Lake Township,http://www.laketwp.org
+Michigan,Huron County,Lake Township,http://www.laketownship.net/
+Michigan,Missaukee County,Lake Township,http://laketownshipmissaukee.com/
+Michigan,Roscommon County,Lake Township,https://www.lake-township.com/
+Michigan,Saginaw County,Lakefield Township,http://www.lakefieldtownship.com/home.html
+Michigan,Allegan County,Laketown Township,http://www.laketowntwp.org
+Michigan,Muskegon County,Lakewood Club,http://villageoflakewoodclub.org/
+Michigan,Sanilac County,L'Anse,http://villageoflanse.org/
+Michigan,Sanilac County,L'Anse Township,http://www.lansetownship.org
+Michigan,Clinton County,Lansing,https://www.lansingmi.gov/
+Michigan,Ingham County,Lansing Charter Township,http://www.lansingtownship.org/
+Michigan,Lapeer County,Lapeer,https://www.ci.lapeer.mi.us
+Michigan,Midland County,Larkin Charter Township,http://www.larkintownship.org/default.asp
+Michigan,Oakland County,Lathrup Village,http://www.lathrupvillage.org/
+Michigan,Houghton County,Laurium,http://www.laurium.net
+Michigan,Van Buren County,Lawrence,http://www.lawrencemi.com/
+Michigan,Van Buren County,Lawrence Township,http://www.lawrence-township.com/
+Michigan,Allegan County,Lee Township,http://www.leetwp.org
+Michigan,Midland County,Lee Township,http://www.leetownship.org/
+Michigan,Allegan County,Leighton Township,http://www.leightontownship.org
+Michigan,Clayton Township,Lennon,http://www.villageoflennon.org
+Michigan,Oakland County,Leonard,http://www.villageofleonard.org
+Michigan,Jackson County,Leoni,http://www.leonitownship.com/
+Michigan,Osceola County,LeRoy,http://www.leroymichigan.org/
+Michigan,Calhoun County,Leroy Township,http://leroytownship.org
+Michigan,Ingham County,Leroy Township,http://www.leroytwp.com/
+Michigan,Ingham County,Leslie,https://www.cityofleslie.org/
+Michigan,Ingham County,Leslie Township,https://www.leslietownship.org/
+Michigan,Sanilac County,Lexington,https://www.villageoflexington.com/
+Michigan,Jackson County,Liberty Township,https://www.libertytwp.us/
+Michigan,Washtenaw County,Lima Township,https://www.twp-lima.org/
+Michigan,Alger County,Lincoln,http://www.lincolnmi.com/
+Michigan,Berrien County,Lincoln Charter Township,http://www.lctberrien.org/
+Michigan,Osceola County,Lincoln Park,http://www.citylp.com/
+Michigan,Clare County,Lincoln Township,http://www.lincolntwp.com/
+Michigan,Midland County,Lincoln Township,https://www.lincoln-twp.org/
+Michigan,Genesee County,Linden,http://www.lindenmi.us
+Michigan,Hillsdale County,Litchfield,https://cityoflitchfield.org/
+Michigan,Otsego County,Livonia,http://www.ci.livonia.mi.us/
+Michigan,Ingham County,Locke Township,http://www.locketownship.com/
+Michigan,Washtenaw County,Lodi Township,http://twp-lodi.org/
+Michigan,Monroe County,London Township,http://londontwp.org/
+Michigan,Alpena County,Long Rapids Township,http://www.longrapidstownship.org
+Michigan,Crawford County,Lovells Township,http://www.lovellstownship.com
+Michigan,Kent County,Lowell,http://www.lowellmi.gov/
+Michigan,Kent County,Lowell Charter Township,http://www.twp.lowell.mi.us/
+Michigan,Mason County,Ludington,http://www.ludington.mi.us/
+Michigan,Monroe County,Luna Pier,http://www.cityoflunapier.com
+Michigan,Washtenaw County,Lyndon Township,https://lyndontownshipmi.gov/
+Michigan,St. Clair County,Lynn Township,https://www.lynntownshipmi.org/
+Michigan,Oakland County,Lyon Township,https://www.lyontwp.org/
+Michigan,Roscommon County,Lyon Township,http://www.lyontownship.org/
+Michigan,Mackinac County,Mackinac Island,http://www.cityofmi.org
+Michigan,Cheboygan County,Mackinaw City,http://www.mackinawcity.org/
+Michigan,Cheboygan County,Mackinaw Township,http://www.mackinawtownship.com
+Michigan,Ontonagon County,Macomb Township,http://www.macomb-mi.gov
+Michigan,Lenawee County,Macon Township,http://www.macontwp.com
+Michigan,Lenawee County,Madison Charter Township,http://www.madisontwp.com
+Michigan,Oakland County,Madison Heights,http://www.madison-heights.org
+Michigan,Antrim County,Mancelona,https://www.villageofmancelona.org/
+Michigan,Antrim County,Mancelona Township,https://www.mancelonatownship.com/
+Michigan,Washtenaw County,Manchester,https://vil-manchester.org/
+Michigan,Washtenaw County,Manchester Township,http://www.twp-manchester.org/
+Michigan,Schoolcraft County,Manistique,https://cityofmanistique.org/
+Michigan,Allegan County,Manlius Township,http://www.manliustownship.com
+Michigan,Wexford County,Manton,https://www.mantonmi.org/
+Michigan,Crawford County,Maple Forest Township,http://mapleforest.org
+Michigan,Saginaw County,Maple Grove Township,https://www.maplegrovetownship.org/
+Michigan,Saginaw County,Maple Rapids,https://www.maplerapids.org/
+Michigan,Cass County,Marcellus,https://villageofmarcellus.org/
+Michigan,Gogebic County,Marenisco Township,http://marenisco.org/
+Michigan,St. Clair County,Marine City,https://cityofmarinecity.org/
+Michigan,Livingston County,Marion Township,http://www.mariontownship.com
+Michigan,Saginaw County,Marion Township,https://www.mariontownship.org/1/389/index.asp
+Michigan,Roscommon County,Markey Township,http://www.markeytownship.org/
+Michigan,Sanilac County,Marlette,http://cityofmarlette.com/
+Michigan,Marquette County,Marquette,http://www.marquettemi.gov
+Michigan,Marquette County,Marquette Township,https://marquettetownship.org/
+Michigan,Calhoun County,Marshall,http://www.cityofmarshall.com/
+Michigan,Calhoun County,Marshall Township,http://www.marshalltownship.org
+Michigan,Martin Township,Martin,http://www.martinmi.org/
+Michigan,Allegan County,Martin Township,http://www.martintownship.org
+Michigan,St. Clair County,Marysville,http://www.cityofmarysvillemi.com/
+Michigan,Ingham County,Mason,http://www.mason.mi.us
+Michigan,Cass County,Mason Township,https://www.masontownship.org/
+Michigan,Alger County,Mathias Township,http://www.mathiastownship.org
+Michigan,Van Buren County,Mattawan,http://www.mattawanmi.com/
+Michigan,Monroe County,Maybee,http://maybeevillage.com/
+Michigan,Lapeer County,Mayfield Township,http://www.mayfieldtownship.com
+Michigan,Tuscola County,Mayville,http://www.villageofmayville.net/
+Michigan,Missaukee County,McBain,http://www.cityofmcbainmichigan.com/
+Michigan,Luce County,McMillan Township,https://www.mcmillantownship.com/
+Michigan,Lenawee County,Medina Township,https://www.medinatwp.com/
+Michigan,Charlevoix County,Melrose Township,http://www.melrosetwp.org/
+Michigan,Sanilac County,Melvindale,http://www.melvindale.org/
+Michigan,Macomb County,Memphis,http://memphismi.com/
+Michigan,St. Joseph County,Mendon,http://mendonmi.us/
+Michigan,Menominee County,Menominee,http://www.menominee.us
+Michigan,Menominee County,Menominee Township,http://www.menomineetownship.com/
+Michigan,Oscoda County,Mentor Township,http://www.mentortownship.com/
+Michigan,Ingham County,Meridian Charter Township,http://www.meridian.mi.us/
+Michigan,Saginaw County,Merrill,https://www.merrillvillage.com/
+Michigan,Wexford County,Mesick,https://villageofmesick.com/
+Michigan,Lapeer County,Metamora Township,http://metamoratownship.com
+Michigan,Menominee County,Meyer Township,http://www.hermansville.com/
+Michigan,Berrien County,Michiana,http://michianavillage.org/
+Michigan,Marquette County,Michigamme Township,http://www.michigammetownship.com/
+Michigan,Shiawassee County,Middlebury Township,http://www.middleburytownship.com/
+Michigan,Barry County,Middleville,https://www.villageofmiddleville.org/
+Michigan,Bay County,Midland,http://www.midland-mi.org/
+Michigan,Midland County,Midland Charter Township,https://www.midlandtownship.net/
+Michigan,Midland County,Mikado Township,https://mikadotownship.org/
+Michigan,Monroe County,Milan,http://milanmich.org
+Michigan,Monroe County,Milan Township,https://www.milantownship.org/
+Michigan,Oakland County,Milford,http://www.villageofmilford.org
+Michigan,Oakland County,Milford Charter Township,http://www.milfordtownship.com/
+Michigan,Mecosta County,Millen Township,http://millentownship.com/
+Michigan,Tuscola County,Millington,http://www.millingtonvillage.org/
+Michigan,Midland County,Mills Township,https://millstownship.org/
+Michigan,Antrim County,Milton Township,https://miltontownship.org/
+Michigan,Cass County,Milton Township,http://www.miltontwp.org/
+Michigan,Sanilac County,Mitchell Township,http://www.mitchelltownship.org
+Michigan,Arenac County,Moffatt Township,http://www.moffatttownship.org/
+Michigan,Bay County,Monitor Charter Township,http://www.monitortwp.org/
+Michigan,Monroe County,Monroe,http://monroemi.gov/
+Michigan,Monroe County,Monroe Charter Township,http://monroechartertownship.org/
+Michigan,Muskegon County,Montague,http://cityofmontague.org/
+Michigan,Muskegon County,Montague Township,http://www.montaguetownship.org
+Michigan,Genesee County,Montrose,http://www.cityofmontrose.us
+Michigan,Genesee County,Montrose Charter Township,http://montrosetownship.org
+Michigan,Mackinac County,Moran Township,https://www.morantownship.com/
+Michigan,Lenawee County,Morenci,http://www.cityofmorenci.org
+Michigan,Shiawassee County,Morrice,http://www.morrice.mi.us/
+Michigan,St. Joseph County,Mount Clemens,http://cityofmountclemens.com/
+Michigan,Midland County,Mount Haley Township,https://www.mthaleytwp.org/
+Michigan,Genesee County,Mount Morris,http://www.cityofmtmorris.org
+Michigan,Genesee County,Mount Morris Township,http://www.mtmorristwp.org
+Michigan,Isabella County,Mount Pleasant,http://www.mt-pleasant.org
+Michigan,Cheboygan County,Mullett Township,http://www.mullettgov-clerk.org
+Michigan,Genesee County,Mundy Township,http://www.mundytwp-mi.gov
+Michigan,Alger County,Munising,https://cityofmunising.org/
+Michigan,Alger County,Munising Township,http://www.munisingtownship.org
+Michigan,Cheboygan County,Munro Township,http://www.munrotownship.com
+Michigan,Muskegon County,Muskegon,http://www.muskegon-mi.gov/
+Michigan,Muskegon County,Muskegon Heights,http://www.cityofmuskegonheights.org
+Michigan,St. Clair County,Mussey Township,https://www.musseytownship.org/
+Michigan,Jackson County,Napoleon Township,http://www.napoleontownship.us/
+Michigan,Barry County,Nashville,http://www.nashvillemi.us/
+Michigan,Marquette County,Negaunee,http://cityofnegaunee.com/
+Michigan,Marquette County,Negaunee Township,http://www.negauneetownship.org/
+Michigan,Kent County,Nelson Township,http://www.nelsontownship.org/
+Michigan,Roscommon County,Nester Township,https://www.roscommoncounty.net/212/Nester-Township
+Michigan,Newaygo County,New Baltimore,http://www.cityofnewbaltimore.com
+Michigan,Berrien County,New Buffalo,http://www.cityofnewbuffalo.org/
+Michigan,Berrien County,New Buffalo Township,https://newbuffalotownship.org/
+Michigan,Oceana County,New Era,http://www.newerachamber.com
+Michigan,Macomb County,New Haven,http://www.newhavenmi.org/
+Michigan,Shiawassee County,New Haven Township,http://www.nhtownship.com/
+Michigan,Shiawassee County,New Lothrop,http://www.newlothrop.org
+Michigan,Newaygo County,Newaygo,http://www.newaygocity.org
+Michigan,Cass County,Newberg Township,https://newbergtwp.com/
+Michigan,McMillan Township,Newberry,http://www.villageofnewberry.com/
+Michigan,Calhoun County,Newton Township,http://newtontwp.org
+Michigan,Mackinac County,Newton Township,https://newtontownshipgouldcity.com/
+Michigan,Berrien County,Niles,http://www.nilesmi.org/
+Michigan,Berrien County,Niles Township,http://www.nilestwpmi.gov/
+Michigan,Manistee County,Norman Township,http://www.normantownship.org/
+Michigan,Lapeer County,North Branch,http://northbranchvillage.org/
+Michigan,Muskegon County,North Muskegon,http://www.northmuskegon.org/
+Michigan,Gratiot County,North Star Township,https://www.northstartwp.com/
+Michigan,Washtenaw County,Northfield Township,http://twp-northfield.org/
+Michigan,Oakland County,Northville,http://www.ci.northville.mi.us/
+Michigan,Oakland County,Northville Township,http://www.twp.northville.mi.us/
+Michigan,Muskegon County,Norton Shores,http://www.nortonshores.org
+Michigan,Jackson County,Norvell Township,https://www.norvelltownship.com/
+Michigan,Dickinson County,Norway,http://www.norwaymi.com/
+Michigan,Charlevoix County,Norwood Township,http://www.norwoodtwp.org/
+Michigan,St. Joseph County,Nottawa Township,http://www.nottawatownship.org/
+Michigan,Oakland County,Novi,http://www.cityofnovi.org/
+Michigan,Oakland County,Oak Park,http://www.ci.oak-park.mi.us/
+Michigan,Kent County,Oakfield Township,https://www.oakfieldtwp.org/
+Michigan,Oakland County,Oakland Charter Township,http://www.oaklandtownship.org/
+Michigan,Livingston County,Oceola Township,http://www.oceolatwp.org
+Michigan,Ionia County,Odessa Township,http://www.odessatownship.org/
+Michigan,Clinton County,Olive Township,http://www.olivetwp.org/
+Michigan,Huron County,Oliver Township,http://www.olivertwp.net/
+Michigan,Eaton County,Olivet,http://www.cityofolivet.org/
+Michigan,Presque Isle County,Onaway,http://www.onawaymi.com
+Michigan,Eaton County,Oneida Charter Township,http://www.oneidatownship.org
+Michigan,Alger County,Onota Township,https://www.onotatownship.org/
+Michigan,Lenawee County,Onsted,http://www.villageofonsted.org
+Michigan,Ontonagon County,Ontonagon,http://www.villageofontonagon.org
+Michigan,Cass County,Ontwa Township,https://www.ontwatwp.org/
+Michigan,Ionia County,Orange Township,http://www.orange-ionia.mi-twp.org/
+Michigan,Barry County,Orangeville Township,http://www.orangevilletownship.org
+Michigan,Oakland County,Orchard Lake Village,http://www.cityoforchardlake.com/
+Michigan,Oakland County,Orion Charter Township,http://www.oriontownship.org
+Michigan,Berrien County,Oronoko Charter Township,http://www.oronokotownship.org/
+Michigan,Oakland County,Ortonville,http://www.ortonvillevillage.com/
+Michigan,Houghton County,Osceola Township,http://www.osceolatownship.org/
+Michigan,Iosco County,Oscoda Charter Township,https://www.oscodatownshipmi.gov/
+Michigan,Kalamazoo County,Oshtemo Charter Township,http://www.oshtemo.org
+Michigan,Alpena County,Ossineke Township,https://ossineketownship.com/
+Michigan,Ionia County,Otisco Township,http://www.icea-mi.org/Otisco%20Township.htm
+Michigan,Forest Township,Otisville,http://www.otisvillemi.com
+Michigan,Allegan County,Otsego,https://www.cityofotsego.org/
+Michigan,Otsego County,Otsego Lake Township,http://www.otsegolaketownship.org/
+Michigan,Allegan County,Otsego Township,http://www.otsegotownship.org
+Michigan,Lapeer County,Otter Lake,http://villageofotterlake.com
+Michigan,Allegan County,Overisel Township,http://www.overiseltownship.org
+Michigan,Clinton County,Ovid,http://www.ovidmi.org/
+Michigan,Branch County,Ovid Township,http://ovidtownship.org
+Michigan,Shiawassee County,Owosso,http://ci.owosso.mi.us
+Michigan,Shiawassee County,Owosso Charter Township,http://www.owossochartertownship.org
+Michigan,Oakland County,Oxford,https://www.thevillageofoxford.org/
+Michigan,Oakland County,Oxford Charter Township,http://oxfordtownship.net/
+Michigan,Lenawee County,Palmyra Township,http://www.palmyratownship.net
+Michigan,Kalamazoo County,Parchment,http://www.parchment.org
+Michigan,Ottawa County,Park Township,http://www.parktownship.org/
+Michigan,St. Joseph County,Park Township,https://park-township.org/
+Michigan,Jackson County,Parma,http://villageofparma.org/
+Michigan,Jackson County,Parma Township,http://parmatownship.godaddysites.com/
+Michigan,Kalamazoo County,Pavilion Township,http://www.paviliontownship.com
+Michigan,Van Buren County,Paw Paw,https://www.pawpaw.net/
+Michigan,Van Buren County,Paw Paw Township,http://www.pawpawtownship.org/
+Michigan,Charlevoix County,Peaine Township,http://www.peainetwp.org/
+Michigan,Emmet County,Pellston,https://www.pellstonmi.com/
+Michigan,Emmet County,Peninsula Township,https://www.peninsulatownship.com/
+Michigan,Calhoun County,Pennfield Charter Township,https://pennfieldmi.gov/
+Michigan,Luce County,Pentland Township,https://pentlandtownship.org/
+Michigan,Mason County,Pere Marquette Charter Township,http://www.pmtwp.org/
+Michigan,Shiawassee County,Perry,http://www.perry.mi.us/
+Michigan,Shiawassee County,Perry Township,http://perrytownship-mi.us/
+Michigan,Monroe County,Petersburg,http://www.petersburg-mi.com/
+Michigan,Emmet County,Petoskey,http://www.petoskey.us/
+Michigan,Ionia County,Pewamo,http://www.Pewamo.org
+Michigan,Chippewa County,Pickford Township,http://www.pickfordtwp.org/home.html
+Michigan,Huron County,Pigeon,https://pigeonmichigan.com/
+Michigan,Livingston County,Pinckney,http://villageofpinckney.org
+Michigan,Bay County,Pinconning,https://cityofpinconning.org/
+Michigan,Bay County,Pinconning Township,http://pinconningtownship.com/
+Michigan,Van Buren County,Pine Grove Township,http://pinegrovetwp.org/
+Michigan,Gratiot County,Pine River Township,http://www.pinerivertwp.org/
+Michigan,Berrien County,Pipestone Township,http://pipestonetownship.org/
+Michigan,Washtenaw County,Pittsfield Charter Township,http://www.pittsfield-mi.gov
+Michigan,Kent County,Plainfield Charter Township,https://plainfieldmi.org/
+Michigan,Allegan County,Plainwell,http://www.plainwell.org/
+Michigan,Benzie County,Platte Township,http://www.plattetownship.org/pages/index.php
+Michigan,Oakland County,Pleasant Ridge,http://www.cityofpleasantridge.org/
+Michigan,Emmet County,Plymouth,https://www.plymouthmi.gov/
+Michigan,Emmet County,Plymouth Charter Township,http://www.plymouthtwp.org/
+Michigan,Huron County,Pointe Aux Barques Township,http://www.pointeauxbarques.com/
+Michigan,Cass County,Pokagon Township,http://www.pokagontownship.org/
+Michigan,Ottawa County,Pontiac,http://www.pontiac.mi.us
+Michigan,Huron County,Port Austin,https://portaustinarea.com/
+Michigan,Huron County,Port Austin Township,https://www.portaustintownship.com/
+Michigan,Huron County,Port Hope,http://porthopemich.com/
+Michigan,St. Clair County,Port Huron,http://www.porthuron.org/
+Michigan,St. Clair County,Port Huron Charter Township,http://www.porthurontownship.org/
+Michigan,Sanilac County,Port Sanilac,http://www.portsanilac.net/
+Michigan,Ottawa County,Port Sheldon Township,http://www.portsheldontwp.org/
+Michigan,Kalamazoo County,Portage,http://www.portagemi.gov/
+Michigan,Houghton County,Portage Charter Township,http://www.portagetownship.info/
+Michigan,Cass County,Porter Township,http://www.portertownship.org/
+Michigan,Ionia County,Portland,http://www.portland-michigan.org/
+Michigan,Bay County,Portsmouth Township,https://www.portsmouthtownship.com/
+Michigan,Presque Isle County,Posen,http://www.posenmi.org/
+Michigan,Eaton County,Potterville,http://www.pottervillemi.org/
+Michigan,Marquette County,Powell Township,http://www.powelltownship.org/
+Michigan,Menominee County,Powers,https://www.powers-spalding.org/
+Michigan,Kalamazoo County,Prairie Ronde Township,http://prairierondetwp.net
+Michigan,Barry County,Prairieville Township,http://www.prairievilletwp-mi.org
+Michigan,Presque Isle County,Presque Isle Township,http://presqueisletwp.org/
+Michigan,Jackson County,Pulaski Township,https://pulaskitownship.org/
+Michigan,Livingston County,Putnam Township,http://www.putnamtwp.us
+Michigan,Chippewa County,Raber Township,http://www.rabertownship.org
+Michigan,Lenawee County,Raisin Charter Township,https://raisinchartertownship.com/
+Michigan,Monroe County,Raisinville,http://www.raisinville.org/
+Michigan,Muskegon County,Ravenna,http://www.ravennami.com
+Michigan,Muskegon County,Ravenna Township,https://www.ravennatwp.com/
+Michigan,Muskegon County,Ray Township,http://www.raytwp.org/
+Michigan,Hillsdale County,Reading,https://reading.mi.us/
+Michigan,Hillsdale County,Reading Township,https://readingtownship.org/
+Michigan,Clare County,Redford Charter Township,http://www.redfordtwp.com/
+Michigan,Marquette County,Republic Township,https://republicmichigan.com/
+Michigan,Montcalm County,Reynolds Township,https://www.reynoldstwp.com/
+Michigan,Lapeer County,Rich Township,https://www.richtownshipmi.com/
+Michigan,Genesee County,Richfield Township,http://www.richfieldtwp.org
+Michigan,Roscommon County,Richfield Township,https://www.richfieldtownship.org/
+Michigan,Richland Township,Richland,http://villageofrichland.org
+Michigan,Kalamazoo County,Richland Township,http://www.richlandtwp.net
+Michigan,Saginaw County,Richland Township,http://www.richlandtownship.com/
+Michigan,Marquette County,Richmond Township,https://richmondtownship.us/
+Michigan,Lenawee County,Riga,http://www.rigatownship.com
+Michigan,Clinton County,Riley Township,http://www.rileytownshipclintoncountymichigan.com/
+Michigan,St. Clair County,Riley Township,https://rileytownship.com/
+Michigan,St. Clair County,River Rouge,http://www.cityofriverrouge.com
+Michigan,Mason County,Riverview,http://www.cityofriverview.com/
+Michigan,Jackson County,Rives Township,http://www.rivestownshipmi.com/
+Michigan,Ottawa County,Robinson Township,http://www.robinson-twp.org/
+Michigan,Oakland County,Rochester,http://www.rochestermi.org
+Michigan,Oakland County,Rochester Hills,http://www.rochesterhills.org/
+Michigan,Kent County,Rockford,http://www.rockford.mi.us/
+Michigan,Alger County,Rockwood,http://www.rockwoodmi.org/
+Michigan,Presque Isle County,Rogers City,http://rogerscity.com/
+Michigan,Lenawee County,Rollin Township,http://www.rollintownship.org
+Michigan,Lenawee County,Rome Township,http://www.rometownship.org
+Michigan,Bruce Township,Romulus,http://www.romulusgov.com
+Michigan,Roscommon County,Roscommon,https://www.roscommonvillage.com/
+Michigan,Roscommon County,Roscommon Township,http://www.roscommontownship.com/
+Michigan,Ogemaw County,Rose City,http://rosecitymi.org/
+Michigan,Oakland County,Rose Township,https://www.rosetownship.com/
+Michigan,Ogemaw County,Rose Township,http://www.rosetownship-mi.com/
+Michigan,Osceola County,Roseville,http://www.roseville-mi.gov
+Michigan,Kalamazoo County,Ross Township,http://www.ross-township.us
+Michigan,Oakland County,Royal Oak,http://www.ci.royal-oak.mi.us
+Michigan,Oakland County,Royal Oak Charter Township,http://www.royaloaktwp.com
+Michigan,Berrien County,Royalton Township,https://www.royaltontownship.org/
+Michigan,Chippewa County,Rudyard Township,http://www.rudyardtownship.org/
+Michigan,Barry County,Rutland Charter Township,http://www.rutlandtownship.org
+Michigan,Gladwin County,Saginaw,http://www.saginaw-mi.com
+Michigan,Saginaw County,Saginaw Charter Township,https://www.saginawtownship.org/
+Michigan,Allegan County,Salem Township,http://www.salemtownship.org
+Michigan,Washtenaw County,Salem Township,http://www.salem-mi.org/
+Michigan,Washtenaw County,Saline,http://cityofsaline.org/
+Michigan,Washtenaw County,Saline Township,https://salinetownship.org/
+Michigan,Kent County,Sand Lake,http://villageofsandlake.org/
+Michigan,Marquette County,Sands Township,https://www.sandstownship.org/
+Michigan,Jackson County,Sandstone Charter Township,https://sandstonetownship.org/
+Michigan,Midland County,Sanford,http://villageofsanford.com/
+Michigan,Ionia County,Saranac,http://villageofsaranacmi.org
+Michigan,Allegan County,Saugatuck,https://www.saugatuckcity.com/
+Michigan,Allegan County,Saugatuck Township,http://www.saugatucktownship.org
+Michigan,Chippewa County,Sault Ste. Marie,https://www.saultcity.com/
+Michigan,Houghton County,Schoolcraft Township,https://www.schoolcrafttownship.net/
+Michigan,Kalamazoo County,Schoolcraft Township,http://www.schoolcrafttownship.org
+Michigan,Washtenaw County,Scio Township,http://sciotownship.org/
+Michigan,Shiawassee County,Sciota Township,http://www.sciotatownship.net/
+Michigan,Hillsdale County,Scipio Township,https://www.scipiotownshipmi.org/
+Michigan,Mason County,Scottville,http://www.cityofscottville.com/
+Michigan,Huron County,Sebewaing,https://sebewaingmi.gov
+Michigan,Gladwin County,Secord Township,https://www.secordtownship.org/
+Michigan,Wexford County,Selma Township,http://selmatownship-mi.org/
+Michigan,Lenawee County,Seneca Township,http://townshipofseneca.com
+Michigan,Washtenaw County,Sharon Township,https://sharontownship.org/
+Michigan,Oceana County,Shelby,https://shelbyvillage.com/
+Michigan,Washtenaw County,Shelby Charter Township,http://shelbytwp.org
+Michigan,Isabella County,Shepherd,https://www.villageofshepherd.org/
+Michigan,Montcalm County,Sheridan,http://villageofsheridan.com/
+Michigan,Calhoun County,Sheridan Township,http://sheridantwp.com
+Michigan,Clare County,Sheridan Township,https://www.sheridantwpclareco.com/
+Michigan,Gladwin County,Sherman Township,https://shermantownshipgladwin.com/
+Michigan,Shiawassee County,Shiawassee Township,http://www.shiawasseetownship.org/
+Michigan,Berrien County,Shoreham,http://www.shoreham-village.com/
+Michigan,Montcalm County,Sidney Township,http://www.sidneymi.org/
+Michigan,Cass County,Silver Creek Township,https://www.silvercreektwpmi.org/
+Michigan,Arenac County,Sims Township,https://simstownship.org/
+Michigan,Berrien County,Sodus Township,http://www.sodustwp.org/
+Michigan,Kent County,Solon Township,http://solontwp.org/
+Michigan,Hillsdale County,Somerset Township,http://www.somersettownship.org/
+Michigan,Chippewa County,Soo Township,http://sootownship.org/
+Michigan,Charlevoix County,South Arm Township,http://southarmtwp.com/
+Michigan,Crawford County,South Branch Township,http://southbranchtownship.com
+Michigan,Oakland County,South Lyon,http://www.southlyonmi.org/
+Michigan,Adams Township,South Range,http://www.southrange.com/
+Michigan,Monroe County,South Rockwood,http://villageofsouthrockwoodmi.com/
+Michigan,County Wexford,Southfield,http://www.cityofsouthfield.com
+Michigan,Oakland County,Southfield Township,http://www.southfieldtownship.org/
+Michigan,Oakland County,Southgate,http://www.southgate-mi.org/
+Michigan,Menominee County,Spalding Township,https://www.powers-spalding.org/
+Michigan,Kent County,Sparta,https://spartami.org/
+Michigan,Kent County,Sparta Township,https://spartatownship.org/
+Michigan,Saginaw County,Spaulding Township,https://spauldingtwp.com/
+Michigan,Kent County,Spencer Township,http://www.spencertwp.org/
+Michigan,Jackson County,Spring Arbor Township,https://springarbor.org/
+Michigan,Ottawa County,Spring Lake,http://www.springlakevillage.org/
+Michigan,Ottawa County,Spring Lake Township,http://www.springlaketwp.org/
+Michigan,Calhoun County,Springfield,http://www.springfieldmich.com/
+Michigan,Oakland County,Springfield Township,http://www.springfield-twp.us/
+Michigan,Jackson County,Springport,https://villageofspringport.com/
+Michigan,Jackson County,Springport Township,http://www.springportmi.com/
+Michigan,Wexford County,Springville Township,http://springvilletownshipmi.live/
+Michigan,Saginaw County,St. Charles,https://stcmi.com/
+Michigan,Saginaw County,St. Charles Township,https://stcharlestwp.com/
+Michigan,St. Clair County,St. Clair,http://www.cityofstclair.com/
+Michigan,St. Clair County,St. Clair Shores,http://scsmi.net/
+Michigan,St. Clair County,St. Clair Township,http://www.stclairtwp.org/
+Michigan,Mackinac County,St. Ignace,https://www.cityofstignace.com/
+Michigan,Mackinac County,St. Ignace Township,http://stignacetownship.org/
+Michigan,Charlevoix County,St. James Township,http://www.stjamestwp.org/
+Michigan,Charlevoix County,St. Johns,https://cityofstjohnsmi.com/
+Michigan,Berrien County,St. Joseph,https://www.sjcity.com/
+Michigan,Berrien County,St. Joseph Charter Township,http://www.sjct.org/
+Michigan,Gratiot County,St. Louis,http://www.stlouismi.com
+Michigan,Arenac County,Standish,http://www.cityofstandish.com/
+Michigan,Ontonagon County,Stannard Township,http://www.stannardtwp.com/
+Michigan,Montcalm County,Stanton,http://www.stantononline.com/
+Michigan,Houghton County,Stanton Township,http://www.stantontownship.com/
+Michigan,Antrim County,Star Township,http://www.startownship.com/
+Michigan,Menominee County,Stephenson,http://www.stephenson-mi.com/
+Michigan,Arenac County,Sterling Heights,http://www.sterling-heights.net/
+Michigan,Berrien County,Stevensville,https://www.villageofstevensville.us/
+Michigan,Ingham County,Stockbridge,http://www.vosmi.org/
+Michigan,Ingham County,Stockbridge Township,http://stockbridgetownshipmi.com/index.htm
+Michigan,St. Joseph County,Sturgis,http://www.sturgismi.gov/
+Michigan,St. Joseph County,Sturgis Township,http://sturgistownship.org
+Michigan,Chippewa County,Sugar Island Township,http://sugarislandtownship.com
+Michigan,Clare County,Summerfield Township,https://www.summerfieldtwp.org/
+Michigan,Monroe County,Summerfield Township,http://www.summerfieldtownship.org/
+Michigan,Jackson County,Summit Township,https://www.summittwp.com/
+Michigan,Mason County,Summit Township,https://summittownship.org/
+Michigan,Wayne County,Sumpter Township,http://sumptertwp.com/
+Michigan,Eaton County,Sunfield Township,http://www.sunfieldtownship.org
+Michigan,Washtenaw County,Superior Township,http://www.superior-twp.org
+Michigan,Clare County,Surrey Township,http://www.surreytownship.com/
+Michigan,Clare County,Suttons Bay,https://www.suttonsbayvillage.org
+Michigan,Clare County,Suttons Bay Township,http://www.leelanau.cc/suttonsbaytwp.asp
+Michigan,Saginaw County,Swan Creek,https://swancreektwp.com/
+Michigan,Genesee County,Swartz Creek,http://www.cityofswartzcreek.org
+Michigan,Oakland County,Sylvan Lake,http://www.sylvanlake.org/
+Michigan,Washtenaw County,Sylvan Township,https://www.sylvan-township.org/
+Michigan,Ottawa County,Tallmadge Township,http://www.tallmadge.com/
+Michigan,Iosco County,Tawas City,https://tawascity.org/
+Michigan,Iosco County,Taylor,http://www.cityoftaylor.com/
+Michigan,Saginaw County,Taymouth Township,https://taymouthtownship.com/
+Michigan,Lenawee County,Tecumseh,http://www.mytecumseh.org
+Michigan,Lenawee County,Tecumseh Township,http://www.tecumsehtownship.org
+Michigan,Calhoun County,Tekonsha,http://villageoftekonsha.com
+Michigan,Calhoun County,Tekonsha Township,http://tekonshatownship.com
+Michigan,Kalamazoo County,Texas Charter Township,http://www.texastownship.org
+Michigan,Saginaw County,Thomas Township,http://www.thomastwp.org/
+Michigan,Schoolcraft County,Thompson Township,http://thompsontownshipmi.com/
+Michigan,Barry County,Thornapple Township,http://www.thornapple-twp.org
+Michigan,Berrien County,Three Oaks,http://www.threeoaksvillage.org/
+Michigan,Berrien County,Three Oaks Township,http://www.threeoakstownship.org/
+Michigan,St. Joseph County,Three Rivers,https://www.threeriversmi.org/
+Michigan,Saginaw County,Tittabawassee Township,http://tittabawassee.weebly.com/
+Michigan,Gladwin County,Tobacco Township,https://www.tobaccotownship.org/
+Michigan,Jackson County,Tompkins Township,http://www.tompkinstwp-mi.org/
+Michigan,Antrim County,Torch Lake Township,http://www.torchlaketownship.org/
+Michigan,Houghton County,Torch Lake Township,http://www.torchlaketownship.com/
+Michigan,Houghton County,Traverse City,http://www.traversecitymi.gov
+Michigan,Houghton County,Trenton,https://www.trentonmi.org/
+Michigan,Chippewa County,Trout Lake Township,http://www.troutlaketownship.com
+Michigan,Oakland County,Troy,http://www.troymi.gov
+Michigan,Cheboygan County,Tuscarora Township,http://www.tuscaroratwp.com
+Michigan,Kent County,Tyrone Township,https://www.tyronetownship.org/
+Michigan,Livingston County,Tyrone Township,http://www.tyronetownship.us
+Michigan,Bingham Township,Ubly,http://ublymi.com/
+Michigan,Livingston County,Unadilla Township,http://twp.unadilla.mi.us
+Michigan,Branch County,Union City,http://www.liveinUC.com
+Michigan,Tuscola County,Unionville,http://www.unionvillemi.us/
+Michigan,Allegan County,Valley Township,http://www.valleytwp.org
+Michigan,Allegan County,Van Buren Charter Township,https://vanburen-mi.org/
+Michigan,Cass County,Vandalia,http://villageofvandaliami.com/
+Michigan,Tuscola County,Vassar,http://www.cityofvassar.org
+Michigan,Tuscola County,Vassar Township,https://www.vassartownship.org
+Michigan,Shiawassee County,Venice Township,http://www.venicetownship.org/
+Michigan,Kent County,Vergennes Township,https://vergennestwp.org/
+Michigan,Eaton County,Vermontville,https://vermontville-mi.gov/
+Michigan,Vernon Township,Vernon,http://www.villageofvernon.org/
+Michigan,Isabella County,Vernon Township,http://www.vernontownship.org/
+Michigan,Shiawassee County,Vernon Township,http://www.vernontownship.org/
+Michigan,Ingham County,Vevay Township,http://www.vevaytownship.org/
+Michigan,Schoolcraft Township,Vicksburg,http://www.vicksburgmi.org/
+Michigan,Clinton County,Victor Township,https://victortwp.org/
+Michigan,Mason County,Victory Township,https://www.victorytownship.org/
+Michigan,Genesee County,Vienna Township,http://www.viennatwp.com
+Michigan,Oakland County,Village of Clarkston,http://villageofclarkston.org/
+Michigan,Macomb County,Village of Grosse Pointe Shores,http://www.gpshoresmi.gov
+Michigan,Gogebic County,Wakefield,http://www.cityofwakefield.org
+Michigan,Kalamazoo County,Wakeshma Township,http://wakeshmatownship.com
+Michigan,St. Clair County,Wales Township,http://www.walestownship.org/
+Michigan,Kent County,Walker,http://www.walker.city/
+Michigan,Oakland County,Walled Lake,http://walledlake.us/
+Michigan,County Antrim,Warren,http://www.cityofwarren.org/
+Michigan,Gratiot County,Washington Township,http://www.washingtontownship.org/
+Michigan,Oakland County,Waterford Charter Township,https://waterfordmi.gov/
+Michigan,Jackson County,Waterloo Township,http://www.waterlootwpmi.com/
+Michigan,Gogebic County,Watersmeet Township,https://www.watersmeet.us/
+Michigan,Clinton County,Watertown Charter Township,http://www.watertowntownship.com/
+Michigan,Berrien County,Watervliet,http://www.watervliet.org/
+Michigan,Berrien County,Watervliet Township,http://www.watervliettownship.org/
+Michigan,Allegan County,Watson Township,http://www.watsontownship.org
+Michigan,Emmet County,Wawatam Township,http://www.wawatamtownship.org
+Michigan,Allegan County,Wayland,http://www.cityofwayland.org/
+Michigan,Allegan County,Wayland Township,http://www.waytwp.org
+Michigan,Cass County,Wayne,https://www.cityofwayne.com/
+Michigan,Leroy Township,Webberville,http://www.villageofwebberville.com/
+Michigan,Washtenaw County,Webster Township,http://www.twp.webster.mi.us/
+Michigan,Berrien County,Weesaw Township,https://www.weesawtownship.net/
+Michigan,Benzie County,Weldon Township,http://www.weldontwp.org/
+Michigan,Oakland County,West Bloomfield Charter Township,http://wbtownship.org/
+Michigan,Ogemaw County,West Branch,http://www.westbranch.com/
+Michigan,Marquette County,West Branch Township,http://www.westbranchtwp.org/
+Michigan,Ogemaw County,West Branch Township,https://www.westbranchtownship.org/
+Michigan,Ogemaw County,Westland,http://www.cityofwestland.com
+Michigan,Ogemaw County,Westphalia,https://www.westphaliami.com/
+Michigan,Clinton County,Westphalia Township,http://westphaliatownship.org/
+Michigan,Newaygo County,White Cloud,http://www.cityofwhitecloud.org
+Michigan,Ingham County,White Oak Township,http://www.white-oak-twp.org/
+Michigan,St. Joseph County,White Pigeon,https://whitepigeonvillage.com/
+Michigan,St. Joseph County,White Pigeon Township,https://www.whitepigeontwp.com/
+Michigan,Chippewa County,Whitefish Township,http://whitefishtownship.com/
+Michigan,Monroe County,Whiteford Township,http://www.whitefordtownship.org/
+Michigan,Muskegon County,Whitehall,http://www.cityofwhitehall.org/
+Michigan,Muskegon County,Whitehall Township,http://www.whitehalltwp.org/
+Michigan,Arenac County,Whitney Township,https://www.whitneytownship.com/
+Michigan,Bay County,Williams Township,http://www.williamstwp.com/
+Michigan,Ingham County,Williamston,http://www.williamston-mi.us/
+Michigan,Ingham County,Williamstown Township,http://www.williamstowntownship.com/
+Michigan,Charlevoix County,Wilson Township,https://www.wilsontownship.org/
+Michigan,Eaton County,Windsor Charter Township,http://twp.windsor.mi.us
+Michigan,Huron County,Winsor Township,https://pigeonmichigan.com/winsor-township
+Michigan,Clare County,Winterfield,https://www.winterfieldtownship.org/
+Michigan,Oakland County,Wixom,https://www.wixomgov.org/
+Michigan,Cheboygan County,Wolverine,http://www.villageofwolverine.com/index.cfm
+Michigan,Oakland County,Wolverine Lake,http://www.wolverinelake.com/
+Michigan,Hillsdale County,Woodhaven,http://www.woodhavenmi.org/
+Michigan,Shiawassee County,Woodhull Township,http://woodhulltwp.org/
+Michigan,Lenawee County,Woodstock Township,http://www.woodstocktownship.com
+Michigan,Ottawa County,Wright Township,http://www.wrighttownship.com
+Michigan,Ottawa County,Wyandotte,http://www.wyandotte.net/
+Michigan,Kent County,Wyoming,https://www.wyomingmi.gov/
+Michigan,St. Clair County,Yale,https://www.yalemi.us/
+Michigan,Barry County,Yankee Springs Township,http://www.yankeespringstwp.org
+Michigan,Washtenaw County,York Charter Township,https://www.twp-york.org/
+Michigan,Washtenaw County,Ypsilanti,https://cityofypsilanti.com/
+Michigan,Washtenaw County,Ypsilanti Charter Township,https://ytown.org/
+Michigan,Ottawa County,Zeeland,http://www.ci.zeeland.mi.us/
+Michigan,Ottawa County,Zeeland Charter Township,http://www.zct.zeeland.mi.us/
+Michigan,Saginaw County,Zilwaukee,http://www.zilwaukeemichigan.gov
+Minnesota,Norman County,Ada,http://www.adamn.gov/
+Minnesota,Mower County,Adams,http://www.adamsmn.com/
+Minnesota,Nobles County,Adrian,http://www.adrian.govoffice2.com/
+Minnesota,Washington County,Afton,http://www.ci.afton.mn.us/
+Minnesota,Aitkin County,Aitkin,http://www.ci.aitkin.mn.us/
+Minnesota,Hubbard County,Akeley,http://www.akeleymn.com
+Minnesota,Stearns County,Albany,http://www.ci.albany.mn.us/
+Minnesota,Freeborn County,Albert Lea,http://www.cityofalbertlea.org
+Minnesota,Wright County,Albertville,https://www.ci.albertville.mn.us/
+Minnesota,Freeborn County,Alden,http://www.aldenmn.com/
+Minnesota,Douglas County,Alexandria,http://www.ci.alexandria.mn.us
+Minnesota,Winona County,Altura,http://alturamn.ourlocalview.com//HomeTown/
+Minnesota,Blue Earth County,Amboy,http://www.amboymn.govoffice2.com/
+Minnesota,Anoka County,Andover,http://www.andovermn.gov/
+Minnesota,Wright County,Annandale,http://www.annandale.mn.us/
+Minnesota,Anoka County,Anoka,http://www.ci.anoka.mn.us
+Minnesota,Dakota County,Apple Valley,https://www.ci.apple-valley.mn.us/
+Minnesota,Swift County,Appleton,http://www.appletonmn.com/
+Minnesota,Ramsey County,Arden Hills,http://www.ci.arden-hills.mn.us/
+Minnesota,Marshall County,Argyle,http://www.ci.argyle.mn.us/
+Minnesota,Sibley County,Arlington,http://www.arlingtonmn.com/
+Minnesota,Grant County,Ashby,http://www.ashbyminnesota.org
+Minnesota,Pine County,Askov,http://cityofaskov.com/
+Minnesota,Kandiyohi County,Atwater,http://www.atwaterminnesota.com/
+Minnesota,Becker County,Audubon,https://audubonmn.govoffice2.com/
+Minnesota,St. Louis County,Aurora,http://www.aurora-mn.com/
+Minnesota,Mower County,Austin,http://www.ci.austin.mn.us/
+Minnesota,Stearns County,Avon,http://www.cityofavonmn.com/
+Minnesota,St. Louis County,Babbitt,http://www.babbitt-mn.com/
+Minnesota,Cass County,Backus,http://www.backusmn.com/
+Minnesota,Roseau County,Badger,http://www.ci.badger.mn.us/
+Minnesota,Clearwater County,Bagley,https://www.bagleymn.us/
+Minnesota,Lyon County,Balaton,http://www.balatonmn.com
+Minnesota,Clay County,Barnesville,http://www.barnesvillemn.com/
+Minnesota,Carlton County,Barnum,http://barnummn.us
+Minnesota,Grant County,Barrett,http://www.barrettmn.com/
+Minnesota,Otter Tail County,Battle Lake,http://www.ci.battle-lake.mn.us/
+Minnesota,Lake of the Woods County,Baudette,https://www.ci.baudette.mn.us/
+Minnesota,Crow Wing County,Baxter,http://www.ci.baxter.mn.us/
+Minnesota,Washington County,Bayport,https://www.ci.bayport.mn.us/
+Minnesota,Lake County,Beaver Bay,https://www.beaverbaymn.com/
+Minnesota,Sherburne County,Becker,http://www.ci.becker.mn.us/
+Minnesota,Stearns County,Belgrade,https://www.belgrademn.com/
+Minnesota,Scott County,Belle Plaine,https://www.belleplainemn.com/
+Minnesota,Goodhue County,Bellechester,http://www.bellechestermn.com
+Minnesota,Lac qui Parle County,Bellingham,https://bellinghammn.com/
+Minnesota,Redwood County,Belview,http://www.belview.org/
+Minnesota,Beltrami County,Bemidji,https://bemidji.govoffice.com/
+Minnesota,Swift County,Benson,http://www.bensonmn.org/
+Minnesota,Todd County,Bertha,https://cityofbertha.weebly.com/
+Minnesota,Anoka County,Bethel,http://www.bethelmn.govoffice2.com/
+Minnesota,Koochiching County,Big Falls,http://www.bigfalls.govoffice.com/
+Minnesota,Sherburne County,Big Lake,http://www.biglakemn.org/
+Minnesota,Itasca County,Bigfork,http://www.cityofbigfork.com/
+Minnesota,Washington County,Birchwood Village,https://www.cityofbirchwood.com/
+Minnesota,Renville County,Bird Island,https://www.birdislandcity.com/
+Minnesota,St. Louis County,Biwabik,http://www.cityofbiwabik.com/
+Minnesota,Beltrami County,Blackduck,https://blackduckmn.com/
+Minnesota,Anoka County,Blaine,https://www.blainemn.gov
+Minnesota,Steele County,Blooming Prairie,http://www.bloomingprairie.com/
+Minnesota,Hennepin County,Bloomington,http://www.bloomingtonmn.gov
+Minnesota,Faribault County,Blue Earth,https://becity.org/
+Minnesota,Itasca County,Bovey,http://www.cityofbovey.org/
+Minnesota,Morrison County,Bowlus,http://www.bowlusmn.com/
+Minnesota,Lac qui Parle County,Boyd,http://www.dawsonboydschools.org/
+Minnesota,Isanti County,Braham,http://www.braham.com/
+Minnesota,Crow Wing County,Brainerd,http://www.ci.brainerd.mn.us/
+Minnesota,Douglas County,Brandon,http://www.brandonmn.com/
+Minnesota,Wilkin County,Breckenridge,http://www.breckenridgemn.net/
+Minnesota,Crow Wing County,Breezy Point,http://www.cityofbreezypointmn.us/
+Minnesota,Faribault County,Bricelyn,http://www.co.faribault.mn.us/Bricelyn/
+Minnesota,Hennepin County,Brooklyn Center,http://www.ci.brooklyn-center.mn.us/
+Minnesota,Hennepin County,Brooklyn Park,https://www.brooklynpark.org/
+Minnesota,Red Lake County,Brooks,http://www.brooksmn.com/
+Minnesota,Stearns County,Brooten,https://brooten.govoffice.com/
+Minnesota,Todd County,Browerville,http://www.browerville.govoffice.com/
+Minnesota,Traverse County,Browns Valley,http://www.brownsvalleymn.com/
+Minnesota,Mower County,Brownsdale,http://www.brownsdalemn.com
+Minnesota,Houston County,Brownsville,http://brownsvillemn.org/
+Minnesota,McLeod County,Brownton,http://www.cityofbrownton.com/
+Minnesota,Wright County,Buffalo,http://www.ci.buffalo.mn.us
+Minnesota,Renville County,Buffalo Lake,http://www.buffalolake.org/
+Minnesota,St. Louis County,Buhl,http://www.cityofbuhlmn.com/
+Minnesota,Dakota County,Burnsville,https://burnsvillemn.gov/
+Minnesota,Todd County,Burtrum,https://www.co.todd.mn.us/city/burtrum
+Minnesota,Watonwan County,Butterfield,http://www.butterfieldmn.com/
+Minnesota,Olmsted County,Byron,http://www.byronmn.com/
+Minnesota,Houston County,Caledonia,https://www.caledoniamn.gov/
+Minnesota,Becker County,Callaway,http://www.callawaymn.com/
+Minnesota,Isanti County,Cambridge,https://www.ci.cambridge.mn.us/
+Minnesota,Yellow Medicine County,Canby,http://www.canby.govoffice.com/
+Minnesota,Goodhue County,Cannon Falls,http://cannonfallsmn.gov/
+Minnesota,Douglas County,Carlos,http://www.cityofcarlos.com
+Minnesota,Carlton County,Carlton,http://www.cityofcarlton.com
+Minnesota,Carver County,Carver,http://www.cityofcarver.com
+Minnesota,Cass County,Cass Lake,http://ci.casslake.mn.us
+Minnesota,Chisago County,Center City,http://www.centercitymn.us/
+Minnesota,Anoka County,Centerville,http://www.centervillemn.com/
+Minnesota,Martin County,Ceylon,https://cityofceylon.com/
+Minnesota,Hennepin County,Champlin,http://www.ci.champlin.mn.us
+Minnesota,Murray County,Chandler,http://www.cityofchandlermn.com/
+Minnesota,Carver County,Chanhassen,http://www.ci.chanhassen.mn.us/
+Minnesota,Carver County,Chaska,https://www.chaskamn.com
+Minnesota,Fillmore County,Chatfield,https://www.ci.chatfield.mn.us/
+Minnesota,Chisago County,Chisago City,http://www.ci.chisago.mn.us/
+Minnesota,St. Louis County,Chisholm,http://www.chisholm.govoffice.com/
+Minnesota,Anoka County,Circle Pines,https://www.ci.circle-pines.mn.us/
+Minnesota,Chippewa County,Clara City,http://www.claracity.org/
+Minnesota,Dodge County,Claremont,http://www.claremontmn.com/
+Minnesota,Todd County,Clarissa,https://cityofclarissa.weebly.com/
+Minnesota,Yellow Medicine County,Clarkfield,http://www.clarkfield.org/
+Minnesota,Sherburne County,Clear Lake,http://www.clearlakemn.govoffice2.com/
+Minnesota,Clearwater County,Clearbrook,https://www.ci.clearbrook.mn.us/
+Minnesota,Wright County,Clearwater,http://www.clearwatercity.com/
+Minnesota,Le Sueur County,Cleveland,http://www.clevelandmn.govoffice2.com
+Minnesota,Carlton County,Cloquet,http://www.ci.cloquet.mn.us
+Minnesota,Itasca County,Cohasset,http://www.cohasset-mn.com/
+Minnesota,Wright County,Cokato,https://www.cokato.mn.us/
+Minnesota,Stearns County,Cold Spring,http://www.coldspring.govoffice.com/
+Minnesota,Itasca County,Coleraine,http://www.cityofcoleraine.com/
+Minnesota,Carver County,Cologne,http://www.ci.cologne.mn.us/
+Minnesota,Anoka County,Columbia Heights,http://www.ci.columbia-heights.mn.us
+Minnesota,Anoka County,Columbus,http://www.ci.columbus.mn.us/
+Minnesota,Brown County,Comfrey,https://www.comfreymn.com/
+Minnesota,St. Louis County,Cook,http://www.cookmn.us/
+Minnesota,Anoka County,Coon Rapids,https://www.coonrapidsmn.gov/
+Minnesota,Hennepin County,Corcoran,http://www.ci.corcoran.mn.us/
+Minnesota,Meeker County,Cosmos,http://www.cosmos-mn.com/
+Minnesota,Washington County,Cottage Grove,https://www.cottagegrovemn.gov/
+Minnesota,Lyon County,Cottonwood,http://www.cottonwood.govoffice2.com
+Minnesota,Nicollet County,Courtland,http://courtlandmn.com/
+Minnesota,Polk County,Crookston,http://www.crookston.mn.us
+Minnesota,Crow Wing County,Crosby,http://crosbymn.govoffice3.com/
+Minnesota,Crow Wing County,Crosslake,https://www.cityofcrosslake.org/
+Minnesota,Hennepin County,Crystal,http://www.ci.crystal.mn.us/
+Minnesota,Crow Wing County,Cuyuna,http://www.ci.cuyuna.mn.us/
+Minnesota,Pope County,Cyrus,https://cityofcyrus.com/
+Minnesota,Winona County,Dakota,https://www.cityofdakotamn.com/
+Minnesota,Renville County,Danube,http://www.cityofdanube.com/
+Minnesota,Meeker County,Dassel,http://dassel.com/
+Minnesota,Lac qui Parle County,Dawson,http://www.dawsonmn.com/
+Minnesota,Hennepin County,Dayton,http://www.cityofdaytonmn.com/
+Minnesota,Hennepin County,Deephaven,http://www.cityofdeephaven.org
+Minnesota,Itasca County,Deer River,http://www.deerriver.org/
+Minnesota,Crow Wing County,Deerwood,http://cityofdeerwood.com/
+Minnesota,Wright County,Delano,http://www.delano.mn.us/
+Minnesota,Washington County,Dellwood,http://dellwood.us/
+Minnesota,Becker County,Detroit Lakes,http://www.cityofdetroitlakes.com
+Minnesota,Clay County,Dilworth,https://www.cityofdilworth.com/
+Minnesota,Dodge County,Dodge Center,http://www.ci.dodgecenter.mn.us/
+Minnesota,St. Louis County,Duluth,https://duluthmn.gov/
+Minnesota,Rice County,Dundas,http://www.cityofdundas.org/
+Minnesota,Dakota County,Eagan,https://www.cityofeagan.com
+Minnesota,Blue Earth County,Eagle Lake,http://www.eaglelakemn.com/
+Minnesota,Anoka County,East Bethel,http://www.ci.east-bethel.mn.us/
+Minnesota,Polk County,East Grand Forks,http://www.egf.mn/
+Minnesota,Cass County,East Gull Lake,https://eastgulllake.govoffice.com/
+Minnesota,Faribault County,Easton,http://cityofeastonmn.com/
+Minnesota,Yellow Medicine County,Echo,https://echomn.com/
+Minnesota,County Road 61 (Hennepin County,Eden Prairie,https://www.edenprairie.org/
+Minnesota,Meeker County,Eden Valley,https://ci.edenvalley.mn.us/
+Minnesota,Pipestone County,Edgerton,http://www.edgertonmn.com/
+Minnesota,Hennepin County,Edina,https://www.edinamn.gov/
+Minnesota,Houston County,Eitzen,http://www.eitzenmn.com
+Minnesota,Grant County,Elbow Lake,https://www.thecityofelbowlake.com/
+Minnesota,Wabasha County,Elgin,http://www.elginmn.com
+Minnesota,Sherburne County,Elk River,https://www.elkrivermn.gov/
+Minnesota,Scott County,Elko New Market,https://www.ci.enm.mn.us/
+Minnesota,Steele County,Ellendale,http://www.ellendalemn.com/
+Minnesota,St. Louis County,Ely,http://www.ely.mn.us/
+Minnesota,Le Sueur County,Elysian,http://elysianmn.com
+Minnesota,Crow Wing County,Emily,https://www.cityofemily.com/
+Minnesota,Otter Tail County,Erhard,https://ottertailcountymn.us/city/erhard/
+Minnesota,Polk County,Erskine,http://erskinemn.org/
+Minnesota,Douglas County,Evansville,http://www.evansvillemn.com/
+Minnesota,St. Louis County,Eveleth,http://www.evelethmn.com/
+Minnesota,Hennepin County,Excelsior,http://www.ci.excelsior.mn.us
+Minnesota,Renville County,Fairfax,https://fairfax-mn.gov/
+Minnesota,Martin County,Fairmont,https://fairmont.org/
+Minnesota,Ramsey County,Falcon Heights,http://www.falconheights.org/
+Minnesota,Rice County,Faribault,http://www.faribault.org
+Minnesota,Dakota County,Farmington,http://www.ci.farmington.mn.us/
+Minnesota,Otter Tail County,Fergus Falls,http://www.ci.fergus-falls.mn.us/
+Minnesota,Polk County,Fertile,http://www.cityoffertile.org
+Minnesota,Polk County,Fisher,https://www.cityoffishermn.com/
+Minnesota,St. Louis County,Floodwood,http://floodwood.govoffice.com/
+Minnesota,Benton County,Foley,http://www.ci.foley.mn.us/
+Minnesota,Douglas County,Forada,http://www.foradadays.com/
+Minnesota,Washington County,Forest Lake,http://www.ci.forest-lake.mn.us/
+Minnesota,Polk County,Fosston,http://www.fosston.com/
+Minnesota,Becker County,Frazee,http://www.frazeecity.com/
+Minnesota,Stearns County,Freeport,http://freeportmn.org/
+Minnesota,Anoka County,Fridley,https://www.ci.fridley.mn.us/
+Minnesota,Murray County Central School District,Fulda,https://fuldamn.com/
+Minnesota,Douglas County,Garfield,http://www.garfieldmn.com/
+Minnesota,Crow Wing County,Garrison,https://www.garrisonmn.com/
+Minnesota,Sibley County,Gaylord,http://www.exploregaylord.org/
+Minnesota,Ramsey County,Gem Lake,http://gemlakemn.org/
+Minnesota,Sibley County,Gibbon,http://www.cityofgibbon.com/index.asp?Type=NONE&SEC={EC912AFC-C168-4CCC-8E1B-4205DFCF52B9
+Minnesota,St. Louis County,Gilbert,https://www.gilbertmn.org/
+Minnesota,McLeod County,Glencoe,http://www.glencoechamber.com
+Minnesota,Pope County,Glenwood,https://www.ci.glenwood.mn.us/
+Minnesota,Clay County,Glyndon,http://glyndonmn.com
+Minnesota,Hennepin County,Golden Valley,https://www.goldenvalleymn.gov/
+Minnesota,Goodhue County,Goodhue,http://www.cityofgoodhue.com
+Minnesota,Winona County,Goodview,https://goodview.govoffice.com/
+Minnesota,Cook County,Grand Marais,http://www.ci.grand-marais.mn.us/
+Minnesota,Mower County,Grand Meadow,https://www.cityofgrandmeadow.com/
+Minnesota,Itasca County,Grand Rapids,http://cityofgrandrapidsmn.com/
+Minnesota,Chippewa County,Granite Falls,https://www.granitefalls.com/
+Minnesota,Washington County,Grant,http://www.cityofgrant.com/
+Minnesota,Sibley County,Green Isle,http://www.cityofgreenislemn.org/
+Minnesota,Roseau County,Greenbush,http://greenbushmn.govoffice2.com
+Minnesota,Hennepin County,Greenfield,http://www.ci.greenfield.mn.us/
+Minnesota,Hennepin County,Greenwood,http://www.greenwoodmn.com/
+Minnesota,Todd County,Grey Eagle,http://www.diversicommunity.com/greyeagle
+Minnesota,Cass County,Hackensack,http://www.hackensackchamber.com
+Minnesota,Murray County,Hadley,http://cityofhadley.com/
+Minnesota,Kittson County,Hallock,http://www.hallockmn.org/
+Minnesota,Norman County,Halstad,http://www.halstad.com/
+Minnesota,Anoka County,Ham Lake,http://www.ci.ham-lake.mn.us/
+Minnesota,Carver County,Hamburg,http://www.cityofhamburgmn.com/
+Minnesota,Stevens County,Hancock,http://hancockmn.org/
+Minnesota,Wright County,Hanover,https://www.hanovermn.org/
+Minnesota,Brown County,Hanska,http://www.cityofhanska.com/
+Minnesota,Fillmore County,Harmony,http://www.harmony.mn.us/
+Minnesota,Chisago County,Harris,http://www.harrismn.com/
+Minnesota,Dakota County,Hastings,http://www.hastingsmn.gov/
+Minnesota,Clay County,Hawley,http://www.hawley.govoffice.com/
+Minnesota,Dodge County,Hayfield,http://www.hayfieldmn.com/
+Minnesota,Freeborn County,Hayward,http://www.haywardmn.org/
+Minnesota,Renville County,Hector,http://hector.govoffice.com/
+Minnesota,Le Sueur County,Heidelberg,http://cityofheidelbergmn.com
+Minnesota,Sibley County,Henderson,http://www.henderson-mn.com/
+Minnesota,Lincoln County,Hendricks,http://www.hendricksmn.net
+Minnesota,Norman County,Hendrum,http://hendrummn.com/
+Minnesota,Otter Tail County,Henning,http://cityofhenning.com/
+Minnesota,St. Louis County,Hermantown,http://www.hermantownmn.com
+Minnesota,Jackson County,Heron Lake,http://www.heronlakecity.org/
+Minnesota,St. Louis County,Hibbing,https://www.hibbingmn.gov/
+Minnesota,Aitkin County,Hill City,http://hillcity-mn.com/
+Minnesota,Rock County,Hills,http://www.hillsmn.com/
+Minnesota,Anoka County,Hilltop,http://hilltop.govoffice.com/
+Minnesota,Pine County,Hinckley,http://www.hinckley.govoffice2.com/
+Minnesota,Grant County,Hoffman,http://www.hoffmanmn.com/
+Minnesota,Houston County,Hokah,http://www.cityofhokah-mn.gov/
+Minnesota,Stearns County,Holdingford,http://www.holdingfordmn.us/
+Minnesota,Hennepin County,Hopkins,http://www.hopkinsmn.com
+Minnesota,Houston County,Houston,https://houston.govoffice.com/
+Minnesota,Wright County,Howard Lake,http://www.howard-lake.mn.us/
+Minnesota,St. Louis County,Hoyt Lakes,http://hoytlakes.com/
+Minnesota,Washington County,Hugo,http://www.ci.hugo.mn.us
+Minnesota,McLeod County,Hutchinson,http://www.ci.hutchinson.mn.us/
+Minnesota,Hennepin County,Independence,https://www.ci.independence.mn.us
+Minnesota,Koochiching County,International Falls,http://www.ci.international-falls.mn.us/
+Minnesota,Dakota County,Inver Grove Heights,https://www.ighmn.gov/
+Minnesota,Isanti County,Isanti,http://www.cityofisanti.us
+Minnesota,Lincoln County,Ivanhoe,http://www.ivanhoe-mn.com/
+Minnesota,Jackson County,Jackson,http://www.cityofjacksonmn.com/
+Minnesota,Waseca County,Janesville,http://www.janesville.govoffice.com/
+Minnesota,Scott County,Jordan,https://jordanmn.gov/
+Minnesota,Kittson County,Karlstad,https://www.cityofkarlstad.com/
+Minnesota,Le Sueur County,Kasota,http://www.kasotamn.govoffice2.com/
+Minnesota,Dodge County,Kasson,http://www.cityofkasson.com/
+Minnesota,Itasca County,Keewatin,http://www.keewatin.govoffice.com/
+Minnesota,Beltrami County,Kelliher,https://kelliher.govoffice.com/
+Minnesota,Wabasha County,Kellogg,http://www.cityofkellogg.org/
+Minnesota,Kittson County,Kennedy,http://www.cityofkennedy.com/
+Minnesota,Douglas County,Kensington,http://www.kensingtonmn.com/
+Minnesota,Goodhue County,Kenyon,http://www.cityofkenyon.com
+Minnesota,Swift County,Kerkhoven,http://www.cityofkerk.com/
+Minnesota,Carlton County,Kettle River,http://www.ci.kettle-river.mn.us/
+Minnesota,Faribault County,Kiester,http://cityofkiester.com/
+Minnesota,Le Sueur County,Kilkenny,http://www.kilkennymn.com
+Minnesota,Stearns County,Kimball,https://www.ci.kimball.mn.us/
+Minnesota,Houston County,La Crescent,https://www.cityoflacrescent-mn.gov/
+Minnesota,Lincoln County,Lake Benton,http://www.lakebentonminnesota.com
+Minnesota,Wabasha County,Lake City,http://ci.lake-city.mn.us/
+Minnesota,Blue Earth County,Lake Crystal,https://www.lakecrystalmn.org/
+Minnesota,Washington County,Lake Elmo,http://www.lakeelmo.org/
+Minnesota,Kandiyohi County,Lake Lillian,http://lakelillian.govoffice.com/
+Minnesota,Becker County,Lake Park,http://lakeparkmn.com/
+Minnesota,Cass County,Lake Shore,https://www.cityoflakeshore.com/
+Minnesota,Washington County,Lake St. Croix Beach,http://lscb.govoffice.com/
+Minnesota,Jackson County,Lakefield,http://www.lakefieldmn.com/
+Minnesota,Washington County,Lakeland,http://ci.lakeland.mn.us/
+Minnesota,Washington County,Lakeland Shores,http://lakelandshores.govoffice.com/
+Minnesota,Dakota County,Lakeville,https://lakevillemn.gov/
+Minnesota,Kittson County,Lancaster,http://www.lancastermn.org/
+Minnesota,Fillmore County,Lanesboro,http://www.lanesboro-mn.gov/
+Minnesota,Morrison County,Lastrup,http://cityoflastrup.com/
+Minnesota,Ramsey County,Lauderdale,https://www.lauderdalemn.org/
+Minnesota,Le Sueur County,Le Center,http://www.cityoflecenter.com
+Minnesota,Le Sueur County,Le Sueur,http://www.cityoflesueur.com
+Minnesota,McLeod County,Lester Prairie,http://www.lesterprairiemn.us/
+Minnesota,Winona County,Lewiston,http://lewistonmn.org/
+Minnesota,Anoka County,Lexington,http://www.ci.lexington.mn.us/
+Minnesota,Dakota County,Lilydale,http://lilydale.govoffice.com/
+Minnesota,Chisago County,Lindstrom,http://www.cityoflindstrom.us/
+Minnesota,Anoka County,Lino Lakes,http://www.ci.lino-lakes.mn.us/
+Minnesota,Nobles County,Lismore,http://www.lismore.govoffice2.com/
+Minnesota,Meeker County,Litchfield,http://www.ci.litchfield.mn.us/
+Minnesota,Ramsey County,Little Canada,http://www.littlecanadamn.org/
+Minnesota,Morrison County,Little Falls,http://www.cityoflittlefalls.com/
+Minnesota,Koochiching County,Littlefork,http://www.cityoflittlefork.com/
+Minnesota,Pope County,Long Beach,https://www.longbeachmn.com/
+Minnesota,Hennepin County,Long Lake,http://www.longlakemn.gov/
+Minnesota,Todd County,Long Prairie,http://www.longprairie.net/
+Minnesota,Cass County,Longville,http://www.cityoflongville.com/
+Minnesota,Rice County,Lonsdale,http://www.lonsdale.govoffice.com
+Minnesota,Hennepin County,Loretto,http://www.ci.loretto.mn.us/
+Minnesota,Pope County,Lowry,https://lowrymn.govoffice3.com/
+Minnesota,Rock County,Luverne,http://www.cityofluverne.org
+Minnesota,Mower County,Lyle,http://www.lylemn.org/
+Minnesota,Fillmore County,Mabel,http://www.mabelmn.com/
+Minnesota,Watonwan County,Madelia,http://www.madeliamn.com/
+Minnesota,Lac qui Parle County,Madison,http://www.ci.madison.mn.us/
+Minnesota,Blue Earth County,Madison Lake,http://www.ci.madison-lake.mn.us/
+Minnesota,Mahnomen County,Mahnomen,http://www.mahnomen.govoffice.com/
+Minnesota,Washington County,Mahtomedi,http://www.ci.mahtomedi.mn.us/
+Minnesota,Crow Wing County,Manhattan Beach,http://www.manhattanbeachmn.org/
+Minnesota,Blue Earth County,Mankato,http://www.mankatomn.gov/
+Minnesota,Dodge County,Mantorville,http://www.mantorville.com/
+Minnesota,Hennepin County,Maple Grove,http://maplegrovemn.gov/
+Minnesota,Wright County,Maple Lake,http://www.ci.maple-lake.mn.us/
+Minnesota,Hennepin County,Maple Plain,http://www.mapleplain.com
+Minnesota,Blue Earth County,Mapleton,http://www.mapletonmn.com/
+Minnesota,Ramsey County,Maplewood,https://maplewoodmn.gov/
+Minnesota,Washington County,Marine on St. Croix,http://marine.govoffice.com/
+Minnesota,Lyon County,Marshall,http://ci.marshall.mn.us
+Minnesota,Carver County,Mayer,http://www.cityofmayer.com/
+Minnesota,Polk County,McIntosh,http://www.ci.mcintosh.mn.us
+Minnesota,Steele County,Medford,http://www.medfordminnesota.com/
+Minnesota,Hennepin County,Medicine Lake,http://www.cityofmedicinelake.com//
+Minnesota,Hennepin County,Medina,http://medinamn.us/
+Minnesota,Stearns County,Melrose,http://www.cityofmelrose.com/
+Minnesota,Wadena County,Menahga,https://www.cityofmenahga.com/
+Minnesota,Dakota County,Mendota,http://www.cityofmendota.org/
+Minnesota,Dakota County,Mendota Heights,http://www.mendota-heights.com
+Minnesota,Mille Lacs County,Milaca,http://www.cityofmilaca.org/
+Minnesota,Chippewa County,Milan,https://www.milanmn.com/
+Minnesota,Redwood County,Milroy,http://milroymn.govoffice2.com/
+Minnesota,Winona County,Minneiska,http://minneiska-mn.com/
+Minnesota,Lyon County,Minneota,http://minneota.com
+Minnesota,Winona County,Minnesota City,https://www.minnesotacity.org/
+Minnesota,Faribault County,Minnesota Lake,http://www.minnesotalake.com/
+Minnesota,Hennepin County,Minnetonka,https://www.minnetonkamn.gov/
+Minnesota,Hennepin County,Minnetrista,http://www.cityofminnetrista.com//
+Minnesota,Chippewa County,Montevideo,http://www.montevideomn.org/
+Minnesota,Wright County,Monticello,http://ci.monticello.mn.us
+Minnesota,Wright County,Montrose,http://www.montrose-mn.com
+Minnesota,Clay County,Moorhead,http://www.ci.moorhead.mn.us/
+Minnesota,Carlton County,Moose Lake,https://www.cityofmooselake.net/
+Minnesota,Kanabec County,Mora,http://ci.mora.mn.us/
+Minnesota,Stevens County,Morris,http://www.ci.morris.mn.us/
+Minnesota,Rice County,Morristown,http://www.morristownmn.org/
+Minnesota,Renville County,Morton,http://www.mortonmn.com/
+Minnesota,Morrison County,Motley,http://www.cityofmotley.com
+Minnesota,Hennepin County,Mound,https://www.cityofmound.com/
+Minnesota,Ramsey County,Mounds View,http://www.ci.mounds-view.mn.us/
+Minnesota,St. Louis County,Mountain Iron,https://mtniron.com/
+Minnesota,Cottonwood County,Mountain Lake,http://www.mountainlakemn.com/
+Minnesota,Swift County,Murdock,http://cityofmurdock.com/
+Minnesota,Hubbard County,Nevis,https://nevis.govoffice.com/
+Minnesota,Ramsey County,New Brighton,https://www.newbrightonmn.gov/
+Minnesota,Hennepin County,New Hope,https://www.newhopemn.gov/
+Minnesota,Kandiyohi County,New London,http://www.newlondonmn.net/
+Minnesota,Scott County,New Prague,http://www.ci.new-prague.mn.us/
+Minnesota,Waseca County,New Richland,http://www.cityofnewrichlandmn.com/
+Minnesota,Brown County,New Ulm,http://www.ci.new-ulm.mn.us/
+Minnesota,Otter Tail County,New York Mills,http://newyorkmills.govoffice2.com/
+Minnesota,Marshall County,Newfolden,http://www.ci.newfolden.mn.us/
+Minnesota,Washington County,Newport,http://www.ci.newport.mn.us/
+Minnesota,Nicollet County,Nicollet,http://nicollet.org/
+Minnesota,Crow Wing County,Nisswa,http://cityofnisswa.com/
+Minnesota,Chisago County,North Branch,http://ci.north-branch.mn.us/
+Minnesota,Nicollet County,North Mankato,http://www.northmankato.com/
+Minnesota,Ramsey County,North Oaks,http://www.cityofnorthoaks.com/
+Minnesota,Ramsey County,North St. Paul,https://www.northstpaul.org/
+Minnesota,Rice County,Northfield,http://www.ci.northfield.mn.us/
+Minnesota,Koochiching County,Northome,http://ci.northome.mn.us/
+Minnesota,Carver County,Norwood Young America,http://www.cityofnya.com
+Minnesota,Anoka County,Nowthen,https://www.cityofnowthen.com/
+Minnesota,Anoka County,Oak Grove,http://www.ci.oak-grove.mn.us/
+Minnesota,Washington County,Oak Park Heights,https://www.cityofoakparkheights.com/
+Minnesota,Washington County,Oakdale,http://www.ci.oakdale.mn.us/
+Minnesota,Renville County,Olivia,http://www.olivia.mn.us/
+Minnesota,Mille Lacs County,Onamia,https://onamiamn.com/
+Minnesota,Hennepin County,Orono,http://www.ci.orono.mn.us
+Minnesota,Olmsted County,Oronoco,https://www.oronoco.com/
+Minnesota,Big Stone County,Ortonville,https://mnortonville.com/
+Minnesota,Douglas County,Osakis,https://cityofosakis.com/
+Minnesota,Marshall County,Oslo,http://www.oslo.ima-jenn.com/
+Minnesota,Hennepin County,Osseo,http://www.discoverosseo.com
+Minnesota,Wright County,Otsego,http://www.ci.otsego.mn.us/
+Minnesota,Steele County,Owatonna,https://www.owatonna.gov/
+Minnesota,Hubbard County,Park Rapids,http://ci.park-rapids.mn.us/
+Minnesota,Otter Tail County,Parkers Prairie,http://www.parkersprairie.net
+Minnesota,Stearns County,Paynesville,https://www.paynesvillemn.com/
+Minnesota,Otter Tail County,Pelican Rapids,http://www.pelicanrapids.com
+Minnesota,Blue Earth County,Pemberton,https://pembertonmn.govoffice2.com/
+Minnesota,Crow Wing County,Pequot Lakes,http://www.pequotlakes-mn.gov/
+Minnesota,Otter Tail County,Perham,http://www.ci.perham.mn.us/
+Minnesota,Fillmore County,Peterson,http://www.petersonmn.org/
+Minnesota,Morrison County,Pierz,http://www.pierzmn.org/
+Minnesota,Pine County,Pine City,https://pinecity.govoffice.com/
+Minnesota,Goodhue County,Pine Island,http://cc.pineislandmn.com
+Minnesota,Pipestone County,Pipestone,https://pipestoneminnesota.com/
+Minnesota,Wabasha County,Plainview,http://www.plainviewmn.com/
+Minnesota,Hennepin County,Plymouth,https://www.plymouthmn.gov
+Minnesota,Yellow Medicine County,Porter,http://www.portermn.org
+Minnesota,Mille Lacs County,Princeton,https://www.princetonmn.org/
+Minnesota,Scott County,Prior Lake,http://www.cityofpriorlake.com
+Minnesota,St. Louis County,Proctor,http://www.ci.proctor.mn.us/
+Minnesota,Mower County,Racine,#cite_note-4
+Minnesota,Anoka County,Ramsey,http://www.ci.ramsey.mn.us/
+Minnesota,Morrison County,Randall,http://www.randall.govoffice2.com/
+Minnesota,Red Lake County,Red Lake Falls,http://www.redlakefalls.com
+Minnesota,Goodhue County,Red Wing,http://www.red-wing.org/
+Minnesota,Redwood County,Redwood Falls,https://ci.redwood-falls.mn.us/
+Minnesota,Renville County,Renville,http://www.ci.renville.mn.us/
+Minnesota,Benton County,Rice,http://www.cityofrice.com/
+Minnesota,St. Louis County,Rice Lake,https://www.ricelakecitymn.com/
+Minnesota,Hennepin County,Richfield,https://www.richfieldmn.gov/
+Minnesota,Stearns County,Richmond,http://www.ci.richmond.mn.us/
+Minnesota,Hennepin County,Robbinsdale,http://www.robbinsdalemn.com/
+Minnesota,Olmsted County,Rochester,http://www.rochestermn.gov
+Minnesota,Pine County,Rock Creek,http://cityofrockcreekmn.com/
+Minnesota,Wright County,Rockford,http://www.cityofrockford.org/
+Minnesota,Stearns County,Rockville,http://www.rockvillecity.org/
+Minnesota,Hennepin County,Rogers,http://www.cityofrogers.org
+Minnesota,Roseau County,Roseau,http://city.roseau.mn.us/
+Minnesota,Dakota County,Rosemount,http://www.ci.rosemount.mn.us/
+Minnesota,Ramsey County,Roseville,http://www.ci.roseville.mn.us/
+Minnesota,Nobles County,Round Lake,http://roundlk.net/
+Minnesota,Morrison County,Royalton,http://www.royaltonmn.com
+Minnesota,Chisago County,Rush City,http://rushcitymn.us/
+Minnesota,Fillmore County,Rushford,http://www.rushford.govoffice.com/
+Minnesota,Fillmore County,Rushford Village,http://rushfordvillage.govoffice.com/
+Minnesota,Clay County,Sabin,http://www.cityofsabin.com/
+Minnesota,Ramsey County,Saint Paul,http://www.stpaul.gov/
+Minnesota,Redwood County,Sanborn,http://www.cityofsanbornmn.org/
+Minnesota,Pine County,Sandstone,http://www.sandstone.govoffice.com/
+Minnesota,Stearns County,Sartell,http://www.sartellmn.com
+Minnesota,Stearns County,Sauk Centre,https://saukcentre.govoffice2.com/
+Minnesota,Benton County,Sauk Rapids,https://ci.sauk-rapids.mn.us/
+Minnesota,Scott County,Savage,https://www.cityofsavage.com/
+Minnesota,Washington County,Scandia,https://www.cityofscandia.com/
+Minnesota,Carlton County,Scanlon,http://cityofscanlon.com
+Minnesota,Wadena County,Sebeka,http://www.cityofsebeka.org/
+Minnesota,Chisago County,Shafer,http://www.shafermn.com/
+Minnesota,Scott County,Shakopee,https://www.shakopeemn.gov/
+Minnesota,Martin County,Sherburn,http://sherburn.govoffice.com/
+Minnesota,Ramsey County,Shoreview,http://www.shoreviewmn.gov/
+Minnesota,Hennepin County,Shorewood,http://www.ci.shorewood.mn.us/
+Minnesota,Lake County,Silver Bay,http://www.silverbay.com/
+Minnesota,McLeod County,Silver Lake,https://www.cityofsilverlake.org/
+Minnesota,Blue Earth County,Skyline,https://www.cityofskyline.com/
+Minnesota,Murray County,Slayton,http://slayton.govoffice.com/
+Minnesota,Brown County,Sleepy Eye,http://www.sleepyeye-mn.com/
+Minnesota,Dakota County,South St. Paul,http://www.southstpaul.org/
+Minnesota,Houston County,Spring Grove,http://www.springgrove.govoffice.com
+Minnesota,Anoka County,Spring Lake Park,http://www.slpmn.org/
+Minnesota,Hennepin County,Spring Park,http://springpark.govoffice.com
+Minnesota,Fillmore County,Spring Valley,https://www.springvalley-mn.com/
+Minnesota,Brown County,Springfield,http://www.springfieldmn.org
+Minnesota,Hennepin County,St. Anthony,http://www.savmn.com
+Minnesota,Stearns County,St. Augusta,http://staugustamn.com/
+Minnesota,Hennepin County,St. Bonifacius,http://www.ci.st-bonifacius.mn.us/
+Minnesota,Winona County,St. Charles,http://www.stcharlesmn.org/
+Minnesota,Blue Earth County,St. Clair,http://www.stclair.govoffice2.com/
+Minnesota,Stearns County,St. Cloud,http://www.ci.stcloud.mn.us/
+Minnesota,Anoka County,St. Francis,http://www.stfrancismn.org/
+Minnesota,Watonwan County,St. James,https://www.ci.stjames.mn.us/
+Minnesota,Stearns County,St. Joseph,http://www.cityofstjoseph.com/
+Minnesota,Hennepin County,St. Louis Park,https://www.stlouispark.org/
+Minnesota,Washington County,St. Marys Point,https://www.stmaryspointmn.org/
+Minnesota,Wright County,St. Michael,https://stmichaelmn.gov/
+Minnesota,Washington County,St. Paul Park,http://www.stpaulpark.govoffice.com/
+Minnesota,Nicollet County,St. Peter,http://www.saintpetermn.gov
+Minnesota,Stearns County,St. Stephen,http://www.cityofststephen.com/
+Minnesota,Chisago County,Stacy,http://www.stacymn.org/
+Minnesota,Todd County,Staples,https://staples.govoffice.com/
+Minnesota,Pope County,Starbuck,https://starbuckcitygov.com/
+Minnesota,Marshall County,Stephen,http://www.stephenmn.com/
+Minnesota,Olmsted County,Stewartville,http://stewartvillemn.com/
+Minnesota,Washington County,Stillwater,http://www.ci.stillwater.mn.us
+Minnesota,Winona County,Stockton,http://www.ci.stockton.mn.us/
+Minnesota,Cottonwood County,Storden,http://www.rrcnet.org/~storden/
+Minnesota,Dakota County,Sunfish Lake,http://www.sunfishlake.org/
+Minnesota,Chisago County,Taylors Falls,http://www.ci.taylors-falls.mn.us/
+Minnesota,Pennington County,Thief River Falls,http://www.citytrf.net/
+Minnesota,Hennepin County,Tonka Bay,http://www.cityoftonkabay.net/
+Minnesota,St. Louis County,Tower,http://www.cityoftower.com/
+Minnesota,Lyon County,Tracy,http://www.tracymn.org
+Minnesota,Martin County,Truman,http://www.trumanmn.us/
+Minnesota,Norman County,Twin Valley,http://www.twinvalley.govoffice.com
+Minnesota,Lake County,Two Harbors,https://www.twoharborsmn.gov/
+Minnesota,Lincoln County,Tyler,http://www.tyler.govoffice.com
+Minnesota,Clay County,Ulen,https://ulenmn.org/
+Minnesota,Otter Tail County,Underwood,http://www.ci.underwood.mn.us/
+Minnesota,Morrison County,Upsala,https://cityofupsala.com/
+Minnesota,Ramsey County,Vadnais Heights,http://www.cityvadnaisheights.com/
+Minnesota,Otter Tail County,Vergas,http://www.cityofvergas.com
+Minnesota,Wadena County,Verndale,https://cityofverndale.weebly.com/
+Minnesota,Redwood County,Vesta,http://www.vestamn.us/
+Minnesota,Carver County,Victoria,https://www.ci.victoria.mn.us/
+Minnesota,St. Louis County,Virginia,https://www.virginiamn.us/
+Minnesota,Wabasha County,Wabasha,http://www.wabasha.org/
+Minnesota,Redwood County,Wabasso,http://www.wabasso.org/
+Minnesota,Carver County,Waconia,http://www.waconia.org
+Minnesota,Wadena County,Wadena,http://www.wadena.org/
+Minnesota,Stearns County,Waite Park,http://www.ci.waitepark.mn.us/
+Minnesota,Cass County,Walker,http://walker.govoffice.com
+Minnesota,Redwood County,Walnut Grove,http://www.walnutgrovemn.org/
+Minnesota,Goodhue County,Wanamingo,http://www.cityofwanamingo.com/
+Minnesota,Marshall County,Warren,http://www.warrenminnesota.com/
+Minnesota,Roseau County,Warroad,http://warroadmn.org/
+Minnesota,Waseca County,Waseca,http://ci.waseca.mn.us/
+Minnesota,Carver County,Watertown,https://www.watertownmn.gov/
+Minnesota,Le Sueur County,Waterville,http://cityofwaterville.com
+Minnesota,Meeker County,Watkins,http://www.cityofwatkins.com/
+Minnesota,Waverly,Waverly,http://www.waverlymn.org/
+Minnesota,Hennepin County,Wayzata,http://www.wayzata.org
+Minnesota,Martin County,Welcome,https://welcomemn.govoffice2.com/
+Minnesota,Faribault County,Wells,http://www.cityofwells.net/
+Minnesota,Grant County,Wendell,http://www.cityofwendell.net/
+Minnesota,Dodge County,West Concord,http://www.westconcordmn.com/
+Minnesota,Dakota County,West St. Paul,https://www.wspmn.gov/
+Minnesota,Traverse County,Wheaton,http://www.cityofwheaton.com
+Minnesota,Ramsey County,White Bear Lake,http://www.whitebearlake.org/
+Minnesota,Washington County,Willernie,http://www.willernie.org
+Minnesota,Kandiyohi County,Willmar,http://www.willmarmn.gov/
+Minnesota,Cottonwood County,Windom,http://www.windom-mn.com
+Minnesota,Faribault County,Winnebago,https://www.cityofwinnebago.com/
+Minnesota,Winona County,Winona,https://www.cityofwinona.com/
+Minnesota,McLeod County,Winsted,http://winsted.mn.us
+Minnesota,Sibley County,Winthrop,http://www.winthropminnesota.com/
+Minnesota,Wilkin County,Wolverton,http://cityofwolverton.com/
+Minnesota,Washington County,Woodbury,http://www.ci.woodbury.mn.us/
+Minnesota,Hennepin County,Woodland,http://www.woodlandmn.org/
+Minnesota,Nobles County,Worthington,http://www.ci.worthington.mn.us/
+Minnesota,Fillmore County,Wykoff,http://www.wykoff.govoffice2.com
+Minnesota,Chisago County,Wyoming,http://www.wyomingmn.org
+Minnesota,Sherburne County,Zimmerman,http://zimmerman.govoffice.com/
+Minnesota,Goodhue County,Zumbrota,http://www.ci.zumbrota.mn.us
+Mississippi,Monroe County,Aberdeen,http://cityofaberdeenms.com/
+Mississippi,Choctaw County,Ackerman,http://ackermanms.org/
+Mississippi,Monroe County,Amory,http://www.cityofamoryms.com/
+Mississippi,Benton County,Ashland,http://www.ashland.ms
+Mississippi,Benton County,Baldwyn,http://www.baldwynliving.com/
+Mississippi,Panola County,Batesville,http://batesville.panolams.com/
+Mississippi,Jasper County,Bay Springs,http://cityofbaysprings.com
+Mississippi,Hancock County,Bay St. Louis,http://www.baystlouis-ms.gov
+Mississippi,Humphreys County,Belzoni,http://www.belzonims.com/profbel.htm
+Mississippi,Yazoo County,Bentonia,http://townofbentonia.com/
+Mississippi,Harrison County,Biloxi,http://www.biloxi.ms.us
+Mississippi,Union County,Blue Springs,http://bluespringsms.com/
+Mississippi,Prentiss County,Booneville,https://www.visitbooneville.com/
+Mississippi,Rankin County,Brandon,https://www.brandonms.org/
+Mississippi,Lincoln County,Brookhaven,http://brookhaven-ms.gov
+Mississippi,Noxubee County,Brooksville,http://www.brooksvillems.org/
+Mississippi,Calhoun County,Bruce,http://www.cityofbruce.org
+Mississippi,Tishomingo County,Burnsville,http://burnsvillems.com/
+Mississippi,Marshall County,Byhalia,http://www.byhalia-ms.com/
+Mississippi,Hinds County,Byram,http://byram-ms.us
+Mississippi,Calhoun County,Calhoun City,http://www.calhouncity.org/
+Mississippi,Madison County,Canton,http://cityofcantonms.com/
+Mississippi,Carroll County,Carrollton,http://www.carrolltonms.com
+Mississippi,Leake County,Carthage,http://www.cityofcarthage.org/
+Mississippi,Wilkinson County,Centreville,https://townofcentrevillems.org/
+Mississippi,Coahoma County,Clarksdale,http://www.cityofclarksdale.org/
+Mississippi,Bolivar County,Cleveland,http://www.cityofclevelandms.com/
+Mississippi,Hinds County,Clinton,http://www.clintonms.org
+Mississippi,Yalobusha County,Coffeeville,http://www.coffeevillems.com/
+Mississippi,Tate County,Coldwater,http://coldwaterms.org/
+Mississippi,Covington County,Collins,http://www.cityofcollins.com
+Mississippi,Marion County,Columbia,http://www.cityofcolumbiams.com/
+Mississippi,Lowndes County,Columbus,http://www.thecityofcolumbus.ms.gov/Pages/default.aspx
+Mississippi,Panola County,Como,http://como.panolams.com/
+Mississippi,Alcorn County,Corinth,http://cityofcorinthms.com
+Mississippi,Wilkinson County,Crosby,http://townofcrosby.com
+Mississippi,Copiah County,Crystal Springs,http://cityofcrystalsprings.com
+Mississippi,Newton County,Decatur,http://www.decaturms.org/index.php
+Mississippi,Hancock County,Diamondhead,http://www.diamondhead.ms.gov
+Mississippi,Harrison County,D'Iberville,http://diberville.ms.us
+Mississippi,Simpson County,D'Lo,http://www.dlowaterpark.com
+Mississippi,Montgomery County,Duck Hill,http://montgomerycountyms.org/index.php?option=com_content&view=article&id=46&Itemid=53
+Mississippi,Hinds County,Edwards,http://townofedwards.com
+Mississippi,Jones County,Ellisville,http://cityofellisvillems.com
+Mississippi,Clarke County,Enterprise,https://www.townofenterprise.com/
+Mississippi,Webster County,Eupora,https://www.cityofeupora.com
+Mississippi,Alcorn County,Farmington,http://www.farmingtonms.com
+Mississippi,Jefferson County,Fayette,http://www.fayettems.com
+Mississippi,Madison County,Flora,http://www.florams.com/
+Mississippi,Rankin County,Florence,http://www.cityofflorencems.com/
+Mississippi,Rankin County,Flowood,https://www.cityofflowood.com/
+Mississippi,Scott County,Forest,http://www.forest-ms.com/
+Mississippi,Itawamba County,Fulton,http://fulton.itawambams.com/fulton-city-hall/
+Mississippi,Jackson County,Gautier,http://www.gautier-ms.gov
+Mississippi,Tallahatchie County,Glendora,http://www.glendorams.com/
+Mississippi,Amite County,Gloster,http://www.amitecounty.ms/cities/gloster.php
+Mississippi,Madison County,Gluckstadt,https://www.gluckstadtms.org/
+Mississippi,Washington County,Greenville,http://www.greenvillems.org
+Mississippi,Leflore County,Greenwood,https://www.greenwoodms.com/city
+Mississippi,Grenada County,Grenada,http://www.cityofgrenada.net
+Mississippi,Harrison County,Gulfport,http://www.gulfport-ms.gov/
+Mississippi,Monroe County,Hatley,http://hatley.monroems.com/
+Mississippi,Forrest County,Hattiesburg,http://www.hattiesburgms.com
+Mississippi,Jasper County,Heidelberg,http://townofheidelberg.com
+Mississippi,DeSoto County,Hernando,http://www.cityofhernando.org
+Mississippi,Marshall County,Holly Springs,https://hollyspringsmsus.com/
+Mississippi,DeSoto County,Horn Lake,http://www.hornlake.org/
+Mississippi,Chickasaw County,Houston,https://www.houston.ms.gov/Pages/default.aspx
+Mississippi,Sunflower County,Indianola,http://www.indianola.ms.gov
+Mississippi,Leflore County,Itta Bena,http://ittabenams.homestead.com/index.html
+Mississippi,Tishomingo County,Iuka,http://iukams.com/
+Mississippi,Hinds County,Jackson,http://www.jacksonms.gov
+Mississippi,Montgomery County,Kilmichael,http://kilmichaelms.com/
+Mississippi,Attala County,Kosciusko,http://kosciusko.ms
+Mississippi,Jones County,Laurel,http://www.laurelms.com
+Mississippi,Greene County,Leakesville,https://leakesvillems.com/
+Mississippi,Washington County,Leland,http://www.lelandchamber.com/
+Mississippi,Amite County,Liberty,http://www.amitecounty.ms/liberty
+Mississippi,Harrison County,Long Beach,http://www.cityoflongbeachms.com/
+Mississippi,Winston County,Louisville,http://www.cityoflouisvillems.com/
+Mississippi,George County,Lucedale,http://cityoflucedale.com
+Mississippi,Noxubee County,Macon,http://www.cityofmacon.org
+Mississippi,Madison County,Madison,http://www.madisonthecity.com
+Mississippi,Simpson County,Magee,http://www.cityofmagee.com/
+Mississippi,Itawamba County,Mantachie,http://mantachie.itawambams.com
+Mississippi,Lauderdale County,Marion,http://www.marionms.org
+Mississippi,Pike County,McComb,http://www.mccomb-ms.gov
+Mississippi,Franklin County,Meadville,http://www.meadvillems.com
+Mississippi,Simpson County,Mendenhall,http://ci.mendenhall.ms.us
+Mississippi,Lauderdale County,Meridian,http://www.meridianms.org
+Mississippi,Smith County,Mize,http://mizems.com/
+Mississippi,Lawrence County,Monticello,http://www.monticello.ms.gov
+Mississippi,Scott County,Morton,http://www.cityofmorton.com/
+Mississippi,Jackson County,Moss Point,http://cityofmosspoint.org
+Mississippi,Bolivar County,Mound Bayou,http://www.cityofmoundbayou.com/
+Mississippi,Covington County,Mount Olive,https://www.townofmtolivems.com/
+Mississippi,Adams County,Natchez,http://www.natchez.ms.us/1
+Mississippi,Monroe County,Nettleton,https://nettletonms.gov/
+Mississippi,Union County,New Albany,http://www.visitnewalbany.com/
+Mississippi,Newton County,Newton,http://www.newtonms.org
+Mississippi,Carroll County,North Carrollton,http://www.northcarrolltonms.com
+Mississippi,Winston County,Noxapater,http://www.noxapater.com/
+Mississippi,Jackson County,Ocean Springs,http://www.oceansprings-ms.gov/
+Mississippi,Chickasaw County,Okolona,http://www.cityofokolona.com
+Mississippi,DeSoto County,Olive Branch,http://www.obms.us
+Mississippi,Lafayette County,Oxford,http://www.oxfordms.net
+Mississippi,Jackson County,Pascagoula,http://cityofpascagoula.com
+Mississippi,Harrison County,Pass Christian,https://pass-christian.com/modern/
+Mississippi,Rankin County,Pearl,http://www.cityofpearl.com
+Mississippi,Rankin County,Pelahatchie,http://pelahatchie.org/
+Mississippi,Forrest County,Petal,http://www.cityofpetal.com
+Mississippi,Neshoba County,Philadelphia,http://www.philadelphiathecity.com
+Mississippi,Pearl River County,Picayune,http://www.picayune.ms.us
+Mississippi,Smith County,Polkville,http://www.polkville.org/
+Mississippi,Pontotoc County,Pontotoc,http://www.pontotocms.org/
+Mississippi,Panola County,Pope,http://pope.panolams.com/
+Mississippi,Pearl River County,Poplarville,https://www.poplarvillems.gov
+Mississippi,Claiborne County,Port Gibson,http://portgibsonms.org/
+Mississippi,Jefferson Davis County,Prentiss,http://prentissms.com
+Mississippi,Rankin County,Puckett,http://www.puckettms.org
+Mississippi,Clarke County,Quitman,https://www.cityquitman.net
+Mississippi,Hinds County,Raymond,http://www.raymondms.com/
+Mississippi,Rankin County,Richland,http://richlandms.org
+Mississippi,Madison County,Ridgeland,http://www.ridgelandms.org/
+Mississippi,Tippah County,Ripley,https://www.ripley.ms.gov/
+Mississippi,Bolivar County,Rosedale,http://www.cityofrosedale-ms.com
+Mississippi,Lee County,Saltillo,http://saltilloms.org
+Mississippi,Tate County,Senatobia,http://www.cityofsenatobia.com
+Mississippi,Lee County,Shannon,http://townofshannon.org/
+Mississippi,Bolivar County,Shelby,http://cityofshelbyms.com
+Mississippi,Noxubee County,Shuqualak,http://www.townofshuqualak.com/
+Mississippi,Monroe County,Smithville,http://www.smithvillems.org/
+Mississippi,Benton County,Snow Lake Shores,http://snowlakeshores.ms
+Mississippi,DeSoto County,Southaven,http://www.southaven.org
+Mississippi,Oktibbeha County,Starkville,http://www.cityofstarkville.org/
+Mississippi,Pike County,Summit,http://www.summitms.org/
+Mississippi,Lamar County,Sumrall,http://www.sumrallms.org/
+Mississippi,Lafayette County,Taylor,http://www.taylorms.org
+Mississippi,Smith County,Taylorsville,https://www.visittvillems.org/
+Mississippi,Hinds County,Terry,http://terryms.org
+Mississippi,Tishomingo County,Tishomingo,http://www.tishomingo.ms/
+Mississippi,Tunica County,Tunica,http://townoftunica.com/
+Mississippi,Lee County,Tupelo,http://tupeloms.gov
+Mississippi,Tallahatchie County,Tutwiler,http://tutwilerms.com/
+Mississippi,Walthall County,Tylertown,http://www.co.walthall.ms.us/town-of-tylertown.html
+Mississippi,Carroll County,Vaiden,http://vaidenms.com/
+Mississippi,Calhoun County,Vardaman,http://www.townofvardaman.com/
+Mississippi,Lee County,Verona,http://cityofverona.org
+Mississippi,Warren County,Vicksburg,http://www.vicksburg.org/
+Mississippi,DeSoto County,Walls,http://www.townofwalls.com
+Mississippi,Tippah County,Walnut,http://www.walnut.ms/
+Mississippi,Leake County,Walnut Grove,http://www.walnutgrove-ms.com
+Mississippi,Hancock County,Waveland,http://waveland.ms.gov
+Mississippi,Wayne County,Waynesboro,http://waynesboroms.us/
+Mississippi,Tallahatchie County,Webb,http://www.city-data.com/city/Webb-Mississippi.html
+Mississippi,Copiah County,Wesson,http://wessonms.org/
+Mississippi,Clay County,West Point,http://www.wpnet.org/
+Mississippi,Stone County,Wiggins,http://www.cityofwiggins.com/
+Mississippi,Montgomery County,Winona,http://winonams.us
+Mississippi,Bolivar County,Winstonville,http://www.townofwinstonville.com
+Mississippi,Wilkinson County,Woodville,http://www.woodvillems.org/
+Mississippi,Yazoo County,Yazoo City,http://www.cityofyazoocity.org/
+Missouri,Jefferson County,Arnold,http://www.arnoldmo.org
+Missouri,St. Louis County,Ballwin,http://www.ballwin.mo.us
+Missouri,St. Louis County,Bellefontaine Neighbors,http://www.cityofbn.com
+Missouri,Cass County,Belton,http://www.belton.org
+Missouri,St. Louis County,Berkeley,http://www.cityofberkeley.us/
+Missouri,Jackson County,Blue Springs,http://www.bluespringsgov.com
+Missouri,Polk County,Bolivar,http://bolivar.mo.us/
+Missouri,Cooper County,Boonville,http://boonvillemo.org/
+Missouri,Taney County,Branson,https://www.bransonmo.gov/
+Missouri,St. Louis County,Brentwood,http://www.brentwoodmo.org
+Missouri,St. Louis County,Bridgeton,http://www.bridgetonmo.com/
+Missouri,Clinton County,Cameron,http://www.cameron-mo.com/
+Missouri,Cape Girardeau County,Cape Girardeau,https://www.cityofcapegirardeau.org/
+Missouri,Jasper County,Carl Junction,https://carljunction.org/
+Missouri,Jasper County,Carthage,http://carthagemo.gov/
+Missouri,St. Louis County,Chesterfield,http://www.chesterfield.mo.us/
+Missouri,Livingston County,Chillicothe,http://www.chillicothecity.org
+Missouri,St. Louis County,Clayton,http://www.claytonmo.gov/
+Missouri,Henry County,Clinton,http://clintonmo.com/
+Missouri,Boone County,Columbia,http://www.como.gov
+Missouri,St. Louis County,Crestwood,http://www.cityofcrestwood.org
+Missouri,St. Louis County,Creve Coeur,https://www.crevecoeurmo.gov/
+Missouri,Saint Charles County,Dardenne Prairie,http://www.dardenneprairie.org/
+Missouri,St. Louis County,Des Peres,http://www.desperesmo.org
+Missouri,St. Louis County,Ellisville,http://www.ellisville.mo.us/
+Missouri,St. Louis County,Eureka,http://www.eureka.mo.us/
+Missouri,Clay County,Excelsior Springs,https://cityofesmo.com/
+Missouri,Saint Francois County,Farmington,http://farmington-mo.gov
+Missouri,St. Louis County,Ferguson,http://www.fergusoncity.com/
+Missouri,Jefferson County,Festus,http://www.cityoffestus.org/
+Missouri,St. Louis County,Florissant,http://www.florissantmo.com/
+Missouri,Callaway County,Fulton,http://fultonmo.org/
+Missouri,Clay County,Gladstone,http://www.gladstone.mo.us/
+Missouri,Jackson County,Grain Valley,https://www.cityofgrainvalley.org/
+Missouri,Jackson County,Grandview,http://www.grandview.org
+Missouri,Marion County,Hannibal,http://www.hannibal-mo.gov/
+Missouri,Cass County,Harrisonville,http://ci.harrisonville.mo.us/
+Missouri,St. Louis County,Hazelwood,http://www.hazelwoodmo.org
+Missouri,Jackson County,Independence,http://www.indepmo.org
+Missouri,Cape Girardeau County,Jackson,http://www.jacksonmo.org/
+Missouri,St. Louis County,Jefferson City,http://www.jeffersoncitymo.gov/
+Missouri,St. Louis County,Jennings,http://www.cityofjennings.org/
+Missouri,Jasper County,Joplin,http://www.joplinmo.org/
+Missouri,Jackson County,Kansas City,https://kcmo.gov/
+Missouri,Clay County,Kearney,http://www.ci.kearney.mo.us
+Missouri,Dunklin County,Kennett,http://www.cityofkennettmo.com/
+Missouri,Benton Township,Kirksville,http://www.kirksvillecity.com
+Missouri,St. Louis County,Kirkwood,http://www.kirkwoodmo.org
+Missouri,St. Louis County,Ladue,http://www.cityofladue-mo.gov
+Missouri,St. Charles County,Lake St. Louis,http://www.lakesaintlouis.com/
+Missouri,Laclede County,Lebanon,http://www.lebanonmissouri.org
+Missouri,Jackson County,Lee's Summit,http://cityofls.net
+Missouri,Clay County,Liberty,https://www.libertymissouri.gov/
+Missouri,St. Louis County,Manchester,http://www.manchestermo.gov/
+Missouri,St. Louis County,Maplewood,http://www.cityofmaplewood.com/
+Missouri,Saline County,Marshall,https://www.marshall-mo.com/
+Missouri,St. Louis County,Maryland Heights,http://www.marylandheights.com
+Missouri,Nodaway County,Maryville,https://www.maryville.org/
+Missouri,Audrain County,Mexico,http://www.mexicomissouri.net/
+Missouri,Randolph County,Moberly,http://www.moberlymo.org/
+Missouri,Monett Township,Monett,http://cityofmonett.com
+Missouri,Newton County,Neosho,http://www.neoshomo.org/
+Missouri,Vernon County,Nevada,http://nevadamo.gov/
+Missouri,Christian County,Nixa,http://www.nixa.com/
+Missouri,Jackson County,Oak Grove,http://www.cityofoakgrove.com
+Missouri,St. Charles County,O'Fallon,http://www.ofallon.mo.us/
+Missouri,St. Louis County,Olivette,http://www.olivettemo.com
+Missouri,St. Louis County,Overland,http://www.overlandmo.org/
+Missouri,Christian County,Ozark,http://ozarkmissouri.com/
+Missouri,Saint Francois County,Park Hills,http://www.parkhillsmo.net/
+Missouri,Central Township,Perryville,https://www.cityofperryville.com
+Missouri,Cass County,Pleasant Hill,http://www.pleasanthill.com/
+Missouri,Butler County,Poplar Bluff,http://www.poplarbluff-mo.gov/
+Missouri,Cass County,Raymore,http://www.raymore.com
+Missouri,Jackson County,Raytown,http://www.raytown.mo.us/
+Missouri,Christian County,Republic,http://www.republicmo.com/
+Missouri,St. Louis County,Richmond Heights,http://www.richmondheights.org/
+Missouri,Phelps County,Rolla,http://www.rollacity.org/
+Missouri,Pettis County,Sedalia,http://www.cityofsedalia.com
+Missouri,Scott County,Sikeston,http://www.sikeston.org/
+Missouri,Clay County,Smithville,http://www.smithvillemo.org/
+Missouri,Greene County,Springfield,http://www.springfieldmo.gov/
+Missouri,St. Louis County,St. Ann,http://www.stannmo.org/
+Missouri,Saint Charles County,St. Charles,http://www.stcharlescitymo.gov/
+Missouri,Buchanan County,St. Joseph,https://www.stjosephmo.gov/
+Missouri,St. Charles County,St. Peters,http://www.stpetersmo.net/
+Missouri,St. Louis County,Sunset Hills,http://www.sunset-hills.com/
+Missouri,St. Louis County,Town and Country,http://www.town-and-country.org
+Missouri,Lincoln County,Troy,http://cityoftroymissouri.com
+Missouri,Franklin County,Union,https://www.unionmissouri.gov/
+Missouri,St. Louis County,University City,http://www.ucitymo.org/
+Missouri,Johnson County,Warrensburg,http://www.warrensburg-mo.com
+Missouri,Warren County,Warrenton,http://www.warrenton-mo.org/
+Missouri,Franklin County,Washington,https://washmo.gov/
+Missouri,St. Louis County,Webster Groves,http://www.webstergroves.org
+Missouri,St. Charles County,Wentzville,http://wentzvillemo.org/
+Missouri,Howell County,West Plains,https://www.westplains.gov
+Missouri,St. Louis County,Wildwood,http://www.cityofwildwood.com
+Montana,Deer Lodge County,Anaconda,http://adlc.us
+Montana,Fallon County,Baker,https://www.bakermontana.us/
+Montana,Gallatin County,Belgrade,http://www.ci.belgrade.mt.us/
+Montana,Cascade County,Belt,https://www.beltmontana.com/
+Montana,Chouteau County,Big Sandy,http://townofbigsandy.com/
+Montana,Sweet Grass County,Big Timber,http://www.cityofbigtimber.com/
+Montana,Yellowstone County,Billings,https://www.billingsmt.gov/
+Montana,Gallatin County,Bozeman,http://www.bozeman.net/
+Montana,Glacier County,Browning,http://www.browningmontana.com/
+Montana,Silver Bow County,Butte,https://www.co.silverbow.mt.us/
+Montana,Cascade County,Cascade,http://www.cascademontana.com/
+Montana,Liberty County,Chester,https://chester-montana.com/
+Montana,Blaine County,Chinook,http://cityofchinook.com/
+Montana,Teton County,Choteau,https://choteaumt.org/
+Montana,McCone County,Circle,https://www.visitmt.com/places-to-go/cities-and-towns/circle.html
+Montana,Rosebud County,Colstrip,http://www.cityofcolstrip.com/
+Montana,Flathead County,Columbia Falls,http://www.cityofcolumbiafalls.org
+Montana,Stillwater County,Columbus,http://townofcolumbus.com/
+Montana,Pondera County,Conrad,http://cityofconrad.com/
+Montana,Glacier County,Cut Bank,http://cityofcutbank.org
+Montana,Ravalli County,Darby,http://www.darbymt.net/
+Montana,Beaverhead County,Dillon,http://www.dillonmt.org
+Montana,Teton County,Dutton,https://townofdutton.com/
+Montana,Lewis and Clark County,East Helena,http://www.easthelenamt.us
+Montana,Madison County,Ennis,http://www.ennismontana.org/
+Montana,Lincoln County,Eureka,http://www.eureka-mt.gov
+Montana,Richland County,Fairview,http://www.midrivers.com/~fairview/
+Montana,Rosebud County,Forsyth,http://www.forsythmt.com/
+Montana,Chouteau County,Fort Benton,http://www.fortbenton.com
+Montana,Valley County,Glasgow,https://www.cityofglasgowmt.com/
+Montana,Dawson County,Glendive,http://www.cityofglendive.us/
+Montana,Cascade County,Great Falls,https://greatfallsmt.net/
+Montana,Ravalli County,Hamilton,http://www.cityofhamilton.net
+Montana,Big Horn County,Hardin,http://www.hardinmt.com/
+Montana,Blaine County,Harlem,http://www.cityofharlemmontana.com
+Montana,Hill County,Havre,http://ci.havre.mt.us
+Montana,Tenmile Creek (Lewis and Clark County,Helena,http://www.helenamt.gov
+Montana,Sanders County,Hot Springs,https://townofhotspringsmt.com/
+Montana,Flathead County,Kalispell,https://www.kalispell.com/
+Montana,Yellowstone County,Laurel,http://laurel.mt.gov/
+Montana,Fergus County,Lewistown,http://www.cityoflewistown.com
+Montana,Lincoln County,Libby,http://cityoflibby.com
+Montana,Park County,Livingston,https://www.livingstonmontana.org/
+Montana,Sheridan County,Medicine Lake,http://www.medicinelakemt.com
+Montana,Custer County,Miles City,http://milescity-mt.org/
+Montana,Missoula County,Missoula,http://ci.missoula.mt.us
+Montana,Sanders County,Plains,http://www.plainsmontana.com/
+Montana,Lake County,Polson,http://www.cityofpolson.com
+Montana,Carbon County,Red Lodge,https://www.cityofredlodge.net/
+Montana,Lake County,Ronan,http://cityofronan.org
+Montana,Phillips County,Saco,http://www.sacomontana.net
+Montana,Daniels County,Scobey,https://cityofscobey.com/
+Montana,Toole County,Shelby,http://shelbymt.com/
+Montana,Richland County,Sidney,http://www.cityofsidneymt.com/
+Montana,Lake County,St. Ignatius,http://townofstignatius.com
+Montana,Ravalli County,Stevensville,http://www.townofstevensville.com
+Montana,Mineral County,Superior,https://townofsuperiormontana.org/
+Montana,Prairie County,Terry,https://townofterry.com/
+Montana,Sanders County,Thompson Falls,https://thompsonfalls.org/
+Montana,Gallatin County,Three Forks,http://www.threeforksmontana.us
+Montana,Broadwater County,Townsend,http://www.townsendmt.com/
+Montana,Lincoln County,Troy,http://cityoftroymontana.com
+Montana,Pondera County,Valier,https://www.townofvalier.com/
+Montana,Gallatin County,West Yellowstone,http://www.townofwestyellowstone.com
+Montana,Flathead County,Whitefish,http://www.cityofwhitefish.org
+Montana,Jefferson County,Whitehall,http://townofwhitehall.org/
+Montana,Petroleum County,Winnett,http://localtown.us/winnett-mt/
+Montana,Roosevelt County,Wolf Point,http://ci.wolf-point.mt.us/
+Nebraska,Adams Township,Adams,http://www.ci.adams.ne.us
+Nebraska,Brown County,Ainsworth,https://cityofainsworth.com/
+Nebraska,Boone County,Albion,http://www.ci.albion.ne.us/
+Nebraska,Thayer County,Alexandria,http://www.alexandriane.com/
+Nebraska,Box Butte County,Alliance,http://www.cityofalliance.net/
+Nebraska,Harlan County,Alma,https://www.almacity.com/
+Nebraska,Cass County,Alvo,http://www.AlvoNebraska.com
+Nebraska,Furnas County,Arapahoe,http://www.arapahoenebraska.com/
+Nebraska,Saunders County,Ashland,http://www.ashland-ne.com/
+Nebraska,Holt County,Atkinson,http://www.atkinsonne.com/
+Nebraska,Nemaha County,Auburn,http://auburn.ne.gov/
+Nebraska,Hamilton County,Aurora,http://www.cityofaurora.org/
+Nebraska,Cass County,Avoca,http://www.AvocaNebraska.com
+Nebraska,Rock County,Bassett,https://bassettnebr.com/
+Nebraska,Gage County,Beatrice,https://www.beatrice.ne.gov/
+Nebraska,Seward County,Bee,https://www.villageofbee.com/
+Nebraska,Cuming County,Beemer,http://www.ci.beemer.ne.us
+Nebraska,Sarpy County,Bellevue,http://www.bellevue.net/
+Nebraska,Savannah Township,Bellwood,http://www.bellwoodnebraska.com/
+Nebraska,Dundy County,Benkelman,https://www.benkelmanusa.com/
+Nebraska,Lancaster County,Bennet,http://lancaster.ne.gov/bennet/
+Nebraska,Douglas County,Bennington,https://benningtonne.com/
+Nebraska,Berwyn Township,Berwyn,http://www.berwynne.org
+Nebraska,Washington County,Blair,https://www.blairnebraska.org/
+Nebraska,Webster County,Blue Hill,http://bluehillne.com/
+Nebraska,Gage County,Blue Springs,http://www.bluespringsne.com/
+Nebraska,Douglas County,Boys Town,http://www.boystown.org
+Nebraska,Oak Creek Township,Brainard,http://www.brainardnebraska.com
+Nebraska,Morrill County,Bridgeport,http://cityofbport.com
+Nebraska,Custer County,Broken Bow,http://www.cityofbrokenbow.org/
+Nebraska,Nemaha County,Brownville,http://www.brownville-ne.com/
+Nebraska,Keith County,Brule,http://www.ci.brule.ne.us
+Nebraska,Garfield County,Burwell,http://www.burwellonline.com/
+Nebraska,Boyd County,Butte,http://www.buttenebraska.com/
+Nebraska,Delight Township,Callaway,http://www.callaway-ne.com/
+Nebraska,Furnas County,Cambridge,http://www.cambridgene.org/
+Nebraska,Cass County,Cedar Creek,http://cedarcreeknebraska.com
+Nebraska,Boone County,Cedar Rapids,http://cedarrapidsne.com/
+Nebraska,Knox County,Center,http://www.centerne.com/
+Nebraska,Merrick County,Central City,https://www.cc-ne.com/
+Nebraska,Dawes County,Chadron,http://chadron-nebraska.com/
+Nebraska,Deuel County,Chappell,http://www.chappellne.org/
+Nebraska,Thayer County,Chester,http://www.ChesterNE.com
+Nebraska,Clay County,Clay Center,https://claycenterne.com/
+Nebraska,Cedar County,Coleridge,http://www.coleridge-ne.com/
+Nebraska,Columbus Township,Columbus,http://www.columbusne.us/
+Nebraska,Comstock Township,Comstock,http://www.comstock-ne.com/
+Nebraska,Dawson County,Cozad,https://cozadnebraska.net/
+Nebraska,Dawes County,Crawford,http://www.crawfordnebraska.net/
+Nebraska,Knox County,Creighton,http://www.creighton.org/
+Nebraska,Saline County,Crete,http://www.crete.ne.gov
+Nebraska,Knox County,Crofton,http://city-of-crofton.com
+Nebraska,Frontier County,Curtis,https://www.curtisnebraska.com/
+Nebraska,Dakota County,Dakota City,http://dakotacity.net
+Nebraska,Lancaster County,Davey,http://lancaster.ne.gov/davey/
+Nebraska,Franklin Township,David City,http://davidcityne.com/
+Nebraska,Saline County,De Witt,http://www.dewitt.ne.gov
+Nebraska,Lancaster County,Denton,http://lancaster.ne.gov/denton/
+Nebraska,Webster Township,Dodge,http://www.ci.dodge.ne.us/
+Nebraska,Hall County,Doniphan,https://doniphanne.com/
+Nebraska,Otoe County,Douglas,https://www.villageofdouglas.com/
+Nebraska,Butler Township,Duncan,http://www.villageofduncan.com/
+Nebraska,Cass County,Eagle,https://EagleNebraska.com
+Nebraska,Clay County,Edgar,http://www.ci.edgar.ne.us/
+Nebraska,Antelope County,Elgin,https://sites.google.com/view/wwwelginnebraskaorg/home
+Nebraska,Cass County,Elmwood,http://www.ElmwoodNebraska.com
+Nebraska,Gosper County,Elwood,http://www.elwoodnebraska.com/
+Nebraska,Dixon County,Emerson,https://emerson-ne.com/
+Nebraska,Frontier County,Eustis,https://www.eustisnebraska.org/
+Nebraska,Fillmore County,Exeter,http://www.ci.exeter.ne.us/general.htm
+Nebraska,Jefferson County,Fairbury,http://www.fairburyne.org
+Nebraska,Richardson County,Falls City,http://www.fallscityonline.com/
+Nebraska,Lancaster County,Firth,http://www.firth.nebraska.gov
+Nebraska,Franklin County,Franklin,http://www.franklinnebraska.com/
+Nebraska,Dodge County,Fremont,http://fremontne.gov/
+Nebraska,Saline County,Friend,http://www.ci.friend.ne.us/
+Nebraska,Fullerton Township,Fullerton,http://www.fullerton-ne.com/
+Nebraska,Fillmore County,Geneva,http://www.genevane.org/
+Nebraska,Genoa Township,Genoa,http://www.ci.genoa.ne.us/
+Nebraska,Scotts Bluff County,Gering,http://www.gering.org/
+Nebraska,Buffalo County,Gibbon,http://www.cityofgibbon.org/
+Nebraska,Sheridan County,Gordon,https://www.gordon-ne.us/
+Nebraska,Dawson County,Gothenburg,http://www.ci.gothenburg.ne.us/
+Nebraska,Hall County,Grand Island,http://www.grand-island.com/
+Nebraska,Perkins County,Grant,http://www.grantnebraska.com/
+Nebraska,Greeley County,Greeley Center,http://www.greeleyne.com/
+Nebraska,Cass County,Greenwood,http://www.GreenwoodNebraska.com
+Nebraska,Sarpy County,Gretna,http://www.gretnane.org/
+Nebraska,Cedar County,Hartington,https://www.ci.hartington.ne.us/
+Nebraska,Clay County,Harvard,https://www.harvardnebraska.com/
+Nebraska,Adams County,Hastings,http://cityofhastings.org
+Nebraska,Hayes County,Hayes Center,https://hayescountyne.com/
+Nebraska,Sherman County,Hazard,http://www.hazardnebraska.com
+Nebraska,Thayer County,Hebron,http://www.hebronnebraska.us
+Nebraska,York County,Henderson,https://www.cityofhenderson.org
+Nebraska,Lancaster County,Hickman,http://www.hickman.ne.gov/
+Nebraska,Franklin County,Hildreth,https://villageofhildreth.com/
+Nebraska,Phelps County,Holdrege,http://www.cityofholdrege.org/
+Nebraska,Colfax County,Howells,http://www.ci.howells.ne.us/
+Nebraska,Platte County,Humphrey,https://www.cityofhumphrey.com
+Nebraska,Chase County,Imperial,http://www.imperial-ne.com
+Nebraska,Brown County,Johnstown,http://www.co.brown.ne.us/johnst.htm
+Nebraska,Buffalo County,Kearney,http://www.cityofkearney.org
+Nebraska,Kimball County,Kimball,http://www.kimballne.org/
+Nebraska,Sarpy County,La Vista,http://cityoflavista.org/
+Nebraska,Cedar County,Laurel,https://laurelne.com/
+Nebraska,Colfax County,Leigh,https://www.cityofleigh.com/
+Nebraska,Dawson County,Lexington,http://www.cityoflex.com/
+Nebraska,Gage County,Lincoln,http://www.lincoln.ne.gov/
+Nebraska,Platte Township,Linwood,http://www.villageoflinwood.com/
+Nebraska,Brown County,Long Pine,http://www.cityoflongpine.org/
+Nebraska,Cass County,Louisville,https://www.louisvillenebraska.com
+Nebraska,Sherman County,Loup City,http://www.loupcity.com/
+Nebraska,Burt County,Lyons,https://lyonscity.nebraska.gov/
+Nebraska,Madison County,Madison,http://madison-ne.com/
+Nebraska,Lancaster County,Malcolm,http://www.malcolm.ne.gov
+Nebraska,Cass County,Manley,https://ManleyNebraska.com
+Nebraska,Red Willow County,McCook,http://www.cityofmccook.com
+Nebraska,York County,McCool Junction,http://www.mccooljunction-ne.com/
+Nebraska,Marietta Township,Mead,http://www.meadnebraska.net/
+Nebraska,Seward County,Milford,http://www.milfordne.gov/
+Nebraska,Scotts Bluff County,Minatare,http://cityofminatare.com/
+Nebraska,Kearney County,Minden,http://www.mindennebraska.org/
+Nebraska,Scotts Bluff County,Mitchell,http://www.mitchellcity.net
+Nebraska,Scotts Bluff County,Morrill,http://www.villageofmorrill.com
+Nebraska,Hooker County,Mullen,http://www.mullennebraska.org/
+Nebraska,Cass County,Murdock,http://www.MurdockNebraska.com
+Nebraska,Cass County,Murray,http://www.MurrayNebraska.com
+Nebraska,Otoe County,Nebraska City,http://nebraskacityne.gov
+Nebraska,Cass County,Nehawka,http://www.NehawkaNebraska.com
+Nebraska,Antelope County,Neligh,http://www.neligh.org
+Nebraska,Nuckolls County,Nelson,http://www.cityofnelson.com/
+Nebraska,Madison County,Newman Grove,http://www.ci.newman-grove.ne.us/index.asp
+Nebraska,Knox County,Niobrara,http://www.niobrarane.com/
+Nebraska,Madison County,Norfolk,http://www.ci.norfolk.ne.us/
+Nebraska,Lincoln County,North Platte,http://www.ci.north-platte.ne.us
+Nebraska,Burt County,Oakland,http://www.ci.oakland.ne.us/
+Nebraska,Gage County,Odell,http://odell-nebraska.us
+Nebraska,Keith County,Ogallala,http://www.ogallala-ne.gov/
+Nebraska,Franklin Township,Ohiowa,https://www.ci.ohiowa.ne.us/
+Nebraska,Douglas County,Omaha,http://www.cityofomaha.org
+Nebraska,Holt County,O'Neill,http://www.cityofoneillnebraska.com/
+Nebraska,Valley County,Ord,http://www.ordnebraska.com/
+Nebraska,Polk County,Osceola,http://osceolanebraska.com/
+Nebraska,Garden County,Oshkosh,https://www.oshkoshnebraska.com/
+Nebraska,Pierce County,Osmond,https://www.ci.osmond.ne.us/
+Nebraska,Lancaster County,Panama,http://lancaster.ne.gov/panama/
+Nebraska,Sarpy County,Papillion,http://www.papillion.org
+Nebraska,Pawnee County,Pawnee City,http://www.pawneecity.com/
+Nebraska,Nemaha County,Peru,http://www.perunebraska.org
+Nebraska,Pierce County,Pierce,https://piercenebraska.com/
+Nebraska,Pierce County,Plainview,http://www.plainview-ne.com/
+Nebraska,Cass County,Plattsmouth,http://www.plattsmouth.org/
+Nebraska,Dixon County,Ponca,http://www.ci.ponca.ne.us/
+Nebraska,Douglas County,Ralston,http://cityofralston.com/
+Nebraska,Cedar County,Randolph,http://www.ci.randolph.ne.us/
+Nebraska,Buffalo County,Ravenna,http://www.myravenna.com/
+Nebraska,Lancaster County,Raymond,http://lancaster.ne.gov/raymond/
+Nebraska,Webster County,Red Cloud,http://www.visitredcloud.com/
+Nebraska,Reading Township,Rising City,http://www.risingcity.com
+Nebraska,Buffalo County,Riverdale,http://www.68870.com
+Nebraska,Sheridan County,Rushville,https://rushvillene.com/
+Nebraska,Colfax County,Schuyler,https://schuylernebraska.net//
+Nebraska,Scotts Bluff County,Scottsbluff,http://www.scottsbluff.org/
+Nebraska,Dodge County,Scribner,https://www.scribner-ne.gov
+Nebraska,Seward County,Seward,http://www.cityofsewardne.com/
+Nebraska,Polk County,Shelby,http://www.ci.shelby.ne.us/
+Nebraska,Buffalo County,Shelton,http://villageofshelton.com/
+Nebraska,Cheyenne County,Sidney,http://www.cityofsidney.org
+Nebraska,Cass County,South Bend,http://SouthBendNebraska.com
+Nebraska,Dakota County,South Sioux City,http://www.southsiouxcity.org/
+Nebraska,Boyd County,Spencer,http://www.spencerne.net/
+Nebraska,Sarpy County,Springfield,http://www.SpringfieldNebraska.com/
+Nebraska,Keya Paha County,Springview,http://www.springview-ne.com/
+Nebraska,Boone County,St. Edward,https://stedwardne.com/
+Nebraska,Howard County,St. Paul,http://www.stpaulnebraska.com/
+Nebraska,Stanton County,Stanton,http://www.stanton.net/
+Nebraska,Logan County,Stapleton,https://www.stapleton-ne.com/
+Nebraska,Johnson County,Sterling,http://www.ci.sterling.ne.us/
+Nebraska,Polk County,Stromsburg,http://www.stromsburgnebraska.com/
+Nebraska,Nuckolls County,Superior,https://cityofsuperior.org/
+Nebraska,Otoe County,Syracuse,http://www.syracusene.com/
+Nebraska,Loup County,Taylor,https://www.taylorne.com/
+Nebraska,Johnson County,Tecumseh,http://www.tecumsehne.com
+Nebraska,Burt County,Tekamah,http://www.tekamah.net/
+Nebraska,Thomas County,Thedford,https://thedfordnebraska.net/
+Nebraska,Hitchcock County,Trenton,http://www.villageoftrenton.net/
+Nebraska,Logan Township,Uehling,http://www.uehlingne.org
+Nebraska,Otoe County,Unadilla,http://www.UnadillaNebraska.com
+Nebraska,Cass County,Union,http://www.UnionNebraska.com
+Nebraska,Cherry County,Valentine,http://www.heartcity.com/
+Nebraska,Douglas County,Valley,http://www.valleyne.org/
+Nebraska,Knox County,Verdigre,http://www.verdigre.org
+Nebraska,Saunders County,Wahoo,http://www.wahoo.ne.us/
+Nebraska,Dixon County,Wakefield,http://www.ci.wakefield.ne.us/
+Nebraska,Douglas County,Waterloo,https://www.waterloone.com/
+Nebraska,Lancaster County,Waverly,http://www.citywaverly.com/
+Nebraska,Wayne County,Wayne,http://www.cityofwayne.org/
+Nebraska,Cass County,Weeping Water,http://WeepingWaterNebraska.com
+Nebraska,Cuming County,West Point,http://www.ci.west-point.ne.us/
+Nebraska,Chapman Township,Weston,http://www.weston.ne.us/
+Nebraska,Saline County,Wilber,http://www.wilberchamberofcommerce.com/
+Nebraska,Cuming County,Wisner,http://www.ci.wisner.ne.us
+Nebraska,Hall County,Wood River,http://woodriverne.com/
+Nebraska,Gage County,Wymore,http://www.wymorebluesprings.com
+Nebraska,Cedar County,Wynot,http://www.wynotnebraska.com/
+Nebraska,York County,York,https://www.cityofyork.net//
+Nebraska,Union Township,Yutan,http://www.cityofyutan.com
+Nevada,Clark County,Boulder City,http://www.bcnv.org
+Nevada,Lincoln County,Caliente,http://www.cityofcaliente.com/
+Nevada,Elko County,Carlin,http://www.explorecarlinnv.com
+Nevada,Elko County,Carson City,http://www.carson.org/home
+Nevada,Elko County,Elko,http://www.ci.elko.nv.us
+Nevada,White Pine County,Ely,https://www.cityofelynv.gov/
+Nevada,Churchill County,Fallon,http://www.cityoffallon.com
+Nevada,Lyon County,Fernley,http://www.cityoffernley.org
+Nevada,Clark County,Henderson,http://www.cityofhenderson.com
+Nevada,Pershing County,Lovelock,http://www.cityoflovelock.com
+Nevada,Clark County,Mesquite,http://www.Mesquitenv.gov
+Nevada,Clark County,North Las Vegas,http://www.CityOfNorthLasVegas.com
+Nevada,Regional Transportation Commission of Washoe County,Reno,http://reno.gov
+Nevada,Regional Transportation Commission of Washoe County,Sparks,http://cityofsparks.us
+Nevada,Elko County,West Wendover,http://www.westwendovercity.com/
+Nevada,Humboldt County,Winnemucca,http://www.winnemuccacity.org/
+Nevada,Lyon County,Yerington,http://www.yerington.net
+New Hampshire,Sullivan County,Acworth,http://acworthnh.net
+New Hampshire,Carroll County,Albany,http://www.albanynh.org
+New Hampshire,Grafton County,Alexandria,http://www.alexandrianh.com
+New Hampshire,Merrimack County,Allenstown,http://www.allenstownnh.gov
+New Hampshire,Cheshire County,Alstead,http://www.alsteadnh.org
+New Hampshire,Belknap County,Alton,http://www.alton.nh.gov
+New Hampshire,Hillsborough County,Amherst,http://www.amherstnh.gov
+New Hampshire,Merrimack County,Andover,http://andover-nh.gov
+New Hampshire,Hillsborough County,Antrim,http://www.antrimnh.org
+New Hampshire,Grafton County,Ashland,http://ashlandnh.org
+New Hampshire,Rockingham County,Atkinson,http://www.town-atkinsonnh.com
+New Hampshire,Rockingham County,Auburn,http://www.auburnnh.us
+New Hampshire,Belknap County,Barnstead,http://www.barnstead.org
+New Hampshire,Strafford County,Barrington,http://www.barrington.nh.gov
+New Hampshire,Carroll County,Bartlett,http://www.townofbartlettnh.org
+New Hampshire,Grafton County,Bath,http://www.bath-nh.org
+New Hampshire,Hillsborough County,Bedford,http://www.bedfordnh.org
+New Hampshire,Belknap County,Belmont,http://www.belmontnh.org
+New Hampshire,Hillsborough County,Bennington,http://www.townofbennington.com
+New Hampshire,Grafton County,Benton,http://www.tobentonnh.org
+New Hampshire,Coös County,Berlin,http://www.berlinnh.gov
+New Hampshire,Grafton County,Bethlehem,http://www.bethlehemnh.org
+New Hampshire,Merrimack County,Boscawen,http://www.townofboscawen.org
+New Hampshire,Merrimack County,Bow,http://www.bownh.gov
+New Hampshire,Merrimack County,Bradford,http://www.bradfordnh.org
+New Hampshire,Rockingham County,Brentwood,http://www.brentwoodnh.gov
+New Hampshire,Grafton County,Bridgewater,http://www.bridgewater-nh.com
+New Hampshire,Grafton County,Bristol,http://www.townofbristolnh.org
+New Hampshire,Carroll County,Brookfield,http://www.brookfieldnh.org
+New Hampshire,Hillsborough County,Brookline,http://brooklinenh.us
+New Hampshire,Grafton County,Campton,http://www.camptonnh.org
+New Hampshire,Grafton County,Canaan,http://www.canaannh.org
+New Hampshire,Rockingham County,Candia,http://www.candianh.org
+New Hampshire,Merrimack County,Canterbury,http://www.canterbury-nh.org
+New Hampshire,Coös County,Carroll,https://carrollnh.org/
+New Hampshire,Belknap County,Center Harbor,http://www.centerharbornh.org
+New Hampshire,Sullivan County,Charlestown,http://www.charlestown-nh.gov
+New Hampshire,Carroll County,Chatham,http://chathamnh.org
+New Hampshire,Rockingham County,Chester,http://www.chesternh.org
+New Hampshire,Cheshire County,Chesterfield,http://www.chesterfield.nh.gov
+New Hampshire,Merrimack County,Chichester,http://www.chichesternh.org
+New Hampshire,Sullivan County,Claremont,http://www.claremontnh.com
+New Hampshire,Coös County,Colebrook,http://www.colebrooknh.org
+New Hampshire,Coös County,Columbia,http://www.columbianh.org
+New Hampshire,Merrimack County,Concord,http://www.concordnh.gov
+New Hampshire,Carroll County,Conway,http://www.conwaynh.org
+New Hampshire,Sullivan County,Cornish,http://www.cornishnh.net
+New Hampshire,Sullivan County,Croydon,http://croydon-nh.com
+New Hampshire,Coös County,Dalton,http://townofdalton.com
+New Hampshire,Merrimack County,Danbury,http://www.townofdanburynh.com
+New Hampshire,Rockingham County,Danville,http://www.townofdanville.org
+New Hampshire,Rockingham County,Deerfield,http://www.townofdeerfieldnh.com
+New Hampshire,Hillsborough County,Deering,http://www.deering.nh.us
+New Hampshire,Rockingham County,Derry,http://www.derrynh.org
+New Hampshire,Grafton County,Dorchester,http://townofdorchester.org
+New Hampshire,Strafford County,Dover,http://www.dover.nh.gov
+New Hampshire,Cheshire County,Dublin,http://www.townofdublin.org
+New Hampshire,Coös County,Dummer,http://dummernh.com
+New Hampshire,Merrimack County,Dunbarton,http://www.dunbartonnh.org
+New Hampshire,Strafford County,Durham,http://www.ci.durham.nh.us
+New Hampshire,Rockingham County,East Kingston,http://www.eknh.org
+New Hampshire,Grafton County,Easton,http://easton-nh.org
+New Hampshire,Carroll County,Eaton,http://www.eatonnh.org
+New Hampshire,Carroll County,Effingham,http://www.effinghamnh.net
+New Hampshire,Carroll County,Eidelweiss,http://www.vdoe-nh.org
+New Hampshire,Grafton County,Enfield,http://www.enfield.nh.us
+New Hampshire,Rockingham County,Epping,http://www.townofepping.com
+New Hampshire,Merrimack County,Epsom,http://www.epsomnh.org
+New Hampshire,Rockingham County,Exeter,http://www.exeternh.gov
+New Hampshire,Strafford County,Farmington,http://www.farmington.nh.us
+New Hampshire,Cheshire County,Fitzwilliam,http://www.fitzwilliam-nh.gov
+New Hampshire,Hillsborough County,Francestown,http://www.francestownnh.org
+New Hampshire,Grafton County,Franconia,http://www.franconianh.org
+New Hampshire,Merrimack County,Franklin,http://www.franklinnh.org
+New Hampshire,Carroll County,Freedom,http://www.townoffreedom.net
+New Hampshire,Rockingham County,Fremont,http://www.fremont.nh.gov
+New Hampshire,Belknap County,Gilford,http://www.gilfordnh.org
+New Hampshire,Belknap County,Gilmanton,http://www.gilmantonnh.org
+New Hampshire,Cheshire County,Gilsum,https://gilsum-nh.gov
+New Hampshire,Hillsborough County,Goffstown,http://www.goffstown.com
+New Hampshire,Coös County,Gorham,http://www.gorhamnh.org
+New Hampshire,Sullivan County,Goshen,http://www.goshennh.org
+New Hampshire,Grafton County,Grafton,http://www.townofgraftonnh.com
+New Hampshire,Sullivan County,Grantham,http://www.granthamnh.net
+New Hampshire,Hillsborough County,Greenfield,http://www.greenfield-nh.gov
+New Hampshire,Rockingham County,Greenland,http://www.greenland-nh.com
+New Hampshire,Hillsborough County,Greenville,http://www.greenvillenh.org
+New Hampshire,Grafton County,Groton,http://www.grotonnh.org
+New Hampshire,Rockingham County,Hampstead,http://www.hampsteadnh.us
+New Hampshire,Rockingham County,Hampton,http://hamptonnh.gov
+New Hampshire,Rockingham County,Hampton Beach,http://www.hamptonbeach.org
+New Hampshire,Rockingham County,Hampton Falls,http://www.hamptonfalls.org
+New Hampshire,Hillsborough County,Hancock,http://www.hancocknh.org
+New Hampshire,Grafton County,Hanover,http://www.hanovernh.org
+New Hampshire,Cheshire County,Harrisville,http://www.harrisvillenh.org
+New Hampshire,Carroll County,Hart's Location,http://www.hartslocation.com
+New Hampshire,Grafton County,Haverhill,http://www.haverhill-nh.com
+New Hampshire,Grafton County,Hebron,http://www.hebronnh.org
+New Hampshire,Merrimack County,Henniker,http://www.henniker.org
+New Hampshire,Merrimack County,Hill,http://www.townofhillnh.org
+New Hampshire,Hillsborough County,Hillsborough,http://www.town.hillsborough.nh.us
+New Hampshire,Cheshire County,Hinsdale,http://www.town.hinsdale.nh.us
+New Hampshire,Grafton County,Holderness,http://www.holderness-nh.gov
+New Hampshire,Hillsborough County,Hollis,http://www.hollisnh.org
+New Hampshire,Merrimack County,Hooksett,http://www.hooksett.org
+New Hampshire,Merrimack County,Hopkinton,http://www.hopkinton-nh.gov
+New Hampshire,Hillsborough County,Hudson,http://www.hudsonnh.gov
+New Hampshire,Carroll County,Jackson,http://www.jackson-nh.org
+New Hampshire,Cheshire County,Jaffrey,http://www.townofjaffrey.com
+New Hampshire,Coos County,Jefferson,http://www.jeffersonnh.org
+New Hampshire,Cheshire County,Keene,https://keenenh.gov
+New Hampshire,Rockingham County,Kensington,http://www.town.kensington.nh.us
+New Hampshire,Rockingham County,Kingston,http://www.kingstonnh.org
+New Hampshire,Belknap County,Laconia,http://www.cityoflaconianh.org
+New Hampshire,Coös County,Lancaster,http://www.lancasternh.org
+New Hampshire,Grafton County,Landaff,http://www.landaffnh.org
+New Hampshire,Sullivan County,Langdon,http://langdonnh.org
+New Hampshire,Grafton County,Lebanon,http://LebanonNH.gov
+New Hampshire,Strafford County,Lee,http://www.leenh.org
+New Hampshire,Sullivan County,Lempster,http://www.lempsternh.org
+New Hampshire,Grafton County,Lincoln,http://www.lincolnnh.org
+New Hampshire,Grafton County,Lisbon,http://www.lisbonnh.org
+New Hampshire,Hillsborough County,Litchfield,http://www.litchfield-nh.gov
+New Hampshire,Grafton County,Littleton,http://www.townoflittleton.org
+New Hampshire,Rockingham County,Londonderry,http://www.londonderrynh.org
+New Hampshire,Merrimack County,Loudon,http://www.loudonnh.org
+New Hampshire,Grafton County,Lyman,http://www.lymannh.org
+New Hampshire,Grafton County,Lyme,http://www.lymenh.gov
+New Hampshire,Hillsborough County,Lyndeborough,http://town.lyndeborough.nh.us
+New Hampshire,Strafford County,Madbury,http://www.townofmadbury.com
+New Hampshire,Carroll County,Madison,http://www.madison-nh.org
+New Hampshire,Hillsborough County,Manchester,http://www.manchesternh.gov
+New Hampshire,Cheshire County,Marlborough,http://www.marlboroughnh.org
+New Hampshire,Cheshire County,Marlow,http://www.marlownh.gov
+New Hampshire,Hillsborough County,Mason,http://masonnh.us
+New Hampshire,Belknap County,Meredith,http://www.meredithnh.org
+New Hampshire,Hillsborough County,Merrimack,http://www.merrimacknh.gov
+New Hampshire,Strafford County,Middleton,http://www.middletonnh.gov
+New Hampshire,Coos County,Milan,http://www.townofmilan.org
+New Hampshire,Hillsborough County,Milford,http://www.milford.nh.gov
+New Hampshire,Strafford County,Milton,http://www.miltonnh-us.com
+New Hampshire,Grafton County,Monroe,http://www.monroenh.org
+New Hampshire,Hillsborough County,Mont Vernon,http://www.montvernonnh.us
+New Hampshire,Carroll County,Moultonborough,http://www.moultonboroughnh.gov
+New Hampshire,Hillsborough County,Nashua,http://www.nashuanh.gov
+New Hampshire,Cheshire County,Nelson,http://www.townofnelson.org
+New Hampshire,Hillsborough County,New Boston,http://www.newbostonnh.gov
+New Hampshire,Rockingham County,New Castle,http://www.newcastlenh.org
+New Hampshire,Strafford County,New Durham,http://www.newdurhamnh.us
+New Hampshire,Belknap County,New Hampton,http://www.new-hampton.nh.us
+New Hampshire,Hillsborough County,New Ipswich,http://www.townofnewipswich.org
+New Hampshire,Merrimack County,New London,http://newlondon.nh.gov
+New Hampshire,Merrimack County,Newbury,http://www.newburynh.org
+New Hampshire,Rockingham County,Newfields,http://www.newfieldsnh.gov
+New Hampshire,Rockingham County,Newington,http://www.newington.nh.us
+New Hampshire,Rockingham County,Newmarket,http://www.newmarketnh.gov
+New Hampshire,Sullivan County,Newport,http://www.newportnh.gov
+New Hampshire,Rockingham County,Newton,http://www.newton-nh.gov
+New Hampshire,Carroll County,North Conway,http://www.conwaynh.org
+New Hampshire,Rockingham County,North Hampton,http://www.northhampton-nh.gov
+New Hampshire,Merrimack County,Northfield,http://www.northfieldnh.org
+New Hampshire,Coös County,Northumberland,http://www.northumberlandnh.org
+New Hampshire,Rockingham County,Northwood,http://www.northwoodnh.org
+New Hampshire,Rockingham County,Nottingham,http://www.nottingham-nh.gov
+New Hampshire,Grafton County,Orange,http://orangenh.us
+New Hampshire,Grafton County,Orford,http://www.orfordnh.us
+New Hampshire,Carroll County,Ossipee,http://www.ossipee.org
+New Hampshire,Hillsborough County,Pelham,http://www.pelhamweb.com
+New Hampshire,Merrimack County,Pembroke,http://www.pembroke-nh.com
+New Hampshire,Hillsborough County,Peterborough,http://www.townofpeterborough.com
+New Hampshire,Grafton County,Piermont,http://townofpiermontnh.org
+New Hampshire,Coös County,Pittsburg,http://www.pittsburg-nh.com
+New Hampshire,Merrimack County,Pittsfield,http://www.pittsfieldnh.gov
+New Hampshire,Sullivan County,Plainfield,https://www.plainfieldnh.org/
+New Hampshire,Rockingham County,Plaistow,http://www.plaistow.com
+New Hampshire,Grafton County,Plymouth,http://www.plymouth-nh.org
+New Hampshire,Rockingham County,Portsmouth,http://cityofportsmouth.com
+New Hampshire,Coös County,Randolph,http://randolph.nh.gov
+New Hampshire,Rockingham County,Raymond,http://www.raymondnh.gov
+New Hampshire,Cheshire County,Richmond,http://www.richmond.nh.gov
+New Hampshire,Cheshire County,Rindge,http://rindgenh.org
+New Hampshire,Strafford County,Rochester,http://www.rochesternh.net
+New Hampshire,Strafford County,Rollinsford,http://www.rollinsford.nh.us
+New Hampshire,Cheshire County,Roxbury,http://www.roxburynh.org
+New Hampshire,Grafton County,Rumney,http://www.rumneynh.org
+New Hampshire,Rockingham County,Rye,http://www.town.rye.nh.us
+New Hampshire,Rockingham County,Salem,http://www.townofsalemnh.org
+New Hampshire,Merrimack County,Salisbury,http://www.salisburynh.org
+New Hampshire,Belknap County,Sanbornton,http://www.sanborntonnh.org
+New Hampshire,Rockingham County,Sandown,http://www.sandown.us
+New Hampshire,Carroll County,Sandwich,http://sandwichnh.org
+New Hampshire,Rockingham County,Seabrook,http://www.seabrooknh.info
+New Hampshire,Hillsborough County,Sharon,http://www.sharonnh.org
+New Hampshire,Coös County,Shelburne,http://www.townofshelburnenh.com
+New Hampshire,Strafford County,Somersworth,http://www.somersworth.com
+New Hampshire,Rockingham County,South Hampton,http://www.southhamptonnh.org
+New Hampshire,Sullivan County,Springfield,http://www.springfieldnh.org
+New Hampshire,Coös County,Stark,http://townofstark.com
+New Hampshire,Cheshire County,Stoddard,http://www.stoddardnh.org
+New Hampshire,Strafford County,Strafford,http://strafford.nh.gov
+New Hampshire,Coös County,Stratford,http://www.stratfordnh.org
+New Hampshire,Rockingham County,Stratham,http://www.strathamnh.gov
+New Hampshire,Grafton County,Sugar Hill,http://www.sugarhillnh.org
+New Hampshire,Cheshire County,Sullivan,http://townofsullivannh.com
+New Hampshire,Sullivan County,Sunapee,http://www.town.sunapee.nh.us
+New Hampshire,Cheshire County,Surry,http://www.surry.nh.gov
+New Hampshire,Merrimack County,Sutton,http://www.sutton-nh.org
+New Hampshire,Cheshire County,Swanzey,http://www.swanzeynh.gov
+New Hampshire,Carroll County,Tamworth,http://www.tamworthnh.org
+New Hampshire,Hillsborough County,Temple,http://www.templenh.org
+New Hampshire,Grafton County,Thornton,http://www.townofthornton.org
+New Hampshire,Belknap County,Tilton,http://www.tiltonnh.org
+New Hampshire,Cheshire County,Troy,http://www.troy-nh.us
+New Hampshire,Carroll County,Tuftonboro,http://www.tuftonboro.org
+New Hampshire,Sullivan County,Unity,http://www.townofunitynh.org
+New Hampshire,Carroll County,Wakefield,http://www.wakefieldnh.com
+New Hampshire,Cheshire County,Walpole,http://www.walpolenh.us
+New Hampshire,Merrimack County,Warner,http://www.warner.nh.us
+New Hampshire,Grafton County,Warren,http://warren-nh.com
+New Hampshire,Sullivan County,Washington,http://www.washingtonnh.org
+New Hampshire,Grafton County,Waterville Valley,http://www.watervillevalley.org
+New Hampshire,Hillsborough County,Weare,http://www.weare.nh.gov
+New Hampshire,Merrimack County,Webster,http://www.webster-nh.gov
+New Hampshire,Grafton County,Wentworth,http://www.wentworth-nh.org
+New Hampshire,Cheshire County,Westmoreland,http://www.westmorelandnh.com
+New Hampshire,Coös County,Whitefield,http://www.whitefieldnh.org
+New Hampshire,Merrimack County,Wilmot,http://www.wilmotnh.org
+New Hampshire,Hillsborough County,Wilton,http://www.wiltonnh.gov
+New Hampshire,Cheshire County,Winchester,http://www.winchester-nh.gov
+New Hampshire,Rockingham County,Windham,http://www.windhamnh.gov
+New Hampshire,Hillsborough County,Windsor,http://windsornh.org
+New Hampshire,Carroll County,Wolfeboro,http://www.wolfeboronh.us
+New Hampshire,Grafton County,Woodstock,http://www.woodstocknh.org
+New Jersey,Monmouth County,Aberdeen Township,https://www.aberdeennj.org/
+New Jersey,Atlantic County,Absecon,https://www.abseconnj.gov/
+New Jersey,Burlington County,Alexandria Township,https://www.alexandrianj.gov/
+New Jersey,Camden County,Allamuchy Township,https://allamuchynj.org/
+New Jersey,Bergen County,Allendale,https://www.allendalenj.gov/
+New Jersey,Monmouth County,Allenhurst,https://www.allenhurstnj.org/
+New Jersey,Monmouth County,Allentown,https://www.allentownboronj.com/
+New Jersey,Bergen County,Alloway Township,https://www.allowaytownship.com
+New Jersey,Warren County,Alpha,https://www.alphaboronj.org/
+New Jersey,Bergen County,Alpine,http://www.alpinenj07620.org
+New Jersey,File:Flag of Sussex County,Andover,http://www.andoverboroughnj.org
+New Jersey,File:Flag of Sussex County,Andover Township,https://www.andovertwp.org
+New Jersey,Monmouth County,Asbury Park,https://www.cityofasburypark.com
+New Jersey,Atlantic County,Atlantic City,https://www.cityofatlanticcity.org/
+New Jersey,Monmouth County,Atlantic Highlands,https://www.ahnj.com
+New Jersey,Camden County,Audubon,https://www.audubonnj.com
+New Jersey,Camden County,Audubon Park,http://www.audubonparknj.org/
+New Jersey,Cumberland County,Avalon,https://www.avalonboro.net/
+New Jersey,Monmouth County,Avon-by-the-Sea,https://www.avonbytheseanj.com
+New Jersey,Cumberland County,Barnegat Light,http://www.barnegatlight.org/
+New Jersey,Middlesex County,Barnegat Township,http://www.barnegat.net
+New Jersey,Camden County,Barrington,https://www.barringtonboro.com/
+New Jersey,Burlington County,Bass River Township,http://www.bassriver-nj.org/
+New Jersey,Camden County,Bay Head,https://www.bayheadnj.org
+New Jersey,Camden County,Bayonne,https://www.bayonnenj.org/
+New Jersey,Monmouth County,Beach Haven,https://www.beachhaven-nj.gov
+New Jersey,Bergen County,Beachwood,https://www.beachwoodusa.com
+New Jersey,Camden County,Bedminster,https://www.bedminster.us
+New Jersey,Essex County,Belleville,https://www.bellevillenj.org
+New Jersey,Camden County,Bellmawr,https://www.bellmawr.com
+New Jersey,Monmouth County,Belmar,https://www.belmar.com
+New Jersey,Atlantic County,Belvidere,https://www.belviderenj.net/
+New Jersey,Bergen County,Bergenfield,https://www.bergenfield.com
+New Jersey,Union County,Berkeley Heights,https://www.berkeleyheights.gov/
+New Jersey,Middlesex County,Berkeley Township,https://www.twp.berkeley.nj.us
+New Jersey,Camden County,Berlin,https://www.berlinnj.org
+New Jersey,Camden County,Berlin Township,https://www.berlintwp.com
+New Jersey,Monmouth County,Bernards Township,https://www.bernards.org
+New Jersey,File:Flag of Sussex County,Bernardsville,https://www.bernardsvilleboro.org
+New Jersey,File:Flag of Sussex County,Bethlehem Township,https://bethlehemnj.org/
+New Jersey,Burlington County,Beverly,http://www.thecityofbeverly.com/
+New Jersey,Monmouth County,Blairstown,https://www.blairstowntownship.org/
+New Jersey,Monmouth County,Bloomfield,https://www.bloomfieldtwpnj.com
+New Jersey,Passaic County,Bloomingdale,http://www.bloomingdalenj.net
+New Jersey,Hunterdon County,Bloomsbury,https://www.bloomsburyborough.com/
+New Jersey,Bergen County,Bogota,https://www.bogotaonline.org/
+New Jersey,Morris County,Boonton,https://www.boonton.org
+New Jersey,Cumberland County,Boonton Township,https://www.boontontownship.com
+New Jersey,Burlington County,Bordentown,https://www.cityofbordentown.com
+New Jersey,Burlington County,Bordentown Township,http://www.bordentowntownship.com
+New Jersey,Bergen County,Bound Brook,https://www.boundbrook-nj.org/
+New Jersey,Monmouth County,Bradley Beach,https://www.bradleybeachnj.gov
+New Jersey,Bergen County,Branchburg,https://www.branchburg.nj.us/
+New Jersey,File:Flag of Sussex County,Branchville,https://www.branchville.us
+New Jersey,Camden County,Brick Township,https://www.bricktownship.net/
+New Jersey,Cumberland County,Bridgeton,https://www.cityofbridgeton.com
+New Jersey,Somerset County,Bridgewater Township,http://www.bridgewaternj.gov
+New Jersey,Monmouth County,Brielle,https://www.briellenj.gov/
+New Jersey,Atlantic County,Brigantine,https://www.brigantinebeach.org/
+New Jersey,Camden County,Brooklawn,https://brooklawn-nj.com/
+New Jersey,Atlantic County,Buena,http://www.buenaboro.org
+New Jersey,Atlantic County,Buena Vista Township,https://buenavistanj.com/
+New Jersey,Burlington County,Burlington,https://www.burlingtonnj.us
+New Jersey,Burlington County,Burlington Township,http://www.twp.burlington.nj.us
+New Jersey,File:Flag of Sussex County,Butler,http://www.butlerborough.com
+New Jersey,File:Flag of Sussex County,Byram Township,https://www.byramtwp.org/
+New Jersey,Passaic County,Caldwell,https://www.caldwell-nj.com/
+New Jersey,Hunterdon County,Califon,https://www.califonboro.org/
+New Jersey,Camden County,Camden,http://www.ci.camden.nj.us
+New Jersey,Cape May County,Cape May,https://www.capemaycity.com
+New Jersey,Bergen County,Cape May Point,https://www.capemaypoint.org/
+New Jersey,Bergen County,Carlstadt,https://www.carlstadtnj.us
+New Jersey,Camden County,Carneys Point Township,http://carneyspointtwp.org/
+New Jersey,Middlesex County,Carteret,https://www.carteret.net/
+New Jersey,Bergen County,Cedar Grove,https://www.cedargrovenj.org
+New Jersey,Bergen County,Chatham Borough,https://www.chathamborough.org
+New Jersey,Bergen County,Chatham Township,https://www.chathamtownship-nj.gov
+New Jersey,Camden County,Cherry Hill,https://www.chnj.gov
+New Jersey,Camden County,Chesilhurst,https://www.chesilhurstgov.net
+New Jersey,Monmouth County,Chester Borough,https://www.chesterborough.org
+New Jersey,Atlantic County,Chester Township,https://www.chestertownship.org
+New Jersey,Burlington County,Chesterfield Township,https://www.chesterfieldtwpnj.gov/
+New Jersey,Burlington County,Cinnaminson Township,http://www.cinnaminsonnj.org
+New Jersey,Union County,Clark,https://www.ourclark.com
+New Jersey,Morris County,Clayton,https://www.claytonnj.com
+New Jersey,Camden County,Clementon,https://www.clementon-nj.com/
+New Jersey,Bergen County,Cliffside Park,https://www.cliffsideparknj.gov
+New Jersey,Passaic County,Clifton,https://www.cliftonnj.org
+New Jersey,Hunterdon County,Clinton,https://www.clintonnj.gov/
+New Jersey,Monmouth County,Clinton Township,https://clintontwpnj.gov/
+New Jersey,Bergen County,Closter,https://www.closterboro.com/
+New Jersey,Camden County,Collingswood,http://www.collingswood.com
+New Jersey,Monmouth County,Colts Neck Township,https://www.colts-neck.nj.us
+New Jersey,Cumberland County,Commercial Township,https://www.commercialtwp.com
+New Jersey,Atlantic County,Corbin City,http://www.corbincitynj.com/
+New Jersey,Middlesex County,Cranbury,https://www.cranburytownship.org
+New Jersey,Union County,Cranford,https://www.cranfordnj.org
+New Jersey,Bergen County,Cresskill,https://www.cresskillboro.com
+New Jersey,Monmouth County,Deal,http://www.dealborough.com/
+New Jersey,Cumberland County,Deerfield Township,http://www.deerfieldtownship.org
+New Jersey,Burlington County,Delanco Township,http://www.delancotownship.com
+New Jersey,Monmouth County,Delaware Township,https://www.delawaretwpnj.org/
+New Jersey,Burlington County,Delran Township,https://www.delrantownship.org
+New Jersey,Bergen County,Demarest,https://www.demarestnj.org
+New Jersey,Passaic County,Dennis Township,https://www.dennistwp.org
+New Jersey,Union County,Denville Township,https://www.denvillenj.org/
+New Jersey,Bergen County,Deptford Township,https://www.deptford-nj.org/
+New Jersey,Bergen County,Dover,https://www.dover.nj.us
+New Jersey,Cumberland County,Downe Township,https://www.downetwpnj.org
+New Jersey,Bergen County,Dumont,https://www.dumontnj.gov/
+New Jersey,Middlesex County,Dunellen,https://www.dunellen-nj.gov/
+New Jersey,Monmouth County,Eagleswood Township,https://www.eagleswoodtwpnj.us/
+New Jersey,Camden County,East Amwell Township,https://www.eastamwelltownship.com
+New Jersey,Middlesex County,East Brunswick,https://www.eastbrunswick.org/
+New Jersey,Camden County,East Greenwich Township,https://www.eastgreenwichnj.com/
+New Jersey,Passaic County,East Hanover Township,https://www.easthanovertownship.com
+New Jersey,Atlantic County,East Newark,https://www.boroughofeastnewark.com
+New Jersey,Passaic County,East Orange,https://www.eastorange-nj.gov/
+New Jersey,Bergen County,East Rutherford,https://www.eastrutherfordnj.net/
+New Jersey,Mercer County,East Windsor Township,https://www.east-windsor.nj.us/
+New Jersey,Cumberland County,Eastampton Township,https://www.eastampton.com
+New Jersey,Monmouth County,Eatontown,https://www.eatontownnj.com
+New Jersey,Bergen County,Edgewater,https://www.edgewaternj.org
+New Jersey,Passaic County,Edgewater Park,http://www.edgewaterpark-nj.com
+New Jersey,Middlesex County,Edison,https://www.edisonnj.org/
+New Jersey,Atlantic County,Egg Harbor City,http://www.eggharborcity.org
+New Jersey,Atlantic County,Egg Harbor Township,https://www.ehtgov.org
+New Jersey,Union County,Elizabeth,https://www.elizabethnj.org/
+New Jersey,Union County,Elk Township,https://www.elktownshipnj.gov
+New Jersey,Burlington County,Elmer,https://www.elmerboroughnj.com
+New Jersey,Bergen County,Elmwood Park,https://www.elmwoodparknj.us/
+New Jersey,Hunterdon County,Elsinboro Township,https://www.elsinborotownship.com/
+New Jersey,Bergen County,Emerson,https://www.emersonnj.org/
+New Jersey,Bergen County,Englewood,http://www.cityofenglewood.org
+New Jersey,Bergen County,Englewood Cliffs,http://www.englewoodcliffsnj.org/
+New Jersey,Monmouth County,Englishtown,https://englishtownnj.com/
+New Jersey,File:Flag of Sussex County,Essex Fells,http://www.essexfellsboro.com/
+New Jersey,Atlantic County,Estell Manor,http://www.estellmanor.org/
+New Jersey,Middlesex County,Evesham Township,https://evesham-nj.org/
+New Jersey,Mercer County,Ewing Township,https://www.ewingnj.org
+New Jersey,Monmouth County,Fair Haven,https://www.fairhavennj.org
+New Jersey,Bergen County,Fair Lawn,https://www.fairlawn.org
+New Jersey,File:Flag of Sussex County,Fairfield Township,https://www.fairfieldnj.org/
+New Jersey,Cumberland County,Fairfield Township,http://www.fairfieldtownshipnj.org/
+New Jersey,Bergen County,Fairview,https://www.fairviewborough.com
+New Jersey,Union County,Fanwood,https://www.fanwoodnj.org/
+New Jersey,Somerset County,Far Hills,https://www.farhillsnj.org/
+New Jersey,Monmouth County,Farmingdale,http://www.farmingdaleborough.org/
+New Jersey,Hunterdon County,Flemington,https://www.historicflemington.com
+New Jersey,Monmouth County,Florence Township,https://www.florence-nj.gov/
+New Jersey,Bergen County,Florham Park,https://www.fpboro.net/
+New Jersey,Atlantic County,Folsom,http://www.folsomborough.com/
+New Jersey,Bergen County,Fort Lee,https://www.fortleenj.org/
+New Jersey,File:Flag of Sussex County,Frankford Township,https://www.frankfordtownship.org/
+New Jersey,File:Flag of Sussex County,Franklin,https://www.franklinborough.org/
+New Jersey,Bergen County,Franklin Lakes,https://www.franklinlakes.org/
+New Jersey,Somerset County,Franklin Township,https://www.franklintwpnj.org
+New Jersey,Bergen County,Franklin Township,https://www.franklintownship.com
+New Jersey,Bergen County,Franklin Township,https://www.franklin-twp.org
+New Jersey,Cumberland County,Franklin Township,https://www.franklintwpwarren.org/
+New Jersey,File:Flag of Sussex County,Fredon Township,https://www.fredonnj.gov/
+New Jersey,Monmouth County,Freehold Borough,https://www.freeholdboroughnj.gov/
+New Jersey,Monmouth County,Freehold Township,https://www.twp.freehold.nj.us
+New Jersey,File:Flag of Sussex County,Frelinghuysen Township,https://www.frelinghuysen-nj.us/
+New Jersey,Burlington County,Frenchtown,https://www.frenchtownboro.com/
+New Jersey,Atlantic County,Galloway Township,https://www.gtnj.org
+New Jersey,Bergen County,Garfield,https://www.garfieldnj.org
+New Jersey,Union County,Garwood,https://www.garwood.org
+New Jersey,Camden County,Gibbsboro,https://www.gibbsborotownhall.com
+New Jersey,Union County,Glassboro,https://www.glassboro.org/
+New Jersey,Monmouth County,Glen Gardner,https://www.glengardner.org/
+New Jersey,Essex County,Glen Ridge,https://www.glenridgenj.org
+New Jersey,Bergen County,Glen Rock,https://www.glenrocknj.net/
+New Jersey,Camden County,Gloucester City,http://www.cityofgloucester.org/
+New Jersey,Camden County,Gloucester Township,https://www.glotwp.com
+New Jersey,Bergen County,Green Brook Township,https://www.greenbrooktwp.org
+New Jersey,File:Flag of Sussex County,Green Township,http://www.greentwp.com
+New Jersey,Cumberland County,Greenwich Township,https://www.greenwichtownship.org/
+New Jersey,Bergen County,Greenwich Township,https://www.greenwichtwp.com/
+New Jersey,Cumberland County,Greenwich Township,https://www.historicgreenwichnj.org
+New Jersey,Bergen County,Guttenberg,https://www.guttenbergnj.org
+New Jersey,Bergen County,Hackensack,https://www.hackensack.org
+New Jersey,Warren County,Hackettstown,https://www.hackettstown.net
+New Jersey,Camden County,Haddon Heights,https://www.haddonhts.com
+New Jersey,Camden County,Haddon Township,https://www.haddontwp.com/
+New Jersey,Camden County,Haddonfield,https://www.haddonfieldnj.org/
+New Jersey,Bergen County,Hainesport Township,https://www.hainesporttownship.com
+New Jersey,Passaic County,Haledon,https://www.haledonboronj.com
+New Jersey,File:Flag of Sussex County,Hamburg,https://www.hamburgnj.org/
+New Jersey,Middlesex County,Hamilton Township,https://www.hamiltonnj.com/
+New Jersey,Atlantic County,Hamilton Township,https://www.townshipofhamilton.com
+New Jersey,Atlantic County,Hammonton,https://www.townofhammonton.org/
+New Jersey,Hunterdon County,Hampton,https://www.hamptonboro.org/
+New Jersey,File:Flag of Sussex County,Hampton Township,https://www.hamptontownshipnj.info/
+New Jersey,Morris County,Hanover Township,https://www.hanovertownship.com
+New Jersey,Camden County,Harding Township,https://www.hardingnj.org/
+New Jersey,Hunterdon County,Hardwick Township,https://www.hardwicktwp.com/
+New Jersey,File:Flag of Sussex County,Hardyston Township,https://www.hardyston.com
+New Jersey,Atlantic County,Harmony Township,http://www.harmonytwp-nj.gov
+New Jersey,Bergen County,Harrington Park,http://www.harringtonparknj.gov/
+New Jersey,Hudson County,Harrison,https://townofharrison.com/
+New Jersey,Union County,Harrison Township,https://www.harrisontwp.us
+New Jersey,Bergen County,Harvey Cedars,https://www.harveycedars.org
+New Jersey,Bergen County,Hasbrouck Heights,https://hasbrouck-heightsnj.org/
+New Jersey,Bergen County,Haworth,https://www.haworthnj.org
+New Jersey,Passaic County,Hawthorne,https://www.hawthornenj.org/
+New Jersey,Monmouth County,Hazlet,https://www.hazlettwp.org
+New Jersey,Middlesex County,Helmetta,https://www.helmettaboro.com
+New Jersey,File:Flag of Sussex County,High Bridge,https://www.highbridge.org
+New Jersey,Middlesex County,Highland Park,https://www.hpboro.com
+New Jersey,Monmouth County,Highlands,https://www.highlandsborough.org
+New Jersey,Mercer County,Hightstown,https://www.hightstownborough.com
+New Jersey,Union County,Hillsborough Township,http://www.hillsborough-nj.org
+New Jersey,Bergen County,Hillsdale,https://www.hillsdalenj.org
+New Jersey,Bergen County,Hillside,https://www.hillsidenj.us/
+New Jersey,Camden County,Hi-Nella,https://www.hinellaboro.org
+New Jersey,Hudson County,Hoboken,https://hobokennj.gov
+New Jersey,Bergen County,Ho-Ho-Kus,https://www.hhkborough.com/
+New Jersey,Salem County,Holland Township,https://www.hollandtownshipnj.gov
+New Jersey,Monmouth County,Holmdel Township,https://www.holmdeltownship.com/
+New Jersey,File:Flag of Sussex County,Hopatcong,https://www.hopatcong.org
+New Jersey,Monmouth County,Hope Township,https://www.hopetwp-nj.us/
+New Jersey,Mercer County,Hopewell,https://www.hopewellboro-nj.us/
+New Jersey,Bergen County,Hopewell Township,https://www.hopewelltwp.org
+New Jersey,Cumberland County,Hopewell Township,http://www.hopewelltwp-nj.com
+New Jersey,Monmouth County,Howell Township,https://www.twp.howell.nj.us
+New Jersey,Cumberland County,Independence Township,http://www.independencenj.com
+New Jersey,Monmouth County,Interlaken,https://www.interlakenboro.com
+New Jersey,Camden County,Irvington,https://www.irvington.net
+New Jersey,Hunterdon County,Island Heights,https://www.islandheightsborough.gov/
+New Jersey,Union County,Jackson Township,https://www.jacksontwpnj.net
+New Jersey,Middlesex County,Jamesburg,https://www.jamesburgborough.org/
+New Jersey,Atlantic County,Jefferson Township,https://www.jeffersontownship.net
+New Jersey,Hudson County,Jersey City,https://www.jerseycitynj.gov
+New Jersey,Monmouth County,Keansburg,https://www.keansburgnj.gov/
+New Jersey,Union County,Kearny,https://www.kearnynj.org
+New Jersey,Union County,Kenilworth,https://www.kenilworthborough.com
+New Jersey,Monmouth County,Keyport,https://www.keyportonline.com/
+New Jersey,Camden County,Kingwood Township,https://www.kingwoodtownship.com
+New Jersey,Burlington County,Kinnelon,https://www.kinnelonboro.org/
+New Jersey,Camden County,Knowlton Township,http://www.knowlton-nj.com
+New Jersey,Bergen County,Lacey Township,http://www.laceytownship.org
+New Jersey,File:Flag of Sussex County,Lafayette Township,https://www.lafayettetwp.org
+New Jersey,Monmouth County,Lake Como,http://www.lakecomonj.org
+New Jersey,Bergen County,Lakehurst,https://www.lakehurst-nj.gov/
+New Jersey,Ocean County,Lakewood Township,https://www.lakewoodnj.gov/
+New Jersey,Hunterdon County,Lambertville,https://www.lambertvillenj.org
+New Jersey,Camden County,Laurel Springs,https://www.laurelsprings-nj.com
+New Jersey,Atlantic County,Lavallette,https://www.lavallette.org
+New Jersey,Camden County,Lawnside,https://www.lawnside.net/
+New Jersey,Bergen County,Lawrence Township,https://www.lawrencetwp.com
+New Jersey,Cumberland County,Lawrence Township,https://www.lawrencetwpcumberlandnj.com
+New Jersey,Hunterdon County,Lebanon,https://www.lebanonboro.com
+New Jersey,Cumberland County,Lebanon Township,https://www.lebanontownship.net
+New Jersey,Bergen County,Leonia,https://www.leonianj.gov
+New Jersey,Bergen County,Liberty Township,https://www.libertytownship.org/
+New Jersey,Bergen County,Lincoln Park,https://www.lincolnpark.org
+New Jersey,Union County,Linden,https://linden-nj.gov/
+New Jersey,Camden County,Lindenwold,https://www.lindenwoldnj.gov/
+New Jersey,Atlantic County,Linwood,http://www.linwoodcity.org
+New Jersey,Burlington County,Little Egg Harbor Township,http://www.leht.com/
+New Jersey,Passaic County,Little Falls,https://www.lfnj.com/
+New Jersey,Bergen County,Little Ferry,http://www.littleferrynj.org
+New Jersey,Monmouth County,Little Silver,https://www.littlesilver.org
+New Jersey,Monmouth County,Livingston,https://www.livingstonnj.org/
+New Jersey,Monmouth County,Loch Arbour,https://www.locharbournj.us
+New Jersey,Bergen County,Lodi,http://www.lodi-nj.org
+New Jersey,Morris County,Logan Township,https://www.logan-twp.org
+New Jersey,Monmouth County,Long Beach Township,https://www.longbeachtownship.com
+New Jersey,Monmouth County,Long Branch,https://www.visitlongbranch.com/
+New Jersey,Camden County,Long Hill Township,https://www.longhillnj.gov
+New Jersey,Atlantic County,Longport,https://www.longportnj.gov/
+New Jersey,Bergen County,Lopatcong Township,https://www.lopatcongtwp.com/
+New Jersey,Monmouth County,Lower Alloways Creek Township,https://www.lowerallowayscreek-nj.gov/
+New Jersey,Hudson County,Lower Township,https://www.townshipoflower.org/
+New Jersey,Monmouth County,Lumberton,https://www.lumbertontwp.com
+New Jersey,Bergen County,Lyndhurst,https://www.lyndhurstnj.org
+New Jersey,Burlington County,Madison,https://www.rosenet.org/
+New Jersey,Camden County,Magnolia,https://www.magnolia-nj.org/
+New Jersey,Bergen County,Mahwah,https://www.mahwahtwp.org
+New Jersey,Monmouth County,Manalapan Township,https://mtnj.org/
+New Jersey,Monmouth County,Manasquan,https://www.manasquan-nj.gov
+New Jersey,Middlesex County,Manchester Township,https://www.manchestertwp.com
+New Jersey,Salem County,Mannington Township,https://www.manningtontwp.com
+New Jersey,Passaic County,Mansfield Township,https://www.mansfieldtwp.com/
+New Jersey,Essex County,Mansfield Township,https://mansfieldtownship-nj.gov/
+New Jersey,Bergen County,Mantoloking,https://www.mantoloking.org
+New Jersey,Gloucester County,Mantua Township,https://mantuatownship.com/
+New Jersey,Bergen County,Manville,https://www.manvillenj.org/
+New Jersey,Monmouth County,Maple Shade Township,https://www.mapleshade.com
+New Jersey,Essex County,Maplewood,https://www.maplewoodnj.gov/
+New Jersey,Atlantic County,Margate City,https://www.margate-nj.com
+New Jersey,Monmouth County,Marlboro Township,https://www.marlboro-nj.gov
+New Jersey,Monmouth County,Matawan,https://www.matawanborough.com/
+New Jersey,Cumberland County,Maurice River Township,https://www.mauricerivertwp.org
+New Jersey,Bergen County,Maywood,https://www.maywoodnj.com
+New Jersey,Passaic County,Medford,https://www.medfordtownship.com
+New Jersey,Burlington County,Medford Lakes,https://www.medfordlakes.com
+New Jersey,Bergen County,Mendham Borough,https://www.mendhamnj.org
+New Jersey,Morris County,Mendham Township,https://www.mendhamtownship.org
+New Jersey,Camden County,Merchantville,https://www.merchantvillenj.gov/
+New Jersey,Middlesex County,Metuchen,http://www.metuchennj.org
+New Jersey,Atlantic County,Middle Township,https://www.middletownship.com
+New Jersey,Middlesex County,Middlesex,https://www.middlesexboro-nj.gov/
+New Jersey,Monmouth County,Middletown Township,http://www.middletownnj.org
+New Jersey,Bergen County,Midland Park,https://www.midlandparknj.org/
+New Jersey,Cumberland County,Milford,https://www.milford-nj.us
+New Jersey,Hudson County,Millburn,https://www.twp.millburn.nj.us
+New Jersey,Atlantic County,Millstone,https://www.millstoneboro.org
+New Jersey,Monmouth County,Millstone Township,https://www.millstonenj.gov
+New Jersey,Middlesex County,Milltown,https://www.milltownnj.org
+New Jersey,Cumberland County,Millville,http://www.millvillenj.gov/
+New Jersey,Hunterdon County,Mine Hill Township,https://www.minehill.com
+New Jersey,Monmouth County,Monmouth Beach,https://www.monmouthbeach.us
+New Jersey,Middlesex County,Monroe Township,https://www.monroetwp.com
+New Jersey,Mercer County,Monroe Township,https://www.monroetownshipnj.org
+New Jersey,File:Flag of Sussex County,Montague Township,https://www.montaguenj.org
+New Jersey,Bergen County,Montclair,https://www.montclairnjusa.org
+New Jersey,Union County,Montgomery Township,https://www.montgomery.nj.us
+New Jersey,Bergen County,Montvale,https://www.montvale.org
+New Jersey,Bergen County,Montville,https://www.montvillenj.org/
+New Jersey,Bergen County,Moonachie,https://www.moonachie.us
+New Jersey,Burlington County,Moorestown,https://www.moorestown.nj.us/
+New Jersey,Cumberland County,Morris Plains,https://www.morrisplainsboro.org/
+New Jersey,Union County,Morris Township,https://www.morristwp.com
+New Jersey,Bergen County,Morristown,https://www.townofmorristown.org/
+New Jersey,Monmouth County,Mount Arlington,https://www.mountarlingtonnj.org
+New Jersey,Camden County,Mount Ephraim,https://www.mountephraim-nj.com/
+New Jersey,Burlington County,Mount Holly,https://www.twp.mountholly.nj.us/
+New Jersey,Middlesex County,Mount Laurel,https://www.mountlaurel.com
+New Jersey,Bergen County,Mount Olive Township,https://www.mountolivetwpnj.org
+New Jersey,Atlantic County,Mountain Lakes,https://www.mtnlakes.org
+New Jersey,Union County,Mountainside,https://www.mountainside-nj.com
+New Jersey,Atlantic County,Mullica Township,https://www.mullicatownship.org
+New Jersey,Cumberland County,National Park,https://www.nationalparknj.com/
+New Jersey,Monmouth County,Neptune City,https://www.neptunecitynj.com
+New Jersey,Monmouth County,Neptune Township,https://www.neptunetownship.org
+New Jersey,File:Flag of Sussex County,Netcong,https://www.netcong.org
+New Jersey,Middlesex County,New Brunswick,https://www.cityofnewbrunswick.org
+New Jersey,Passaic County,New Hanover Township,https://www.newhanovertwp.com/
+New Jersey,Bergen County,New Milford,https://www.newmilfordboro.com
+New Jersey,Union County,New Providence,https://www.newprov.org/
+New Jersey,Essex County,Newark,https://www.newarknj.gov/
+New Jersey,Atlantic County,Newfield,https://www.newfieldborough.org
+New Jersey,Sussex County,Newton,https://www.newtontownhall.com/
+New Jersey,Bergen County,North Arlington,https://www.narlington.org
+New Jersey,Camden County,North Bergen,https://www.northbergen.org
+New Jersey,Middlesex County,North Brunswick,https://www.northbrunswicknj.gov/
+New Jersey,Bergen County,North Caldwell,https://www.northcaldwell.org
+New Jersey,Passaic County,North Haledon,https://www.northhaledon.com
+New Jersey,File:Flag of Sussex County,North Hanover Township,https://www.northhanovertwp.com/
+New Jersey,Union County,North Plainfield,https://northplainfield-nj.gov/
+New Jersey,File:Flag of Sussex County,North Wildwood,https://www.northwildwood.com
+New Jersey,Atlantic County,Northfield,http://www.cityofnorthfield.org
+New Jersey,Bergen County,Northvale,https://www.boroughofnorthvale.com
+New Jersey,Bergen County,Norwood,https://www.norwoodboro.org
+New Jersey,Essex County,Nutley,https://www.nutleynj.org/
+New Jersey,Bergen County,Oakland,https://www.oakland-nj.org
+New Jersey,Camden County,Oaklyn,https://www.oaklyn-nj.net
+New Jersey,Bergen County,Ocean City,http://www.ocnj.us/
+New Jersey,Monmouth County,Ocean Gate,http://www.oceangatenjgov.com/
+New Jersey,Monmouth County,Ocean Township,http://www.oceantwp.org
+New Jersey,Bergen County,Ocean Township,https://www.twpoceannj.gov/
+New Jersey,Monmouth County,Oceanport,https://www.oceanportboro.com
+New Jersey,File:Flag of Sussex County,Ogdensburg,https://www.ogdensburgnj.org/
+New Jersey,Middlesex County,Old Bridge Township,https://www.oldbridge.com
+New Jersey,Bergen County,Old Tappan,https://www.oldtappan.net
+New Jersey,Mercer County,Oldmans Township,https://www.oldmanstownship.com
+New Jersey,Bergen County,Oradell,https://www.oradell.org
+New Jersey,Bergen County,Orange,http://www.ci.orange.nj.us
+New Jersey,Middlesex County,Oxford Township,http://www.oxfordtwpnj.org
+New Jersey,Bergen County,Palisades Park,https://www.mypalisadespark.com
+New Jersey,Burlington County,Palmyra,https://www.boroughofpalmyra.com
+New Jersey,Bergen County,Paramus,https://www.paramusborough.org
+New Jersey,Bergen County,Park Ridge,https://www.parkridgeboro.com
+New Jersey,Union County,Parsippany–Troy Hills,https://www.parsippany.net
+New Jersey,Passaic County,Passaic,https://www.cityofpassaic.com/
+New Jersey,Passaic County,Paterson,https://www.patersonnj.gov
+New Jersey,Cumberland County,Paulsboro,https://www.paulsboronj.org/
+New Jersey,Atlantic County,Peapack and Gladstone,http://www.peapackgladstone.org/
+New Jersey,Burlington County,Pemberton,https://www.pembertonborough.us
+New Jersey,Cumberland County,Pemberton Township,https://www.pemberton-twp.com
+New Jersey,Mercer County,Pennington,https://www.penningtonboro.org
+New Jersey,Hunterdon County,Penns Grove,https://www.pennsgrove-nj.org/
+New Jersey,Camden County,Pennsauken Township,http://www.twp.pennsauken.nj.us
+New Jersey,Bergen County,Pennsville Township,https://www.pennsville.org
+New Jersey,Middlesex County,Pequannock Township,https://www.peqtwp.org/
+New Jersey,Middlesex County,Perth Amboy,https://www.perthamboynj.org/
+New Jersey,Warren County,Phillipsburg,http://www.phillipsburgnj.org
+New Jersey,Monmouth County,Pilesgrove Township,http://www.pilesgrovenj.org
+New Jersey,Camden County,Pine Beach,http://www.pinebeachborough.us
+New Jersey,Camden County,Pine Hill,https://www.pinehillboronj.com
+New Jersey,Middlesex County,Piscataway,https://www.piscatawaynj.org
+New Jersey,Morris County,Pitman,https://www.pitman.org
+New Jersey,Bergen County,Pittsgrove Township,https://www.pittsgrovetownship.com
+New Jersey,Union County,Plainfield,https://www.plainfieldnj.gov/
+New Jersey,Middlesex County,Plainsboro Township,https://www.plainsboronj.com/
+New Jersey,Atlantic County,Pleasantville,http://www.pleasantville-nj.org
+New Jersey,File:Flag of Sussex County,Plumsted Township,https://www.plumsted.org
+New Jersey,Burlington County,Pohatcong Township,http://www.pohatcongtwp.org/
+New Jersey,Monmouth County,Point Pleasant,https://www.ptboro.com
+New Jersey,Burlington County,Point Pleasant Beach,https://www.pointpleasantbeach.org
+New Jersey,Passaic County,Pompton Lakes,https://www.pomptonlakes-nj.gov
+New Jersey,Atlantic County,Port Republic,https://www.portrepublicnj.org/
+New Jersey,Mercer County,Princeton,https://www.princetonnj.gov
+New Jersey,Passaic County,Prospect Park,https://www.prospectpark.net
+New Jersey,Atlantic County,Quinton Township,http://www.quintonnj.com/
+New Jersey,Union County,Rahway,http://www.cityofrahway.com
+New Jersey,Bergen County,Ramsey,https://www.ramseynj.com
+New Jersey,Monmouth County,Randolph,https://www.randolphnj.org
+New Jersey,File:Flag of Sussex County,Raritan,https://www.raritanboro.org
+New Jersey,Union County,Raritan Township,https://www.raritan-township.com
+New Jersey,Bergen County,Readington Township,https://www.readingtontwpnj.gov/
+New Jersey,Monmouth County,Red Bank,https://www.redbanknj.org
+New Jersey,Bergen County,Ridgefield,https://www.ridgefieldnj.gov/
+New Jersey,Bergen County,Ridgefield Park,https://www.ridgefieldpark.org
+New Jersey,Bergen County,Ridgewood,https://www.ridgewoodnj.net/
+New Jersey,Passaic County,Ringwood,http://www.ringwoodnj.net
+New Jersey,Bergen County,River Edge,https://www.riveredgenj.org
+New Jersey,Bergen County,River Vale,https://www.rivervalenj.org/
+New Jersey,Hunterdon County,Riverdale,https://www.riverdalenj.gov
+New Jersey,File:Flag of Sussex County,Riverside Township,https://www.riversidetwp.org/
+New Jersey,Burlington County,Riverton,https://www.riverton-nj.com
+New Jersey,Union County,Robbinsville Township,https://www.robbinsville-twp.org
+New Jersey,Bergen County,Rochelle Park,https://www.rochelleparknj.gov
+New Jersey,Bergen County,Rockaway,https://www.rockawayborough.com
+New Jersey,Bergen County,Rockaway Township,https://www.rockawaytownship.org/
+New Jersey,Bergen County,Rockleigh,https://www.rockleighnj.org/
+New Jersey,Cumberland County,Rocky Hill,https://www.rockyhill-nj.gov
+New Jersey,Monmouth County,Roosevelt,https://rooseveltnj.us/
+New Jersey,Passaic County,Roseland,https://www.roselandnj.org
+New Jersey,Union County,Roselle,https://www.boroughofroselle.com
+New Jersey,Union County,Roselle Park,https://www.rosellepark.net
+New Jersey,Union County,Roxbury,https://www.roxburynj.us
+New Jersey,Monmouth County,Rumson,https://www.rumsonnj.gov/
+New Jersey,Camden County,Runnemede,https://www.runnemedenj.org/
+New Jersey,Bergen County,Rutherford,https://www.rutherfordboronj.com/
+New Jersey,Bergen County,Saddle Brook,https://www.saddlebrooknj.us
+New Jersey,Bergen County,Saddle River,https://www.saddleriver.org
+New Jersey,Salem County,Salem,https://www.cityofsalemnj.org
+New Jersey,File:Flag of Sussex County,Sandyston Township,https://www.sandystontownship.com
+New Jersey,Middlesex County,Sayreville,http://www.sayreville.com
+New Jersey,Union County,Scotch Plains,https://www.scotchplainsnj.gov/
+New Jersey,Monmouth County,Sea Bright,https://www.seabrightnj.org
+New Jersey,Monmouth County,Sea Girt,https://www.seagirtboro.com
+New Jersey,Camden County,Sea Isle City,http://www.seaislecitynj.us
+New Jersey,Ocean County,Seaside Heights,https://www.seaside-heightsnj.org/
+New Jersey,Hunterdon County,Seaside Park,https://www.seasideparknj.org/
+New Jersey,Hudson County,Secaucus,https://www.secaucusnj.gov
+New Jersey,Bergen County,Shamong Township,https://www.shamong.net
+New Jersey,Cumberland County,Shiloh,https://www.shilohborough.com/
+New Jersey,Atlantic County,Ship Bottom,https://www.shipbottom.org
+New Jersey,Monmouth County,Shrewsbury,http://www.shrewsburyboro.com
+New Jersey,Monmouth County,Shrewsbury Township,http://www.townshipofshrewsbury.com/
+New Jersey,Camden County,Somerdale,https://www.somerdale-nj.com/
+New Jersey,Atlantic County,Somers Point,http://www.somerspointgov.org
+New Jersey,Somerset County,Somerville,https://www.somervillenj.org
+New Jersey,Middlesex County,South Amboy,https://www.southamboynj.gov/
+New Jersey,Hunterdon County,South Bound Brook,https://www.sbbnj.com/
+New Jersey,Middlesex County,South Brunswick,https://www.southbrunswicknj.gov/
+New Jersey,Bergen County,South Hackensack,https://www.southhackensacknj.org
+New Jersey,File:Flag of Sussex County,South Harrison Township,https://www.southharrison-nj.org
+New Jersey,Bergen County,South Orange,https://www.southorange.org
+New Jersey,Middlesex County,South Plainfield,http://www.southplainfieldnj.com/
+New Jersey,Middlesex County,South River,https://www.southrivernj.org
+New Jersey,File:Flag of Sussex County,South Toms River,https://www.southtomsriver.org/
+New Jersey,Monmouth County,Southampton Township,https://www.southamptonnj.org
+New Jersey,File:Flag of Sussex County,Sparta,https://www.spartanj.org
+New Jersey,Middlesex County,Spotswood,https://www.spotswoodboro.com
+New Jersey,Monmouth County,Spring Lake,https://www.springlakeboro.org
+New Jersey,Monmouth County,Spring Lake Heights,https://www.springlakehts.com
+New Jersey,Union County,Springfield Township,https://springfield-nj.us/
+New Jersey,Burlington County,Springfield Township,https://www.springfieldtownshipnj.org/
+New Jersey,Bergen County,Stafford Township,https://www.twp.stafford.nj.us
+New Jersey,File:Flag of Sussex County,Stanhope,https://www.stanhopenj.gov/
+New Jersey,File:Flag of Sussex County,Stillwater Township,https://www.stillwatertownshipnj.com
+New Jersey,Burlington County,Stockton,http://www.stocktonboronj.us/
+New Jersey,Monmouth County,Stone Harbor,https://www.stoneharbornj.org/
+New Jersey,Cumberland County,Stow Creek Township,https://stowcreektwp.org/
+New Jersey,Camden County,Stratford,https://www.stratfordnj.org
+New Jersey,Union County,Summit,https://www.cityofsummit.org/
+New Jersey,Cumberland County,Surf City,https://surfcitynj.org/
+New Jersey,File:Flag of Sussex County,Sussex,https://www.sussexboro.com
+New Jersey,Gloucester County,Swedesboro,https://www.historicswedesboro.com/
+New Jersey,Bergen County,Tabernacle Township,https://www.townshipoftabernacle-nj.gov
+New Jersey,Camden County,Tavistock,https://www.tavistocknj.org/
+New Jersey,Bergen County,Teaneck,https://www.TeaneckNJ.gov
+New Jersey,Bergen County,Tenafly,https://www.tenaflynj.org
+New Jersey,Bergen County,Teterboro,https://www.teterboronj.org/
+New Jersey,Bergen County,Tewksbury Township,https://www.tewksburytwp.net
+New Jersey,Monmouth County,Tinton Falls,https://www.tintonfalls.com
+New Jersey,Middlesex County,Toms River,https://www.tomsrivertownship.com/
+New Jersey,Passaic County,Totowa,http://www.TotowaNJ.org
+New Jersey,Mercer County,Trenton,https://www.trentonnj.org/
+New Jersey,File:Flag of Sussex County,Tuckerton,https://www.tuckertonborough.com
+New Jersey,Monmouth County,Union Beach,http://www.ubnj.net
+New Jersey,Passaic County,Union City,https://www.ucnj.com/
+New Jersey,Union County,Union Township,https://www.uniontownship.com/
+New Jersey,Bergen County,Union Township,https://www.uniontwp-hcnj.gov
+New Jersey,Cumberland County,Upper Deerfield Township,https://upperdeerfield.com/
+New Jersey,Monmouth County,Upper Freehold Township,http://www.uftnj.com
+New Jersey,File:Flag of Sussex County,Upper Pittsgrove Township,http://www.upperpittsgrovenj.org
+New Jersey,Bergen County,Upper Saddle River,https://www.usrtoday.org
+New Jersey,Camden County,Upper Township,https://www.uppertownship.com
+New Jersey,Atlantic County,Ventnor City,https://www.ventnorcity.org/
+New Jersey,File:Flag of Sussex County,Vernon Township,https://www.vernontwp.com/
+New Jersey,Essex County,Verona,https://www.veronanj.org
+New Jersey,Hunterdon County,Victory Gardens,https://www.victorygardensnj.gov/
+New Jersey,Cumberland County,Vineland,https://www.vinelandcity.org/
+New Jersey,Camden County,Voorhees Township,https://www.voorheesnj.com
+New Jersey,Bergen County,Waldwick,https://www.waldwicknj.org/
+New Jersey,Monmouth County,Wall Township,https://www.wallnj.com
+New Jersey,Bergen County,Wallington,https://www.wallingtonnj.org
+New Jersey,File:Flag of Sussex County,Walpack Township,https://www.twp.walpack.nj.us
+New Jersey,Passaic County,Wanaque,https://www.wanaqueborough.com/
+New Jersey,File:Flag of Sussex County,Wantage Township,https://www.wantagetwp.com
+New Jersey,Middlesex County,Warren Township,https://www.warrennj.org
+New Jersey,Warren County,Washington,http://www.washingtonboro-nj.gov/
+New Jersey,Essex County,Washington Township,https://www.twp.washington.nj.us/
+New Jersey,Bergen County,Washington Township,https://www.wtmorris.org/
+New Jersey,Bergen County,Washington Township,https://www.twpofwashington.us/
+New Jersey,Bergen County,Washington Township,http://www.washington-twp-warren.org
+New Jersey,Cumberland County,Washington Township,https://www.wtbcnj.org
+New Jersey,Bergen County,Watchung,https://www.watchungnj.gov/
+New Jersey,Camden County,Waterford Township,https://www.waterfordtwp.org
+New Jersey,Passaic County,Wayne,https://www.waynetownship.com
+New Jersey,Hudson County,Weehawken,https://www.weehawken-nj.us/
+New Jersey,Warren County,Wenonah,https://www.boroughofwenonah.com/
+New Jersey,Cumberland County,West Amwell Township,https://www.westamwelltwp.org/
+New Jersey,Passaic County,West Caldwell,https://www.westcaldwell.com
+New Jersey,Monmouth County,West Cape May,https://www.westcapemay.us/
+New Jersey,Gloucester County,West Deptford Township,https://www.westdeptford.com
+New Jersey,Monmouth County,West Long Branch,https://www.westlongbranch.org
+New Jersey,Passaic County,West Milford,http://www.westmilford.org/
+New Jersey,Monmouth County,West New York,https://www.westnewyorknj.org/
+New Jersey,Essex County,West Orange,https://www.westorange.org/
+New Jersey,File:Flag of Sussex County,West Wildwood,https://www.westwildwood.org
+New Jersey,Union County,West Windsor,http://www.westwindsornj.org
+New Jersey,Atlantic County,Westampton,https://www.westamptonnj.gov
+New Jersey,Union County,Westfield,https://www.westfieldnj.gov/
+New Jersey,Burlington County,Westville,https://westville-nj.com/
+New Jersey,Bergen County,Westwood,https://www.westwoodnj.gov/
+New Jersey,Atlantic County,Weymouth Township,https://www.weymouthnj.org
+New Jersey,Monmouth County,Wharton,https://www.whartonnj.com
+New Jersey,Monmouth County,White Township,https://www.white-township.com/
+New Jersey,Cape May County,Wildwood,https://www.wildwoodnj.org/
+New Jersey,Bergen County,Wildwood Crest,https://www.wildwoodcrest.org
+New Jersey,Bergen County,Willingboro Township,https://www.willingborotwp.org/
+New Jersey,Union County,Winfield Township,https://www.winfield-nj.org
+New Jersey,Camden County,Winslow Township,https://www.winslowtownship.com/
+New Jersey,Camden County,Woodbine,http://www.boroughofwoodbine.net
+New Jersey,Middlesex County,Woodbridge Township,https://www.twp.woodbridge.nj.us/
+New Jersey,Burlington County,Woodbury,https://www.woodbury.nj.us
+New Jersey,Bergen County,Woodbury Heights,https://bwhnj.com/
+New Jersey,Bergen County,Woodcliff Lake,https://www.wclnj.com
+New Jersey,Passaic County,Woodland Park,http://www.wpnj.us/
+New Jersey,Hunterdon County,Woodland Township,https://www.woodlandtownship.org
+New Jersey,Camden County,Woodlynne,https://www.woodlynnenj.org/
+New Jersey,Bergen County,Wood-Ridge,https://www.njwoodridge.org
+New Jersey,File:Flag of Sussex County,Woodstown,https://www.historicwoodstown.org
+New Jersey,Bergen County,Woolwich Township,https://www.woolwichtwp.org
+New Jersey,Cumberland County,Wrightstown,https://www.wrightstownborough.com
+New Jersey,Bergen County,Wyckoff,https://www.wyckoff-nj.com/
+New Mexico,Otero County,Alamogordo,http://ci.alamogordo.nm.us/
+New Mexico,Bernalillo County,Albuquerque,https://cabq.gov
+New Mexico,Colfax County,Angel Fire,http://www.afgov.com
+New Mexico,Doña Ana County,Anthony,https://www.cityofanthonynm.com/
+New Mexico,Eddy County,Artesia,http://www.artesianm.gov
+New Mexico,San Juan County,Aztec,http://www.aztecnm.gov/
+New Mexico,Grant County,Bayard,http://www.cityofbayardnm.com
+New Mexico,Valencia County,Belen,http://www.belen-nm.gov/
+New Mexico,San Juan County,Bloomfield,http://www.bloomfieldnm.gov/
+New Mexico,Valencia County,Bosque Farms,http://www.bosquefarmsnm.gov
+New Mexico,Lincoln County,Capitan,http://villageofcapitan.org
+New Mexico,Eddy County,Carlsbad,http://www.cityofcarlsbadnm.com
+New Mexico,Lincoln County,Carrizozo,http://www.townofcarrizozo.com/
+New Mexico,Rio Arriba County,Chama,http://chamavillage.com/
+New Mexico,Colfax County,Cimarron,http://villageofcimarron.net
+New Mexico,Union County,Clayton,http://www.claytonnm.org
+New Mexico,Curry County,Clovis,http://www.cityofclovis.org
+New Mexico,Luna County,Columbus,http://www.historicvillageofcolumbus.org/index.html
+New Mexico,Lincoln County,Corona,http://www.villageofcorona.com
+New Mexico,Sandoval County,Corrales,http://www.corrales-nm.org/
+New Mexico,Luna County,Deming,http://cityofdeming.org
+New Mexico,Colfax County,Eagle Nest,http://www.eaglenest.org
+New Mexico,Santa Fe County,Edgewood,http://www.edgewood-nm.gov
+New Mexico,Sierra County,Elephant Butte,http://cityofelephantbutte.com/
+New Mexico,Rio Arriba County,Espanola,http://www.cityofespanola.org/
+New Mexico,Lea County,Eunice,http://www.cityofeunice.org
+New Mexico,San Juan County,Farmington,http://www.fmtn.org/
+New Mexico,McKinley County,Gallup,http://www.gallupnm.gov/
+New Mexico,Cibola County,Grants,https://www.cityofgrants.net/
+New Mexico,Doña Ana County,Hatch,http://www.villageofhatch.org/
+New Mexico,Lea County,Hobbs,http://www.hobbsnm.org
+New Mexico,Grant County,Hurley,http://www.townofhurley.us
+New Mexico,Lea County,Jal,http://www.cityofjal.us
+New Mexico,Sandoval County,Jemez Springs,http://www.jemezsprings.org
+New Mexico,San Juan County,Kirtland,http://kirtlandnm.org
+New Mexico,Doña Ana County,Las Cruces,http://www.las-cruces.org
+New Mexico,San Miguel County,Las Vegas,http://www.lasvegasnm.gov
+New Mexico,Valencia County,Los Lunas,http://www.loslunasnm.gov/
+New Mexico,Bernalillo County,Los Ranchos de Albuquerque,http://losranchosnm.gov
+New Mexico,Eddy County,Loving,http://villageofloving.org
+New Mexico,Lea County,Lovington,http://lovington.org
+New Mexico,Doña Ana County,Mesilla,http://mesillanm.gov
+New Mexico,Torrance County,Moriarty,http://www.cityofmoriarty.org/
+New Mexico,Torrance County,Mountainair,http://mountainairnm.gov
+New Mexico,Roosevelt County,Portales,http://www.portalesnm.org
+New Mexico,Taos County,Questa,http://questa-nm.com/
+New Mexico,Colfax County,Raton,http://ratonnm.gov
+New Mexico,Taos County,Red River,http://www.redriver.org/
+New Mexico,Valencia County,Rio Communities,http://www.riocommunities.net
+New Mexico,Sandoval County,Rio Rancho,http://www.ci.rio-rancho.nm.us
+New Mexico,Chaves County,Roswell,http://www.roswell-nm.gov
+New Mexico,Lincoln County,Ruidoso,http://ruidoso-nm.gov
+New Mexico,Lincoln County,Ruidoso Downs,http://ruidosodowns.us
+New Mexico,Grant County,Santa Clara,http://www.villageofsantaclara.org
+New Mexico,Santa Fe County,Santa Fe,https://santafenm.gov
+New Mexico,Guadalupe County,Santa Rosa,http://santarosanm.org
+New Mexico,Grant County,Silver City,http://www.townofsilvercity.org
+New Mexico,Socorro County,Socorro,http://www.socorronm.gov
+New Mexico,Doña Ana County,Sunland Park,http://www.sunlandpark-nm.gov/
+New Mexico,Taos County,Taos,http://www.taosgov.com/
+New Mexico,Taos County,Taos Ski Valley,http://www.skitaos.com/
+New Mexico,Lea County,Tatum,http://townoftatum.org
+New Mexico,Bernalillo County,Tijeras,https://www.tijerasnm.gov/
+New Mexico,Sierra County,Truth or Consequences,http://torcnm.org/
+New Mexico,Quay County,Tucumcari,http://www.cityoftucumcari.com
+New Mexico,Otero County,Tularosa,http://www.villageoftularosa.com
+New Mexico,Mora County,Wagon Mound,http://sangres.com/newmexico/mora/wagonmound.htm
+New York,Jefferson County,Adams,http://www.townofadams.com
+New York,Jefferson County,Adams (village),http://villageofadams.com
+New York,Steuben County,Addison,https://www.townofaddison.info/default.html
+New York,Chenango County,Afton,http://www.townofafton.com/
+New York,Chenango County,Afton (village),http://villageofaftonny.com
+New York,Rockland County,Airmont,http://www.airmont.org
+New York,Erie County,Akron,http://www.erie.gov/akron/
+New York,Albany County,Albany,https://www.albanyny.gov/
+New York,Orleans County,Albion (town),http://www.townofalbion.com
+New York,Orleans County,Albion (village),http://vil.albion.ny.us
+New York,Erie County,Alden,http://alden.erie.gov
+New York,Erie County,Alden (village),http://www2.erie.gov/village_alden
+New York,Genesee County,Alexander (village),http://www.townofalexander.com/village/
+New York,Jefferson County,Alexandria,http://townofalexandria.org
+New York,Jefferson County,Alexandria Bay,http://www.villageofalexandriabay.com
+New York,Allegany County,Alfred,http://townofalfred.com
+New York,Allegany County,Alfred (village),http://www.alfredny.org
+New York,Cattaraugus County,Allegany (town),http://allegany.org/town.php?Town%20of%20Allegany
+New York,Cattaraugus County,Allegany (village),http://www.allegany.org
+New York,Allegany County,Almond,http://www.almondny.us
+New York,Allegany County,Almond (village),http://almondny.com/
+New York,Albany County,Altamont,https://www.altamontvillage.org/
+New York,Erie County,Amherst,http://www.amherst.ny.us
+New York,Allegany County,Amity,http://www.townofamity-ny.com
+New York,Suffolk County,Amityville,http://amityville.com
+New York,Montgomery County,Amsterdam (city),http://www.amsterdamny.gov
+New York,Montgomery County,Amsterdam (town),http://www.townofamsterdam.org/
+New York,Allegany County,Andover,http://www.townofandoverny.com/
+New York,Allegany County,Andover (village),http://www.andoverny.org/
+New York,Allegany County,Angelica,http://angelicany.org
+New York,Allegany County,Angelica (village),http://www.angelicany.com
+New York,Erie County,Angola,http://www.villageofangola.org
+New York,Jefferson County,Antwerp (village),http://villageofantwerp.net
+New York,Wyoming County,Arcade (village),http://www.villageofarcade.org
+New York,Wayne County,Arcadia,https://townarcadia.digitaltowpath.org/
+New York,Westchester County,Ardsley,http://www.ardsleyvillage.com/
+New York,Washington County,Argyle,http://townofargyleny.com/
+New York,Washington County,Argyle (village),http://www.argyle-village.org/
+New York,Chemung County,Ashland,http://townofashland.net
+New York,Greene County,Athens (village),http://www.visithistoricathens.com
+New York,Nassau County,Atlantic Beach,http://www.villageofatlanticbeach.com/
+New York,Wyoming County,Attica (town),http://www.townofattica.net/
+New York,Wyoming County,Attica (village),http://www.attica.org
+New York,Cayuga County,Auburn,http://www.auburnny.gov
+New York,Cayuga County,Aurelius,http://www.cayugacounty.us/aurelius
+New York,Cayuga County,Aurora,http://auroranewyork.us
+New York,Erie County,Aurora,http://townofaurora.com
+New York,Livingston County,Avon,http://www.avon-ny.org
+New York,Livingston County,Avon (village),http://avon-ny.org
+New York,Suffolk County,Babylon,https://www.townofbabylon.com/
+New York,Suffolk County,Babylon (village),https://www.villageofbabylonny.gov/
+New York,Chenango County,Bainbridge,http://bainbridgeny.org
+New York,Onondaga County,Baldwinsville,http://www.baldwinsville.org
+New York,Saratoga County,Ballston,http://www.townofballstonny.org/
+New York,Saratoga County,Ballston Spa,http://www.villageofballstonspa.org/
+New York,Niagara County,Barker,https://www.villageofbarker.org/
+New York,Tioga County,Barton,http://townofbarton.org/
+New York,Genesee County,Batavia,http://www.batavianewyork.com/
+New York,Steuben County,Bath,http://www.townofbathny.org
+New York,Nassau County,Baxter Estates,http://www.baxterestates.org
+New York,Nassau County,Bayville,http://bayvilleny.gov
+New York,Dutchess County,Beacon,http://www.cityofbeacon.org
+New York,Suffolk County,Belle Terre,http://www.belleterre.us
+New York,Suffolk County,Bellerose,http://www.bellerosevillage.org
+New York,Suffolk County,Bellport,http://www.bellportvillageny.gov/
+New York,Allegany County,Belmont,http://belmontny.org
+New York,Chautauqua County,Bemus Point,http://bemuspointny.org
+New York,Yates County,Benton,https://www.townofbenton.us/
+New York,Genesee County,Bergen (village),http://www.villageofbergen.com
+New York,Broome County,Binghamton,http://www.binghamton-ny.gov
+New York,Jefferson County,Black River,http://www.blackriverny.org
+New York,Erie County,Blasdell,http://www.blasdell.org
+New York,Ontario County,Bloomfield,http://www.bloomfieldny.org/
+New York,Orange County,Blooming Grove,http://www.townofbloominggroveny.com/
+New York,Sullivan County,Bloomingburg,https://bloomingburg.us/
+New York,Allegany County,Bolivar,http://www.townofbolivar.com
+New York,Oneida County,Boonville (village),http://www.village.boonville.ny.us
+New York,Erie County,Brant,http://www.brantny.com
+New York,Putnam County,Brewster,http://www.brewstervillage-ny.gov/
+New York,Westchester County,Briarcliff Manor,http://www.briarcliffmanor.org
+New York,Suffolk County,Brightwaters,http://www.villageofbrightwaters.com
+New York,Fulton County,Broadalbin,http://www.townofbroadalbinny.org
+New York,Monroe County,Brockport,http://www.brockportny.org/
+New York,Chautauqua County,Brocton,http://www.brocton.org
+New York,Chautauqua County,Bronxville,http://villageofbronxville.com
+New York,Suffolk County,Brookhaven,https://www.brookhavenny.gov/
+New York,Nassau County,Brookville,http://www.villageofbrookville.com
+New York,Jefferson County,Brownville,http://townofbrownville.com
+New York,Jefferson County,Brownville (village),http://www.villageofbrownvilleny.com
+New York,Cayuga County,Brutus,http://www.townofbrutus.org
+New York,Westchester County,Buchanan,http://www.villageofbuchanan.com
+New York,Erie County,Buffalo,https://www.buffalony.gov/
+New York,Allegany County,Burns,http://townofburnsny.com
+New York,Chautauqua County,Busti,http://www.townofbusti.com
+New York,Livingston County,Caledonia,http://www.townofcaledoniany.com
+New York,Livingston County,Caledonia (village),http://villageofcaledoniany.org
+New York,Washington County,Cambridge,http://townofcambridgeny.org/
+New York,Washington County,Cambridge (village),http://www.cambridgeny.gov/
+New York,Onondaga County,Camillus,https://www.townofcamillus.com/
+New York,Ontario County,Canandaigua (city),http://canandaigua.govoffice.com
+New York,Allegany County,Canaseraga,http://www.canaseragany.org
+New York,Madison County,Canastota,http://www.canastota.com
+New York,Tioga County,Candor (village),http://www.tiogacountyny.com/towns-villages/candor-village-of.html
+New York,St. Lawrence County,Canton,https://cantonny.gov/
+New York,St. Lawrence County,Canton (village),http://www.cantonnewyork.us/
+New York,Jefferson County,Cape Vincent,http://www.townofcapevincent.org
+New York,Jefferson County,Cape Vincent (village),http://www.villageofcapevincent.org
+New York,Jefferson County,Carthage,http://www.villageofcarthageny.com
+New York,Chautauqua County,Cassadaga,http://www.cassadaganewyork.org
+New York,Wyoming County,Castile (village),http://www.castileny.com
+New York,Rensselaer County,Castleton-on-Hudson,http://www.castleton-on-hudson.org/
+New York,Lewis County,Castorland,http://castorland.racog.org
+New York,Cayuga County,Cato (town),http://www.cayugacounty.us/townofcato
+New York,Cayuga County,Cato (village),http://villageofcatony.com
+New York,Greene County,Catskill (town),http://www.townofcatskillny.gov
+New York,Greene County,Catskill (village),http://www.villageofcatskill.net
+New York,Cattaraugus County,Cattaraugus,http://cattaraugusny.org
+New York,Cayuga County,Cayuga,http://www.villagecayugany.com
+New York,Tompkins County,Cayuga Heights,http://www.cayuga-heights.ny.us/
+New York,Madison County,Cazenovia,https://towncazenovia.digitaltowpath.org:10079/content
+New York,Nassau County,Cedarhurst,http://www.cedarhurst.gov
+New York,Chautauqua County,Celoron,http://celoronny.org
+New York,Oswego County,Central Square,https://www.villageofcentralsquare-ny.us/
+New York,Oswego County,Centre Island,http://centreisland.org
+New York,Jefferson County,Champion,http://champion.racog.org
+New York,Clinton County,Champlain,http://www.townofchamplain.com
+New York,Clinton County,Champlain (village),http://www.vchamplain.com
+New York,Chautauqua County,Charlotte,http://charlotteny.org
+New York,Franklin County,Chateaugay (town),http://www.chateaugayny.org
+New York,Columbia County,Chatham (town),http://www.chathamnewyork.us
+New York,Columbia County,Chatham (village),http://villageofchatham.com
+New York,Chautauqua County,Chautauqua,http://townofchautauqua.com
+New York,Erie County,Cheektowaga (town),http://www.tocny.org
+New York,Otsego County,Cherry Valley,http://www.cherryvalleyny.us/
+New York,Orange County,Chester,http://chester-ny.gov/
+New York,Orange County,Chester (village),http://www.villageofchesterny.com/
+New York,Rockland County,Chestnut Ridge,http://www.chestnutridgevillage.org
+New York,Madison County,Chittenango,http://www.chittenango.org/
+New York,Monroe County,Churchville,http://www.churchville.net/
+New York,Onondaga County,Cicero,http://www.ciceronewyork.net/
+New York,Monroe County,Clarkson,http://www.clarksonny.org/
+New York,Rockland County,Clarkstown,https://www.clarkstown.gov/
+New York,Columbia County,Claverack,http://townofclaverack.com
+New York,Onondaga County,Clay,https://www.townofclay.org/
+New York,Jefferson County,Clayton,http://townofclayton.com
+New York,Jefferson County,Clayton (village),http://www.villageofclayton.com
+New York,Oswego County,Cleveland,http://www.villageofcleveland-ny.us/
+New York,Ontario County,Clifton Springs,http://www.cliftonspringsny.org/
+New York,Oneida County,Clinton,https://villageclinton.digitaltowpath.org:10037/content
+New York,Wayne County,Clyde,http://www.clydeny.com
+New York,Schoharie County,Cobleskill (town),https://www4.schohariecounty-ny.gov/government/town-of-cobleskill/
+New York,Schoharie County,Cobleskill (village),https://www.cobleskillvillage.com/
+New York,Albany County,Coeymans,http://www.coeymans.org/
+New York,Albany County,Cohoes,https://www.ci.cohoes.ny.us/
+New York,Putnam County,Cold Spring,http://coldspringny.gov
+New York,Erie County,Collins,http://www.townofcollins.com
+New York,Albany County,Colonie,http://www.colonie.org/
+New York,Albany County,Colonie (village),http://www.colonievillage.org
+New York,Erie County,Concord,http://www.townofconcordny.com
+New York,Oswego County,Constantia (town),http://townconstantia.org
+New York,Otsego County,Cooperstown,http://www.cooperstownny.org/
+New York,Genesee County,Corfu,http://www.corfuny.com
+New York,Saratoga County,Corinth,http://www.townofcorinthny.com/
+New York,Saratoga County,Corinth (village),http://www.villageofcorinthny.com/
+New York,Steuben County,Corning (city),http://cityofcorning.com
+New York,Orange County,Cornwall,http://www.cornwallny.com/
+New York,Orange County,Cornwall-on-Hudson,http://cornwall-on-hudson.org/
+New York,Cortland County,Cortland,http://cortland.org
+New York,Westchester County,Cortlandt,http://townofcortlandt.com
+New York,Cortland County,Cortlandville,http://cortlandville.org
+New York,Cortland County,Cove Neck,http://www.coveneck.org
+New York,Seneca County,Covert,http://www.townofcovert.org/
+New York,Greene County,Coxsackie,https://coxsackie.org/
+New York,Greene County,Coxsackie (village),http://villageofcoxsackie.com
+New York,Lewis County,Croghan (town),http://www.townofcroghan.com
+New York,Lewis County,Croghan (village),http://www.croghanny.org
+New York,Westchester County,Croton-on-Hudson,http://www.crotononhudson-ny.gov/
+New York,Allegany County,Cuba (village),http://www.cubany.org
+New York,Clinton County,Dannemora (town),http://townofdannemora.com
+New York,Clinton County,Dannemora (village),http://www.villageofdannemora.com
+New York,Livingston County,Dansville,http://www.dansvilleny.us
+New York,Cattaraugus County,Dayton,http://daytonny.org
+New York,Schenectady County,Delanson,http://www.delanson.net
+New York,Cattaraugus County,Delevan,http://delevanny.org
+New York,Delaware County,Delhi,http://www.townofdelhiny.com
+New York,Delaware County,Delhi (village),http://villageofdelhi.com
+New York,Lewis County,Denmark,https://towndenmark.digitaltowpath.org:10792/content/
+New York,Erie County,Depew,http://www.villageofdepew.org
+New York,Broome County,Deposit (village),http://villageofdeposit.org
+New York,Suffolk County,Dering Harbor,http://deringharborvillage.org
+New York,Madison County,DeRuyter,https://www.deruyternygov.us/
+New York,Madison County,DeRuyter (village),http://www.deruyternygov.us/
+New York,Onondaga County,DeWitt,http://www.townofdewitt.com/
+New York,Jefferson County,Dexter,http://villageofdexterny.com
+New York,Broome County,Dickinson,http://www.townofdickinson.com
+New York,Westchester County,Dobbs Ferry,http://www.dobbsferry.com
+New York,Herkimer County,Dolgeville,http://www.villageofdolgeville.org
+New York,Tompkins County,Dryden,http://www.dryden.ny.us
+New York,Tompkins County,Dryden (village),http://www.dryden-ny.org
+New York,Schenectady County,Duanesburg,http://www.duanesburg.net/
+New York,Yates County,Dunkirk,http://www.dunkirktoday.com/
+New York,Madison County,Earlville,http://www.villageofearlville.com
+New York,Aurora,East Aurora,http://www.east-aurora.ny.us
+New York,Ontario County,East Bloomfield,http://www.townofeastbloomfield.org/
+New York,Suffolk County,East Hampton (town),http://ehamptonny.gov
+New York,Suffolk County,East Hampton (village),http://www.easthamptonvillage.org
+New York,Nassau County,East Hills,http://www.villageofeasthills.org
+New York,Rensselaer County,East Nassau,http://villageofeastnassau.org/content
+New York,Monroe County,East Rochester,http://www.eastrochester.org/
+New York,Monroe County,East Rockaway,http://www.villageofeastrockaway.org
+New York,Onondaga County,East Syracuse,http://www.villageofeastsyracuse.com
+New York,Onondaga County,East Williston,http://www.eastwilliston.org
+New York,Westchester County,Eastchester (town),http://www.eastchester.org
+New York,Genesee County,Elba,http://elbanewyork.com/
+New York,Genesee County,Elba (village),http://elbanewyork.com
+New York,Onondaga County,Elbridge,http://townofelbridge.com/
+New York,Onondaga County,Elbridge (village),http://www.villageofelbridge.com
+New York,Chautauqua County,Ellery,http://elleryny.org
+New York,Chautauqua County,Ellicott,http://townofellicott.com
+New York,Cattaraugus County,Ellicottville,http://www.ellicottvillegov.com
+New York,Cattaraugus County,Ellicottville (village),http://www.ellicottvillegov.com
+New York,Chemung County,Elmira,http://www.cityofelmira.net/
+New York,Chemung County,Elmira (town),http://www.townofelmira.com
+New York,Chemung County,Elmira Heights,http://elmiraheights.org
+New York,Westchester County,Elmsford,http://www.elmsfordny.org
+New York,Broome County,Endicott,http://www.endicottny.com
+New York,Steuben County,Erwin,http://www.erwinny.org
+New York,Schoharie County,Esperance (town),https://www4.schohariecounty-ny.gov/government/town-of-esperance/
+New York,Schoharie County,Esperance (village),http://www.schohariecounty-ny.gov/CountyWebSite/villesp/index.jsp
+New York,Erie County,Evans,http://www.townofevans.org
+New York,Cayuga County,Fair Haven,https://www.cayugacounty.us/620/Fair-Haven-Village
+New York,Monroe County,Fairport,http://www.village.fairport.ny.us/
+New York,Chautauqua County,Falconer,http://falconerny.org
+New York,Sullivan County,Fallsburg,http://www.townoffallsburg.com
+New York,Nassau County,Farmingdale,http://www.farmingdalevillage.com
+New York,Seneca County,Fayette,http://townoffayetteny.org/
+New York,Onondaga County,Fayetteville,http://www.fayettevilleny.gov
+New York,Dutchess County,Fishkill,http://vofishkill.us
+New York,Dutchess County,Fishkill (town),http://www.fishkill-ny.gov
+New York,Delaware County,Fleischmanns,http://www.fleischmannsny.com/
+New York,Delaware County,Floral Park,http://www.fpvillage.org
+New York,Orange County,Florida,http://www.villageoffloridany.org/%7C
+New York,Nassau County,Flower Hill,http://www.villageflowerhill.org
+New York,Montgomery County,Fonda,https://villagefonda.digitaltowpath.org:10193/content
+New York,Washington County,Fort Ann,https://www.townoffortannny.com/
+New York,Washington County,Fort Ann (village),http://www.fortann.us/
+New York,Washington County,Fort Edward (town),http://www.fortedwardnewyork.net
+New York,Washington County,Fort Edward (village),http://villageoffortedward.com//index.asp
+New York,Montgomery County,Fort Plain,http://www.villageoffortplain.com/
+New York,Herkimer County,Frankfort (town),http://www.townoffrankfort.com
+New York,Herkimer County,Frankfort (village),http://www.herkimercounty.org/content/CommunityCategories/Home/:item=1&field=groups;/content/CommunityGroups/View/7Village
+New York,Cattaraugus County,Franklinville (town),http://franklinvilleny.org
+New York,Cattaraugus County,Franklinville (village),http://www.franklinvilleny.org
+New York,Chautauqua County,Fredonia,https://www.villageoffredoniany.com/
+New York,Chautauqua County,Freeport,http://www.freeportny.com
+New York,Tompkins County,Freeville,http://freevilleny.org
+New York,Oswego County,Fulton,http://cityoffulton.com
+New York,Montgomery County,Fultonville,http://fultonville.org/
+New York,Wyoming County,Gainesville (village),http://www.wyomingco.net/towns/villageofgainesville.htm
+New York,Wayne County,Galen,http://townofgalen.org/
+New York,Nassau County,Garden City,http://www.gardencityny.net
+New York,Livingston County,Geneseo,http://www.geneseony.org
+New York,Ontario County,Geneva,http://www.geneva.ny.us
+New York,Herkimer County,German Flatts,http://germanflatts.org
+New York,Chautauqua County,Gerry,http://www.gerryny.us
+New York,Columbia County,Ghent,http://townofghent.org
+New York,Otsego County,Gilbertsville,http://gilbertsville.com/
+New York,Nassau County,Glen Cove,https://glencoveny.gov/
+New York,Warren County,Glens Falls,http://www.cityofglensfalls.com
+New York,Schenectady County,Glenville,http://www.townofglenville.org
+New York,Fulton County,Gloversville,http://www.cityofgloversville.com
+New York,Orange County,Goshen (village),https://www.villageofgoshen-ny.gov/
+New York,Cattaraugus County,Gowanda,http://villageofgowanda.com
+New York,Rockland County,Grand View-on-Hudson,https://www.gvoh-ny.gov/
+New York,Washington County,Great Neck (village),http://greatneckvillage.org
+New York,Nassau County,Great Neck Estates,http://www.vgne.com
+New York,Nassau County,Great Neck Plaza,http://www.greatneckplaza.net
+New York,Albany County,Green Island,http://www.villageofgreenisland.com/
+New York,Westchester County,Greenburgh,http://www.greenburghny.com
+New York,Chenango County,Greene,http://nygreene.com
+New York,Chenango County,Greene (village),http://nygreene.com/villageofgreene.htm
+New York,Suffolk County,Greenport,http://www.villageofgreenport.org
+New York,Washington County,Greenwich (town),http://www.greenwichny.org/
+New York,Washington County,Greenwich (village),http://www.villageofgreenwich.org
+New York,Tompkins County,Groton (town),http://townofgrotonny.org/
+New York,Tompkins County,Groton (village),http://www.grotonny.org/village
+New York,Albany County,Guilderland,https://www.townofguilderland.org/
+New York,Montgomery County,Hagaman,http://www.co.montgomery.ny.us/web/municipal/hagaman/
+New York,Erie County,Hamburg,https://townofhamburgny.gov
+New York,Erie County,Hamburg (village),http://www.villagehamburg.com
+New York,Madison County,Hamilton,http://www.townofhamiltonny.org
+New York,Madison County,Hamilton (village),http://hamilton-ny.gov
+New York,St. Lawrence County,Hammond,https://townofhammondny.com/
+New York,Steuben County,Hammondsport,https://hammondsport.us/
+New York,Delaware County,Hancock,http://www.hancockny.org
+New York,Delaware County,Hancock (village),http://villageofhancockny.com
+New York,Oswego County,Hannibal,https://hannibalny.org/
+New York,Chautauqua County,Hanover,http://hanoverny.com
+New York,Chautauqua County,Harmony,http://thetownofharmony.com
+New York,Franklin County,Harrietstown,http://www.harrietstown.org
+New York,Orange County,Harriman,https://www.villageofharriman.org/
+New York,Westchester County,Harrison,http://www.harrison-ny.gov
+New York,Westchester County,Hastings-on-Hudson,http://hastingsgov.org/
+New York,Rockland County,Haverstraw,http://www.townofhaverstraw.org/
+New York,Rockland County,Haverstraw (village),http://www.voh-ny.com/
+New York,Suffolk County,Head of the Harbor,http://www.villagehohny.org
+New York,Nassau County,Hempstead,https://www.hempsteadny.gov/
+New York,Suffolk County,Hempstead (village),http://villageofhempstead.org
+New York,Herkimer County,Herkimer (town),http://townofherkimer.org
+New York,Herkimer County,Herkimer (village),http://village.herkimer.ny.us
+New York,St. Lawrence County,Heuvelton,http://www.heuveltonny.us/
+New York,St. Lawrence County,Hewlett Bay Park,https://hewlettbayparkny.gov/
+New York,Nassau County,Hewlett Harbor,http://www.hewlettharbor.org
+New York,Nassau County,Hewlett Neck,http://hewlettneck.org/
+New York,Orange County,Highland Falls,http://www.highlandfallsny.org/
+New York,Orange County,Highlands,http://highlands-ny.gov/
+New York,Rockland County,Hillburn,http://www.hillburn.org/
+New York,Monroe County,Hilton,http://www.hiltonny.org/
+New York,Delaware County,Hobart,http://www.hobartny.net
+New York,Oneida County,Holland Patent,https://villagehollandpatent.digitaltowpath.org:10039/content
+New York,Orleans County,Holley,http://www.villageofholley.org/
+New York,Cortland County,Homer,http://www.townofhomer.org
+New York,Cortland County,Homer (village),http://www.homerny.org
+New York,Monroe County,Honeoye Falls,http://www.villageofhoneoyefalls.org/
+New York,Rensselaer County,Hoosick Falls,http://www.villageofhoosickfalls.com/
+New York,Steuben County,Hornell,https://www.cityofhornell.com/
+New York,Chemung County,Horseheads,http://townofhorseheads.org
+New York,Chemung County,Horseheads (village),http://horseheads.org
+New York,Jefferson County,Hounsfield,http://townofhounsfield-ny.org
+New York,Chemung County,Hudson,http://www.cityofhudson.org
+New York,Washington County,Hudson Falls,https://www.villageofhudsonfalls.com/
+New York,Greene County,Hunter (village),http://villageofhunterny.org
+New York,Suffolk County,Huntington,http://huntingtonny.gov
+New York,Suffolk County,Huntington Bay,http://www.huntingtonbay.org
+New York,Herkimer County,Ilion,http://ilionny.com
+New York,Seneca County,Interlaken,http://www.interlaken-ny.us/
+New York,Cayuga County,Ira,http://www.cayugacounty.us/ira
+New York,Westchester County,Irvington,http://www.irvingtonny.gov/
+New York,Nassau County,Island Park,http://www.villageofislandpark.com
+New York,Suffolk County,Islandia,http://www.newvillageofislandia.com
+New York,Suffolk County,Islip,https://www.islipny.gov
+New York,Tompkins County,Ithaca,http://www.cityofithaca.org
+New York,Tompkins County,Ithaca (town),http://www.town.ithaca.ny.us
+New York,Chautauqua County,Jamestown,http://www.jamestownny.net/
+New York,Sullivan County,Jeffersonville,http://villageofjeffersonvilleny.com/
+New York,Yates County,Jerusalem,http://jerusalem-ny.org/index.htm
+New York,Broome County,Johnson City,http://www.villageofjc.com
+New York,Fulton County,Johnstown (city),http://cityofjohnstown.ny.gov
+New York,Onondaga County,Jordan,https://villageofjordan.org/
+New York,Erie County,Kenmore,http://www.villageofkenmore.org
+New York,Erie County,Kensington,http://vok-ny.com
+New York,Columbia County,Kinderhook (town),http://www.kinderhook-ny.gov
+New York,Columbia County,Kinderhook (village),http://villageofkinderhook.org
+New York,Columbia County,Kings Point,http://www.villageofkingspoint.org
+New York,Ulster County,Kingston,https://kingston-ny.gov
+New York,Oneida County,Kirkland,https://townkirkland.digitaltowpath.org:10014/content
+New York,Lackawanna County,Lackawanna,http://www.lackawannany.gov
+New York,Warren County,Lake George (village),https://villagelakegeorge.digitaltowpath.org:10062/content
+New York,Suffolk County,Lake Grove,http://lakegroveny.gov
+New York,Essex County,Lake Placid,http://villageoflakeplacid.ny.gov
+New York,Essex County,Lake Success,http://www.villageoflakesuccess.com
+New York,Chautauqua County,Lakewood,http://lakewoodny.com
+New York,Erie County,Lancaster,http://lancasterny.gov/
+New York,Erie County,Lancaster (village),http://www.lancastervillage.org
+New York,Tompkins County,Lansing,http://www.lansingtown.com/
+New York,Tompkins County,Lansing (village),http://www.vlansing.org
+New York,Westchester County,Larchmont,https://villageoflarchmont.org/
+New York,Westchester County,Lattingtown,http://villageoflattingtown.org
+New York,Nassau County,Laurel Hollow,http://www.laurelhollow.org
+New York,Otsego County,Laurens (village),http://www.otsegocounty.com/depts/pln/documents/VillageofLaurens.pdf
+New York,Nassau County,Lawrence,http://www.villageoflawrence.org
+New York,Jefferson County,Le Ray,http://www.townofleray.org
+New York,Genesee County,Le Roy,http://www.leroyny.org/
+New York,Genesee County,Le Roy (village),http://www.leroyny.org/html/village_of_leroy.html/
+New York,Cayuga County,Ledyard,https://www.townofledyard.com/
+New York,Livingston County,Leicester,http://www.townofleicester.org
+New York,Livingston County,Leicester (village),http://www.villageofleicester.org
+New York,Madison County,Lenox,http://lenoxny.com/
+New York,Niagara County,Lewiston,https://www.townoflewiston.us/
+New York,Niagara County,Lewiston (town),https://www.townoflewiston.us/
+New York,Sullivan County,Liberty,http://www.townofliberty.org
+New York,Livingston County,Lima,http://www.lima-ny.org
+New York,Livingston County,Lima (village),http://villageoflima.us
+New York,Suffolk County,Lindenhurst,http://www.villageoflindenhurstny.gov
+New York,Herkimer County,Little Falls (city),http://www.cityoflittlefalls.net
+New York,Cattaraugus County,Little Valley,http://littlevalleyny.org
+New York,Cattaraugus County,Little Valley (village),http://www.villageoflittlevalley.org
+New York,Onondaga County,Liverpool,http://www.villageofliverpool.org
+New York,Livingston County,Livonia,http://www.livoniany.org
+New York,Livingston County,Livonia (village),http://www.livoniany.org
+New York,Suffolk County,Lloyd Harbor,https://www.lloydharbor.org/
+New York,Niagara County,Lockport (city),http://lockportny.gov
+New York,Seneca County,Lodi,http://www.lodiny.com/
+New York,Seneca County,Lodi (village),http://lodiny.com/village/
+New York,Seneca County,Long Beach,http://www.longbeachny.org
+New York,Lewis County,Lowville,http://lowville.racog.org
+New York,Lewis County,Lowville (village),http://villageoflowville.org
+New York,Jefferson County,Lyme,http://www.townoflyme.com
+New York,Lewis County,Lynbrook,http://www.lynbrookvillage.net
+New York,Onondaga County,Lysander,http://www.townoflysander.org
+New York,Franklin County,Malone,http://www.malonetown.com
+New York,Franklin County,Malone (village),http://villageofmalone-ny.com
+New York,Saratoga County,Malta,http://www.malta-town.org/
+New York,Franklin County,Malverne,http://www.malvernevillage.org
+New York,Sullivan County,Mamakating,http://www.mamakating.org
+New York,Westchester County,Mamaroneck,http://www.townofmamaroneck.org/
+New York,Ontario County,Manchester,https://manchesterny.org/
+New York,Ontario County,Manchester (village),http://www.villageofmanchester.org/
+New York,Herkimer County,Manheim,http://www.townofmanheim.org
+New York,Onondaga County,Manlius,http://www.townofmanlius.org
+New York,Onondaga County,Manlius (village),http://www.manliusvillage.org
+New York,Nassau County,Manorhaven,http://www.manorhaven.org
+New York,Onondaga County,Marcellus,https://marcellusny.com/
+New York,Cortland County,Marcellus (village),http://villageofmarcellus.com
+New York,Delaware County,Margaretville,http://www.margaretville.com
+New York,Nassau County,Massapequa Park,https://masspk.com/
+New York,St. Lawrence County,Massena,https://massena.us/
+New York,St. Lawrence County,Massena (village),https://massena.us/
+New York,Nassau County,Matinecock,http://www.matinecockvillage.org
+New York,Orange County,Maybrook,http://villageofmaybrook.com/
+New York,Fulton County,Mayfield,http://mayfieldny.org
+New York,Chautauqua County,Mayville,http://villageofmayville.com
+New York,Saratoga County,Mechanicville,http://www.mechanicville.com/
+New York,Orleans County,Medina,http://www.villagemedina.org
+New York,Albany County,Menands,http://www.villageofmenands.com
+New York,Monroe County,Mendon,http://www.townofmendon.org/
+New York,Cayuga County,Mentz,http://townofmentz.com
+New York,Oswego County,Mexico,https://mexicony.net/town_of_mexico/
+New York,Oswego County,Mexico (village),https://mexicony.net/village_of_mexico/
+New York,Schoharie County,Middleburgh,https://www4.schohariecounty-ny.gov/
+New York,Schoharie County,Middleburgh (village),http://www.schohariecounty-ny.gov/CountyWebSite/villmid/index.jsp
+New York,Niagara County,Middleport,http://villageofmiddleport.org/
+New York,Delaware County,Middletown,http://middletowndelawarecountyny.org
+New York,Orange County,Middletown,https://www.middletown-ny.com
+New York,Otsego County,Mill Neck,http://millneckvillage.com
+New York,Dutchess County,Millbrook,http://www.villageofmillbrookny.com/
+New York,Dutchess County,Millerton,http://www.villageofmillerton.net
+New York,Yates County,Milo,http://www.townofmilo.com/
+New York,Saratoga County,Milton (town),http://www.townofmiltonny.org
+New York,Montgomery County,Minden,http://townofminden.org/
+New York,Nassau County,Mineola,http://www.mineola-ny.gov
+New York,Onondaga County,Minoa,http://www.villageofminoa.com
+New York,Herkimer County,Mohawk,http://mohawk-ny.org
+New York,Orange County,Monroe,https://monroeny.org/
+New York,Orange County,Monroe (village),http://www.villageofmonroe.org/
+New York,Rockland County,Montebello,http://www.villageofmontebello.org/
+New York,Orange County,Montgomery (town),https://www.townofmontgomery.com/
+New York,Orange County,Montgomery (village),http://www.villageofmontgomery.org/
+New York,Sullivan County,Monticello,http://www.villageofmonticello.com/
+New York,Schuyler County,Montour Falls,https://www.villageofmontourfalls.com/
+New York,Cayuga County,Moravia,http://www.cayugacounty.us/townofmoravia
+New York,Cayuga County,Moravia (village),http://www.cayugacounty.us/villageofmoravia
+New York,Saratoga County,Moreau,http://www.townofmoreau.org/
+New York,Madison County,Morrisville,https://www.morrisvilleny.com/
+New York,Orange County,Mount Hope,https://townofmounthope.org/
+New York,Westchester County,Mount Kisco,http://www.mountkiscony.gov/
+New York,Livingston County,Mount Morris,http://townofmtmorris.com
+New York,Livingston County,Mount Morris (village),http://townofmtmorris.com/
+New York,Westchester County,Mount Pleasant,https://www.mtpleasantny.com/
+New York,Westchester County,Mount Vernon,http://cmvny.com
+New York,Nassau County,Munsey Park,http://www.munseypark.org
+New York,Nassau County,Muttontown,http://www.villageofmuttontown.com
+New York,Rensselaer County,Nassau (town),http://townofnassau.org/
+New York,Putnam County,Nelsonville,http://villageofnelsonville.org/
+New York,Cattaraugus County,New Albion,http://www.cattaraugusny.org
+New York,Chenango County,New Berlin,http://www.townofnewberlin.org
+New York,Chenango County,New Berlin (village),http://thevillageofnewberlin.org
+New York,Lewis County,New Bremen,http://townofnewbremen.weebly.com
+New York,Oneida County,New Hartford,https://www.townofnewhartfordny.gov
+New York,Oneida County,New Hartford (village),http://www.villageofnewhartford.com
+New York,Rockland County,New Hempstead,http://www.newhempstead.org/
+New York,Rockland County,New Hyde Park,http://www.vnhp.org
+New York,Ulster County,New Paltz,http://www.townofnewpaltz.org
+New York,Ulster County,New Paltz (village),http://www.villageofnewpaltz.org/
+New York,Westchester County,New Rochelle,http://www.newrochelleny.com/
+New York,Albany County,New Scotland,http://www.townofnewscotland.com/
+New York,Rockland County,New Square,http://www.newsquare.us/
+New York,Oneida County,New York Mills,http://www.nymills.com
+New York,Wayne County,Newark,http://www.villageofnewark.com
+New York,Tioga County,Newark Valley (village),http://villagenv.com/
+New York,Orange County,Newburgh,http://www.cityofnewburgh-ny.gov/
+New York,Herkimer County,Newport,http://townofnewport.net
+New York,Herkimer County,Newport (village),http://www.villageofnewportny.org
+New York,Erie County,Newstead,http://www.erie.gov/newstead
+New York,Niagara County,Niagara Falls,https://niagarafallsusa.org/
+New York,Tioga County,Nichols (village),http://www.tiogacountyny.com/towns-villages/nichols-village-of.html
+New York,Suffolk County,Nissequogue,http://nissequogueny.gov
+New York,Erie County,North Collins,http://www.northcollinsny.org
+New York,Erie County,North Collins (village),http://www.villageofnorthcollins.org
+New York,Livingston County,North Dansville,http://www.northdansville.org
+New York,Dutchess County,North East,http://www.townofnortheastny.gov
+New York,Essex County,North Elba,http://www.northelba.org
+New York,Suffolk County,North Haven,http://northhavenny.us
+New York,Nassau County,North Hempstead,https://www.northhempsteadny.gov/
+New York,Nassau County,North Hills,http://www.villagenorthhills.com
+New York,Onondaga County,North Syracuse,http://northsyracuseny.org
+New York,Niagara County,North Tonawanda,http://www.northtonawanda.org/
+New York,Fulton County,Northampton,http://www.townofnorthampton.com
+New York,Suffolk County,Northport,http://northportny.gov
+New York,Northampton,Northville,http://www.villageofnorthville.com
+New York,Chenango County,Norwich,http://www.norwichnewyork.net
+New York,Livingston County,Nunda,http://town.nunda.ny.us
+New York,Livingston County,Nunda (village),http://www.villageofnunda.org
+New York,Rockland County,Nyack,http://www.nyack-ny.gov/
+New York,Genesee County,Oakfield (town),https://townofoakfieldny.com/
+New York,Genesee County,Oakfield (village),http://www.oakfield.govoffice.com
+New York,Suffolk County,Ocean Beach,http://www.villageofoceanbeach.org
+New York,Monroe County,Ogden,http://www.ogdenny.com/
+New York,St. Lawrence County,Ogdensburg,http://www.ogdensburg.org/
+New York,Nassau County,Old Brookville,http://www.oldbrookville.net
+New York,Suffolk County,Old Field,http://www.oldfieldny.org
+New York,Nassau County,Old Westbury,http://www.villageofoldwestbury.org
+New York,Cattaraugus County,Olean,http://www.cityofolean.org
+New York,Madison County,Oneida,http://www.oneidacity.com
+New York,Otsego County,Oneonta,http://www.oneonta.ny.us
+New York,Fulton County,Oppenheim,http://townofoppenheim.com
+New York,Rockland County,Orangetown,https://www.orangetown.com
+New York,Erie County,Orchard Park (town),http://www.orchardparkny.org
+New York,Erie County,Orchard Park (village),http://orchardparkvillage.org
+New York,Oneida County,Oriskany,http://www.oriskany.org/
+New York,Westchester County,Ossining (town),http://www.townofossining.com/
+New York,Westchester County,Ossining (village),http://villageofossining.org
+New York,Oswego County,Oswego,http://www.oswegony.org/
+New York,Otsego County,Otego (town),https://townofotego.com/
+New York,Otsego County,Otsego,http://townofotsego.com/
+New York,Seneca County,Ovid (town),https://www.townofovid.net/
+New York,Tioga County,Owego,http://www.townofowego.com
+New York,Tioga County,Owego (village),http://www.villageofowego.com/
+New York,Chenango County,Oxford,http://townofoxfordny.com
+New York,Chenango County,Oxford (village),http://villageofoxfordny.com
+New York,Nassau County,Oyster Bay (town),https://www.oysterbaytown.com/
+New York,Chenango County,Oyster Bay Cove,http://www.oysterbaycove.net
+New York,Steuben County,Painted Post,http://villageofpaintedpost.com/
+New York,Wayne County,Palmyra (town),http://www.palmyrany.com/
+New York,Wayne County,Palmyra (village),http://www.palmyrany.com
+New York,Chautauqua County,Panama,http://www.panamany.org
+New York,Oneida County,Paris,https://townparis.digitaltowpath.org:10026/content
+New York,Oswego County,Parish,https://townofparish-ny.us/
+New York,Monroe County,Parma,http://www.parmany.org/
+New York,Suffolk County,Patchogue,http://www.patchoguevillage.org
+New York,Dutchess County,Pawling (town),http://www.pawling.org
+New York,Dutchess County,Pawling (village),http://www.villageofpawling.org
+New York,Dutchess County,Peekskill,http://www.cityofpeekskill.com/
+New York,Westchester County,Pelham,http://www.townofpelham.com/
+New York,Westchester County,Pelham (village),http://www.pelhamgov.com
+New York,Westchester County,Pelham Manor,http://www.pelhammanor.org/
+New York,Yates County,Penn Yan,http://www.villageofpennyan.com
+New York,Monroe County,Perinton,http://www.perinton.org
+New York,Wyoming County,Perry,https://www.townofperry.com
+New York,Wyoming County,Perry (village),http://www.villageofperry.com
+New York,Cattaraugus County,Persia,http://persiany.org
+New York,Ontario County,Phelps,http://www.phelpsny.com/
+New York,Jefferson County,Philadelphia,http://townofphiladelphiany.com
+New York,Jefferson County,Philadelphia (village),http://townofphiladelphiany.com/
+New York,Putnam County,Philipstown,http://philipstown.com/
+New York,Columbia County,Philmont,http://www.philmont.org
+New York,Oswego County,Phoenix,http://villageofphoenix-ny.gov/
+New York,Rockland County,Piermont,http://piermont-ny.org/
+New York,Monroe County,Pittsford,http://www.townofpittsford.org/
+New York,Monroe County,Pittsford (village),http://villageofpittsford.org
+New York,Rensselaer County,Pittstown,https://townpittstown.digitaltowpath.org:10800/content
+New York,Nassau County,Plandome,https://www.villageofplandome.org/
+New York,Nassau County,Plandome Heights,http://www.plandomeheights-ny.gov
+New York,Nassau County,Plandome Manor,http://plandomemanor.com
+New York,Clinton County,Plattsburgh (city),http://www.cityofplattsburgh-ny.gov/
+New York,Westchester County,Pleasantville,http://www.pleasantville-ny.gov
+New York,Herkimer County,Poland,http://www.herkimercounty.org/content/CommunityCategories/Home/:item=1&field=groups;/content/CommunityGroups/View/22
+New York,Chautauqua County,Pomfret,http://townofpomfretny.org
+New York,Rockland County,Pomona,https://www.pomonavillage.com/
+New York,Suffolk County,Poquott,http://www.villageofpoquott.com
+New York,Cayuga County,Port Byron,http://www.cayugacounty.us/towns/portbyron/Local-Government
+New York,Westchester County,Port Chester,http://portchesterny.com
+New York,Dickinson,Port Dickinson,http://www.portdickinsonny.us
+New York,Suffolk County,Port Jefferson,http://www.portjeff.com
+New York,Orange County,Port Jervis,https://www.portjervisny.gov
+New York,Nassau County,Port Washington North,http://www.portwashingtonnorth.org
+New York,Niagara County,Porter,https://www.townofporter.net
+New York,Chautauqua County,Portland,http://townofportland.org
+New York,Cattaraugus County,Portville,https://www.portvilleny.net/
+New York,Cattaraugus County,Portville (village),http://www.portvilleny.net
+New York,St. Lawrence County,Potsdam,https://potsdamny.us/
+New York,St. Lawrence County,Potsdam (village),http://vi.potsdam.ny.us/content
+New York,Dutchess County,Poughkeepsie,http://www.cityofpoughkeepsie.com
+New York,Dutchess County,Poughkeepsie (town),http://www.townofpoughkeepsie.com
+New York,Oswego County,Pulaski,https://villagepulaski.digitaltowpath.org:10789/content
+New York,Suffolk County,Quogue,http://www.villageofquogue.com
+New York,Rockland County,Ramapo,http://www.ramapo.org/
+New York,Albany County,Ravena,http://www.villageofravena.com
+New York,Wayne County,Red Creek,http://www.wolcottny.org/village-of-red-creek.html
+New York,Dutchess County,Red Hook,http://redhook.org
+New York,Dutchess County,Red Hook (village),http://redhooknyvillage.org
+New York,Oneida County,Remsen (village),http://www.villageofremsen.org
+New York,Rensselaer County,Rensselaer,http://www.rensselaerny.gov/
+New York,Dutchess County,Rhinebeck (town),https://www.rhinebeckny.gov/
+New York,Dutchess County,Rhinebeck (village),http://www.rhinebecknyvillage.org
+New York,Allegany County,Richburg,http://richburgny.org
+New York,Otsego County,Richfield Springs,http://villageofrichfieldsprings-ny.org/
+New York,Oswego County,Richland,https://www.townofrichland.org/
+New York,Schoharie County,Richmondville,https://www4.schohariecounty-ny.gov/government/town-of-richmondville/
+New York,Schoharie County,Richmondville (village),http://www.schohariecounty-ny.gov/CountyWebSite/villric/index.jsp
+New York,Monroe County,Riga,https://www.townofriga.com/
+New York,Monroe County,Rochester,https://www.cityofrochester.gov
+New York,Monroe County,Rockville Centre,http://www.rvcny.gov/
+New York,Oneida County,Rome,http://romenewyork.com/
+New York,Seneca County,Romulus,http://www.romulustown.com/
+New York,Nassau County,Roslyn,http://www.roslynny.gov/
+New York,Nassau County,Roslyn Estates,http://www.villageofroslynestates.com
+New York,Nassau County,Roslyn Harbor,http://www.roslynharbor.org
+New York,Saratoga County,Round Lake,http://www.roundlakevillage.org/
+New York,Clinton County,Rouses Point,http://www.rousespointny.com
+New York,Yates County,Rushville,http://www.villageofrushville.com
+New York,Yates County,Russell Gardens,http://www.russellgardens.com
+New York,Herkimer County,Russia,http://townofrussia.com
+New York,Westchester County,Rye,http://www.ryeny.gov/
+New York,Westchester County,Rye (town),http://www.townofryeny.com
+New York,Westchester County,Rye Brook,http://www.ryebrook.org
+New York,Jefferson County,Saddle Rock,http://saddlerockny.gov
+New York,Suffolk County,Sag Harbor,http://sagharborny.gov
+New York,Suffolk County,Sagaponack,http://www.sagaponackvillage.org
+New York,Cattaraugus County,Salamanca (city),http://www.salmun.com
+New York,Onondaga County,Salina,http://salina.ny.us
+New York,Suffolk County,Saltaire,http://www.saltaire.org
+New York,Nassau County,Sands Point,https://www.sandspoint.gov/
+New York,Clinton County,Saranac,http://www.townofsaranac.com
+New York,Franklin County,Saranac Lake,http://www.saranaclakeny.gov
+New York,Saratoga County,Saratoga,http://www.townofsaratoga.com/}Town%20website
+New York,Saratoga County,Saratoga Springs,http://www.saratoga-springs.org/
+New York,Ulster County,Saugerties (village),http://village.saugerties.ny.us/content
+New York,Westchester County,Scarsdale,http://www.scarsdale.com/
+New York,Rensselaer County,Schaghticoke (town),http://www.townofschaghticoke.org
+New York,Schenectady County,Schenectady,http://www.cityofschenectady.com/
+New York,Rensselaer County,Schodack,http://www.schodack.org/
+New York,Schoharie County,Schoharie,https://www4.schohariecounty-ny.gov/government/town-of-schoharie/
+New York,Schoharie County,Schoharie (village),http://www.schohariecounty-ny.gov/CountyWebSite/villsch/index.jsp
+New York,Oswego County,Schroeppel,http://townofschroeppel.com/
+New York,Saratoga County,Schuylerville,http://www.villageofschuylerville.org/
+New York,Glenville,Scotia,http://www.villageofscotia.org
+New York,Monroe County,Scottsville,http://www.scottsvilleny.org/
+New York,Monroe County,Sea Cliff,http://www.seacliff-ny.gov
+New York,Seneca County,Seneca Falls,http://www.senecafalls.com/
+New York,Suffolk County,Shelter Island,http://www.shelterislandtown.us
+New York,Chenango County,Sherburne,http://www.sherburne.org
+New York,Chenango County,Sherburne (village),http://www.sherburne.org
+New York,Chautauqua County,Sherman,http://shermanny.org
+New York,Chautauqua County,Sherman (village),http://shermanny.org
+New York,Oneida County,Sherrill,http://www.sherrillny.org
+New York,Suffolk County,Shoreham,https://shorehamvillage.org/
+New York,Ontario County,Shortsville,http://villageofshortsvilleny.us/
+New York,Delaware County,Sidney,https://townofsidney.com/
+New York,Delaware County,Sidney (village),http://villageofsidney.org
+New York,Chautauqua County,Silver Creek,http://silvercreekny.com
+New York,Wyoming County,Silver Springs,http://www.wyomingco.net/towns/villageofsilversprings.htm
+New York,Chautauqua County,Sinclairville,http://sinclairvilleny.org/
+New York,Onondaga County,Skaneateles (town),http://townofskaneateles.com
+New York,Chautauqua County,Skaneateles (village),http://www.villageofskaneateles.com
+New York,Westchester County,Sleepy Hollow,http://www.sleepyhollowny.gov/
+New York,Erie County,Sloan,http://ns.villageofsloan.org
+New York,Rockland County,Sloatsburg,http://www.sloatsburgny.com
+New York,Suffolk County,Smithtown,https://www.smithtownny.gov/
+New York,Wayne County,Sodus,https://www.townofsodus.net/
+New York,Wayne County,Sodus (village),http://villageofsodus.org/
+New York,Wayne County,Sodus Point,http://www.soduspoint.info/
+New York,Onondaga County,Solvay,http://villageofsolvay.com
+New York,Orange County,South Blooming Grove,http://www.villageofsouthbloominggrove.com/
+New York,Cattaraugus County,South Dayton,http://www.southdaytonny.org
+New York,Cattaraugus County,South Floral Park,http://www.southfloralpark.org
+New York,Saratoga County,South Glens Falls,http://www.sgfny.com/
+New York,Rockland County,South Nyack,http://southnyack.ny.gov
+New York,Suffolk County,Southampton,http://www.southamptontownny.gov
+New York,Suffolk County,Southampton (village),http://www.southamptonvillage.org
+New York,Putnam County,Southeast,http://www.southeast-ny.gov
+New York,Suffolk County,Southold (town),http://southoldtownny.gov
+New York,Livingston County,Sparta,http://www.sparta-ny.org
+New York,Hamilton County,Speculator,https://www.villageofspeculator.com/
+New York,Tioga County,Spencer (village),http://villageofspencer.com
+New York,Monroe County,Spencerport,http://www.vil.spencerport.ny.us/
+New York,Rockland County,Spring Valley,http://www.villagespringvalley.org
+New York,Cayuga County,Springport,https://sites.google.com/site/springportny/home
+New York,Erie County,Springville,http://www.villageofspringvilleny.com
+New York,Essex County,St. Armand,http://townofstarmand.com
+New York,Delaware County,Stamford,http://townofstamfordny.us
+New York,Delaware County,Stamford (village),http://www.stamfordny.com
+New York,Cayuga County,Sterling,http://www.cayugacounty.us/sterling
+New York,Delaware County,Stewart Manor,http://stewartmanor.org
+New York,Saratoga County,Stillwater,https://www.stillwaterny.org/
+New York,Rockland County,Suffern,http://www.suffernny.gov/
+New York,Madison County,Sullivan,http://www.townofsullivan.org
+New York,Monroe County,Sweden,http://www.townofsweden.org/
+New York,Onondaga County,Syracuse,https://www.syr.gov/
+New York,Greene County,Tannersville,http://www.tannersvilleny.org
+New York,Westchester County,Tarrytown,http://www.tarrytowngov.com
+New York,Jefferson County,Theresa,http://www.townoftheresany.com
+New York,Jefferson County,Theresa (village),http://www.villageoftheresany.com
+New York,Jefferson County,Thomaston,http://www.villageofthomaston.org
+New York,Dutchess County,Tivoli,http://www.tivoliny.org
+New York,Erie County,Tonawanda (city),http://www.tonawandacity.com/
+New York,Erie County,Tonawanda (town),http://www.tonawanda.ny.us
+New York,Oneida County,Trenton,https://towntrenton.digitaltowpath.org:10031/content
+New York,Rensselaer County,Troy,http://www.troyny.gov/
+New York,Tompkins County,Trumansburg,http://www.trumansburg-ny.gov
+New York,Westchester County,Tuckahoe (village),http://www.tuckahoe.com/
+New York,Onondaga County,Tully (village),http://villageoftully.org
+New York,Franklin County,Tupper Lake (town),http://www.tupperlakeny.gov
+New York,Franklin County,Tupper Lake (village),http://www.tupperlakeny.gov
+New York,Orange County,Tuxedo,http://www.tuxedogov.org
+New York,Orange County,Tuxedo Park,http://www.tuxedopark-ny.gov/
+New York,Otsego County,Unadilla,http://www.townofunadilla.org/
+New York,Broome County,Union,http://www.townofunion.com
+New York,Cayuga County,Union Springs,http://unionspringsny.com
+New York,Orange County,Unionville,http://www.unionvilleny.org/
+New York,Orange County,Upper Brookville,http://www.upperbrookville.org
+New York,Rockland County,Upper Nyack,http://uppernyack-ny.us/
+New York,Oneida County,Utica,http://www.cityofutica.com
+New York,Columbia County,Valatie,http://www.valatievillage.com
+New York,Rensselaer County,Valley Stream,http://www.vsvny.org
+New York,Onondaga County,Van Buren,http://www.townofvanburen.com
+New York,Oneida County,Vernon,https://townofvernon.com/
+New York,Chemung County,Veteran,https://townofveteran.org/
+New York,Ontario County,Victor,http://www.victorny.org
+New York,Saratoga County,Victory,http://www.villageofvictory.org
+New York,Oneida County,Vienna,https://townvienna.digitaltowpath.org:10024/content
+New York,Suffolk County,Village of the Branch,http://www.villageofthebranch.net
+New York,Albany County,Voorheesville,http://www.villageofvoorheesville.com/
+New York,Orange County,Walden,http://www.villageofwalden.org/
+New York,Delaware County,Walton (town),http://townofwalton.org
+New York,Delaware County,Walton (village),http://villageofwalton.com
+New York,Dutchess County,Wappinger,http://www.townofwappingerny.gov
+New York,Dutchess County,Wappingers Falls,http://www.wappingersfallsny.gov
+New York,Wyoming County,Warsaw (village),http://www.villageofwarsaw.org/
+New York,Orange County,Warwick,http://www.townofwarwick.org
+New York,Orange County,Warwick (village),https://villageofwarwick.org/
+New York,Dutchess County,Washington,http://www.washingtonny.org
+New York,Orange County,Washingtonville,http://www.washingtonville-ny.gov
+New York,Saratoga County,Waterford (village),http://www.waterfordny.org/
+New York,Seneca County,Waterloo (town),http://town.waterlootown.org/
+New York,Seneca County,Waterloo (village),http://www.waterloony.com/
+New York,Jefferson County,Watertown (city),http://www.watertown-ny.gov
+New York,Oneida County,Waterville,http://www.watervilleny.com
+New York,Albany County,Watervliet,http://www.watervliet.com
+New York,Schuyler County,Watkins Glen,http://www.watkinsglen.us/
+New York,Tioga County,Waverly,http://villageofwaverly.com/
+New York,Ulster County,Wawarsing,https://www.townofwawarsing.net/
+New York,Monroe County,Webster,http://www.ci.webster.ny.us
+New York,Monroe County,Webster (village),http://www.villageofwebster.com
+New York,Cayuga County,Weedsport,http://villageofweedsport.org
+New York,Ashland,Wellsburg,http://villageofwellsburg.com
+New York,Allegany County,Wellsville,http://townofwellsvilleny.org
+New York,Allegany County,Wellsville (village),http://wellsvilleny.com
+New York,Rockland County,Wesley Hills,http://www.wesleyhills.org/
+New York,Suffolk County,West Hampton Dunes,http://whdunes.org
+New York,Rockland County,West Haverstraw,http://www.westhaverstraw.org
+New York,Herkimer County,West Winfield,http://www.westwinfield.org
+New York,Herkimer County,Westbury,http://www.villageofwestbury.org
+New York,Chautauqua County,Westfield,http://www.townofwestfield.org
+New York,Chautauqua County,Westfield (village),http://www.villageofwestfield.org
+New York,Suffolk County,Westhampton Beach,http://westhamptonbeach.org
+New York,Monroe County,Wheatland,http://www.townofwheatland.org/
+New York,Westchester County,White Plains,http://www.cityofwhiteplains.com
+New York,Oneida County,Whitesboro,https://villagewhitesboro.digitaltowpath.org:10045/content
+New York,Oneida County,Whitestown,http://www.whitestown.net/
+New York,Broome County,Whitney Point,http://www.whitneypoint.org
+New York,Erie County,Williamsville,http://www.walkablewilliamsville.com
+New York,Erie County,Williston Park,http://www.villageofwillistonpark.org
+New York,Jefferson County,Wilna,http://townofwilna.com
+New York,Broome County,Windsor,http://www.windsorny.org
+New York,Broome County,Windsor (village),http://www.villageofwindsor.org
+New York,Herkimer County,Winfield (town),http://www.townofwinfieldny.org
+New York,Wayne County,Wolcott (town),http://www.townofwolcottny.org/
+New York,Wayne County,Wolcott (village),http://www.wolcottny.org/
+New York,Orange County,Woodbury,http://www.townofwoodbury.com/home.shtml
+New York,Sullivan County,Woodsburgh,http://www.woodsburghny.com
+New York,Wyoming County,Wyoming,http://www.middleburyny.com/
+New York,Orleans County,Yates,https://townofyates.org/
+New York,Westchester County,Yonkers,http://www.yonkersny.gov/
+New York,Cattaraugus County,Yorkshire (town),http://yorkshireny.org
+New York,Niagara County,Youngstown,http://www.youngstownnewyork.us/
+North Carolina,Wake County,Apex,http://www.apexnc.org/
+North Carolina,Randolph County,Asheboro,https://www.asheboronc.gov/
+North Carolina,Buncombe County,Asheville,http://www.ashevillenc.gov
+North Carolina,Alamance County,Burlington,http://www.BurlingtonNC.gov
+North Carolina,Orange County,Carrboro,http://townofcarrboro.org
+North Carolina,Cumberland County,Cary,https://www.carync.gov/
+North Carolina,Orange County,Chapel Hill,http://www.townofchapelhill.org
+North Carolina,Mecklenburg County,Charlotte,http://charlottenc.gov
+North Carolina,Johnston County,Clayton,http://www.townofclaytonnc.org
+North Carolina,Forsyth County,Clemmons,http://clemmons.org
+North Carolina,Cabarrus County,Concord,http://www.concordnc.gov
+North Carolina,Mecklenburg County,Cornelius,http://www.cornelius.org
+North Carolina,Durham County,Durham,http://durhamnc.gov/
+North Carolina,Cumberland County,Fayetteville,http://www.ci.fayetteville.nc.us
+North Carolina,Wake County,Fuquay-Varina,http://www.fuquay-varina.org
+North Carolina,Wake County,Garner,http://www.garnernc.gov
+North Carolina,Gaston County,Gastonia,http://www.cityofgastonia.com
+North Carolina,Wayne County,Goldsboro,http://www.goldsboronc.gov/
+North Carolina,Guilford County,Greensboro,http://www.greensboro-nc.gov
+North Carolina,Pitt County,Greenville,http://www.greenvillenc.gov/
+North Carolina,Catawba County,Hickory,http://www.hickorync.gov
+North Carolina,Guilford County,High Point,http://www.highpointnc.gov
+North Carolina,Wake County,Holly Springs,http://www.hollyspringsnc.us
+North Carolina,Mecklenburg County,Huntersville,http://www.huntersville.org
+North Carolina,Union County,Indian Trail,http://www.indiantrail.org/
+North Carolina,Onslow County,Jacksonville,http://www.ci.jacksonville.nc.us
+North Carolina,Cabarrus County,Kannapolis,http://kannapolisnc.gov
+North Carolina,Forsyth County,Kernersville,http://toknc.com
+North Carolina,Lenoir County,Kinston,http://www.ci.kinston.nc.us
+North Carolina,Wake County,Knightdale,http://www.knightdalenc.gov
+North Carolina,Brunswick County,Leland,http://www.townofleland.com
+North Carolina,Davidson County,Lexington,http://www.lexingtonnc.gov
+North Carolina,Mecklenburg County,Matthews,http://www.matthewsnc.gov
+North Carolina,Mecklenburg County,Mint Hill,http://www.minthill.com
+North Carolina,Union County,Monroe,http://www.monroenc.org
+North Carolina,Iredell County,Mooresville,http://www.mooresvillenc.gov
+North Carolina,Wake County,Morrisville,http://www.townofmorrisville.org/
+North Carolina,Craven County,New Bern,http://newbernnc.gov
+North Carolina,Wake County,Raleigh,http://raleighnc.gov
+North Carolina,Edgecombe County,Rocky Mount,http://www.rockymountnc.gov
+North Carolina,Rowan County,Salisbury,http://www.salisburync.gov
+North Carolina,Lee County,Sanford,http://www.sanfordnc.net
+North Carolina,Cleveland County,Shelby,http://www.cityofshelby.com
+North Carolina,Iredell County,Statesville,http://www.statesvillenc.net
+North Carolina,Davidson County,Thomasville,http://www.thomasville-nc.gov
+North Carolina,Wake County,Wake Forest,http://www.wakeforestnc.gov/
+North Carolina,Union County,Waxhaw,http://www.waxhaw.com/
+North Carolina,New Hanover County,Wilmington,http://www.wilmingtonnc.gov
+North Carolina,Wilson County,Wilson,http://wilsonnc.org
+North Carolina,Forsyth County,Winston-Salem,http://www.cityofws.org
+North Dakota,McKenzie County,Alexander,https://www.cityofalexandernd.com/
+North Dakota,Morton County,Almont,http://www.sims-almont.us/
+North Dakota,McHenry County,Anamoose,http://anamoose.com/
+North Dakota,Cass County,Argusville,http://www.cityofargusville.com
+North Dakota,McKenzie County,Arnegard,https://www.arnegardnd.com/
+North Dakota,McIntosh County,Ashley,https://www.ashley-nd.com/
+North Dakota,Golden Valley County,Beach,http://www.beachnd.com/
+North Dakota,Stark County,Belfield,http://www.cityofbelfield.com/
+North Dakota,Ward County,Berthold,https://berthold-nd.gov/
+North Dakota,Mercer County,Beulah,https://www.beulahnd.org/
+North Dakota,Burleigh County,Bismarck,http://www.bismarcknd.gov
+North Dakota,Bottineau County,Bottineau,https://bottineau.govoffice.com/
+North Dakota,Burke County,Bowbells,http://www.bowbellsnd.com/
+North Dakota,Bowman County,Bowman,https://bowmannd.com/
+North Dakota,Cass County,Buffalo,http://www.buffalond.com/
+North Dakota,Ward County,Burlington,https://www.burlingtonnd.gov/
+North Dakota,Traill County,Buxton,http://www.buxtonnd.com
+North Dakota,Towner County,Cando,http://www.candond.com/
+North Dakota,Foster County,Carrington,https://www.carringtonnd.com/
+North Dakota,Cass County,Casselton,http://www.casselton.com/
+North Dakota,Pembina County,Cavalier,http://www.cavaliernd.com/
+North Dakota,Oliver County,Center,https://www.centernd.net/
+North Dakota,Griggs County,Cooperstown,https://www.cooperstownnd.com/
+North Dakota,Divide County,Crosby,https://dividecountynd.hosted.civiclive.com/cities/city_of_crosby
+North Dakota,Ramsey County,Devils Lake,http://www.devilslakend.com/
+North Dakota,Stark County,Dickinson,http://www.dickinsongov.com/
+North Dakota,Pembina County,Drayton,http://draytonnd.com/
+North Dakota,Dunn County,Dunn Center,https://www.cityofdunncenter.com/
+North Dakota,Rolette County,Dunseith,https://dunseithnd.com/city.html
+North Dakota,LaMoure County,Edgeley,http://www.edgeley.com/
+North Dakota,Walsh County,Edinburg,http://www.edinburgnd.com/
+North Dakota,Grant County,Elgin,http://www.elginnorthdakota.com/
+North Dakota,Dickey County,Ellendale,http://www.ellendalend.com
+North Dakota,Grand Forks County,Emerado,http://www.cityofemerado.com/
+North Dakota,Ransom County,Enderlin,http://enderlinnd.com/
+North Dakota,Williams County,Epping,https://epping.govoffice.com/
+North Dakota,Cass County,Fargo,https://www.fargond.gov/
+North Dakota,Wells County,Fessenden,http://fessendennd.com/
+North Dakota,Steele County,Finley,https://finleynd.com/
+North Dakota,Sargent County,Forman,https://www.formannd.com/
+North Dakota,Cass County,Frontier,http://www.frontier-nd.com/
+North Dakota,Logan County,Gackle,http://www.gacklend.com/
+North Dakota,McLean County,Garrison,http://www.garrisonnd.com/
+North Dakota,Morton County,Glen Ullin,http://www.glen-ullin.com/
+North Dakota,Golden Valley County,Golva,https://www.beachnd.com/2150/Golva
+North Dakota,Walsh County,Grafton,https://www.graftongov.com
+North Dakota,Grand Forks County,Grand Forks,http://www.grandforksgov.com/
+North Dakota,Williams County,Grenora,https://www.cityofgrenora.com/
+North Dakota,Sargent County,Gwinner,https://www.gwinnernd.com/
+North Dakota,Dunn County,Halliday,https://www.cityofhalliday.com/
+North Dakota,Ramsey County,Hampden,http://hampden.wordpress.com/
+North Dakota,Richland County,Hankinson,http://www.hankinsonnd.com
+North Dakota,Griggs County,Hannaford,http://www.hannafordnd.com/
+North Dakota,Wells County,Harvey,https://harveynd.com/
+North Dakota,Cass County,Harwood,http://www.cityofharwood.com/
+North Dakota,Traill County,Hatton,http://www.hattonnd.com/
+North Dakota,Emmons County,Hazelton,http://hazeltonnorthdakota.com/
+North Dakota,Mercer County,Hazen,https://www.hazennd.org/
+North Dakota,Morton County,Hebron,http://www.hebronnd.org/
+North Dakota,Adams County,Hettinger,https://www.hettingernd.com/
+North Dakota,Traill County,Hillsboro,http://www.hillsboro-nd.com/
+North Dakota,Steele County,Hope,https://www.hopend.com/
+North Dakota,Cass County,Horace,http://www.cityofhorace.com
+North Dakota,Cass County,Hunter,https://www.cityofhunter.com/
+North Dakota,Stutsman County,Jamestown,http://www.jamestownnd.gov/
+North Dakota,Ward County,Kenmare,http://www.kenmarend.com/
+North Dakota,Stutsman County,Kensal,http://kensalnd.com
+North Dakota,Dunn County,Killdeer,https://www.killdeer.com/
+North Dakota,Cass County,Kindred,http://cityofkindrednd.com/
+North Dakota,LaMoure County,Kulm,https://www.kulmnd.com/
+North Dakota,Nelson County,Lakota,https://www.lakota-nd.com/
+North Dakota,LaMoure County,LaMoure,https://www.lamourend.com/
+North Dakota,Cavalier County,Langdon,https://www.cityoflangdon.com/
+North Dakota,Grand Forks County,Larimore,http://www.larimorend.com/
+North Dakota,Benson County,Leeds,http://www.leedsnorthdakota.com/
+North Dakota,Grant County,Leith,https://www.pbs.org/independentlens/documentaries/welcome-to-leith/
+North Dakota,Cass County,Leonard,http://www.leonardnd.com/
+North Dakota,Richland County,Lidgerwood,https://www.cityoflidgerwoodnd.com/
+North Dakota,Burleigh County,Lincoln,http://www.cityoflincolnnd.com/
+North Dakota,Emmons County,Linton,https://lintonnd.org/
+North Dakota,Ransom County,Lisbon,https://cityoflisbon.net/
+North Dakota,Ward County,Makoti,http://www.makotind.com/
+North Dakota,Morton County,Mandan,http://www.cityofmandan.com/
+North Dakota,Cass County,Mapleton,http://www.mapletonnd.com/
+North Dakota,Slope County,Marmarth,http://www.marmarth.org/
+North Dakota,McLean County,Max,http://www.maxnd.com/
+North Dakota,Traill County,Mayville,http://www.mayvilleportland.com/
+North Dakota,Sheridan County,McClusky,http://mccluskynd.com/
+North Dakota,Nelson County,McVille,http://www.mcville.com/
+North Dakota,Stutsman County,Medina,https://www.medinand.com/
+North Dakota,Billings County,Medora,https://medorand.com/
+North Dakota,McLean County,Mercer,http://www.mercernd.org/
+North Dakota,Nelson County,Michigan City,http://www.michigannd.com/
+North Dakota,Sargent County,Milnor,https://www.milnornd.com/
+North Dakota,Benson County,Minnewaukan,https://www.minnewaukan.com/
+North Dakota,Ward County,Minot,http://www.minotnd.org
+North Dakota,Walsh County,Minto,https://cityofminto.com/
+North Dakota,Renville County,Mohall,https://mohallndak.com/
+North Dakota,Hettinger County,Mott,http://www.discovermott.com/
+North Dakota,Logan County,Napoleon,http://www.napoleonnd.com/
+North Dakota,Hettinger County,New England,https://ndnewengland.com/
+North Dakota,Grant County,New Leipzig,https://newleipzig.com/
+North Dakota,Eddy County,New Rockford,https://www.cityofnewrockford.com/
+North Dakota,Morton County,New Salem,http://www.newsalem-nd.com/
+North Dakota,Mountrail County,New Town,https://www.citynewtownnd.com/
+North Dakota,Grand Forks County,Northwood,http://www.discovernorthwood.com/
+North Dakota,Dickey County,Oakes,https://oakesnd.com/
+North Dakota,Cass County,Oxbow,http://www.oxbownd.com
+North Dakota,Cass County,Page,http://www.pagend.com/
+North Dakota,Walsh County,Park River,https://www.cityofparkriver.com/
+North Dakota,Mountrail County,Parshall,https://www.parshallnd.com/
+North Dakota,Nelson County,Pekin,http://www.pekinnd.com/
+North Dakota,Pembina County,Pembina,http://cityofpembina.org
+North Dakota,Kidder County,Pettibone,http://www.pettibone.us
+North Dakota,Mercer County,Pick City,http://www.pickcitynd.com/
+North Dakota,Mountrail County,Plaza,http://www.plazand.com/
+North Dakota,Traill County,Portland,http://www.mayvilleportland.com/
+North Dakota,Burke County,Powers Lake,https://www.powerslakend.com/
+North Dakota,Williams County,Ray,https://www.raynd.com/
+North Dakota,Cass County,Reile's Acres,http://www.reilesacresnd.org
+North Dakota,Traill County,Reynolds,http://www.reynoldsnd.com/
+North Dakota,Stark County,Richardton,http://www.richardtonnd.com/
+North Dakota,McLean County,Riverdale,https://www.riverdalenorthdakota.com/
+North Dakota,Rolette County,Rolette,http://www.rolettend.com/
+North Dakota,Rolette County,Rolla,http://www.ndrolla.com/
+North Dakota,Mountrail County,Ross,https://cityofross.com/
+North Dakota,Pierce County,Rugby,https://www.cityofrugbynd.com/
+North Dakota,Ward County,Ryder,http://www.rydernd.com/
+North Dakota,Renville County,Sherwood,http://sherwoodnd.com/main.htm
+North Dakota,Mountrail County,Stanley,http://www.stanleynd.com
+North Dakota,Mercer County,Stanton,http://www.stantonnd.com/
+North Dakota,Kidder County,Steele,http://www.steelend.com/
+North Dakota,Emmons County,Strasburg,https://strasburgnd.govoffice3.com/
+North Dakota,Ward County,Surrey,http://www.surreynd.org/
+North Dakota,Stark County,Taylor,http://cityoftaylornd.net/
+North Dakota,Grand Forks County,Thompson,http://www.cityofthompsonnd.com/
+North Dakota,Williams County,Tioga,http://www.tiogand.net/
+North Dakota,Nelson County,Tolna,http://www.cityoftolna.com/
+North Dakota,Cass County,Tower City,http://www.towercitynd.com/
+North Dakota,McHenry County,Towner,http://www.townernd.com/
+North Dakota,McLean County,Turtle Lake,https://www.turtlelakend.org/
+North Dakota,McLean County,Underwood,http://www.underwoodnd.org/
+North Dakota,Barnes County,Valley City,http://www.valleycity.us
+North Dakota,McHenry County,Velva,https://velvand.com/
+North Dakota,Richland County,Wahpeton,http://www.wahpeton.com
+North Dakota,Pembina County,Walhalla,http://walhalland.org/index.html
+North Dakota,McLean County,Washburn,https://www.washburnnd.com/
+North Dakota,McKenzie County,Watford City,http://www.cityofwatfordcity.com/
+North Dakota,Cass County,West Fargo,http://www.westfargond.gov/
+North Dakota,Bottineau County,Westhope,https://www.westhopend.com/
+North Dakota,Williams County,Williston,http://www.cityofwilliston.com/
+North Dakota,McLean County,Wilton,http://www.wiltonnd.org/
+North Dakota,Barnes County,Wimbledon,https://wimbledonnd.com/
+North Dakota,McIntosh County,Wishek,https://wishek-nd.com/
+North Dakota,Richland County,Wyndmere,https://cityofwyndmere.com/
+North Dakota,Mercer County,Zap,http://www.wrtc.com/zapnd/
+Ohio,Huntington Township,Aberdeen,https://thevillageofaberdeenoh.com/
+Ohio,Liberty Township,Ada,https://www.adaoh.org/
+Ohio,Miami Township,Addyston,http://www.addystonohio.org
+Ohio,Summit County,Akron,https://www.akronohio.gov/
+Ohio,Licking County,Alexandria,http://www.alexandriaoh.org
+Ohio,Stark County,Alliance,http://www.cityofalliance.com
+Ohio,Amanda Township,Amanda,http://villageofamanda.com
+Ohio,Hamilton County,Amberley,http://www.amberleyvillage.org
+Ohio,Ames Township,Amesville,http://www.amesvilleohio.org/
+Ohio,Lorain County,Amherst,http://www.amherstohio.org/
+Ohio,Ashtabula County,Andover,http://www.andovervillage.com/
+Ohio,Shelby County,Anna,https://villageofannaoh.com/
+Ohio,Brown Township,Ansonia,http://www.ansoniaohio.us/index.htm
+Ohio,Carryall Township,Antwerp,http://www.antwerpohio.com/
+Ohio,Wayne County,Apple Creek,https://www.apple-creek.org/
+Ohio,Hancock County,Arcadia,https://villageofarcadia.com/
+Ohio,Darke County,Arcanum,http://villageofarcanum.com/
+Ohio,German Township,Archbold,http://www.Archbold.com
+Ohio,Hancock County,Arlington,https://villageofarlington.com/
+Ohio,Hamilton County,Arlington Heights,http://www.ahohio.org
+Ohio,Ashland County,Ashland,https://www.ashland-ohio.com/
+Ohio,Ashtabula County,Ashtabula,http://www.cityofashtabula.com/
+Ohio,Harrison Township,Ashville,http://ashvilleohio.gov
+Ohio,Athens County,Athens,https://www.ci.athens.oh.us/
+Ohio,Seneca County,Attica,http://www.atticaohio.us/
+Ohio,Portage County,Aurora,http://www.auroraoh.com/
+Ohio,Lorain County,Avon,https://www.cityofavon.com/
+Ohio,Lorain County,Avon Lake,https://www.avonlake.org/
+Ohio,Bucks Township,Baltic,https://www.villageofbaltic.org/
+Ohio,Fairfield County,Baltimore,http://www.baltimoreohio.org
+Ohio,Summit County,Barberton,https://www.cityofbarberton.com/
+Ohio,Belmont County,Barnesville,http://www.barnesvilleohio.com/
+Ohio,Batavia Township,Batavia,http://bataviavillage.org/
+Ohio,Cuyahoga County,Bay Village,http://www.cityofbayvillage.com/
+Ohio,Sugar Creek Township,Beach City,http://www.beachcityohio.org
+Ohio,Cuyahoga County,Beachwood,https://www.beachwoodohio.com/
+Ohio,Greene County,Beavercreek,https://www.beavercreekohio.gov/
+Ohio,Richland Township,Beaverdam,http://www.beaverdamoh.com
+Ohio,Cuyahoga County,Bedford,http://www.bedfordoh.gov
+Ohio,Cuyahoga County,Bedford Heights,https://www.bedfordheights.gov/
+Ohio,Pultney Township,Bellaire,http://bellaireoh.com/
+Ohio,Greene County,Bellbrook,http://www.cityofbellbrook.org
+Ohio,Richland Township,Belle Center,http://bellecenterohio.com
+Ohio,Logan County,Bellefontaine,http://www.ci.bellefontaine.oh.us
+Ohio,Seneca County,Bellevue,http://thenewcityofbellevue.com
+Ohio,Richland County,Bellville,https://villageofbellville.com/
+Ohio,Washington County,Belpre,https://www.cityofbelpre.com/
+Ohio,Cuyahoga County,Bentleyville,http://www.villageofbentleyville.com
+Ohio,Cuyahoga County,Berea,https://www.cityofberea.org/
+Ohio,Lucas County,Berkey,http://www.berkeyohio.org
+Ohio,Berlin Township,Berlin Heights,http://villageofberlinheights.com/
+Ohio,Tate Township,Bethel,https://bethel-oh.gov/
+Ohio,Franklin County,Bexley,http://www.bexley.org/
+Ohio,Clinton County,Blanchester,https://www.blanvillage.com/
+Ohio,Hamilton County,Blue Ash,http://www.blueash.com
+Ohio,Richland Township,Bluffton,https://www.bluffton-ohio.com/
+Ohio,Summit County,Boston Heights,http://www.villageofbostonheights.com/
+Ohio,Shelby County,Botkins,http://www.botkinsohio.com
+Ohio,Wood County,Bowling Green,https://www.bgohio.org
+Ohio,Miami County,Bradford,http://www.bradfordoh.com/
+Ohio,Cuyahoga County,Bratenahl,http://www.bratenahl.org/
+Ohio,Cuyahoga County,Brecksville,http://www.brecksville.oh.us/
+Ohio,Sugar Creek Township,Brewster,https://www.brewsterohio.com/
+Ohio,Franklin County,Brice,http://www.briceohio.com
+Ohio,Cuyahoga County,Broadview Heights,https://www.broadview-heights.org/
+Ohio,Cuyahoga County,Brook Park,https://www.cityofbrookpark.com/
+Ohio,Cuyahoga County,Brooklyn,http://www.brooklynohio.gov/
+Ohio,Cuyahoga County,Brooklyn Heights,http://www.brooklynhts.org/
+Ohio,Montgomery County,Brookville,http://www.brookvilleohio.com/
+Ohio,Medina County,Brunswick,https://www.brunswick.oh.us/
+Ohio,Williams County,Bryan,http://www.cityofbryan.com/
+Ohio,Licking County,Buckeye Lake,http://buckeyelakevillage.com/
+Ohio,Bucyrus Township,Bucyrus,http://www.cityofbucyrusoh.us/
+Ohio,Wayne County,Burbank,http://villageofburbankohio.com/
+Ohio,Geauga County,Burton,http://www.villageofburton.org
+Ohio,Jackson Township,Byesville,http://byesvilleoh.gov/
+Ohio,Harrison County,Cadiz,http://www.villageofcadiz.com/
+Ohio,Claridon Township,Caledonia,http://www.caledonia-village.com
+Ohio,Guernsey County,Cambridge,http://www.cambridgeoh.org/
+Ohio,Mahoning County,Campbell,http://www.campbellohio.gov/
+Ohio,Stark County,Canal Fulton,http://www.cityofcanalfulton-oh.gov/
+Ohio,Franklin County,Canal Winchester,http://www.canalwinchesterohio.gov
+Ohio,Mahoning County,Canfield,http://www.ci.canfield.oh.us/
+Ohio,Stark County,Canton,https://www.cantonohio.gov/
+Ohio,Cardington Township,Cardington,http://www.cardington.org/
+Ohio,Crawford Township,Carey,http://www.careyohio.org/
+Ohio,Warren County,Carlisle,http://www.carlisleoh.org/
+Ohio,Center Township,Carrollton,http://www.villageofcarrollton.com
+Ohio,Margaretta Township,Castalia,https://www.villageofcastalia.com
+Ohio,Greene County,Cedarville,https://www.cedarville.us/
+Ohio,Center Township,Celina,http://www.ci.celina.oh.us/
+Ohio,Hilliar Township,Centerburg,http://www.centerburgoh.org
+Ohio,Montgomery County,Centerville,https://www.centervilleohio.gov/
+Ohio,Cuyahoga County,Chagrin Falls,http://www.chagrin-falls.org/
+Ohio,Geauga County,Chardon,http://www.chardon.cc/
+Ohio,Hamilton County,Cheviot,http://www.cheviot.org/
+Ohio,Ross County,Chillicothe,http://ci.chillicothe.oh.us/
+Ohio,Jackson Township,Christiansburg,http://www.christiansburgohio.org
+Ohio,Hamilton County,Cincinnati,http://cincinnati-oh.gov
+Ohio,Hamilton County,Circleville,http://ci.circleville.oh.us/
+Ohio,Montgomery County,Clayton,http://www.clayton.oh.us/
+Ohio,Cuyahoga County,Cleveland,https://www.clevelandohio.gov/
+Ohio,Cuyahoga County,Cleveland Heights,https://www.clevelandheights.gov
+Ohio,Miami Township,Cleves,http://www.cleves.org
+Ohio,Summit County,Clinton,http://clintonvillageohio.com/
+Ohio,Sandusky County,Clyde,https://clydeohio.org
+Ohio,Butler Township,Coldwater,http://www.villageofcoldwater.com
+Ohio,Beaver Township,Columbiana,http://www.columbianaohio.gov
+Ohio,Franklin County,Columbus,http://www.columbus.gov
+Ohio,Putnam County,Columbus Grove,http://www.columbusgrove.org/
+Ohio,Ashtabula County,Conneaut,http://www.conneautohio.gov/
+Ohio,Tully Township,Convoy,http://www.villageofconvoy.com/
+Ohio,Trumbull County,Cortland,http://www.cityofcortland.org
+Ohio,Coshocton County,Coshocton,http://www.cityofcoshocton.com/
+Ohio,Milton Township,Craig Beach,https://www.craigbeachvillage.com/
+Ohio,Jackson Township,Crestline,http://www.crestlineoh.com/
+Ohio,Wayne County,Creston,https://crestonvillage.org/
+Ohio,Perry County,Crooksville,http://www.crooksville.com/
+Ohio,Summit County,Cuyahoga Falls,https://www.cityofcf.com/
+Ohio,Cuyahoga County,Cuyahoga Heights,http://www.cuyahogaheights.com
+Ohio,Wayne County,Dalton,https://www.villageofdalton.us/
+Ohio,Union Township,Danville,http://www.danvilleohio.org/
+Ohio,Montgomery County,Dayton,https://daytonohio.gov/
+Ohio,Hamilton County,Deer Park,http://www.deerpark-oh.gov
+Ohio,Defiance County,Defiance,http://www.cityofdefiance.com/
+Ohio,Delaware County,Delaware,http://www.delawareohio.net/
+Ohio,Marion Township,Delphos,http://www.cityofdelphos.com/
+Ohio,Fulton County,Delta,https://www.villageofdelta.org/
+Ohio,Henry County,Deshler,https://villageofdeshler.com/
+Ohio,Tuscarawas County,Dover,http://www.doverohio.com/
+Ohio,Wayne County,Doylestown,http://www.doylestown.com/
+Ohio,Jefferson Township,Dresden,http://www.villageofdresden.com/
+Ohio,Franklin County,Dublin,https://dublinohiousa.gov/
+Ohio,Osnaburg Township,East Canton,https://villageeastcanton.net/
+Ohio,Cuyahoga County,East Cleveland,http://www.eastcleveland.org/
+Ohio,Columbiana County,East Liverpool,http://www.eastliverpool.com/
+Ohio,Columbiana County,East Palestine,http://eastpalestine-oh.gov/
+Ohio,Pike Township,East Sparta,http://eastspartavillage.com/
+Ohio,Lake County,Eastlake,http://eastlakeohio.com
+Ohio,Preble County,Eaton,http://cityofeaton.org/index.html
+Ohio,Williams County,Edgerton,http://www.edgerton-ohio.com/
+Ohio,Williams County,Edon,http://www.edon-ohio.com/
+Ohio,Ottawa County,Elmore,http://www.village.elmore.oh.us/
+Ohio,Preble County,Elyria,https://www.cityofelyria.org/
+Ohio,Montgomery County,Englewood,http://www.englewood.oh.us/
+Ohio,Mad River Township,Enon,http://www.enonohio.com/
+Ohio,Cuyahoga County,Euclid,http://www.cityofeuclid.com/
+Ohio,Hamilton County,Evendale,http://www.evendaleohio.org
+Ohio,Greene County,Fairborn,https://www.fairbornoh.gov
+Ohio,Hamilton County,Fairfax,https://fairfaxoh.com/
+Ohio,Butler County,Fairfield,https://www.fairfield-city.org/
+Ohio,Summit County,Fairlawn,http://www.cityoffairlawn.com/
+Ohio,Painesville Township,Fairport Harbor,http://www.fairportharbor.org
+Ohio,Cuyahoga County,Fairview Park,http://www.fairviewpark.org
+Ohio,Gorham Township,Fayette,http://www.villageoffayette.com
+Ohio,Hancock County,Findlay,https://www.findlayohio.gov/
+Ohio,Brown Township,Fletcher,https://fletcherohio.us/
+Ohio,Hardin County,Forest,https://www.villageofforest.com/
+Ohio,Hamilton County,Forest Park,https://www.forestpark.org/
+Ohio,Shelby County,Fort Loramie,http://www.fortloramie.com/
+Ohio,Gibson Township,Fort Recovery,http://www.fortrecovery.org/
+Ohio,Seneca County,Fostoria,http://www.fostoriaohio.gov/
+Ohio,Warren County,Franklin,http://www.franklinohio.org/
+Ohio,Jackson Township,Frazeysburg,http://www.frazeysburg.us
+Ohio,Salt Creek Township,Fredericksburg,https://fredericksburgohio.org/
+Ohio,Knox County,Fredericktown,http://www.fredericktownohio.net
+Ohio,Ballville Township,Fremont,https://www.fremontohio.org/
+Ohio,Franklin County,Gahanna,https://www.gahanna.gov/
+Ohio,Berkshire Township,Galena,https://galenaohio.gov/
+Ohio,Crawford County,Galion,http://www.galion.city
+Ohio,Gallipolis Township,Gallipolis,http://www.cityofgallipolis.com
+Ohio,College Township,Gambier,http://www.villageofgambier.org/
+Ohio,Cuyahoga County,Garfield Heights,https://www.garfieldhts.org/
+Ohio,Portage County,Garrettsville,http://garrettsville.org
+Ohio,Cuyahoga County,Gates Mills,http://www.gatesmillsvillage.com/
+Ohio,Geneva Township,Geneva,https://www.genevaohio.gov
+Ohio,Ashtabula County,Geneva-on-the-Lake,http://www.visitgenevaonthelake.com
+Ohio,Pleasant Township,Georgetown,http://www.georgetownohio.us/
+Ohio,Montgomery County,Germantown,http://www.germantown.oh.us/
+Ohio,Trumbull County,Girard,http://www.cityofgirard.com/
+Ohio,Hamilton County,Glendale,http://www.glendaleohio.org
+Ohio,Cuyahoga County,Glenwillow,http://www.glenwillow-oh.gov/
+Ohio,Medina County,Gloria Glens Park,http://www.gloriaglens.org
+Ohio,Hamilton County,Golf Manor,https://www.golfmanoroh.gov/
+Ohio,Lorain County,Grafton,https://villageofgrafton.org/
+Ohio,Grand Rapids Township,Grand Rapids,https://grandrapidsohio.com/
+Ohio,Painesville Township,Grand River,http://www.grandriverohio.net
+Ohio,Franklin County,Grandview Heights,http://www.grandviewheights.org/
+Ohio,Licking County,Granville,http://www.granville.oh.us
+Ohio,Preble County,Gratis,http://www.gratisohio.org
+Ohio,Summit County,Green,https://www.cityofgreen.org/
+Ohio,Sandusky County,Green Springs,https://www.gsohio.org
+Ohio,Highland County,Greenfield,http://www.greenfieldohio.net
+Ohio,Hamilton County,Greenhills,http://www.greenhillsohio.us
+Ohio,Darke County,Greenville,http://www.cityofgreenville.org/
+Ohio,Franklin County,Grove City,https://www.grovecityohio.gov/
+Ohio,Franklin County,Groveport,https://www.groveport.org/
+Ohio,Butler County,Hamilton,https://www.hamilton-oh.gov/
+Ohio,Hamilton County,Harrison,http://www.harrisonohio.gov
+Ohio,Licking County,Hartford,http://www.villageofhartfordohio.org/
+Ohio,Lake Township,Hartville,http://www.hartvilleoh.com
+Ohio,Warren County,Harveysburg,http://www.villageofharveysburg.org/
+Ohio,Licking County,Heath,http://www.heathohio.gov/
+Ohio,Licking County,Hebron,https://www.hebronvillage.org/
+Ohio,Defiance County,Hicksville,http://www.villageofhicksville.com/
+Ohio,Cuyahoga County,Highland Heights,http://www.highlandhts.com
+Ohio,Cuyahoga County,Highland Hills,http://www.vhhohio.org/
+Ohio,Franklin County,Hilliard,https://hilliardohio.gov/
+Ohio,Highland County,Hillsboro,http://www.hillsboroohio.net/
+Ohio,Portage County,Hiram,http://hiramvillage.org/
+Ohio,Williams County,Holiday City,http://www.holidaycityohio.org/
+Ohio,Lucas County,Holland,http://www.hollandohio.com/
+Ohio,Harrison County,Hopedale,http://www.hopedaleohio.com/
+Ohio,Trumbull County,Hubbard,http://www.cityofhubbard-oh.gov/
+Ohio,Montgomery County,Huber Heights,https://www.hhoh.org/
+Ohio,Summit County,Hudson,https://www.hudson.oh.us/
+Ohio,Cuyahoga County,Hunting Valley,http://www.huntingvalley.net/about.cfm
+Ohio,McArthur Township,Huntsville,https://huntsvilleohio.net/
+Ohio,Erie County,Huron,http://www.cityofhuron.org/
+Ohio,Cuyahoga County,Independence,http://www.independenceohio.org
+Ohio,Hamilton County,Indian Hill,https://indianhill.gov
+Ohio,Lawrence County,Ironton,http://www.ironton-ohio.com/
+Ohio,Jackson County,Jackson,http://www.jacksonohio.us/
+Ohio,Shelby County,Jackson Center,http://www.jacksoncenter.com/
+Ohio,Ashtabula County,Jefferson,http://www.jeffersonohio.us/
+Ohio,Ashland County,Jeromesville,https://jeromesville.nationbuilder.com/
+Ohio,Licking County,Johnstown,http://www.johnstownohio.org/
+Ohio,Erie County,Kelleys Island,https://kelleysisland.us/
+Ohio,Portage County,Kent,https://kentohio.org/
+Ohio,Pleasant Township,Kenton,https://cityofkenton.com/
+Ohio,Montgomery County,Kettering,https://www.ketteringoh.org/
+Ohio,Lake County,Kirtland,http://kirtlandohio.com
+Ohio,Lake County,Kirtland Hills,https://www.kirtlandhills.org/
+Ohio,Jackson Township,Lafayette,http://www.lafayetteoh.com/
+Ohio,LaGrange Township,LaGrange,https://lagrangeohio.net/
+Ohio,Summit County,Lakemore,http://www.lakemoreohio.org
+Ohio,Stokes Township,Lakeview,http://lakeviewohio.com
+Ohio,Cuyahoga County,Lakewood,https://lakewoodoh.gov
+Ohio,Fairfield County,Lancaster,https://www.ci.lancaster.oh.us/
+Ohio,Montgomery Township,LaRue,http://www.laruevillage.com
+Ohio,Warren County,Lebanon,https://www.lebanonohio.gov/
+Ohio,Highland County,Leesburg,http://www.leesburgohio.org/
+Ohio,Columbiana County,Leetonia,http://leetonia.org/
+Ohio,Putnam County,Leipsic,http://www.villageofleipsic.com/
+Ohio,Preble County,Lewisburg,https://lewisburg.webs.com/
+Ohio,Troy Township,Lexington,http://www.lexingtonohio.us/
+Ohio,Liberty Township,Liberty Center,http://lcvillage.com
+Ohio,Allen County,Lima,https://www.cityhall.lima.oh.us/
+Ohio,Hamilton County,Lincoln Heights,http://www.vlho.org
+Ohio,Cuyahoga County,Linndale,http://www.linndalevillage-oh.gov/
+Ohio,Columbiana County,Lisbon,http://www.lisbonvillage.com/
+Ohio,Fairfield County,Lithopolis,http://www.lithopolis.org/
+Ohio,Franklin County,Lockbourne,http://www.lockbourneohio.us
+Ohio,Hamilton County,Lockland,http://www.lockland.com
+Ohio,Medina County,Lodi,http://www.villageoflodi.com
+Ohio,Hocking County,Logan,http://www.cityofloganohio.com/
+Ohio,Madison County,London,https://www.londonohio.gov/
+Ohio,Lorain County,Lorain,https://www.cityoflorain.org/
+Ohio,Trumbull County,Lordstown,http://www.lordstown.com/
+Ohio,Green Township,Loudonville,http://www.loudonville-oh.us/
+Ohio,Stark County,Louisville,http://www.louisvilleohio.com/
+Ohio,Hamilton County,Loveland,https://www.lovelandoh.gov/
+Ohio,Poland Township,Lowellville,http://www.villageoflowellville.com
+Ohio,Troy Township,Luckey,http://luckeyohio.org/
+Ohio,Cuyahoga County,Lyndhurst,https://www.lyndhurstohio.gov/
+Ohio,Summit County,Macedonia,http://www.macedonia.oh.us/
+Ohio,Hamilton County,Madeira,http://www.madeiracity.com
+Ohio,Madison Township,Madison,http://www.madisonvillage.org
+Ohio,Stark County,Magnolia,http://www.villageofmagnolia.com
+Ohio,Warren County,Maineville,http://www.mainevilleoh.com
+Ohio,Morgan County,Malta,http://www.malta.20m.com/
+Ohio,Brown Township,Malvern,http://www.villageofmalvern.net/
+Ohio,Adams County,Manchester,http://villageofmanchesterohio.com
+Ohio,Richland County,Mansfield,https://www.ci.mansfield.oh.us/
+Ohio,Portage County,Mantua,http://mantuavillage.com/
+Ohio,Cuyahoga County,Maple Heights,https://www.citymapleheights.com/
+Ohio,Franklin County,Marble Cliff,http://www.marblecliff.org/
+Ohio,Danbury Township,Marblehead,http://www.marbleheadvillageohio.com/
+Ohio,Hamilton County,Mariemont,http://www.mariemont.org
+Ohio,Washington County,Marietta,http://www.mariettaoh.net/
+Ohio,Marion Township,Marion,https://www.marionohio.us/
+Ohio,Wayne County,Marshallville,http://www.villageofmarshallville.org/
+Ohio,Belmont County,Martins Ferry,http://www.martinsferry.org/
+Ohio,Union County,Marysville,https://www.marysvilleohio.org/
+Ohio,Warren County,Mason,https://www.imaginemason.org/
+Ohio,Stark County,Massillon,https://massillonohio.gov/
+Ohio,Lucas County,Maumee,https://www.maumee.org/
+Ohio,Cuyahoga County,Mayfield,http://www.mayfieldvillage.com/
+Ohio,Cuyahoga County,Mayfield Heights,https://www.mayfieldheights.org/
+Ohio,Hancock County,McComb,https://www.villageofmccomb.com/
+Ohio,Trumbull County,McDonald,https://mcdonaldvillage.com/
+Ohio,Goshen Township,Mechanicsburg,http://www.mechanicsburgohio.org/
+Ohio,Medina County,Medina,http://www.medinaoh.org
+Ohio,Union Township,Mendon,http://villageofmendon.com
+Ohio,Lake County,Mentor,http://cityofmentor.com
+Ohio,Lake County,Mentor-on-the-Lake,http://www.citymol.org
+Ohio,Montgomery County,Miamisburg,http://www.ci.miamisburg.oh.us/
+Ohio,Cuyahoga County,Middleburg Heights,https://www.middleburgheights.com
+Ohio,Geauga County,Middlefield,http://www.middlefieldohio.com
+Ohio,Salisbury Township,Middleport,https://www.middleportohio.com/
+Ohio,Butler County,Middletown,https://www.cityofmiddletown.org/
+Ohio,Norwalk Township,Milan,http://www.milanohio.gov/
+Ohio,Clermont County,Milford,http://www.milfordohio.org
+Ohio,Hardy Township,Millersburg,http://www.millersburgohio.com/
+Ohio,Fairfield County,Millersport,http://www.millersportohio.com/
+Ohio,Stark County,Minerva,https://minerva.oh.us/
+Ohio,Franklin County,Minerva Park,http://www.minervapark.org
+Ohio,Steubenville Township,Mingo Junction,https://www.mingojct.us/
+Ohio,Jackson Township,Minster,http://www.minsteroh.com/
+Ohio,Summit County,Mogadore,https://mogadorevillage.org/
+Ohio,Butler County,Monroe,http://www.monroeohio.org
+Ohio,Huron County,Monroeville,http://www.monroevilleohio.com/
+Ohio,Hamilton County,Montgomery,https://www.montgomeryohio.gov
+Ohio,Williams County,Montpelier,http://www.montpelieroh.net/
+Ohio,Montgomery County,Moraine,http://www.ci.moraine.oh.us
+Ohio,Cuyahoga County,Moreland Hills,http://www.morelandhills.com/
+Ohio,Union Township,Morristown,http://www.morristownohio.org/
+Ohio,Warren County,Morrow,http://www.vil.morrow.oh.us/
+Ohio,Washington Township,Moscow,https://www.villageofmoscow.org/
+Ohio,Gilead Township,Mount Gilead,http://www.mountgilead.net/
+Ohio,Hamilton County,Mount Healthy,http://www.mthealthy.org
+Ohio,Brown County,Mount Orab,https://www.mtoraboh.us/
+Ohio,Knox County,Mount Vernon,http://www.mountvernonohio.org/
+Ohio,Hale Township,Mount Victory,http://www.mountvictory.com/
+Ohio,Summit County,Munroe Falls,http://munroefalls.com
+Ohio,Henry County,Napoleon,http://www.napoleonohio.cc/
+Ohio,Stark County,Navarre,http://www.navarreohio.net/
+Ohio,York Township,Nelsonville,https://cityofnelsonville.org/
+Ohio,Franklin County,New Albany,http://www.newalbanyohio.org
+Ohio,Scioto County,New Boston,http://www.newbostonvillage.com
+Ohio,Auglaize County,New Bremen,http://www.newbremen.com/
+Ohio,Clark County,New Carlisle,http://www.newcarlisle.net
+Ohio,Summit County,New Franklin,http://www.newfranklin.org/
+Ohio,Pickaway County,New Holland,http://www.newhollandohio.com
+Ohio,Washington Township,New Knoxville,http://www.newknoxville.com/
+Ohio,Montgomery County,New Lebanon,http://www.newlebanonoh.com/
+Ohio,Perry County,New Lexington,http://www.newlexington.org/
+Ohio,Huron County,New London,http://www.newlondonoh.com
+Ohio,Springfield Township,New Middletown,http://villageofnewmiddletown.com/
+Ohio,Tuscarawas County,New Philadelphia,http://www.newphilaoh.com/
+Ohio,Ohio Township,New Richmond,http://www.newrichmond.org/
+Ohio,Clinton County,New Vienna,http://newvienna.net/
+Ohio,Crestview Local School District (Columbiana County),New Waterford,https://newwaterford-oh.gov/
+Ohio,Licking County,Newark,http://www.newarkohio.net/
+Ohio,Cuyahoga County,Newburgh Heights,https://newburgh-oh.gov/
+Ohio,Oxford Township,Newcomerstown,http://www.newcomerstownoh.com/
+Ohio,Trumbull County,Newton Falls,http://ci.newtonfalls.oh.us/
+Ohio,Hamilton County,Newtown,http://www.newtownohio.gov/
+Ohio,Trumbull County,Niles,https://www.thecityofniles.com/
+Ohio,Henry Township,North Baltimore,https://www.northbaltimore.org/
+Ohio,Miami Township,North Bend,http://www.northbendohio.org
+Ohio,Stark County,North Canton,http://northcantonohio.gov/
+Ohio,Hamilton County,North College Hill,http://www.northcollegehill.org/
+Ohio,Huron County,North Fairfield,http://www.northfairfieldvillage.com
+Ohio,Ashtabula County,North Kingsville,http://www.northkingsvilleohio.org/
+Ohio,Rush Township,North Lewisburg,http://www.northlewisburg.com/
+Ohio,Cuyahoga County,North Olmsted,http://www.north-olmsted.com
+Ohio,Perry Township,North Perry,http://northperry.org
+Ohio,Cuyahoga County,North Randall,http://www.northrandall.com
+Ohio,Lorain County,North Ridgeville,http://www.nridgeville.org
+Ohio,Cuyahoga County,North Royalton,https://www.northroyalton.org/
+Ohio,Summit County,Northfield,http://www.northfieldvillage-oh.gov/
+Ohio,Wood County,Northwood,http://www.ci.northwood.oh.us/
+Ohio,Summit County,Norton,http://cityofnorton.org
+Ohio,Huron County,Norwalk,http://www.norwalkoh.com/
+Ohio,Hamilton County,Norwood,http://www.norwood-ohio.com/
+Ohio,Ottawa County,Oak Harbor,http://www.oakharbor.oh.us/
+Ohio,Jackson County,Oak Hill,http://www.oakhillvillage.net
+Ohio,Montgomery County,Oakwood,http://www.ci.oakwood.oh.us/
+Ohio,Cuyahoga County,Oakwood,http://www.oakwoodvillageoh.com/
+Ohio,Montgomery County,Oberlin,http://www.cityofoberlin.com/
+Ohio,Franklin County,Obetz,http://www.obetz.oh.us
+Ohio,Liberty Township,Ohio City,http://www.villageofohiocity.org
+Ohio,Cuyahoga County,Olmsted Falls,https://www.olmstedfalls.org
+Ohio,Richland County,Ontario,http://www.ontarioohio.org/
+Ohio,Cuyahoga County,Orange,http://www.orangevillage.com/
+Ohio,Lucas County,Oregon,https://www.oregonohio.org/
+Ohio,Wayne County,Orrville,http://www.orrville.com/
+Ohio,Ashtabula County,Orwell,http://www.orwellvillage.org/
+Ohio,Putnam County,Ottawa,http://www.ottawaohio.us
+Ohio,Lucas County,Ottawa Hills,http://www.ottawahills.org/
+Ohio,Putnam County,Ottoville,http://www.villageofottoville.org/
+Ohio,Stonelick Township,Owensville,http://www.villageofowensville.org
+Ohio,Butler County,Oxford,https://www.cityofoxford.org/
+Ohio,Lake County,Painesville,http://www.painesville.com
+Ohio,Putnam County,Pandora,http://www.pandoraoh.com/
+Ohio,Cuyahoga County,Parma,http://www.cityofparma-oh.gov
+Ohio,Cuyahoga County,Parma Heights,http://www.parmaheightsoh.gov
+Ohio,Licking County,Pataskala,http://www.cityofpataskalaohio.gov/
+Ohio,Paulding County,Paulding,http://villageofpaulding.com/
+Ohio,Freedom Township,Pemberville,http://pembervillelibrary.org/
+Ohio,Summit County,Peninsula,https://villageofpeninsula-oh.gov/
+Ohio,Cuyahoga County,Pepper Pike,http://www.pepperpike.org/
+Ohio,Perry Township,Perry,http://perryvillageohio.com
+Ohio,Wood County,Perrysburg,https://www.ci.perrysburg.oh.us/
+Ohio,Ashland County,Perrysville,http://www.villageofperrysville.com
+Ohio,Fairfield County,Pickerington,https://www.ci.pickerington.oh.us/
+Ohio,Madison Township,Pioneer,http://www.villageofpioneer.com/
+Ohio,Miami County,Piqua,http://www.piquaoh.org/
+Ohio,Madison County,Plain City,http://www.plain-city.com
+Ohio,Newton Township,Pleasant Hill,http://www.pleasanthillohio.com
+Ohio,Richland County,Plymouth,http://www.plymouthoh.org/
+Ohio,Mahoning County,Poland,https://polandvillage.org/
+Ohio,Ottawa County,Port Clinton,http://www.portclinton.com/
+Ohio,Scioto County,Portsmouth,https://portsmouthoh.org/
+Ohio,Liberty Township,Powell,http://www.cityofpowell.us/
+Ohio,Put-in-Bay Township,Put-in-Bay,http://villageofpib.com/
+Ohio,Portage County,Ravenna,http://www.RavennaOh.gov/
+Ohio,Hamilton County,Reading,http://www.readingohio.org
+Ohio,Summit County,Reminderville,http://www.reminderville.com/
+Ohio,Franklin County,Reynoldsburg,https://reynoldsburg.gov/
+Ohio,Summit County,Richfield,https://www.richfieldvillageohio.org
+Ohio,Cuyahoga County,Richmond Heights,http://www.richmondheightsohio.org
+Ohio,Claibourne Township,Richwood,https://www.richwoodohio.org/
+Ohio,Union Township,Ripley,http://villageofripley.com/
+Ohio,Wayne County,Rittman,http://www.rittman.com/
+Ohio,Franklin County,Riverlea,http://www.riverleaohio.com/
+Ohio,Montgomery County,Riverside,https://www.riversideoh.gov/
+Ohio,Ashtabula County,Roaming Shores,http://www.roamingshores.org/
+Ohio,Dublin Township,Rockford,https://rockfordalive.com/
+Ohio,Cuyahoga County,Rocky River,https://www.rrcity.com/
+Ohio,Wood County,Rossford,https://www.rossfordohio.com/
+Ohio,Washington Township,Russells Point,http://russellspoint-oh.gov
+Ohio,Shelby County,Russia,http://www.russiaoh.com/
+Ohio,Rutland Township,Rutland,http://www.villageofrutland.org
+Ohio,Clinton County,Sabina,http://sabinaohio.us/
+Ohio,Columbiana County,Salem,http://www.cityofsalemohio.org/
+Ohio,Erie County,Sandusky,http://www.ci.sandusky.oh.us
+Ohio,Brown County,Sardinia,https://villageofsardinia.com/
+Ohio,Ashland County,Savannah,http://www.savannahohio.com/index.html
+Ohio,Harrison County,Scio,https://www.villageofscio.com/
+Ohio,Smith Township,Sebring,http://www.sebringohio.net/
+Ohio,Cuyahoga County,Seven Hills,http://www.sevenhillsohio.org/
+Ohio,Medina County,Seville,https://www.villageofseville.org/
+Ohio,Cuyahoga County,Shaker Heights,https://shakeronline.com/
+Ohio,Hamilton County,Sharonville,http://www.sharonville.org
+Ohio,Concord Township,Shawnee Hills,http://www.shawneehillsoh.org/
+Ohio,Lorain County,Sheffield,http://sheffieldvillage.com
+Ohio,Lorain County,Sheffield Lake,http://www.sheffieldlake.net/
+Ohio,Richland County,Shelby,http://shelbycity.oh.gov/
+Ohio,Defiance County,Sherwood,http://www.sherwoodohio.com
+Ohio,Richland County,Shiloh,http://thevillageofshilohohio.vpweb.com/Home.html
+Ohio,Clinton Township,Shreve,http://www.shreveohio.com/
+Ohio,Shelby County,Sidney,https://www.sidneyoh.com/
+Ohio,Summit County,Silver Lake,http://www.villageofsilverlake.com
+Ohio,Hamilton County,Silverton,http://www.cityofsilverton.com
+Ohio,Wayne County,Smithville,https://www.thevillageofsmithville.com/
+Ohio,Cuyahoga County,Solon,https://www.solonohio.org/
+Ohio,Perry County,Somerset,http://www.somersetohio.org
+Ohio,Amherst Township,South Amherst,http://www.villageofsouthamherst.com
+Ohio,Harrison Township,South Bloomfield,http://www.southbloomfieldoh.com/
+Ohio,Madison Township,South Charleston,http://villageofsouthcharleston.net/
+Ohio,Cuyahoga County,South Euclid,https://www.cityofsoutheuclid.com/
+Ohio,Warren County,South Lebanon,http://www.southlebanonohio.org
+Ohio,Perry Township,South Point,http://www.villageofsouthpoint.com/
+Ohio,Geauga County,South Russell,http://www.southrussell.com/
+Ohio,Harmony Township,South Vienna,http://southvienna.org
+Ohio,Medina County,Spencer,https://spencervillageohio.com/
+Ohio,Spencer Township,Spencerville,http://spencervilleoh.com/
+Ohio,Warren County,Springboro,http://www.cityofspringboro.com/
+Ohio,Hamilton County,Springdale,http://www.springdale.org
+Ohio,Clark County,Springfield,http://www.ci.springfield.oh.us/
+Ohio,Hamilton County,St. Bernard,http://www.cityofstbernard.org
+Ohio,Belmont County,St. Clairsville,http://www.stclairsville.com/
+Ohio,Auglaize County,St. Marys,http://www.cityofstmarys.net/
+Ohio,Champaign County,St. Paris,http://www.stparisohio.org/
+Ohio,Jefferson County,Steubenville,http://www.cityofsteubenville.us/
+Ohio,Morgan County,Stockport,http://stockportohio.weebly.com/
+Ohio,Summit County,Stow,http://stow.oh.us
+Ohio,Franklin Township,Strasburg,https://www.villageofstrasburg.org/
+Ohio,Portage County,Streetsboro,http://cityofstreetsboro.com/
+Ohio,Cuyahoga County,Strongsville,https://www.strongsville.org/
+Ohio,Mahoning County,Struthers,http://www.cityofstruthers.com/
+Ohio,Portage County,Sugar Bush Knolls,http://sugarbushknollsohio.org/
+Ohio,Fairfield County,Sugar Grove,http://www.sugar-grove.com
+Ohio,Sugar Creek Township,Sugarcreek,http://www.villageofsugarcreek.com/
+Ohio,Delaware County,Sunbury,http://sunburyvillage.com/
+Ohio,Fulton Township,Swanton,http://www.villageofswantonohio.us
+Ohio,Lucas County,Sylvania,http://www.cityofsylvania.com
+Ohio,Summit County,Tallmadge,http://www.tallmadge-ohio.org/
+Ohio,Hamilton County,Terrace Park,http://www.terracepark.org/village
+Ohio,Perry County,Thornville,http://www.thornville.us
+Ohio,Seneca County,Tiffin,https://tiffinohio.gov/
+Ohio,Miami County,Tipp City,http://www.tippcityohio.gov/
+Ohio,Lucas County,Toledo,https://www.toledo.oh.gov/
+Ohio,Island Creek Township,Toronto,https://torontocity.weebly.com/
+Ohio,Butler County,Trenton,http://www.ci.trenton.oh.us
+Ohio,Montgomery County,Trotwood,https://trotwood.org/
+Ohio,Miami County,Troy,https://www.troyohio.gov/
+Ohio,Summit County,Twinsburg,http://www.mytwinsburg.com/
+Ohio,Mill Township,Uhrichsville,https://www.cityofuhrichsville.org/
+Ohio,Montgomery County,Union,http://www.unionoh.org/
+Ohio,Jackson Township,Union City,https://villageofunioncityohio.org/
+Ohio,Cuyahoga County,University Heights,https://www.universityheights.com/
+Ohio,Franklin County,Upper Arlington,https://upperarlingtonoh.gov/
+Ohio,Crane Township,Upper Sandusky,http://www.uppersanduskyoh.com/
+Ohio,Champaign County,Urbana,http://urbanaohio.com/
+Ohio,Licking County,Utica,https://uticaohio.gov/
+Ohio,Cuyahoga County,Valley View,http://www.valleyview.net/
+Ohio,Pleasant Township,Van Wert,http://www.vanwert.org/
+Ohio,Montgomery County,Vandalia,http://www.vandaliaohio.org/
+Ohio,Jennings Township,Venedocia,http://www.venedocia.org/
+Ohio,Lorain County,Vermilion,http://www.vermilion.net
+Ohio,Darke County,Versailles,https://versaillesoh.com/
+Ohio,Medina County,Wadsworth,https://www.wadsworthcity.com/
+Ohio,Lake Township,Walbridge,https://www.walbridgeohio.org/
+Ohio,Cuyahoga County,Walton Hills,http://www.waltonhillsohio.gov/
+Ohio,Auglaize County,Wapakoneta,http://www.wapakoneta.net
+Ohio,Trumbull County,Warren,https://www.warren.org/
+Ohio,Cuyahoga County,Warrensville Heights,https://www.cityofwarrensville.com/
+Ohio,Union Township,Washington Court House,http://www.cityofwch.com/
+Ohio,Lucas County,Waterville,http://www.waterville.org/
+Ohio,Clinton Township,Wauseon,http://www.cityofwauseon.com/
+Ohio,Pike County,Waverly,http://www.cityofwaverly.net/
+Ohio,Neave Township,Wayne Lakes,http://www.waynelakesohio.com
+Ohio,Wayne Township,Waynesfield,http://www.waynesfieldohio.com/
+Ohio,Warren County,Waynesville,http://www.waynesville-ohio.org/
+Ohio,Wellington Township,Wellington,http://www.villageofwellington.com
+Ohio,Jackson County,Wellston,http://www.cityofwellston.org/
+Ohio,Preble County,West Alexandria,http://www.walexpreb.org/
+Ohio,Montgomery County,West Carrollton,https://www.westcarrollton.org/
+Ohio,Madison County,West Jefferson,https://www.westjeffersonohio.gov/
+Ohio,Lafayette Township,West Lafayette,http://www.westlafayettevillage.com/
+Ohio,Liberty Township,West Liberty,http://www.mywestliberty.com
+Ohio,Bokescreek Township,West Mansfield,http://westmansfield.net
+Ohio,Union Township,West Milton,http://www.westmiltonohio.gov/
+Ohio,Wayne County,West Salem,http://westsalemvillage.com/
+Ohio,Adams County,West Union,http://www.westunionoh.net/
+Ohio,Williams County,West Unity,http://www.westunity.org/
+Ohio,Delaware County,Westerville,https://www.westerville.org/
+Ohio,Medina County,Westfield Center,http://www.villageofwestfieldcenter.com
+Ohio,Cuyahoga County,Westlake,https://www.cityofwestlake.org/
+Ohio,Wood County,Weston,http://www.westonohio.org/
+Ohio,Franklin County,Whitehall,https://www.whitehall-oh.us/
+Ohio,Waterville Township,Whitehouse,https://whitehouseoh.gov/
+Ohio,Lake County,Wickliffe,http://www.cityofwickliffe.com
+Ohio,Huron County,Willard,http://www.willardohio.us/
+Ohio,Williamsburg Township,Williamsburg,http://www.williamsburgohio.org/
+Ohio,Lake County,Willoughby,http://www.willoughbyohio.com
+Ohio,Lake County,Willoughby Hills,http://www.willoughbyhills-oh.gov
+Ohio,Lake County,Willowick,http://www.cityofwillowick.com
+Ohio,Clinton County,Wilmington,https://wilmingtonoh.org/
+Ohio,Portage County,Windham,http://windhamvillage.com
+Ohio,Cross Creek Township,Wintersville,http://www.wintersville.net/
+Ohio,Hamilton County,Woodlawn,http://www.beautifulwoodlawn.us
+Ohio,Cuyahoga County,Woodmere,http://www.woodmerevillage.com/
+Ohio,Rush Township,Woodstock,http://www.woodstockohio.org
+Ohio,Woodville Township,Woodville,http://villageofwoodville.com/
+Ohio,Wayne County,Wooster,https://www.woosteroh.com/
+Ohio,Franklin County,Worthington,https://www.worthington.org/
+Ohio,Hamilton County,Wyoming,http://www.wyomingohio.gov
+Ohio,Greene County,Xenia,https://www.ci.xenia.oh.us/
+Ohio,Greene County,Yellow Springs,https://www.yso.com/
+Ohio,Mahoning County,Youngstown,https://youngstownohio.gov/
+Ohio,Muskingum County,Zanesville,http://www.coz.org/
+Oklahoma,Pontotoc County,Ada,http://www.adaok.com
+Oklahoma,Jackson County,Altus,http://www.altusok.gov
+Oklahoma,Woods County,Alva,https://www.alvaok.org/
+Oklahoma,Caddo County,Anadarko,http://www.cityofanadarko.org/
+Oklahoma,Carter County,Ardmore,http://www.ardmorecity.org
+Oklahoma,Washington County,Bartlesville,http://www.cityofbartlesville.org/
+Oklahoma,Oklahoma County,Bethany,http://cityofbethany.org/
+Oklahoma,Tulsa County,Bixby,https://www.bixbyok.gov/
+Oklahoma,Kay County,Blackwell,http://www.cityofblackwell.com/
+Oklahoma,McClain County,Blanchard,http://cityofblanchard.us
+Oklahoma,Tulsa County,Broken Arrow,http://www.brokenarrowok.gov
+Oklahoma,Grady County,Chickasha,http://www.chickasha.org
+Oklahoma,Oklahoma County,Choctaw,http://www.choctawcity.org
+Oklahoma,Rogers County,Claremore,http://www.claremorecity.com/
+Oklahoma,Custer County,Clinton,http://www.clintonokla.org/
+Oklahoma,Tulsa County,Collinsville,http://www.cityofcollinsville.com/
+Oklahoma,Wagoner County,Coweta,http://www.cityofcoweta-ok.gov/
+Oklahoma,Payne County,Cushing,https://www.cityofcushing.com/
+Oklahoma,Oklahoma County,Del City,http://www.cityofdelcity.com/
+Oklahoma,Stephens County,Duncan,http://www.cityofduncan.com
+Oklahoma,Bryan County,Durant,http://www.durant.org
+Oklahoma,Oklahoma County,Edmond,https://edmondok.gov
+Oklahoma,Canadian County,El Reno,https://www.elrenook.gov
+Oklahoma,Beckham County,Elk City,http://www.elkcity.com
+Oklahoma,Garfield County,Enid,http://www.enid.org/
+Oklahoma,Tulsa County,Glenpool,http://www.glenpoolonline.com/
+Oklahoma,Delaware County,Grove,https://www.cityofgroveok.gov
+Oklahoma,Logan County,Guthrie,http://www.cityofguthrie.com/
+Oklahoma,Texas County,Guymon,https://www.guymonok.org/
+Oklahoma,Oklahoma County,Harrah,https://cityofharrah.com/
+Oklahoma,Okmulgee County,Henryetta,https://cityofhenryetta.com/
+Oklahoma,Hughes County,Holdenville,https://www.cityofholdenville.net/
+Oklahoma,Choctaw County,Hugo,http://hugook.com
+Oklahoma,McCurtain County,Idabel,http://www.idabel-ok.gov/
+Oklahoma,Tulsa County,Jenks,http://www.jenks.com
+Oklahoma,Comanche County,Lawton,https://www.lawtonok.gov/
+Oklahoma,Pittsburg County,McAlester,http://www.cityofmcalester.com
+Oklahoma,Ottawa County,Miami,http://www.miamiokla.net/
+Oklahoma,Oklahoma County,Midwest City,http://www.midwestcityok.org/
+Oklahoma,Cleveland County,Moore,http://www.cityofmoore.com
+Oklahoma,Muskogee County,Muskogee,http://www.muskogeeonline.org/
+Oklahoma,McClain County,Newcastle,http://www.cityofnewcastleok.com/
+Oklahoma,Cleveland County,Noble,http://cityofnoble.org
+Oklahoma,Cleveland County,Norman,http://www.normanok.gov
+Oklahoma,Okmulgee County,Okmulgee,http://www.okmulgeeonline.com/
+Oklahoma,Tulsa County,Owasso,http://www.cityofowasso.com/
+Oklahoma,Garvin County,Pauls Valley,http://www.paulsvalley.com
+Oklahoma,Canadian County,Piedmont,http://www.piedmont-ok.gov
+Oklahoma,Kay County,Ponca City,http://poncacityok.gov/
+Oklahoma,Le Flore County,Poteau,http://www.poteau-ok.com
+Oklahoma,Mayes County,Pryor Creek,http://pryorcreek.org/
+Oklahoma,McClain County,Purcell,http://www.cityofpurcell.com
+Oklahoma,Sequoyah County,Sallisaw,http://www.sallisawok.org/
+Oklahoma,Tulsa County,Sand Springs,http://www.sandspringsok.org/
+Oklahoma,Creek County,Sapulpa,http://www.cityofsapulpa.net
+Oklahoma,Seminole County,Seminole,http://www.seminole-oklahoma.net/
+Oklahoma,Pottawatomie County,Shawnee,http://www.ShawneeOK.org
+Oklahoma,Osage County,Skiatook,https://www.cityofskiatook.com/
+Oklahoma,Payne County,Stillwater,http://www.stillwater.org/
+Oklahoma,Murray County,Sulphur,http://www.sulphurok.city/
+Oklahoma,Cherokee County,Tahlequah,https://www.cityoftahlequah.com/
+Oklahoma,Pottawatomie County,Tecumseh,https://www.tecumsehok.org/
+Oklahoma,Oklahoma County,The Village,https://www.thevillageok.org/
+Oklahoma,Osage County,Tulsa,http://www.cityoftulsa.org/
+Oklahoma,Grady County,Tuttle,http://cityoftuttle.com
+Oklahoma,Craig County,Vinita,https://www.cityofvinita.com/
+Oklahoma,Wagoner County,Wagoner,http://wagonerok.org/
+Oklahoma,Oklahoma County,Warr Acres,https://www.warracres-ok.gov/
+Oklahoma,Custer County,Weatherford,http://www.cityofweatherford.com/
+Oklahoma,Woodward County,Woodward,https://www.cityofwoodward-ok.gov/
+Oklahoma,Canadian County,Yukon,http://www.cityofyukonok.gov
+Oregon,Benton County,Adair Village,http://adairvillage.org/
+Oregon,Umatilla County,Adams,http://www.cityofadamsoregon.com/
+Oregon,Linn County,Albany,http://www.cityofalbany.net
+Oregon,Yamhill County,Amity,https://www.cityofamityoregon.org/
+Oregon,Wasco County,Antelope,http://cityofantelope.us/
+Oregon,Gilliam County,Arlington,https://www.cityofarlingtonoregon.com/
+Oregon,Jackson County,Ashland,http://www.ashland.or.us
+Oregon,Clatsop County,Astoria,http://www.astoria.or.us/
+Oregon,Umatilla County,Athena,http://cityofathena.com/
+Oregon,Marion County,Aumsville,http://www.aumsville.us/
+Oregon,Marion County,Aurora,http://www.ci.aurora.or.us/
+Oregon,Baker County,Baker City,http://www.bakercity.com/
+Oregon,Coos County,Bandon,http://www.cityofbandon.org/
+Oregon,Washington County,Banks,http://www.cityofbanks.org/
+Oregon,Tillamook County,Bay City,http://www.ci.bay-city.or.us/
+Oregon,Washington County,Beaverton,http://www.beavertonoregon.gov/
+Oregon,Deschutes County,Bend,http://www.bendoregon.gov/
+Oregon,Morrow County,Boardman,https://www.cityofboardman.com/
+Oregon,Klamath County,Bonanza,http://townofbonanza.com
+Oregon,Curry County,Brookings,http://www.brookings.or.us/
+Oregon,Linn County,Brownsville,http://www.ci.brownsville.or.us
+Oregon,Harney County,Burns,https://www.cityofburnsor.gov/
+Oregon,Clackamas County,Canby,http://www.canbyoregon.gov/
+Oregon,Clatsop County,Cannon Beach,http://www.ci.cannon-beach.or.us/
+Oregon,Douglas County,Canyonville,http://www.cityofcanyonville.com/
+Oregon,Yamhill County,Carlton,http://www.ci.carlton.or.us
+Oregon,Hood River County,Cascade Locks,http://cascade-locks.or.us
+Oregon,Josephine County,Cave Junction,http://www.cavejunctionoregon.us
+Oregon,Jackson County,Central Point,http://www.centralpointoregon.gov/
+Oregon,Columbia County,Clatskanie,http://cityofclatskanie.com
+Oregon,Lane County,Coburg,http://www.coburgoregon.org
+Oregon,Columbia County,Columbia City,http://www.columbia-city.org
+Oregon,Gilliam County,Condon,http://www.cityofcondon.com
+Oregon,Coos County,Coos Bay,https://www.coosbayor.gov/
+Oregon,Coos County,Coquille,http://www.cityofcoquille.org
+Oregon,Washington County,Cornelius,http://www.ci.cornelius.or.us
+Oregon,Benton County,Corvallis,http://www.ci.corvallis.or.us
+Oregon,Lane County,Cottage Grove,http://www.cottagegrove.org
+Oregon,Lane County,Creswell,http://www.ci.creswell.or.us/
+Oregon,Jefferson County,Culver,http://www.cityofculver.net/
+Oregon,Polk County,Dallas,https://www.dallasor.gov/
+Oregon,Yamhill County,Dayton,http://www.daytonoregon.gov/
+Oregon,Lincoln County,Depoe Bay,https://www.cityofdepoebay.org/
+Oregon,Marion County,Donald,https://www.donaldoregon.gov/
+Oregon,Douglas County,Drain,http://www.cityofdrain.org/
+Oregon,Wasco County,Dufur,http://www.cityofdufur.org/
+Oregon,Yamhill County,Dundee,http://www.dundeecity.org
+Oregon,Lane County,Dunes City,http://dunescityhall.com/
+Oregon,Washington County,Durham,http://www.durham-oregon.us
+Oregon,Jackson County,Eagle Point,http://www.cityofeaglepoint.org
+Oregon,Umatilla County,Echo,http://www.echo-oregon.com
+Oregon,Union County,Elgin,http://www.cityofelginor.org/
+Oregon,Douglas County,Elkton,http://www.elkton-oregon.com/
+Oregon,Wallowa County,Enterprise,http://www.enterpriseoregon.org
+Oregon,Clackamas County,Estacada,http://www.cityofestacada.org
+Oregon,Lane County,Eugene,http://www.eugene-or.gov/
+Oregon,Multnomah County,Fairview,http://fairvieworegon.gov/
+Oregon,Polk County,Falls City,http://www.fallscityoregon.gov/
+Oregon,Lane County,Florence,http://www.ci.florence.or.us
+Oregon,Washington County,Forest Grove,http://www.forestgrove-or.gov/
+Oregon,Wheeler County,Fossil,http://www.cityoffossil.org
+Oregon,Tillamook County,Garibaldi,http://www.ci.garibaldi.or.us
+Oregon,Washington County,Gaston,http://www.cityofgaston.com
+Oregon,Clatsop County,Gearhart,http://www.ci.gearhart.or.us/
+Oregon,Marion County,Gervais,http://www.gervaisoregon.org
+Oregon,Clackamas County,Gladstone,http://www.ci.gladstone.or.us
+Oregon,Douglas County,Glendale,http://www.cityofglendaleor.com/
+Oregon,Curry County,Gold Beach,http://www.goldbeachoregon.gov/
+Oregon,Jackson County,Gold Hill,http://www.cityofgoldhill.com
+Oregon,Josephine County,Grants Pass,http://www.grantspassoregon.gov
+Oregon,Multnomah County,Gresham,http://www.greshamoregon.gov/
+Oregon,Baker County,Haines,http://www.cityofhainesor.org/
+Oregon,Linn County,Halsey,http://www.cityofhalsey.com
+Oregon,Clackamas County,Happy Valley,http://www.happyvalleyor.gov/
+Oregon,Linn County,Harrisburg,http://ci.harrisburg.or.us
+Oregon,Morrow County,Heppner,http://www.cityofheppner.com/
+Oregon,Umatilla County,Hermiston,http://hermiston.or.us
+Oregon,Washington County,Hillsboro,http://www.hillsboro-oregon.gov/
+Oregon,Harney County,Hines,https://www.cityofhines.com
+Oregon,Hood River County,Hood River,https://cityofhoodriver.gov/
+Oregon,Marion County,Hubbard,http://www.cityofhubbard.org/
+Oregon,Union County,Imbler,http://www.imbleroregon.com
+Oregon,Polk County,Independence,http://www.ci.independence.or.us/
+Oregon,Morrow County,Irrigon,https://ci.irrigon.or.us/
+Oregon,Jackson County,Jacksonville,http://www.jacksonvilleor.us
+Oregon,Marion County,Jefferson,https://www.jeffersonoregon.org/
+Oregon,Grant County,John Day,http://www.cityofjohnday.com
+Oregon,Clackamas County,Johnson City,https://www.johnsoncity.us
+Oregon,Malheur County,Jordan Valley,http://www.cityofjordanvalley.com
+Oregon,Wallowa County,Joseph,http://www.josephoregon.org/
+Oregon,Lane County,Junction City,http://www.junctioncityoregon.gov/
+Oregon,Marion County,Keizer,http://www.keizer.org/
+Oregon,Washington County,King City,http://www.ci.king-city.or.us
+Oregon,Klamath County,Klamath Falls,https://www.klamathfalls.city/
+Oregon,Union County,La Grande,http://www.cityoflagrande.org
+Oregon,Deschutes County,La Pine,https://www.lapineoregon.gov/
+Oregon,Yamhill County,Lafayette,http://www.ci.lafayette.or.us
+Oregon,Clackamas County,Lake Oswego,http://www.ci.oswego.or.us/
+Oregon,Linn County,Lebanon,http://www.ci.lebanon.or.us
+Oregon,Lincoln County,Lincoln City,http://www.lincolncity.org
+Oregon,Wallowa County,Lostine,https://www.cityoflostine.com/
+Oregon,Lane County,Lowell,http://www.ci.lowell.or.us
+Oregon,Linn County,Lyons,https://www.cityoflyons.org
+Oregon,Jefferson County,Madras,http://www.ci.madras.or.us/
+Oregon,Tillamook County,Manzanita,http://www.ci.manzanita.or.us/
+Oregon,Multnomah County,Maywood Park,https://cityofmaywoodpark.com/
+Oregon,Yamhill County,McMinnville,http://www.ci.mcminnville.or.us
+Oregon,Jackson County,Medford,https://www.medfordoregon.gov/Home
+Oregon,Linn County,Mill City,http://www.ci.mill-city.or.us
+Oregon,Linn County,Millersburg,http://cityofmillersburg.org
+Oregon,Umatilla County,Milton-Freewater,https://www.mfcity.com
+Oregon,Clackamas County,Milwaukie,http://www.milwaukieoregon.gov
+Oregon,Clackamas County,Molalla,http://www.cityofmolalla.com/
+Oregon,Polk County,Monmouth,http://www.ci.monmouth.or.us
+Oregon,Grant County,Monument,http://www.cityofmonument.com
+Oregon,Sherman County,Moro,http://www.cityofmoro.net
+Oregon,Wasco County,Mosier,http://www.cityofmosier.com/
+Oregon,Marion County,Mt. Angel,http://www.ci.mt-angel.or.us/
+Oregon,Douglas County,Myrtle Creek,http://cityofmyrtlecreek.com
+Oregon,Coos County,Myrtle Point,http://www.ci.myrtlepoint.or.us/
+Oregon,Tillamook County,Nehalem,http://www.ci.nehalem.or.us
+Oregon,Yamhill County,Newberg,http://www.newbergoregon.gov
+Oregon,Lincoln County,Newport,http://www.newportoregon.gov
+Oregon,Coos County,North Bend,http://northbendoregon.us/
+Oregon,Washington County,North Plains,http://www.northplains.org/
+Oregon,Malheur County,Nyssa,http://www.nyssacity.org
+Oregon,Douglas County,Oakland,http://www.oaklandoregon.org/
+Oregon,Lane County,Oakridge,http://www.ci.oakridge.or.us/
+Oregon,Malheur County,Ontario,http://www.ontariooregon.org/
+Oregon,Clackamas County,Oregon City,http://www.orcity.org/
+Oregon,Lake County,Paisley,http://cityofpaisley.net
+Oregon,Umatilla County,Pendleton,http://www.pendleton.or.us/
+Oregon,Benton County,Philomath,http://www.ci.philomath.or.us
+Oregon,Jackson County,Phoenix,https://www.phoenixoregon.gov/
+Oregon,Umatilla County,Pilot Rock,https://www.cityofpilotrock.org
+Oregon,Curry County,Port Orford,http://www.portorford.org
+Oregon,Multnomah County,Portland,https://www.portlandoregon.gov/
+Oregon,Grant County,Prairie City,http://www.prairiecityoregon.com/
+Oregon,Crook County,Prineville,http://www.cityofprineville.com
+Oregon,Columbia County,Rainier,https://cityofrainier.com/
+Oregon,Deschutes County,Redmond,http://www.ci.redmond.or.us
+Oregon,Douglas County,Reedsport,http://www.reedsport.or.us
+Oregon,Clackamas County,Rivergrove,https://www.cityofrivergrove.org/
+Oregon,Tillamook County,Rockaway Beach,http://www.rockawaybeachor.us
+Oregon,Jackson County,Rogue River,http://www.cityofrogueriver.org
+Oregon,Douglas County,Roseburg,http://cityofroseburg.org
+Oregon,Marion County,Salem,http://cityofsalem.net
+Oregon,Clackamas County,Sandy,http://www.ci.sandy.or.us/
+Oregon,Columbia County,Scappoose,http://www.ci.scappoose.or.us
+Oregon,Linn County,Scio,http://ci.scio.or.us
+Oregon,Marion County,Scotts Mills,http://scottsmills.org/
+Oregon,Clatsop County,Seaside,http://www.cityofseaside.us
+Oregon,Jackson County,Shady Cove,http://www.shadycove.org
+Oregon,Wasco County,Shaniko,http://www.shanikooregon.com
+Oregon,Yamhill County,Sheridan,http://www.cityofsheridanor.com/
+Oregon,Washington County,Sherwood,https://www.sherwoodoregon.gov
+Oregon,Lincoln County,Siletz,http://www.cityofsiletz.org
+Oregon,Marion County,Silverton,http://www.silverton.or.us
+Oregon,Deschutes County,Sisters,http://www.ci.sisters.or.us
+Oregon,Linn County,Sodaville,http://sodaville.org
+Oregon,Wheeler County,Spray,http://www.sprayoregon.us
+Oregon,Lane County,Springfield,http://www.springfield-or.gov/
+Oregon,Columbia County,St. Helens,http://www.ci.st-helens.or.us/
+Oregon,Marion County,Stayton,http://www.staytonoregon.gov/
+Oregon,Marion County,Sublimity,http://www.cityofsublimity.org
+Oregon,Baker County,Sumpter,http://www.historicsumpter.com
+Oregon,Douglas County,Sutherlin,http://www.ci.sutherlin.or.us
+Oregon,Linn County,Sweet Home,http://www.sweethomeor.gov
+Oregon,Jackson County,Talent,http://www.cityoftalent.org/
+Oregon,Linn County,Tangent,http://www.cityoftangent.org
+Oregon,Wasco County,The Dalles,http://www.ci.the-dalles.or.us/
+Oregon,Washington County,Tigard,http://www.tigard-or.gov/
+Oregon,Tillamook County,Tillamook,http://www.tillamookor.gov
+Oregon,Lincoln County,Toledo,http://www.cityoftoledo.org
+Oregon,Multnomah County,Troutdale,https://www.troutdaleoregon.gov/
+Oregon,Washington County,Tualatin,http://www.tualatinoregon.gov/
+Oregon,Marion County,Turner,http://www.cityofturner.org/
+Oregon,Umatilla County,Ukiah,http://www.cityofukiahoregon.com
+Oregon,Umatilla County,Umatilla,http://www.umatilla-city.org/
+Oregon,Union County,Union,http://www.cityofunion.com
+Oregon,Malheur County,Vale,http://www.vale.or.us/
+Oregon,Lane County,Veneta,http://www.ci.veneta.or.us
+Oregon,Columbia County,Vernonia,http://www.vernonia-or.gov
+Oregon,Lincoln County,Waldport,https://www.waldportoregon.gov
+Oregon,Clatsop County,Warrenton,http://www.ci.warrenton.or.us/
+Oregon,Sherman County,Wasco,http://www.wascooregon.com
+Oregon,Clackamas County,West Linn,http://westlinnoregon.gov
+Oregon,Lane County,Westfir,https://www.ci.westfir.or.us/
+Oregon,Yamhill County,Willamina,http://www.willaminaoregon.gov/
+Oregon,Clackamas County,Wilsonville,http://www.ci.wilsonville.or.us/
+Oregon,Douglas County,Winston,https://winstoncity.org
+Oregon,Multnomah County,Wood Village,http://www.ci.wood-village.or.us/
+Oregon,Marion County,Woodburn,http://www.woodburn-or.gov/
+Oregon,Lincoln County,Yachats,http://www.yachatsoregon.org
+Oregon,Yamhill County,Yamhill,http://www.cityofyamhill.com
+Oregon,Douglas County,Yoncalla,http://www.cityofyoncalla.com/
+Pennsylvania,Potter County,Abbott Township,http://www.abbotttownship-pa.org/
+Pennsylvania,Adams County,Abbottstown,http://adams.pacounties.org/Munic/AbbottstownBorough/Pages/default.aspx
+Pennsylvania,Montgomery County,Abington Township,http://www.abington.org
+Pennsylvania,Butler County,Adams Township,http://www.adamstwp.org
+Pennsylvania,Cambria County,Adams Township,http://www.adamstwpcambria.com
+Pennsylvania,Westmoreland County,Adamsburg,http://www.adamsburgpafire.org
+Pennsylvania,Lancaster County,Adamstown,http://adamstownborough.org
+Pennsylvania,Lancaster County,Akron,http://www.akron-pa.com
+Pennsylvania,Erie County,Albion,http://albionborough.org
+Pennsylvania,Lehigh County,Alburtis,http://www.alburtis.org
+Pennsylvania,Delaware County,Aldan,http://www.aldan-boro.org
+Pennsylvania,Beaver County,Aliquippa,http://www.aliquippapa.gov/
+Pennsylvania,Westmoreland County,Allegheny Township,http://www.twp.allegheny.pa.us
+Pennsylvania,Blair County,Allegheny Township,https://www.AlleghenyTownship.us
+Pennsylvania,Northampton County,Allen Township,http://www.allentownship.org
+Pennsylvania,Lehigh County,Allentown,http://www.allentownpa.gov
+Pennsylvania,Blair County,Altoona,https://www.altoonapa.gov/
+Pennsylvania,Montgomery County,Ambler,http://www.boroughofambler.com
+Pennsylvania,Beaver County,Ambridge,http://www.ambridgeboro.org/
+Pennsylvania,Lebanon County,Annville Township,http://www.annvilletwp.com
+Pennsylvania,Montour County,Anthony Township,http://www.anthonytwp-mon.com
+Pennsylvania,Blair County,Antis Township,http://www.antistownship.org/%20Township%20website
+Pennsylvania,Franklin County,Antrim Township,http://www.twp.antrim.pa.us
+Pennsylvania,Armstrong County,Apollo,http://apollopa.net
+Pennsylvania,Lackawanna County,Archbald,https://archbaldboroughpa.gov/
+Pennsylvania,Mifflin County,Armagh Township,http://www.co.mifflin.pa.us/mif-armagh/site/default.asp
+Pennsylvania,Indiana County,Armstrong Township,http://www.armstrongtwp.org
+Pennsylvania,Lycoming County,Armstrong Township,http://www.armstrongtownship.org
+Pennsylvania,Westmoreland County,Arnold,https://sites.google.com/a/cityofarnoldpa.org/city-of-arnold-pa
+Pennsylvania,Schuylkill County,Ashland,http://www.ashlandborough.com
+Pennsylvania,Luzerne County,Ashley,http://www.ashleypa.net
+Pennsylvania,Allegheny County,Aspinwall,http://www.aspinwallpa.com
+Pennsylvania,Delaware County,Aston Township,http://www.astontownship.net
+Pennsylvania,Chester County,Atglen,http://www.atglen.org
+Pennsylvania,Bradford County,Athens Township,http://www.athenstownship.org
+Pennsylvania,Allegheny County,Avalon,http://www.boroughofavalon.org/
+Pennsylvania,Clinton County,Avis,https://avisboro.org/
+Pennsylvania,Chester County,Avondale,http://avondaleboro.net
+Pennsylvania,Allegheny County,Baldwin,http://www.baldwinborough.org
+Pennsylvania,Allegheny County,Baldwin Township,http://www.baldwintownship.com
+Pennsylvania,Berks County,Bally,http://www.co.berks.pa.us/bally/site/default.asp
+Pennsylvania,Northampton County,Bangor,https://bangorborough.org/
+Pennsylvania,Forest County,Barnett Township,http://www.barnetttwp.com
+Pennsylvania,Monroe County,Barrett Township,http://www.barretttownship.com
+Pennsylvania,Northampton County,Bath,http://bathborough.org/
+Pennsylvania,Luzerne County,Bear Creek Township,http://www.bearcreektownship.org
+Pennsylvania,Beaver County,Beaver,http://www.beaverpa.us
+Pennsylvania,Beaver County,Beaver Falls,http://www.beaverfallspa.org
+Pennsylvania,Carbon County,Beaver Meadows,http://beavermeadowspa.ourlocalview.com//HomeTown/
+Pennsylvania,Bedford County,Bedford,http://bedboro.com
+Pennsylvania,Bedford County,Bedford Township,http://bedfordtwppagov.com
+Pennsylvania,Bucks County,Bedminster Township,http://bedminsterpa.com/
+Pennsylvania,Clinton County,Beech Creek,http://www.beechcreekborough.com
+Pennsylvania,Allegheny County,Bell Acres,http://www.bellacresborough.org
+Pennsylvania,Centre County,Bellefonte,http://bellefonte.net
+Pennsylvania,Allegheny County,Bellevue,http://www.bellevuepa.org/
+Pennsylvania,Blair County,Bellwood,http://www.bellwoodantis.net/
+Pennsylvania,Allegheny County,Ben Avon,http://www.benavon.com/
+Pennsylvania,Allegheny County,Ben Avon Heights,http://www.benavonheightsborough.com
+Pennsylvania,Centre County,Benner Township,http://www.bennertownship.org/
+Pennsylvania,Bucks County,Bensalem Township,https://www.bensalempa.gov/
+Pennsylvania,Wayne County,Berlin Township,https://www.facebook.com/pages/Brandy-Freiermuth-Berlin-Township-Tax-Col-Wayne-County-PA/710697658976879
+Pennsylvania,Dauphin County,Berrysburg,http://berrysburg.org
+Pennsylvania,Columbia County,Berwick,http://www.berwickborough.org
+Pennsylvania,Adams County,Berwick Township,http://www.berwicktownship.com
+Pennsylvania,Lawrence County,Bessemer,http://bessemerpa.com
+Pennsylvania,Wayne County,Bethany,http://www.shepstone.net/Bethany.html
+Pennsylvania,Allegheny County,Bethel Park,http://www.bethelpark.net/
+Pennsylvania,Delaware County,Bethel Township,http://www.twp.bethel.pa.us
+Pennsylvania,Lehigh County,Bethlehem,https://www.bethlehem-pa.gov
+Pennsylvania,Northampton County,Bethlehem Township,http://bethlehemtownship.org/
+Pennsylvania,Beaver County,Big Beaver,http://bigbeaverborough.org
+Pennsylvania,Berks County,Birdsboro,http://www.birdsboropa.org
+Pennsylvania,Chester County,Birmingham Township,http://www.birminghamtownship.org
+Pennsylvania,Luzerne County,Black Creek Township,http://blackcreektownship.org
+Pennsylvania,Blair County,Blair Township,http://www.blairco.org/BlairTwp
+Pennsylvania,Indiana County,Blairsville,http://blairsvilleboropa.com
+Pennsylvania,Lackawanna County,Blakely,http://blakelyborough.com
+Pennsylvania,Allegheny County,Blawnox,http://www.blawnox.com
+Pennsylvania,Perry County,Bloomfield,http://www.bloomfieldboro.org/
+Pennsylvania,Columbia County,Bloomsburg,http://www.bloomsburgpa.org
+Pennsylvania,Tioga County,Blossburg,http://www.blossburg.org/
+Pennsylvania,Centre County,Boggs Township,http://www.boggstownship.org
+Pennsylvania,Berks County,Boyertown,http://boyertownborough.org
+Pennsylvania,Allegheny County,Brackenridge,http://www.brackenridgeboro.com
+Pennsylvania,Schuylkill County,Braddock,http://braddockborough.com
+Pennsylvania,Allegheny County,Braddock Hills,http://www.braddockhillspa.com/
+Pennsylvania,McKean County,Bradford,http://www.bradfordpa.com/
+Pennsylvania,Allegheny County,Bradford Woods,http://www.bradfordwoodspa.org
+Pennsylvania,Butler County,Brady Township,http://www.bradytwp.us
+Pennsylvania,Lycoming County,Brady Township,http://www.bradytownship.com
+Pennsylvania,Lancaster County,Brecknock Township,http://brecknocktownship.us
+Pennsylvania,Allegheny County,Brentwood,http://www.brentwoodboro.com/
+Pennsylvania,Columbia County,Briar Creek Township,http://www.briarcreektwp.org
+Pennsylvania,Montgomery County,Bridgeport,https://www.bridgeportborough.org/
+Pennsylvania,Bucks County,Bridgeton Township,https://bridgetontwp.org/
+Pennsylvania,Allegheny County,Bridgeville,http://www.bridgevilleboro.com
+Pennsylvania,Beaver County,Bridgewater,http://www.bridgewaterpa.com
+Pennsylvania,Beaver County,Brighton Township,http://www.brightontwp.org
+Pennsylvania,Bucks County,Bristol,http://www.bristolborough.com/
+Pennsylvania,Bucks County,Bristol Township,http://www.bristoltownship.org/
+Pennsylvania,Delaware County,Brookhaven,http://www.brookhavenboro.com
+Pennsylvania,Jefferson County,Brookville,http://borough.brookville.pa.us
+Pennsylvania,Mifflin County,Brown Township,http://www.browntownshipmc.info/
+Pennsylvania,Fayette County,Brownsville,http://brownsvilleborough.com
+Pennsylvania,Fayette County,Brownsville Township,http://www.brownsvilletownship.org
+Pennsylvania,Montgomery County,Bryn Athyn,http://www.brynathynboro.org
+Pennsylvania,Luzerne County,Buck Township,http://bucktownship.org
+Pennsylvania,Bucks County,Buckingham Township,http://www.buckinghampa.org
+Pennsylvania,Butler County,Buffalo Township,http://buffalotownship.com
+Pennsylvania,Mifflin County,Burnham,https://burnhamborough.net/
+Pennsylvania,Northampton County,Bushkill Township,http://www.bushkilltownship.org
+Pennsylvania,Butler County,Butler,http://cityofbutler.org
+Pennsylvania,Butler County,Butler Township,http://www.butlertwp.org
+Pennsylvania,Luzerne County,Butler Township,http://butlertownship.org
+Pennsylvania,Lancaster County,Caernarvon Township,http://www.caernarvonlancaster.org
+Pennsylvania,Berks County,Caernarvon Township,http://www.caernarvon.org
+Pennsylvania,Washington County,California,http://www.californiapa15419.com
+Pennsylvania,Butler County,Callery,http://www.calleryborough.com
+Pennsylvania,Chester County,Caln Township,http://www.calntownship.org
+Pennsylvania,Cambria County,Cambria Township,http://www.cambriatownship.com
+Pennsylvania,Cumberland County,Camp Hill,http://www.camphillborough.com
+Pennsylvania,Wayne County,Canaan Township,http://www.shepstone.net/canaan/canaan.html
+Pennsylvania,Washington County,Canonsburg,http://www.canonsburgboro.com
+Pennsylvania,Washington County,Canton Township,http://www.yourcanton.com
+Pennsylvania,Cumberland County,Carlisle,http://www.carlislepa.org
+Pennsylvania,Allegheny County,Carnegie,http://www.carnegieborough.com
+Pennsylvania,York County,Carroll Township,https://www.carrolltownship.com/
+Pennsylvania,Adams County,Carroll Valley,http://www.carrollvalley.org
+Pennsylvania,Cambria County,Carrolltown,http://www.carrolltown.pa.us
+Pennsylvania,Lycoming County,Cascade Township,http://www.cascade-township-pa.org
+Pennsylvania,Schuylkill County,Cass Township,http://www.casstownship.org/
+Pennsylvania,Allegheny County,Castle Shannon,http://borough.castle-shannon.pa.us
+Pennsylvania,Lehigh County,Catasauqua,http://www.catasauqua.org
+Pennsylvania,Columbia County,Catawissa,http://www.catawissa.us
+Pennsylvania,Blair County,Catharine Township,http://www.catharinetownship.org
+Pennsylvania,Washington County,Cecil Township,http://www.ceciltownship-pa.gov/
+Pennsylvania,Beaver County,Center Township,http://www.ctbos.com
+Pennsylvania,Butler County,Center Township,http://centertownship.net
+Pennsylvania,Snyder County,Center Township,http://www.sny-centertwp.org/Pages/Home.aspx
+Pennsylvania,Berks County,Centerport,http://www.township-directory.com/berks/Bor%20Centerport.htm
+Pennsylvania,Centre County,Centre Hall,http://www.centrehallborough.org/
+Pennsylvania,Delaware County,Chadds Ford Township,http://www.chaddsfordpa.gov
+Pennsylvania,Allegheny County,Chalfant,http://chalfantborough-pa.org/
+Pennsylvania,Bucks County,Chalfont,http://www.chalfontborough.com/
+Pennsylvania,Franklin County,Chambersburg,http://www.borough.chambersburg.pa.us/
+Pennsylvania,York County,Chanceford Township,http://www.chancefordtwp.com/
+Pennsylvania,Northampton County,Chapman,https://www.chapmanborough.com/
+Pennsylvania,Snyder County,Chapman Township,http://www.chapmantownship.com
+Pennsylvania,Clinton County,Chapman Township,http://www.chapmantownship-pa.us
+Pennsylvania,Washington County,Charleroi,http://www.charleroiboro.org
+Pennsylvania,Chester County,Charlestown Township,http://www.charlestown.org
+Pennsylvania,Lancaster County,Cheltenham Township,http://www.cheltenhamtownship.org/
+Pennsylvania,Wayne County,Cherry Ridge Township,http://cherryridgetwp.com/
+Pennsylvania,Delaware County,Chester,http://www.chestercity.com
+Pennsylvania,Delaware County,Chester Heights,http://www.chesterheights.org
+Pennsylvania,Monroe County,Chestnuthill Township,http://www.chestnuthilltwp-pa.gov
+Pennsylvania,Allegheny County,Cheswick,http://www.cheswick.us/
+Pennsylvania,Beaver County,Chippewa Township,http://www.chippewa-twp.org
+Pennsylvania,Susquehanna County,Choconut Township,http://www.stny.rr.com/choconut/
+Pennsylvania,Lancaster County,Christiana,http://www.christianaboro.com
+Pennsylvania,Allegheny County,Churchill,http://churchillborough.com
+Pennsylvania,Allegheny County,Clairton,http://www.cityofclairton.com/
+Pennsylvania,Berks County,Clarion,http://www.clarionboro.org
+Pennsylvania,Lackawanna County,Clarks Green,http://www.clarksgreen.org
+Pennsylvania,Lackawanna County,Clarks Summit,http://www.clarkssummitboro.org
+Pennsylvania,Lancaster County,Clay Township,http://claytwp.com
+Pennsylvania,Clearfield County,Clearfield,http://clearfieldboro.com
+Pennsylvania,Lebanon County,Cleona,http://www.cleonaborough.org
+Pennsylvania,Delaware County,Clifton Heights,http://www.cliftonheightsboro.com
+Pennsylvania,Lycoming County,Clinton Township,http://www.clintontwp.org
+Pennsylvania,Butler County,Clinton Township,http://www.myclintontwp.net
+Pennsylvania,Wayne County,Clinton Township,https://waynecountypa.gov/618/Clinton-Township
+Pennsylvania,Indiana County,Clymer,http://clymerpa.com
+Pennsylvania,Schuylkill County,Coaldale,http://coaldaleborough.org/
+Pennsylvania,Chester County,Coatesville,http://coatesville.org
+Pennsylvania,Crawford County,Cochranton,http://cochrantonboro.org
+Pennsylvania,Lycoming County,Cogan House Township,http://coganhousetwp.org
+Pennsylvania,Lancaster County,Colerain Township,http://coleraintwppa.com
+Pennsylvania,Centre County,College Township,http://www.collegetownship.org
+Pennsylvania,Montgomery County,Collegeville,http://www.collegeville-pa.gov
+Pennsylvania,Delaware County,Collingdale,http://www.collingdaleborough.com
+Pennsylvania,Lancaster County,Columbia,http://www.columbiapa.net
+Pennsylvania,Delaware County,Colwyn,http://www.colwynborough.com
+Pennsylvania,Delaware County,Concord Township,http://www.twp.concord.pa.us/
+Pennsylvania,Somerset County,Conemaugh Township,http://www.contwpsupers.us/
+Pennsylvania,Lancaster County,Conestoga Township,http://conestogatwp.com
+Pennsylvania,Adams County,Conewago Township,http://www.conewagotwp.us/
+Pennsylvania,Dauphin County,Conewago Township,http://conewagotownship.com
+Pennsylvania,Fayette County,Connellsville,http://connellsville.us
+Pennsylvania,Butler County,Connoquenessing,http://connoquenessingboro.com
+Pennsylvania,Butler County,Connoquenessing Township,http://connotwp.org
+Pennsylvania,Lancaster County,Conoy Township,http://conoytownship.org
+Pennsylvania,Montgomery County,Conshohocken,http://www.conshohockenpa.org/
+Pennsylvania,Beaver County,Conway,http://www.conwaypa.org
+Pennsylvania,Luzerne County,Conyngham,http://www.conynghamborough.org
+Pennsylvania,Columbia County,Conyngham Township,https://conynghamtownship.wordpress.com/
+Pennsylvania,Westmoreland County,Cook Township,http://www.cooktwp.com
+Pennsylvania,Cumberland County,Cooke Township,http://cooketwp.org
+Pennsylvania,Monroe County,Coolbaugh Township,http://www.coolbaughtwp.org
+Pennsylvania,Lehigh County,Coopersburg,http://www.coopersburgborough.org
+Pennsylvania,Lehigh County,Coplay,http://www.coplayborough.org
+Pennsylvania,Cornell School District (Allegheny County,Coraopolis,http://www.coraopolispa.com/
+Pennsylvania,Lebanon County,Cornwall,http://www.cornwall-pa.com
+Pennsylvania,Erie County,Corry,http://www.corrypa.com
+Pennsylvania,Jefferson County,Corsica,http://www.boroughofcorsica.com
+Pennsylvania,Potter County,Coudersport,http://www.coudersport.org/
+Pennsylvania,Allegheny County,Crafton,http://www.craftonborough.com
+Pennsylvania,Butler County,Cranberry Township,http://www.cranberrytownship.org
+Pennsylvania,Venango County,Cranberry Township,http://cranberrytwp.org/
+Pennsylvania,Allegheny County,Crescent Township,http://www.crescenttownship.com/
+Pennsylvania,Washington County,Cross Creek Township,http://www.crosscreektwp.org
+Pennsylvania,Adams County,Cumberland Township,http://www.cumberlandtownship.com
+Pennsylvania,Berks County,Cumru Township,http://www.cumrutownship.com
+Pennsylvania,Clearfield County,Curwensville,http://curwensvilleborough.com
+Pennsylvania,Luzerne County,Dallas,http://www.dallasborough.org
+Pennsylvania,Luzerne County,Dallas Township,http://www.dallastwp.org
+Pennsylvania,York County,Dallastown,http://www.dallastownboro.com/
+Pennsylvania,Lackawanna County,Dalton,http://daltonboro.com
+Pennsylvania,Wayne County,Damascus Township,http://damascustwp.org/
+Pennsylvania,Montour County,Danville,http://www.danvilleboro.org
+Pennsylvania,Delaware County,Darby,http://www.darbyborough.com
+Pennsylvania,Delaware County,Darby Township,http://www.darbytwp.org
+Pennsylvania,Beaver County,Darlington,http://darlingtonborough.com/
+Pennsylvania,Beaver County,Darlington Township,https://www.darlingtontwp.com/
+Pennsylvania,Beaver County,Daugherty Township,http://www.daughertytownship-pa.gov
+Pennsylvania,Mifflin County,Decatur Township,http://www.decaturtownship.info
+Pennsylvania,Mercer County,Deer Creek Township,http://www.deercreektownship.org
+Pennsylvania,Schuylkill County,Deer Lake,https://deerlakeboro.com
+Pennsylvania,Monroe County,Delaware Water Gap,https://dwgpa.gov/
+Pennsylvania,Westmoreland County,Delmont,http://www.delmontborough.com
+Pennsylvania,York County,Delta,http://www.deltaborough.us/
+Pennsylvania,Luzerne County,Dennison Township,http://dennisontwp.org
+Pennsylvania,Lancaster County,Denver,http://denverboro.net
+Pennsylvania,Westmoreland County,Derry,http://www.derryborough.org
+Pennsylvania,Dauphin County,Derry Township,http://www.derrytownship.org
+Pennsylvania,Westmoreland County,Derry Township,http://www.derrytownship.com
+Pennsylvania,Mifflin County,Derry Township,http://www.derrytwp.info
+Pennsylvania,Cumberland County,Dickinson Township,http://www.dickinsontownship.org
+Pennsylvania,Lackawanna County,Dickson City,http://dicksoncityborough.org
+Pennsylvania,York County,Dillsburg,http://www.dillsburg.com/
+Pennsylvania,Berks County,District Township,http://www.districttownship.org/
+Pennsylvania,Westmoreland County,Donegal Township,http://www.donegaltownship.com
+Pennsylvania,Washington County,Donora,http://www.donoraboro.org/
+Pennsylvania,Allegheny County,Dormont,http://www.boro.dormont.pa.us
+Pennsylvania,Luzerne County,Dorrance Township,http://dorrancetwp.com
+Pennsylvania,Montgomery County,Douglass Township,http://www.douglasstownship.org
+Pennsylvania,Berks County,Douglass Township,http://www.co.berks.pa.us/douglass
+Pennsylvania,York County,Dover,https://doverboroughpa.com/
+Pennsylvania,Chester County,Downingtown,http://www.downingtown.org
+Pennsylvania,Bucks County,Doylestown,https://www.doylestownborough.net
+Pennsylvania,Bucks County,Doylestown Township,http://www.doylestownpa.org
+Pennsylvania,Allegheny County,Dravosburg,http://www.dravosburg.org
+Pennsylvania,Lancaster County,Drumore Township,http://www.drumoretownship.org
+Pennsylvania,Bucks County,Dublin,http://www.dublinborough.org
+Pennsylvania,Clearfield County,DuBois,http://www.duboispa.gov
+Pennsylvania,Perry County,Duncannon,http://www.duncannonboro.org
+Pennsylvania,Blair County,Duncansville,http://duncansvillepa.org
+Pennsylvania,Lackawanna County,Dunmore,http://www.dunmorepa.gov
+Pennsylvania,Luzerne County,Dupont,http://dupontpa.us
+Pennsylvania,Allegheny County,Duquesne,http://duquesnepa.us
+Pennsylvania,Bucks County,Durham Township,http://www.durhamtownship.org/
+Pennsylvania,Luzerne County,Duryea,http://www.duryeaborough.com
+Pennsylvania,Sullivan County,Dushore,http://www.dushorepa.gov
+Pennsylvania,Sullivan County,Eagles Mere,http://www.eaglesmere.org/
+Pennsylvania,Lancaster County,Earl Township,http://earltownship.com
+Pennsylvania,Northampton County,East Allen Township,http://www.eatwp.org
+Pennsylvania,Northampton County,East Bangor,https://eastbangorborough.org/
+Pennsylvania,Adams County,East Berlin,http://eastberlinboro.com
+Pennsylvania,Chester County,East Bradford Township,http://www.eastbradford.org
+Pennsylvania,Chester County,East Brandywine Township,http://www.ebrandywine.org
+Pennsylvania,Union County,East Buffalo Township,http://www.ebtwp.org
+Pennsylvania,Chester County,East Caln Township,http://www.eastcalntownship.com
+Pennsylvania,Lancaster County,East Cocalico Township,http://www.eastcocalicotownship.com
+Pennsylvania,Chester County,East Coventry Township,http://www.eastcoventry-pa.gov
+Pennsylvania,Lancaster County,East Donegal Township,http://eastdonegaltwp.com
+Pennsylvania,Lancaster County,East Drumore Township,http://edrumoretwp.com
+Pennsylvania,Lancaster County,East Earl Township,http://www.eastearltwp.org
+Pennsylvania,Chester County,East Fallowfield Township,https://www.eastfallowfield.org/
+Pennsylvania,Armstrong County,East Franklin Township,http://www.eastfranklintownship.com
+Pennsylvania,Chester County,East Goshen Township,http://www.eastgoshen.org
+Pennsylvania,Montgomery County,East Greenville,http://www.egreenville.org/
+Pennsylvania,Dauphin County,East Hanover Township,http://easthanovertwpdcpa.org
+Pennsylvania,Lebanon County,East Hanover Township,http://easthanovertwp.com
+Pennsylvania,Lancaster County,East Hempfield Township,http://www.easthempfield.org
+Pennsylvania,Lancaster County,East Lampeter Township,http://eastlampetertownship.org
+Pennsylvania,Delaware County,East Lansdowne,http://www.eastlansdowne.org
+Pennsylvania,Chester County,East Marlborough Township,http://www.eastmarlborough.org
+Pennsylvania,Allegheny County,East McKeesport,http://eastmckeesportboro.com
+Pennsylvania,Montgomery County,East Norriton Township,http://www.eastnorritontwp.org
+Pennsylvania,Chester County,East Nottingham Township,http://www.eastnottingham.org
+Pennsylvania,Carbon County,East Penn Township,https://www.eastpenntownship.com/
+Pennsylvania,Cumberland County,East Pennsboro Township,http://www.eastpennsboro.net
+Pennsylvania,Lancaster County,East Petersburg,http://www.eastpetersburgborough.org
+Pennsylvania,Chester County,East Pikeland Township,http://www.eastpikeland.org
+Pennsylvania,Allegheny County,East Pittsburgh,http://eastpittsburghboro.com
+Pennsylvania,York County,East Prospect,http://epboro.com/
+Pennsylvania,Bucks County,East Rockhill Township,https://www.eastrockhilltownship.org/
+Pennsylvania,Monroe County,East Stroudsburg,https://eaststroudsburgboro.org/
+Pennsylvania,Cambria County,East Taylor Township,http://www.easttaylortwp.com
+Pennsylvania,Westmoreland County,East Vandergrift,http://www.evboro.com/
+Pennsylvania,Chester County,East Vincent Township,http://www.eastvincent.org
+Pennsylvania,Washington County,East Washington,http://www.eastwash.com
+Pennsylvania,Chester County,East Whiteland Township,http://www.eastwhiteland.org
+Pennsylvania,Northampton County,Easton,http://www.easton-pa.com
+Pennsylvania,Chester County,Easttown Township,http://www.easttown.org
+Pennsylvania,Cambria County,Ebensburg,http://www.ebensburgpa.com
+Pennsylvania,Delaware County,Eddystone,http://www.eddystoneboro.com
+Pennsylvania,Lancaster County,Eden Township,http://www.edentownship.org
+Pennsylvania,Allegheny County,Edgewood,http://www.edgewood.pgh.pa.us/
+Pennsylvania,Allegheny County,Edgeworth,http://edgeworthborough.org
+Pennsylvania,Delaware County,Edgmont Township,http://www.edgmont.org
+Pennsylvania,Erie County,Edinboro,http://www.edinboro.net
+Pennsylvania,Luzerne County,Edwardsville,http://www.edwardsvilleborough.com
+Pennsylvania,Monroe County,Eldred Township,http://www.eldredtwp.org/
+Pennsylvania,Lycoming County,Eldred Township,http://eldredtownship.org
+Pennsylvania,Allegheny County,Elizabeth,http://elizabethpa.net
+Pennsylvania,Allegheny County,Elizabeth Township,http://www.elizabethtownshippa.com
+Pennsylvania,Lancaster County,Elizabeth Township,http://www.elizabethtownship.org
+Pennsylvania,Lancaster County,Elizabethtown,http://www.etownonline.com
+Pennsylvania,Dauphin County,Elizabethville,http://www.elizabethville.org
+Pennsylvania,Erie County,Elk Creek Township,http://elkcreektwp.org
+Pennsylvania,Chester County,Elk Township,http://www.elktownship.org
+Pennsylvania,Lawrence County,Ellport,http://ellportboro.com
+Pennsylvania,Lawrence County,Ellwood City,http://www.ecboro.com
+Pennsylvania,Chester County,Elverson,http://www.elversonboro.org
+Pennsylvania,Clarion County,Emlenton,https://www.emlentonborough.com/
+Pennsylvania,Lehigh County,Emmaus,http://www.borough.emmaus.pa.us/
+Pennsylvania,Cameron County,Emporium,http://emporiumborough.org
+Pennsylvania,Allegheny County,Emsworth,http://www.emsworthborough.com
+Pennsylvania,Lancaster County,Ephrata,http://ephrataboro.org
+Pennsylvania,Lancaster County,Ephrata Township,http://www.ephratatownship.org
+Pennsylvania,Erie County,Erie,http://www.erie.pa.us
+Pennsylvania,Allegheny County,Etna,http://www.etnaborough.org
+Pennsylvania,Butler County,Evans City,http://evanscity.us
+Pennsylvania,Berks County,Exeter Township,https://www.exetertownship.com/
+Pennsylvania,Luzerne County,Exeter Township,http://exetertwpluzerneco.com
+Pennsylvania,Westmoreland County,Export,http://exportpennsylvania.com
+Pennsylvania,Wyoming County,Factoryville,http://www.factoryville.org
+Pennsylvania,Adams County,Fairfield,http://fairfieldborough.com
+Pennsylvania,Lycoming County,Fairfield Township,http://fairfieldlycoming.org
+Pennsylvania,Westmoreland County,Fairfield Township,https://fairfieldtwp.com/
+Pennsylvania,Erie County,Fairview Township,http://www.fairviewtownship.com
+Pennsylvania,Luzerne County,Fairview Township,http://fairviewluzerne.com
+Pennsylvania,Bucks County,Falls Township,http://www.fallstwp.com
+Pennsylvania,Mercer County,Farrell,http://www.cityoffarrell.com
+Pennsylvania,York County,Fawn Grove,http://fawngroveborough.org/
+Pennsylvania,Allegheny County,Fawn Township,http://www.fawntownship.com/
+Pennsylvania,Centre County,Ferguson Township,http://www.twp.ferguson.pa.us
+Pennsylvania,Cambria County,Ferndale,http://www.ferndaleborough.com
+Pennsylvania,Allegheny County,Findlay Township,http://www.findlay.pa.us/
+Pennsylvania,Columbia County,Fishing Creek Township,http://fishingcreektownship.org
+Pennsylvania,Berks County,Fleetwood,http://www.fleetwoodboro.com
+Pennsylvania,Clinton County,Flemington,http://flemingtonboroughpa.org
+Pennsylvania,Delaware County,Folcroft,https://www.folcroftborough.com/
+Pennsylvania,Armstrong County,Ford City,http://www.fordcityborough.org
+Pennsylvania,Allegheny County,Forest Hills,http://foresthillspa.org
+Pennsylvania,Susquehanna County,Forest Lake Township,http://www.susqco.com/subsites/gov/pages/info/municipaltownships/forestlake.htm
+Pennsylvania,Northampton County,Forks Township,http://www.forkstownship.org
+Pennsylvania,Luzerne County,Forty Fort,http://www.fortyfort.org
+Pennsylvania,Butler County,Forward Township,http://forwardtwpbutlerco.us
+Pennsylvania,Luzerne County,Foster Township,http://fostertownship.org
+Pennsylvania,Schuylkill County,Foster Township,http://fostertwp.org/
+Pennsylvania,Lehigh County,Fountain Hill,http://www.fountainhill.org
+Pennsylvania,Allegheny County,Fox Chapel,http://www.fox-chapel.pa.us
+Pennsylvania,Elk County,Fox Township,http://foxtownship.com
+Pennsylvania,Huntingdon County,Foxburg,http://www.foxburgboro.com
+Pennsylvania,Schuylkill County,Frackville,http://www.frackvillepa.org
+Pennsylvania,Montgomery County,Franconia Township,http://www.franconiatownship.org
+Pennsylvania,Venango County,Franklin,https://franklinpa.gov/
+Pennsylvania,Allegheny County,Franklin Park,http://www.franklinparkborough.us
+Pennsylvania,Greene County,Franklin Township,http://www.franklintownshipgreenecounty.com
+Pennsylvania,Adams County,Franklin Township,http://www.franklintwp.us
+Pennsylvania,Chester County,Franklin Township,http://www.franklintownship.us
+Pennsylvania,Carbon County,Franklin Township,http://www.franklintownshipcarboncounty.com
+Pennsylvania,Beaver County,Franklin Township,http://www.franklintownshipbeavercounty.com
+Pennsylvania,Butler County,Franklin Township,http://www.franklintwpbco.us
+Pennsylvania,Luzerne County,Franklin Township,http://www.ftwp.com
+Pennsylvania,Erie County,Franklin Township,http://franklintownship.info
+Pennsylvania,Susquehanna County,Franklin Township,http://franklintwp.info
+Pennsylvania,York County,Franklintown,http://www.franklintownborough.com/
+Pennsylvania,Blair County,Frankstown Township,https://frankstowntownship.com/
+Pennsylvania,Beaver County,Freedom,http://www.freedomborough.org/
+Pennsylvania,Luzerne County,Freeland,http://www.freelandborough.com
+Pennsylvania,Northampton County,Freemansburg,http://www.boroughoffreemansburg.org
+Pennsylvania,Lancaster County,Fulton Township,http://www.fultontownship.com
+Pennsylvania,Potter County,Galeton,http://www.visitgaleton.com
+Pennsylvania,Cambria County,Geistown,http://www.geistownborough.com
+Pennsylvania,Fayette County,German Township,http://germantownship.org
+Pennsylvania,Adams County,Germany Township,http://www.germanytownship.org
+Pennsylvania,Adams County,Gettysburg,https://www.gettysburgpa.gov/
+Pennsylvania,Erie County,Girard,http://girardboroughpa.us
+Pennsylvania,Erie County,Girard Township,http://www.girardtownship.com
+Pennsylvania,Allegheny County,Glen Osborne,http://www.glenosborneborough.org/
+Pennsylvania,York County,Glen Rock,http://www.GlenRockPA.org
+Pennsylvania,Lackawanna County,Glenburn Township,http://glenburntownship.org/
+Pennsylvania,Northampton County,Glendon,http://www.glendonboro.com
+Pennsylvania,Allegheny County,Glenfield,http://www.glenfieldborough.org
+Pennsylvania,Delaware County,Glenolden,http://www.glenoldenborough.com
+Pennsylvania,York County,Goldsboro,http://goldsboropa.com
+Pennsylvania,Mifflin County,Granville Township,http://www.granvilletwp.org
+Pennsylvania,Montgomery County,Green Lane,https://greenlaneborough.org/
+Pennsylvania,Allegheny County,Green Tree,http://www.greentreeboro.com
+Pennsylvania,Franklin County,Greencastle,http://greencastlepa.gov
+Pennsylvania,Franklin County,Greene Township,http://www.twp.greene.franklin.pa.us
+Pennsylvania,Erie County,Greene Township,http://www.mygreenetownship.com
+Pennsylvania,Blair County,Greenfield Township,https://www.greenfieldtownshippa.gov/
+Pennsylvania,Greene County,Greensboro,http://www.greensboropa.com
+Pennsylvania,Westmoreland County,Greensburg,http://www.greensburgpa.org
+Pennsylvania,Mercer County,Greenville,http://www.greenvilleborough.com
+Pennsylvania,Union County,Gregg Township,http://www.greggtwp.org/uni-gregg/site/default.asp
+Pennsylvania,Centre County,Gregg Township,http://www.greggtownship.org
+Pennsylvania,Mercer County,Grove City,http://grovecityonline.com/
+Pennsylvania,Franklin County,Guilford Township,http://www.guilfordtwp.us
+Pennsylvania,Centre County,Haines Township,http://www.hainestwp.org
+Pennsylvania,Centre County,Halfmoon Township,http://www.halfmoontwp.us
+Pennsylvania,Dauphin County,Halifax,http://halifaxborough.com
+Pennsylvania,Dauphin County,Halifax Township,http://www.halifaxtownship.net
+Pennsylvania,York County,Hallam,http://www.hallamborough.com/
+Pennsylvania,Berks County,Hamburg,http://hamburgboro.com
+Pennsylvania,Monroe County,Hamilton Township,http://www.hamiltontwp.org
+Pennsylvania,Adams County,Hamilton Township,https://twphamilton.com/
+Pennsylvania,Adams County,Hamiltonban Township,http://www.adamscounty.us/munic/hamiltonbantownship/Pages/default.aspx
+Pennsylvania,Cumberland County,Hampden Township,http://www.hampdentownship.us
+Pennsylvania,Allegheny County,Hampton Township,http://hampton-pa.org/
+Pennsylvania,Northampton County,Hanover Township,http://www.hanovertwp-nc.org
+Pennsylvania,Luzerne County,Hanover Township,http://www.hanovertownship.org/commissioners.html
+Pennsylvania,Beaver County,Hanover Township,http://hanovertwpbeaver.com
+Pennsylvania,Washington County,Hanover Township,http://www.hanovertwp.net/
+Pennsylvania,Lehigh County,Hanover Township,http://www.hanleco.org
+Pennsylvania,Erie County,Harborcreek Township,http://www.harborcreektownship.org
+Pennsylvania,Susquehanna County,Harford Township,http://harfordtwp.org/index.htm
+Pennsylvania,Butler County,Harmony,http://www.harmony-pa.us
+Pennsylvania,Beaver County,Harmony Township,http://www.harmonytwp.org
+Pennsylvania,Forest County,Harmony Township,http://www.harmonytownship.net
+Pennsylvania,Susquehanna County,Harmony Township,http://www.susqco.com/subsites/gov/pages/info/municipaltownships/harmony.htm
+Pennsylvania,Centre County,Harris Township,http://www.harristownship.org
+Pennsylvania,Dauphin County,Harrisburg,https://harrisburgpa.gov/
+Pennsylvania,Allegheny County,Harrison Township,http://harrisontwp.com/
+Pennsylvania,Luzerne County,Harveys Lake,http://harveyslakeborough.com
+Pennsylvania,Cambria County,Hastings,http://hastingsborough.com
+Pennsylvania,Montgomery County,Hatboro,https://myhatboro.org/
+Pennsylvania,Montgomery County,Hatfield,http://www.hatfieldborough.com
+Pennsylvania,Montgomery County,Hatfield Township,http://www.hatfieldtownship.org
+Pennsylvania,Delaware County,Haverford Township,http://www.haverfordtownship.org/
+Pennsylvania,Wayne County,Hawley,http://www.hawley-borough.org/
+Pennsylvania,Clarion County,Hawthorn,http://www.hawthornboro.org
+Pennsylvania,Bucks County,Haycock Township,http://www.haycocktwp.com
+Pennsylvania,Allegheny County,Haysville,http://haysvilleborough.org
+Pennsylvania,Luzerne County,Hazle Township,http://www.hazletownship.com
+Pennsylvania,Luzerne County,Hazleton,http://www.hazletoncity.org/
+Pennsylvania,Allegheny County,Heidelberg,http://heidelbergpa.tripod.com
+Pennsylvania,Lebanon County,Heidelberg Township,http://heidelbergtownship.com
+Pennsylvania,Lehigh County,Heidelberg Township,http://www.heidelberglehigh.org
+Pennsylvania,Berks County,Heidelberg Township,http://www.heidelbergtownship.org
+Pennsylvania,York County,Hellam Township,https://www.hellamtownship.com
+Pennsylvania,Northampton County,Hellertown,http://www.hellertownborough.org
+Pennsylvania,Columbia County,Hemlock Township,http://www.hemlocktownship.org
+Pennsylvania,Westmoreland County,Hempfield Township,https://www.hempfieldtwp.com
+Pennsylvania,Lycoming County,Hepburn Township,http://www.hepburntownship.org
+Pennsylvania,Berks County,Hereford Township,http://www.co.berks.pa.us/Muni/Hereford/Pages/default.aspx
+Pennsylvania,Mercer County,Hermitage,http://www.hermitage.net
+Pennsylvania,Lawrence County,Hickory Township,http://www.hickorytownship.com
+Pennsylvania,Dauphin County,Highspire,http://www.highspire.org
+Pennsylvania,Bucks County,Hilltown Township,http://www.hilltown.org
+Pennsylvania,Blair County,Hollidaysburg,http://hollidaysburgpa.org
+Pennsylvania,Indiana County,Homer City,http://www.homercity.com
+Pennsylvania,Allegheny County,Homestead,http://www.homesteadborough.com/
+Pennsylvania,Wayne County,Honesdale,http://honesdaleborough.com/
+Pennsylvania,Chester County,Honey Brook,http://www.honeybrookborough.net
+Pennsylvania,Chester County,Honey Brook Township,http://www.honeybrooktwp.com
+Pennsylvania,Beaver County,Hopewell Township,http://www.hopewelltwp.com
+Pennsylvania,Cumberland County,Hopewell Township,http://hopewelltownshipcc.com
+Pennsylvania,Washington County,Hopewell Township,http://hopewelltownshippa.com/
+Pennsylvania,Montgomery County,Horsham Township,http://www.horsham.org
+Pennsylvania,Forest County,Howe Township,http://howetwp.org
+Pennsylvania,Perry County,Howe Township,http://www.howetownship.com
+Pennsylvania,Lycoming County,Hughesville,http://www.hughesvillepa.org
+Pennsylvania,Bucks County,Hulmeville,http://hulmeville-pa.gov
+Pennsylvania,Dauphin County,Hummelstown,http://www.hummelstown.net
+Pennsylvania,Huntingdon County,Huntingdon,http://huntingdonboro.com
+Pennsylvania,Beaver County,Independence Township,https://www.independencetwpbeavercounty.com
+Pennsylvania,Somerset County,Indian Lake,http://www.indianlakepa.us/
+Pennsylvania,Indiana County,Indiana,http://www.indianaboro.com
+Pennsylvania,Allegheny County,Indiana Township,http://www.indianatownship.com/default.asp
+Pennsylvania,Allegheny County,Ingram,http://www.ingramborough.org
+Pennsylvania,Clearfield County,Irvona,http://irvonaborough.com
+Pennsylvania,Westmoreland County,Irwin,https://www.irwinborough.org/
+Pennsylvania,Bucks County,Ivyland,http://www.ivylandborough.org
+Pennsylvania,Lebanon County,Jackson Township,http://jacksontownship-pa.gov
+Pennsylvania,Monroe County,Jackson Township,http://jacksontwp-pa.gov/
+Pennsylvania,Luzerne County,Jackson Township,http://jacksontownshippa.gov
+Pennsylvania,Cambria County,Jackson Township,http://www.jacksontwppa.com
+Pennsylvania,Butler County,Jackson Township,http://www.jackson-township.com
+Pennsylvania,Dauphin County,Jackson Township,http://www.orgsites.com/pa/jacksontwp/
+Pennsylvania,Columbia County,Jackson Township,http://www.jacksontownship.us
+Pennsylvania,York County,Jacobus,http://www.JacobusPA.com
+Pennsylvania,Mercer County,Jamestown,http://www.jamestown-pa.com
+Pennsylvania,Elk County,Jay Township,http://www.jaytownship.com
+Pennsylvania,Westmoreland County,Jeannette,http://cityofjeannette.com/
+Pennsylvania,York County,Jefferson,http://www.JeffersonBoro.net
+Pennsylvania,Allegheny County,Jefferson Hills,http://www.jeffersonhillsboro.org
+Pennsylvania,Butler County,Jefferson Township,http://jeffersonbutler.com
+Pennsylvania,Berks County,Jefferson Township,http://www.jeffersontwpbc.com/
+Pennsylvania,Dauphin County,Jefferson Township,http://www.jeffersontownshippa.org
+Pennsylvania,Luzerne County,Jenkins Township,http://jenkinstownship.net
+Pennsylvania,Montgomery County,Jenkintown,http://www.jenkintownboro.com
+Pennsylvania,Forest County,Jenks Township,http://jenkstownship.org
+Pennsylvania,Somerset County,Jennerstown,http://www.jennerstownboro.com
+Pennsylvania,Lackawanna County,Jermyn,http://jermynpa.com
+Pennsylvania,Lycoming County,Jersey Shore,http://www.jerseyshoreboro.org
+Pennsylvania,Lackawanna County,Jessup,http://www.jessupborough.com
+Pennsylvania,Carbon County,Jim Thorpe,http://www.jimthorpe.org
+Pennsylvania,Cambria County,Johnstown,http://www.cityofjohnstownpa.net/
+Pennsylvania,Elk County,Jones Township,http://www.jonestownship.com
+Pennsylvania,Mifflin County,Juniata Terrace,http://www.juniataterrace.net/5001.html
+Pennsylvania,Berks County,Kenhorst,http://www.co.berks.pa.us/Muni/Kenhorst/Pages/Default.aspx
+Pennsylvania,Chester County,Kennett Square,https://www.kennettsq.org/
+Pennsylvania,Chester County,Kennett Township,http://www.kennett.pa.us
+Pennsylvania,Carbon County,Kidder Township,http://www.kiddertownship.org
+Pennsylvania,Luzerne County,Kingston,http://kingstonpa.org
+Pennsylvania,Luzerne County,Kingston Township,http://kingstontownship.com
+Pennsylvania,Armstrong County,Kittanning,https://kittanning-borough.com/
+Pennsylvania,Clarion County,Knox,http://www.knoxborough.com
+Pennsylvania,Northumberland County,Kulpmont,http://www.boroughofkulpmont.org/Pages/Home.aspx
+Pennsylvania,Berks County,Kutztown,http://www.kutztownboro.org
+Pennsylvania,Wyoming County,Laceyville,http://www.laceyville.com
+Pennsylvania,Pike County,Lackawaxen Township,https://www.lackawaxentownshippa.gov/
+Pennsylvania,Luzerne County,Laflin,http://www.laflinboro.com
+Pennsylvania,Erie County,Lake City,http://lakecityboro.org
+Pennsylvania,Luzerne County,Lake Township,http://www.laketwppa.com
+Pennsylvania,Lancaster County,Lancaster,http://cityoflancasterpa.com
+Pennsylvania,Lancaster County,Lancaster Township,http://www.twp.lancaster.pa.us
+Pennsylvania,Butler County,Lancaster Township,http://www.lancaster-township.com
+Pennsylvania,Susquehanna County,Lanesboro,http://lanesboropa.com/
+Pennsylvania,Bucks County,Langhorne,http://www.langhorneborough.com
+Pennsylvania,Bucks County,Langhorne Manor,http://www.langhornemanor.org
+Pennsylvania,Montgomery County,Lansdale,http://www.lansdale.org
+Pennsylvania,Delaware County,Lansdowne,http://www.lansdowneborough.com
+Pennsylvania,Carbon County,Lansford,http://www.boroughoflansford.com/
+Pennsylvania,Sullivan County,Laporte,http://www.laportepa.com/
+Pennsylvania,Luzerne County,Larksville,http://larksvilleborough.org
+Pennsylvania,Adams County,Latimore Township,http://www.latimore.org
+Pennsylvania,Westmoreland County,Latrobe,https://cityoflatrobe.com/
+Pennsylvania,Westmoreland County,Laurel Mountain,http://laurelmountainboro.wordpress.com
+Pennsylvania,Luzerne County,Laurel Run,http://www.laurelrunpa.net
+Pennsylvania,Berks County,Laureldale,http://www.laureldaleboro.org
+Pennsylvania,Erie County,Lawrence Park Township,http://www.lawrenceparktwp.org
+Pennsylvania,Lancaster County,Leacock Township,http://www.leacocktwp.com
+Pennsylvania,Lebanon County,Lebanon,http://www.lebanonpa.org
+Pennsylvania,Allegheny County,Leetsdale,http://leetsdaleboro.net
+Pennsylvania,Northampton County,Lehigh Township,http://www.lehightownship.com/
+Pennsylvania,Wayne County,Lehigh Township,http://www.lehightwpwayneco.org/
+Pennsylvania,Carbon County,Lehighton,http://www.lehightonborough.com
+Pennsylvania,Luzerne County,Lehman Township,http://lehmanpa.com
+Pennsylvania,Cumberland County,Lemoyne,https://www.lemoynepa.com/
+Pennsylvania,Franklin County,Letterkenny Township,http://letterkennytownship.org
+Pennsylvania,York County,Lewisberry,http://lewisberryborough.org/
+Pennsylvania,Union County,Lewisburg,http://www.lewisburgborough.org/
+Pennsylvania,Mifflin County School District,Lewistown,http://lewistownborough.com/index.php
+Pennsylvania,Allegheny County,Liberty,http://www.libertyborough.com
+Pennsylvania,Westmoreland County,Ligonier,https://www.ligonier.com/
+Pennsylvania,Westmoreland County,Ligonier Township,http://www.ligoniertownship.com
+Pennsylvania,Cambria County,Lilly,http://lillyboro.com
+Pennsylvania,Montgomery County,Limerick Township,http://www.limerickpa.org
+Pennsylvania,Allegheny County,Lincoln,http://www.lincolnborough.com
+Pennsylvania,Lancaster County,Lititz,http://www.lititzpa.com
+Pennsylvania,Lancaster County,Little Britain Township,http://www.littlebritain.org
+Pennsylvania,Adams County,Littlestown,http://www.littlestownboro.org
+Pennsylvania,Perry County,Liverpool,http://www.liverpool.pa.net/
+Pennsylvania,Clinton County,Lock Haven,http://lockhavenpa.gov
+Pennsylvania,Blair County,Logan Township,http://www.logantownship-pa.gov
+Pennsylvania,Clinton County,Loganton,https://www.logantonborough.org/
+Pennsylvania,York County,Loganville,http://www.LoganvillePA.us
+Pennsylvania,Chester County,London Britain Township,http://www.londonbritaintownship-pa.gov
+Pennsylvania,Chester County,London Grove Township,http://www.londongrove.org
+Pennsylvania,Dauphin County,Londonderry Township,http://londonderrypa.org
+Pennsylvania,Chester County,Londonderry Township,http://www.londonderrytownship.org
+Pennsylvania,Berks County,Longswamp Township,http://www.co.berks.pa.us/longswamp/site/default.asp
+Pennsylvania,Cambria County,Lorain,http://www.lorainborough.org
+Pennsylvania,Cumberland County,Lower Allen Township,http://www.latwp.org
+Pennsylvania,Westmoreland County,Lower Burrell,http://www.cityoflowerburrell.com/
+Pennsylvania,York County,Lower Chanceford Township,https://lowerchancefordtwppa.gov/
+Pennsylvania,Delaware County,Lower Chichester Township,http://lowerchitwp.com
+Pennsylvania,Adams County,Lower Frederick Township,http://www.lowerfrederick.org
+Pennsylvania,Montgomery County,Lower Gwynedd Township,http://www.lowergwynedd.org
+Pennsylvania,Berks County,Lower Heidelberg Township,http://www.lowerheidelbergtownship.org/
+Pennsylvania,Lehigh County,Lower Macungie Township,http://www.lowermac.org
+Pennsylvania,Bucks County,Lower Makefield Township,https://www.lmt.org/
+Pennsylvania,Lancaster County,Lower Merion Township,http://www.lowermerion.org/
+Pennsylvania,Lehigh County,Lower Milford Township,http://www.lowermilford.org
+Pennsylvania,Montgomery County,Lower Moreland Township,http://www.lowermoreland.org
+Pennsylvania,Northampton County,Lower Mount Bethel Township,http://www.lowermtbethel.org
+Pennsylvania,Northampton County,Lower Nazareth Township,http://www.lowernazareth.com
+Pennsylvania,Chester County,Lower Oxford Township,http://www.loweroxfordtownship.com
+Pennsylvania,Dauphin County,Lower Paxton Township,http://lowerpaxton-pa.gov
+Pennsylvania,Montgomery County,Lower Pottsgrove Township,http://www.lowerpottsgrove.org
+Pennsylvania,Montgomery County,Lower Providence Township,http://www.lowerprovidence.org
+Pennsylvania,York County,Lower Salford Township,http://www.lowersalfordtownship.org/
+Pennsylvania,Northampton County,Lower Saucon Township,http://www.lowersaucontownship.org
+Pennsylvania,Bucks County,Lower Southampton Township,http://www.lowersouthamptontownship.org
+Pennsylvania,Dauphin County,Lower Swatara Township,http://www.lowerswatara.org
+Pennsylvania,Carbon County,Lower Towamensing Township,https://www.lowertowamensing.org
+Pennsylvania,Lehigh County,Lowhill Township,http://lowhilltwp.org
+Pennsylvania,Lycoming County,Loyalsock Township,http://www.loyalsocktownshipbos.com
+Pennsylvania,Franklin County,Lurgan Township,http://www.lurgantownship.org
+Pennsylvania,Luzerne County,Luzerne,http://luzerneborough.org
+Pennsylvania,Dauphin County,Lykens,http://www.lykenspa.com
+Pennsylvania,Dauphin County,Lykens Township,http://lykenstownship.com
+Pennsylvania,Lehigh County,Lynn Township,http://www.lynntwp.org
+Pennsylvania,Berks County,Lyons,http://www.lyonsborough.com
+Pennsylvania,Lehigh County,Macungie,http://www.macungie.pa.us
+Pennsylvania,Columbia County,Madison Township,http://www.madisontwpcol.com
+Pennsylvania,Schuylkill County,Mahanoy City,http://www.mahanoycity.us/
+Pennsylvania,Carbon County,Mahoning Township,http://www.mahoningtownshiponline.com
+Pennsylvania,Lawrence County,Mahoning Township,http://www.mahoningtownship.net
+Pennsylvania,Berks County,Maidencreek Township,http://www.maidencreek.net
+Pennsylvania,Columbia County,Main Township,http://maintownship.com
+Pennsylvania,Chester County,Malvern,http://www.malvern.org
+Pennsylvania,York County,Manchester,http://manchesterborough.com
+Pennsylvania,Lancaster County,Manheim,http://manheimboro.org
+Pennsylvania,Lancaster County,Manheim Township,http://www.manheimtownship.org
+Pennsylvania,York County,Manheim Township,http://www.manheimtwpyorkpa.org/
+Pennsylvania,Westmoreland County,Manor,http://www.manorborough.com/manorportal/
+Pennsylvania,Lancaster County,Manor Township,http://www.manortwp.org
+Pennsylvania,Armstrong County,Manor Township,http://www.manortownshippa.com
+Pennsylvania,Tioga County,Mansfield,http://www.mansfield.org/
+Pennsylvania,Huntingdon County,Mapleton,http://www.mapleton-pa.com/index.htm
+Pennsylvania,Delaware County,Marcus Hook,http://www.marcushookboro.org
+Pennsylvania,Lancaster County,Marietta,http://www.boroughofmarietta.com
+Pennsylvania,Centre County,Marion Township,http://mariontownship.net
+Pennsylvania,Butler County,Marion Township,http://mariontwp.com
+Pennsylvania,Beaver County,Marion Township,http://www.mariontownshipbeavercounty.com
+Pennsylvania,Fayette County,Markleysburg,http://markleysburg.pa.us
+Pennsylvania,Montgomery County,Marlborough Township,https://sites.google.com/site/marlboroughpaorg/home
+Pennsylvania,Delaware County,Marple Township,http://www.marpletwp.com
+Pennsylvania,Allegheny County,Marshall Township,http://www.twp.marshall.pa.us/
+Pennsylvania,Lancaster County,Martic Township,http://www.martictownship.com
+Pennsylvania,Blair County,Martinsburg,http://www.martinsburgpa.org
+Pennsylvania,Perry County,Marysville,http://www.marysvilleboro.com/per-marysville/site/default.asp
+Pennsylvania,Fayette County,Masontown,http://masontownpa.com
+Pennsylvania,Pike County,Matamoras,http://www.matamorasborough.com/%7C
+Pennsylvania,Berks County,Maxatawny Township,http://www.maxatawny.net/
+Pennsylvania,Lackawanna County,Mayfield,http://mayfieldborough.org
+Pennsylvania,Allegheny County,McCandless Township,http://www.townofmccandless.org
+Pennsylvania,Erie County,McKean Township,http://www.mckean-township.com
+Pennsylvania,Allegheny County,McKees Rocks,https://mckeesrockspa.us/
+Pennsylvania,Allegheny County,McKeesport,http://www.mckeesport-pa.gov/
+Pennsylvania,Mifflin County,McVeytown,http://www.mcveytownboro.com
+Pennsylvania,Crawford County,Meadville,http://www.cityofmeadville.org
+Pennsylvania,Cumberland County,Mechanicsburg,http://www.mechanicsburgpa.org
+Pennsylvania,Delaware County,Media,http://www.mediaborough.com
+Pennsylvania,Fayette County,Menallen Township,http://www.menallen.org
+Pennsylvania,Mifflin County,Menno Township,http://www.mennotownship.com
+Pennsylvania,Franklin County,Mercersburg,https://borough.mercersburg.org
+Pennsylvania,Wyoming County,Meshoppen,http://www.meshoppen.com/
+Pennsylvania,Dauphin County,Middle Paxton Township,http://middlepaxtontwp.org
+Pennsylvania,Monroe County,Middle Smithfield Township,https://www.middlesmithfieldtownship.com/
+Pennsylvania,Snyder County,Middlecreek Township,http://www.mctwp.org/
+Pennsylvania,Cumberland County,Middlesex Township,http://middlesextwp.com
+Pennsylvania,Butler County,Middlesex Township,http://www.middlesextownship.org
+Pennsylvania,Dauphin County,Middletown,http://www.middletownborough.com
+Pennsylvania,Bucks County,Middletown Township,http://www.middletownbucks.org
+Pennsylvania,Delaware County,Middletown Township,http://www.middletowntownship.org
+Pennsylvania,Lycoming County,Mifflin Township,http://www.mifflintwp.com
+Pennsylvania,Union County,Mifflinburg,http://www.mifflinburgborough.org/
+Pennsylvania,Juniata County,Mifflintown,http://www.mifflintownborough.com/
+Pennsylvania,Pike County,Milford,https://www.milfordboro.org
+Pennsylvania,Bucks County,Milford Township,http://www.milfordtownship.org
+Pennsylvania,Lycoming County,Mill Creek Township,http://www.millcreektwp.com
+Pennsylvania,Erie County,Mill Village,http://millvillageboro.org
+Pennsylvania,Delaware County,Millbourne,http://www.millbourneborough.org
+Pennsylvania,Erie County,Millcreek Township,http://www.millcreektownship.com
+Pennsylvania,Lebanon County,Millcreek Township,http://www.millcreektownship.info
+Pennsylvania,Dauphin County,Millersburg,http://www.millersburgpa.org
+Pennsylvania,Perry County,Millerstown,http://www.millerstown.org/
+Pennsylvania,Lancaster County,Millersville,http://www.millersvilleborough.org
+Pennsylvania,Centre County,Millheim,http://www.millheimborough.net
+Pennsylvania,Allegheny County,Millvale,http://www.millvalepa.com/
+Pennsylvania,Columbia County,Millville,http://www.millvilleboro.org
+Pennsylvania,Northumberland County,Milton,http://www.miltonpa.org
+Pennsylvania,Schuylkill County,Minersville,https://minersvillepa.gov/
+Pennsylvania,Chester County,Modena,http://boroughofmodenapa.org
+Pennsylvania,Berks County,Mohnton,http://www.co.berks.pa.us/Muni/Mohnton/Pages/Home.aspx
+Pennsylvania,Beaver County,Monaca,http://www.monacapa.net
+Pennsylvania,York County,Monaghan Township,http://www.monaghantownship.com/
+Pennsylvania,Westmoreland County,Monessen,http://www.cityofmonessen.com
+Pennsylvania,Washington County,Monongahela,http://www.cityofmonongahela-pa.gov/
+Pennsylvania,Bradford County,Monroe,http://www.monroeborough.org/
+Pennsylvania,Cumberland County,Monroe Township,http://monroetwp.net
+Pennsylvania,Allegheny County,Monroeville,http://www.monroeville.pa.us
+Pennsylvania,Franklin County,Mont Alto,http://www.montaltoborough.com
+Pennsylvania,Lycoming County,Montgomery,http://www.montgomeryborough.org
+Pennsylvania,Montgomery County,Montgomery Township,http://www.montgomerytwp.org
+Pennsylvania,Columbia County,Montour Township,http://montourtownship.org
+Pennsylvania,Lycoming County,Montoursville,http://www.montoursvilleborough.org
+Pennsylvania,Allegheny County,Moon Township,http://www.moontwp.com/
+Pennsylvania,Northampton County,Moore Township,http://mooretownship.org/
+Pennsylvania,Lackawanna County,Moosic,http://moosicborough.com
+Pennsylvania,Bucks County,Morrisville,http://morrisvillepagov.com
+Pennsylvania,Delaware County,Morton,http://mortonpa.org
+Pennsylvania,Lackawanna County,Moscow,http://www.moscowboro.com
+Pennsylvania,Northumberland County,Mount Carmel,http://www.mountcarmelborough.org/
+Pennsylvania,Northumberland County,Mount Carmel Township,http://www.mountcarmeltownship.org/
+Pennsylvania,Lebanon County,Mount Gretna,http://borough.mtgretna.com
+Pennsylvania,Cumberland County,Mount Holly Springs,http://mhsboro.org
+Pennsylvania,Lancaster County,Mount Joy,http://www.mountjoyborough.com
+Pennsylvania,Lancaster County,Mount Joy Township,http://www.mtjoytwp.org
+Pennsylvania,Adams County,Mount Joy Township,http://www.mtjoytwp.us
+Pennsylvania,Allegheny County,Mount Oliver,http://www.mountoliver.us
+Pennsylvania,Berks County,Mount Penn,http://mtpennborough.net
+Pennsylvania,Westmoreland County,Mount Pleasant,http://www.mtpleasantboro.com
+Pennsylvania,Westmoreland County,Mount Pleasant Township,http://www.mtpleasanttwp.com
+Pennsylvania,Washington County,Mount Pleasant Township,http://www.mtp-pa.com
+Pennsylvania,Columbia County,Mount Pleasant Township,http://www.mtpleasantcolumbiapa.org
+Pennsylvania,Monroe County,Mount Pocono,http://mountpocono-pa.gov/
+Pennsylvania,Huntingdon County,Mount Union,http://www.mtunionpa.org
+Pennsylvania,York County,Mount Wolf,https://mtwolfpa.gov
+Pennsylvania,Lancaster County,Mountville,http://mountvilleborough.com
+Pennsylvania,Butler County,Muddy Creek Township,http://www.muddycreektwp.com
+Pennsylvania,Berks County,Muhlenberg Township,https://www.muhlenbergtwp.com/
+Pennsylvania,Lycoming County,Muncy,http://muncyboro.org
+Pennsylvania,Allegheny County,Munhall,http://www.munhallpa.us/
+Pennsylvania,Westmoreland County,Murrysville,http://www.murrysville.com/
+Pennsylvania,Lebanon County,Myerstown,http://myerstownpa.org
+Pennsylvania,Luzerne County,Nanticoke,http://www.nanticokecity.com/
+Pennsylvania,Montgomery County,Narberth,http://www.narberthborough.com
+Pennsylvania,Northampton County,Nazareth,http://www.nazarethboroughpa.com/
+Pennsylvania,Luzerne County,Nescopeck Township,http://nescopecktwp.org
+Pennsylvania,Lawrence County,Neshannock Township,http://www.neshannock.org
+Pennsylvania,Carbon County,Nesquehoning,http://nesquehoning.org
+Pennsylvania,Delaware County,Nether Providence Township,http://www.netherprovidence.org
+Pennsylvania,Bradford County,New Albany,http://new-albany.com
+Pennsylvania,Westmoreland County,New Alexandria,http://www.newalexpa.org/
+Pennsylvania,Lawrence County,New Beaver,http://newbeaverborough.org
+Pennsylvania,Union County,New Berlin,http://www.newberlinpa.us/
+Pennsylvania,Clarion County,New Bethlehem,http://www.newbethlehemboro.com
+Pennsylvania,Beaver County,New Brighton,http://newbrightonpa.org/
+Pennsylvania,Bucks County,New Britain,http://www.newbritainboro.com
+Pennsylvania,Bucks County,New Britain Township,http://www.newbritaintownship.org
+Pennsylvania,Lawrence County,New Castle,http://www.newcastlepa.org
+Pennsylvania,Cumberland County,New Cumberland,http://www.newcumberlandborough.com
+Pennsylvania,York County,New Freedom,http://www.newfreedomboro.org/
+Pennsylvania,Chester County,New Garden Township,http://www.newgarden.org
+Pennsylvania,Montgomery County,New Hanover Township,http://www.newhanover-pa.org
+Pennsylvania,Lancaster County,New Holland,http://www.newhollandborough.org
+Pennsylvania,Bucks County,New Hope,http://www.newhopeborough.org
+Pennsylvania,Westmoreland County,New Kensington,http://newkensingtononline.com
+Pennsylvania,Chester County,New London Township,http://www.newlondontwp.net
+Pennsylvania,Berks County,New Morgan,https://www.newmorganboro.org
+Pennsylvania,Beaver County,New Sewickley Township,http://newsewickley.com
+Pennsylvania,Westmoreland County,New Stanton,http://www.newstanton.org
+Pennsylvania,Lawrence County,New Wilmington,http://nwboro.com
+Pennsylvania,Cumberland County,Newburg,http://www.newburgborough.com
+Pennsylvania,Luzerne County,Newport Township,http://newporttownship.com
+Pennsylvania,Bucks County,Newtown,https://www.boroughofnewtown.com/
+Pennsylvania,Bucks County,Newtown Township,http://www.twp.newtown.pa.us
+Pennsylvania,Delaware County,Newtown Township,http://www.newtowntownship.org
+Pennsylvania,Cumberland County,Newville,http://www.newvilleborough.com
+Pennsylvania,Wyoming County,Nicholson,http://www.nicholsonborough.org/
+Pennsylvania,Lycoming County,Nippenose Township,http://www.nippenosetwp.com
+Pennsylvania,Bucks County,Nockamixon Township,http://www.nockamixontownship.org
+Pennsylvania,Montgomery County,Norristown,http://www.norristown.org/
+Pennsylvania,Lebanon County,North Annville Township,http://nannvilletwp.com
+Pennsylvania,Armstrong County,North Apollo,http://northapolloborough.com/
+Pennsylvania,Allegheny County,North Braddock,http://www.northbraddockborough.com
+Pennsylvania,Northampton County,North Catasauqua,http://www.northcatasauqua.org/
+Pennsylvania,Columbia County,North Centre Township,http://www.northcentretownship.com
+Pennsylvania,Lebanon County,North Cornwall Township,http://www.nctown.org
+Pennsylvania,Chester County,North Coventry Township,http://www.northcoventry.us
+Pennsylvania,Erie County,North East,http://northeastborough.com
+Pennsylvania,Erie County,North East Township,http://northeasttwp.org
+Pennsylvania,Washington County,North Franklin Township,http://northfranklin.org
+Pennsylvania,Lebanon County,North Lebanon Township,http://www.northlebanontwppa.gov
+Pennsylvania,Lebanon County,North Londonderry Township,http://www.nlondtwp.com
+Pennsylvania,Cumberland County,North Middleton Township,http://www.nmiddleton.com
+Pennsylvania,Cumberland County,North Newton Township,http://northnewtontownship.com
+Pennsylvania,Beaver County,North Sewickley Township,http://www.northsewickleytwp.org
+Pennsylvania,Crawford County,North Shenango Township,http://www.northshenango.com
+Pennsylvania,Washington County,North Strabane Township,http://northstrabanetwp.com/
+Pennsylvania,Fayette County,North Union Township,http://northuniontownship-pa.gov
+Pennsylvania,Montgomery County,North Wales,http://www.northwalesborough.org
+Pennsylvania,Lehigh County,North Whitehall Township,http://www.northwhitehall.org
+Pennsylvania,Northampton County,Northampton,http://www.northamptonboro.com/
+Pennsylvania,Bucks County,Northampton Township,http://www.northamptontownship.com
+Pennsylvania,Cambria County,Northern Cambria,https://northerncambriaborough.com/
+Pennsylvania,Northumberland County,Northumberland,http://www.northumberlandborough.com/
+Pennsylvania,Schuylkill County,Norwegian Township,http://norwegiantownship.com/
+Pennsylvania,Delaware County,Norwood,http://www.norwoodpa.org
+Pennsylvania,Wyoming County,Noxen Township,http://noxenpa.com/
+Pennsylvania,Allegheny County,Oakdale,http://www.oakdaleborough.com/
+Pennsylvania,Susquehanna County,Oakland,http://www.oaklandboro.com/
+Pennsylvania,Butler County,Oakland Township,http://oaklandtownship.us
+Pennsylvania,Allegheny County,Oakmont,http://www.oakmont-pa.com/
+Pennsylvania,Allegheny County,Ohio Township,http://www.ohiotwp.org/
+Pennsylvania,Beaver County,Ohioville,http://ohiovilleboro.org
+Pennsylvania,Venango County,Oil City,http://www.oilcity.org/
+Pennsylvania,Lackawanna County,Old Forge,http://www.oldforgeborough.com
+Pennsylvania,Lycoming County,Old Lycoming Township,http://www.oldlycomingtwp.org
+Pennsylvania,Berks County,Oley Township,mw-data:TemplateStyles:r1066479718
+Pennsylvania,Mifflin County,Oliver Township,http://olivertwpmifflin.us/main.html
+Pennsylvania,Perry County,Oliver Township,http://www.tricountyi.net/~olivert/
+Pennsylvania,Lackawanna County,Olyphant,http://olyphantborough.com
+Pennsylvania,Berks County,Ontelaunee Township,http://www.ontelauneetwp.com
+Pennsylvania,Schuylkill County,Orwigsburg,http://www.orwigsburg.net
+Pennsylvania,Chester County,Oxford,http://www.oxfordboro.org
+Pennsylvania,Somerset County,Paint Township,https://www.painttownship.com/
+Pennsylvania,Northampton County,Palmer Township,http://www.palmertwp.com
+Pennsylvania,Carbon County,Palmerton,http://palmertonborough.com
+Pennsylvania,Lebanon County,Palmyra,http://www.palmyraborough.org
+Pennsylvania,Wayne County,Palmyra Township,http://www.palmyrawayne.org/
+Pennsylvania,Schuylkill County,Palo Alto,http://www.paloaltopa.com/
+Pennsylvania,Lancaster County,Paradise Township,http://paradisetownship.org
+Pennsylvania,Monroe County,Paradise Township,https://www.paradisetownship.com/
+Pennsylvania,Armstrong County,Parker,http://www.visitparker.us/index.html
+Pennsylvania,Chester County,Parkesburg,http://www.parkesburg.org
+Pennsylvania,Delaware County,Parkside,http://www.parksideboro.com
+Pennsylvania,Carbon County,Parryville,https://parryville.org/
+Pennsylvania,Beaver County,Patterson Heights,http://patterson-hgts.com
+Pennsylvania,Beaver County,Patterson Township,http://www.pattersontwp.com
+Pennsylvania,Cambria County,Patton,http://www.pattonboro.com
+Pennsylvania,Centre County,Patton Township,http://twp.patton.pa.us
+Pennsylvania,Wayne County,Paupack Township,http://www.paupacktownship.org/
+Pennsylvania,Dauphin County,Paxtang,http://www.paxtang.org
+Pennsylvania,Northampton County,Pen Argyl,https://www.penargylborough.com/
+Pennsylvania,Dauphin County,Penbrook,http://www.penbrook.org
+Pennsylvania,Carbon County,Penn Forest Township,http://www.pennforesttownship.org
+Pennsylvania,Allegheny County,Penn Hills Township,http://www.pennhills.org
+Pennsylvania,Luzerne County,Penn Lake Park,http://www.pennlake.org
+Pennsylvania,Westmoreland County,Penn Township,https://penntwp.org/
+Pennsylvania,York County,Penn Township,http://www.penntwp.com/
+Pennsylvania,Lancaster County,Penn Township,http://penntwplanco.org
+Pennsylvania,Chester County,Penn Township,http://www.penntownship.us
+Pennsylvania,Butler County,Penn Township,http://penntownship.org
+Pennsylvania,Cumberland County,Penn Township,http://penntwpcc.org
+Pennsylvania,Bucks County,Penndel,http://www.penndelboro.com
+Pennsylvania,Montgomery County,Pennsburg,http://www.pennsburg.us
+Pennsylvania,Chester County,Pennsbury Township,http://www.pennsbury.pa.us
+Pennsylvania,Allegheny County,Pennsbury Village,http://pennsburyvillageboro.com
+Pennsylvania,Lancaster County,Pequea Township,http://www.pequeatwp.org
+Pennsylvania,Bucks County,Perkasie,http://www.perkasieborough.org
+Pennsylvania,Montgomery County,Perkiomen Township,http://www.perkiomentownship.org
+Pennsylvania,Fayette County,Perry Township,http://www.perryopolis.com/perrytwp/index.html
+Pennsylvania,Snyder County,Perry Township,http://www.perrytownship.org/
+Pennsylvania,Lawrence County,Perry Township,http://www.perrytownshiplawrencecountypa.com
+Pennsylvania,Greene County,Perry Township,http://www.co.greene.pa.us/perrytwp
+Pennsylvania,Washington County,Peters Township,http://www.peterstownship.com/
+Pennsylvania,Centre County,Philipsburg,http://www.philipsburgborough.com
+Pennsylvania,Chester County,Phoenixville,http://www.phoenixville.org
+Pennsylvania,Lycoming County,Piatt Township,http://piatttownship.org
+Pennsylvania,Dauphin County,Pillow,http://www.pillowpa.org
+Pennsylvania,Clinton County,Pine Creek Township,http://www.pinecreektownship.com
+Pennsylvania,Allegheny County,Pine Township,http://twp.pine.pa.us/
+Pennsylvania,Mercer County,Pine Township,http://www.pinetownship.org
+Pennsylvania,Lycoming County,Pine Township,http://www.pinetownshiplycomingco.org
+Pennsylvania,Allegheny County,Pitcairn,http://pitcairnborough.us
+Pennsylvania,Luzerne County,Pittston,http://www.pittstoncity.org
+Pennsylvania,Luzerne County,Pittston Township,http://pittstontownship.org
+Pennsylvania,Lawrence County,Plain Grove Township,http://plaingrovetwp.org
+Pennsylvania,Northampton County,Plainfield Township,https://plainfieldtownship.org/
+Pennsylvania,Luzerne County,Plains Township,http://www.plainstownship.org
+Pennsylvania,Allegheny County,Pleasant Hills,http://www.pleasanthillspa.com
+Pennsylvania,Allegheny County,Plum,http://www.plumboro.com
+Pennsylvania,Bucks County,Plumstead Township,http://www.plumstead.org
+Pennsylvania,Lycoming County,Plunketts Creek Township,http://www.plunkettscreektownship.org
+Pennsylvania,Luzerne County,Plymouth,http://www.plymouthborough.org
+Pennsylvania,Montgomery County,Plymouth Township,http://www.plymouthtownship.org/
+Pennsylvania,Monroe County,Pocono Township,https://www.poconopa.gov/
+Pennsylvania,Chester County,Pocopson Township,http://www.pocopson.org
+Pennsylvania,Monroe County,Polk Township,https://polktwp.org/
+Pennsylvania,Allegheny County,Port Vue,http://portvue.org
+Pennsylvania,Cambria County,Portage,http://portageboro.com
+Pennsylvania,Cambria County,Portage Township,http://portagetwp.com
+Pennsylvania,Clinton County,Porter Township,http://portertownshippa.com
+Pennsylvania,Pike County,Porter Township,http://www.portertownship.net/
+Pennsylvania,Northampton County,Portland,https://portlandboroughpa.com/
+Pennsylvania,Centre County,Potter Township,http://pottertownship.org
+Pennsylvania,Beaver County,Potter Township,http://www.pottertwp-pa.gov
+Pennsylvania,Montgomery County,Pottstown,http://www.pottstown.org
+Pennsylvania,Schuylkill County,Pottsville,http://www.city.pottsville.pa.us
+Pennsylvania,Wayne County,Preston Township,http://www.prestontownship.com/
+Pennsylvania,Monroe County,Price Township,http://pricetownshippa.com/
+Pennsylvania,Luzerne County,Pringle,http://www.pringlepa.us
+Pennsylvania,Wayne County,Prompton,http://promptonpa.com/
+Pennsylvania,Butler County,Prospect,http://prospectborough.com
+Pennsylvania,Delaware County,Prospect Park,http://prospectparkboro.com
+Pennsylvania,Lancaster County,Providence Township,http://providencetownship.com
+Pennsylvania,Lawrence County,Pulaski Township,http://www.pulaskitownship.com
+Pennsylvania,Beaver County,Pulaski Township,http://www.pulaskitwpbeavercounty.org
+Pennsylvania,Jefferson County,Punxsutawney,http://www.punxsutawneyboro.com/
+Pennsylvania,Bucks County,Quakertown,https://www.quakertown.org/
+Pennsylvania,Lancaster County,Quarryville,http://quarryvilleborough.com
+Pennsylvania,Franklin County,Quincy Township,http://www.quincytwp.org
+Pennsylvania,Beaver County,Raccoon Township,http://www.raccoontownshipbeavercounty.com
+Pennsylvania,Delaware County,Radnor Township,http://radnor.com/
+Pennsylvania,Allegheny County,Rankin,http://www.rankinborough.com
+Pennsylvania,Lancaster County,Rapho Township,http://raphotownship.com
+Pennsylvania,Berks County,Reading,https://www.readingpa.gov/
+Pennsylvania,Adams County,Reading Township,http://www.adamscounty.us/Munic/ReadingTownship
+Pennsylvania,Montgomery County,Red Hill,https://www.redhillborough.org/
+Pennsylvania,York County,Red Lion,http://www.redlionpa.org
+Pennsylvania,Fayette County,Redstone Township,http://www.redstonetownship.com
+Pennsylvania,Dauphin County,Reed Township,http://www.reedtownship.com
+Pennsylvania,Clinton County,Renovo,https://renovoborough.org/
+Pennsylvania,Jefferson County,Reynoldsville,http://reynoldsvilleboro.com/
+Pennsylvania,Luzerne County,Rice Township,http://ricetwp.com
+Pennsylvania,Bucks County,Richland Township,http://www.richlandtownship.org
+Pennsylvania,Cambria County,Richland Township,http://www.richlandtwp.com
+Pennsylvania,Allegheny County,Richland Township,https://richland.pa.us/
+Pennsylvania,Bucks County,Richlandtown,http://www.richlandtownborough.org
+Pennsylvania,Crawford County,Richmond Township,http://www.richmondtownshipcc.com
+Pennsylvania,Bradford County,Ridgebury Township,http://www.ridgeburytownship.org
+Pennsylvania,Elk County,Ridgway,http://www.ridgwayborough.com
+Pennsylvania,Delaware County,Ridley Park,http://www.ridleyparkborough.org
+Pennsylvania,Delaware County,Ridley Township,http://www.twp.ridley.pa.us
+Pennsylvania,Bucks County,Riegelsville,http://www.riegelsville.org
+Pennsylvania,Clarion County,Rimersburg,http://www.rimersburgborough.com
+Pennsylvania,Northumberland County,Riverside,http://www.riversideborough.org/
+Pennsylvania,Blair County,Roaring Spring,http://www.roaringspring.net/
+Pennsylvania,Berks County,Robesonia,http://www.robesoniaboro.org
+Pennsylvania,Allegheny County,Robinson Township,https://townshipofrobinson.com/
+Pennsylvania,Beaver County,Rochester Township,http://rochestertwp.org
+Pennsylvania,Montgomery County,Rockledge,http://www.rockledgeborough.org
+Pennsylvania,Bradford County,Rome Township,http://www.rometownshippa.org
+Pennsylvania,Delaware County,Rose Valley,http://www.rosevalleyborough.org
+Pennsylvania,Northampton County,Roseto,https://boroughroseto.com/
+Pennsylvania,Allegheny County,Ross Township,http://ross.pa.us
+Pennsylvania,Monroe County,Ross Township,http://rosstwp.com/
+Pennsylvania,Allegheny County,Rosslyn Farms,http://rosslynfarmspa.gov
+Pennsylvania,Westmoreland County,Rostraver Township,http://www.rostraver.us
+Pennsylvania,Dauphin County,Royalton,http://royaltonpa.com
+Pennsylvania,Montgomery County,Royersford,https://www.royersfordborough.org/
+Pennsylvania,Berks County,Ruscombmanor Township,http://www.ruscombmanor.org/
+Pennsylvania,Centre County,Rush Township,http://www.rushtownship.com
+Pennsylvania,Schuylkill County,Rush Township,https://rushtownship.org/
+Pennsylvania,Dauphin County,Rush Township,http://www.rushtownshippa.com
+Pennsylvania,Delaware County,Rutledge,http://www.rutledgepa.org
+Pennsylvania,Perry County,Rye Township,https://ryetwp.com/
+Pennsylvania,Lawrence County,S.N.P.J.,http://snpjrec.com
+Pennsylvania,Chester County,Sadsbury Township,http://www.sadsburytwp.org
+Pennsylvania,Lancaster County,Sadsbury Township,http://www.sadsburytownshiplancaster.org
+Pennsylvania,Crawford County,Sadsbury Township,http://www.sadsburytownship.com
+Pennsylvania,Crawford County,Saegertown,http://www.saegertownpa.com
+Pennsylvania,Luzerne County,Salem Township,http://www.salemtownshipluzerne.info
+Pennsylvania,Montgomery County,Salford Township,http://www.salfordtownship.com
+Pennsylvania,Lehigh County,Salisbury Township,http://www.salisburytownshippa.org
+Pennsylvania,Lancaster County,Salisbury Township,http://www.salisburytownship.org
+Pennsylvania,Fayette County,Saltlick Township,http://saltlicktownship.org
+Pennsylvania,Indiana County,Saltsburg,http://www.saltsburg.org/
+Pennsylvania,Mercer County,Sandy Lake,http://sandylakeborough.com
+Pennsylvania,Butler County,Saxonburg,http://www.saxonburgpa.com
+Pennsylvania,Bradford County,Sayre,http://sayreborough.org/
+Pennsylvania,Schuylkill County,Schuylkill Haven,http://www.schuylkillhaven.org
+Pennsylvania,Chester County,Schuylkill Township,https://schuylkilltwp.org
+Pennsylvania,Allegheny County,Scott Township,https://scott-twp.com/
+Pennsylvania,Columbia County,Scott Township,http://scott-township.com
+Pennsylvania,Westmoreland County,Scottdale,http://www.scottdale.com
+Pennsylvania,Lackawanna County,Scranton,http://www.scrantonpa.gov
+Pennsylvania,Snyder County,Selinsgrove,http://www.selinsgrove.org/Pages/default.aspx
+Pennsylvania,Bucks County,Sellersville,http://sellersvilleboro.org
+Pennsylvania,Butler County,Seven Fields,http://www.sevenfields.org
+Pennsylvania,York County,Seven Valleys,http://www.SevenValleysBorough.com
+Pennsylvania,Allegheny County,Sewickley,http://www.sewickleyborough.org
+Pennsylvania,Allegheny County,Sewickley Heights,http://www.sewickleyheightsboro.com
+Pennsylvania,Allegheny County,Sewickley Hills,http://www.sewickleyhills.com
+Pennsylvania,Westmoreland County,Sewickley Township,http://www.sewickleytownship.org
+Pennsylvania,Allegheny County,Shaler Township,http://www.shaler.org/
+Pennsylvania,Northumberland County,Shamokin,http://www.shamokincity.org/
+Pennsylvania,Snyder County,Shamokin Dam,http://www.shamokindam.net
+Pennsylvania,Mercer County,Sharon,http://www.cityofsharon.net
+Pennsylvania,Delaware County,Sharon Hill,http://www.sharonhillboro.com
+Pennsylvania,Allegheny County,Sharpsburg,http://www.sharpsburgborough.com
+Pennsylvania,Mercer County,Sharpsville,http://www.sharpsville.org
+Pennsylvania,Schuylkill County,Shenandoah,http://shenandoahpa.org/
+Pennsylvania,Lawrence County,Shenango Township,http://www.shenangotownship.org
+Pennsylvania,Bradford County,Sheshequin Township,http://www.sheshequintwp.org
+Pennsylvania,Luzerne County,Shickshinny,http://www.shickshinny.org
+Pennsylvania,Berks County,Shillington,http://www.co.berks.pa.us/Muni/Shillington/
+Pennsylvania,Potter County,Shinglehouse,http://shinglehouseborough.org/home
+Pennsylvania,Cumberland County,Shippensburg,http://www.borough.shippensburg.pa.us
+Pennsylvania,Cumberland County,Shippensburg Township,http://shippensburgtownship.com
+Pennsylvania,Clarion County,Shippenville,http://www.shippenvilleboro.com
+Pennsylvania,Beaver County,Shippingport,http://shippingportpa.com
+Pennsylvania,Pike County,Shohola Township,http://shoholatwp.org/
+Pennsylvania,York County,Shrewsbury,http://www.ShrewsburyBorough.org
+Pennsylvania,Susquehanna County,Silver Lake Township,http://www.silverlaketwp.org
+Pennsylvania,Cumberland County,Silver Spring Township,http://www.sstwp.org
+Pennsylvania,Bucks County,Silverdale,http://www.silverdalepa.org
+Pennsylvania,Berks County,Sinking Spring,http://www.co.berks.pa.us/Muni/SinkingSpring/Pages/default.aspx
+Pennsylvania,Montgomery County,Skippack Township,http://www.skippacktownship.org
+Pennsylvania,Lehigh County,Slatington,http://slatington.org
+Pennsylvania,Clarion County,Sligo,http://www.sligopa.com
+Pennsylvania,Butler County,Slippery Rock,http://www.slipperyrockboroughpa.gov
+Pennsylvania,Butler County,Slippery Rock Township,http://srtwp.com
+Pennsylvania,Lawrence County,Slippery Rock Township,http://slipperyrocktownship.org
+Pennsylvania,McKean County,Smethport,http://www.smethportpa.org
+Pennsylvania,Washington County,Smith Township,http://www.smithtownship.org
+Pennsylvania,Monroe County,Smithfield Township,https://smithfieldtownship.com/
+Pennsylvania,Bradford County,Smithfield Township,http://smithfieldtownshipbc.org
+Pennsylvania,Jefferson County,Snyder Township,http://snydertwp.com
+Pennsylvania,Bucks County,Solebury Township,http://www.soleburytwp.org
+Pennsylvania,Somerset County,Somerset,http://www.somersetborough.com
+Pennsylvania,Montgomery County,Souderton,http://www.soudertonborough.org
+Pennsylvania,Lebanon County,South Annville Township,http://www.southannville.com
+Pennsylvania,Beaver County,South Beaver Township,http://www.southbeavertwp.com/
+Pennsylvania,Armstrong County,South Bethlehem,http://www.lehighvalleyhistory.com/the-borough-of-south-bethlehem/
+Pennsylvania,Armstrong County,South Buffalo Township,http://southbuffalotwp.com
+Pennsylvania,Columbia County,South Centre Township,http://www.southcentre.us
+Pennsylvania,Chester County,South Coatesville,http://south-coatesville.org
+Pennsylvania,Fayette County,South Connellsville,http://www.southconnellsvilleboroughpa.com
+Pennsylvania,Chester County,South Coventry Township,http://www.southcoventry.org
+Pennsylvania,Allegheny County,South Fayette Township,http://www.southfayettepa.com
+Pennsylvania,Washington County,South Franklin Township,http://www.southfranklintwp.org
+Pennsylvania,Westmoreland County,South Greensburg,http://www.southgreensburg.org
+Pennsylvania,Dauphin County,South Hanover Township,http://www.southhanover.org
+Pennsylvania,Lebanon County,South Lebanon Township,http://twp.south-lebanon.pa.us
+Pennsylvania,Lebanon County,South Londonderry Township,http://www.southlondonderry.org
+Pennsylvania,Cumberland County,South Middleton Township,http://www.smiddleton.com
+Pennsylvania,Cumberland County,South Newton Township,http://southnewtontownship.net
+Pennsylvania,Crawford County,South Shenango Township,http://www.southshenangotwp.com
+Pennsylvania,Washington County,South Strabane Township,https://www.southstrabane.com/
+Pennsylvania,Fayette County,South Union Township,http://www.southuniontwp.com
+Pennsylvania,Lehigh County,South Whitehall Township,http://southwhitehall.com
+Pennsylvania,Lycoming County,South Williamsport,http://southwilliamsport.net
+Pennsylvania,Franklin County,Southampton Township,http://www.southamptontownship.org
+Pennsylvania,Cumberland County,Southampton Township,http://southamptontwp.com
+Pennsylvania,Cambria County,Southmont,http://www.southmontborough.com
+Pennsylvania,Chester County,Spring City,http://www.springcitypa.gov
+Pennsylvania,York County,Spring Garden Township,http://www.springgardentwp.org/
+Pennsylvania,Berks County,Spring Township,http://www.springtwpberks.org/
+Pennsylvania,Centre County,Spring Township,http://www.springtownship.org
+Pennsylvania,Allegheny County,Springdale,http://www.springdaleborough.com
+Pennsylvania,York County,Springettsbury Township,http://www.springettsbury.com
+Pennsylvania,Delaware County,Springfield Township,http://www.springfielddelco.org
+Pennsylvania,Montgomery County,Springfield Township,http://www.springfieldmontco.org
+Pennsylvania,York County,Springfield Township,http://www.SpringfieldYork.org
+Pennsylvania,Bucks County,Springfield Township,http://www.springfieldbucks.org
+Pennsylvania,Mercer County,Springfield Township,http://www.springfield-mercer.org
+Pennsylvania,Schuylkill County,St. Clair,https://www.stclair-gov.org/
+Pennsylvania,Berks County,St. Lawrence,http://slboro.com
+Pennsylvania,Elk County,St. Marys,http://www.stmaryspa.gov//
+Pennsylvania,Centre County,State College,http://www.statecollegepa.us
+Pennsylvania,Dauphin County,Steelton,http://www.steeltonpa.com
+Pennsylvania,York County,Stewartstown,http://www.stewartstown.org/
+Pennsylvania,Northampton County,Stockertown,http://www.stockertown.org
+Pennsylvania,Mercer County,Stoneboro,http://www.stoneboropa.com
+Pennsylvania,Cambria County,Stonycreek Township,http://www.stonycreektownship.com
+Pennsylvania,Adams County,Straban Township,http://www.strabantownship.com
+Pennsylvania,Lancaster County,Strasburg,http://strasburgboro.org
+Pennsylvania,Lancaster County,Strasburg Township,http://www.strasburgtownship.com
+Pennsylvania,Monroe County,Stroud Township,https://stroudtownship.org/
+Pennsylvania,Monroe County,Stroudsburg,http://stroudsburgboro.com
+Pennsylvania,Warren County,Sugar Grove,http://www.sugargrovepa.com
+Pennsylvania,Luzerne County,Sugar Notch,http://www.sugarnotchborough.com
+Pennsylvania,Venango County,Sugarcreek,https://www.sugarcreekborough.us
+Pennsylvania,Luzerne County,Sugarloaf Township,http://www.sugarloaftwp.org
+Pennsylvania,Cambria County,Summerhill Township,http://www.summerhilltwp.com
+Pennsylvania,Carbon County,Summit Hill,http://www.summithillborough.com
+Pennsylvania,Erie County,Summit Township,http://www.summittownship.com
+Pennsylvania,Butler County,Summit Township,http://summittwp.org
+Pennsylvania,Crawford County,Summit Township,http://summitcrawford.com
+Pennsylvania,Northumberland County,Sunbury,https://www.sunburypa.org/
+Pennsylvania,Dauphin County,Susquehanna Township,http://www.susquehannatwp.com
+Pennsylvania,Cambria County,Susquehanna Township,http://susqtwp.com
+Pennsylvania,Lycoming County,Susquehanna Township,http://susquehannatwp.org
+Pennsylvania,Delaware County,Swarthmore,http://www.swarthmorepa.org
+Pennsylvania,Dauphin County,Swatara Township,http://www.swataratwp.com
+Pennsylvania,Lebanon County,Swatara Township,http://www.swataratownshiplebanon.org
+Pennsylvania,Allegheny County,Swissvale,http://swissvaleborough.com
+Pennsylvania,Luzerne County,Swoyersville,http://www.swoyersvillepa.us
+Pennsylvania,Jefferson County,Sykesville,http://sykesboro.org
+Pennsylvania,Allegheny County,Tarentum,http://www.tarentumboro.com
+Pennsylvania,Northampton County,Tatamy,http://www.tatamypa.com/
+Pennsylvania,Lackawanna County,Taylor,http://taylorborough.com
+Pennsylvania,Bucks County,Telford,http://www.telfordborough.org
+Pennsylvania,Lancaster County,Terre Hill,http://www.terrehillboro.com
+Pennsylvania,Allegheny County,Thornburg,http://thornburgborough.org
+Pennsylvania,Delaware County,Thornbury Township,http://www.thornbury.org
+Pennsylvania,Chester County,Thornbury Township,http://www.thornburytwp.com
+Pennsylvania,Lackawanna County,Thornhurst Township,http://www.thornhursttwp.com/
+Pennsylvania,Lackawanna County,Throop,http://www.throopboro.com
+Pennsylvania,Delaware County,Tinicum Township,http://www.tinicumtownshipdelco.com
+Pennsylvania,Bucks County,Tinicum Township,http://www.tinicumbucks.org
+Pennsylvania,Crawford County,Titusville,http://www.cityoftitusvillepa.gov
+Pennsylvania,Monroe County,Tobyhanna Township,https://tobyhannatownshippa.gov/
+Pennsylvania,Berks County,Topton,http://toptonborough.com
+Pennsylvania,Montgomery County,Towamencin Township,http://www.towamencin.org
+Pennsylvania,Carbon County,Towamensing Township,https://www.towamensingtownship.com/
+Pennsylvania,Bradford County,Towanda,http://towandaborough.org
+Pennsylvania,Bradford County,Towanda Township,http://towandatownship.org
+Pennsylvania,Westmoreland County,Trafford,http://www.traffordborough.com/
+Pennsylvania,Delaware County,Trainer,http://www.trainerboro.com
+Pennsylvania,Montgomery County,Trappe,http://www.trappeborough.com
+Pennsylvania,Chester County,Tredyffrin Township,http://www.tredyffrin.org/
+Pennsylvania,Bradford County,Troy,http://troyborough.com
+Pennsylvania,Bucks County,Trumbauersville,http://www.trumbauersvilleboro.org
+Pennsylvania,Bucks County,Tullytown,http://tullytownborough.com
+Pennsylvania,Wyoming County,Tunkhannock,https://tunkboro.com/
+Pennsylvania,Monroe County,Tunkhannock Township,https://www.longpondpa.com/
+Pennsylvania,Allegheny County,Turtle Creek,https://www.turtlecreekborough.us
+Pennsylvania,Juniata County,Tuscarora Township,http://www.tuscaroratownship.org
+Pennsylvania,Blair County,Tyrone,http://www.tyroneboropa.com/
+Pennsylvania,Erie County,Union City,http://unioncitypa.us
+Pennsylvania,Washington County,Union Township,http://uniontwp.psatstwp.org/
+Pennsylvania,Lawrence County,Union Township,http://uniontownshiplawrencecounty.com
+Pennsylvania,Berks County,Union Township,https://www.unionberks.org/
+Pennsylvania,Mifflin County,Union Township,http://uniontwpmc.com/
+Pennsylvania,Lebanon County,Union Township,http://uniontownshippa.com
+Pennsylvania,Centre County,Unionville,http://unionvilleborough.com
+Pennsylvania,Westmoreland County,Unity Township,http://www.unitytownship.org
+Pennsylvania,Delaware County,Upland,http://uplandboro.org
+Pennsylvania,Cumberland County,Upper Allen Township,http://www.uatwp.org/
+Pennsylvania,Westmoreland County,Upper Burrell Township,http://www.upperburrelltwp.com
+Pennsylvania,Delaware County,Upper Chichester Township,http://www.upperchichester.org
+Pennsylvania,Delaware County,Upper Darby Township,http://www.upperdarby.org
+Pennsylvania,Montgomery County,Upper Dublin Township,http://upperdublin.net
+Pennsylvania,Lycoming County,Upper Fairfield Township,http://upperfairfieldtwp.org
+Pennsylvania,Montgomery County,Upper Frederick Township,http://www.upperfrederick.com
+Pennsylvania,Montgomery County,Upper Gwynedd Township,http://www.uppergwynedd.org
+Pennsylvania,Montgomery County,Upper Hanover Township,http://www.upperhanovertownship.org
+Pennsylvania,Lancaster County,Upper Leacock Township,http://www.ultwp.com
+Pennsylvania,Lehigh County,Upper Macungie Township,http://www.uppermac.org
+Pennsylvania,Bucks County,Upper Makefield Township,http://www.uppermakefield.org
+Pennsylvania,Allegheny County,Upper Merion Township,http://www.umtownship.org
+Pennsylvania,Cumberland County,Upper Mifflin Township,http://www.uppermifflintownship.com
+Pennsylvania,Lehigh County,Upper Milford Township,http://www.uppermilford.net
+Pennsylvania,Montgomery County,Upper Moreland Township,http://www.uppermoreland.org
+Pennsylvania,Northampton County,Upper Mount Bethel Township,https://umbt.org/
+Pennsylvania,Northampton County,Upper Nazareth Township,http://www.uppernazarethtownship.org
+Pennsylvania,Chester County,Upper Oxford Township,http://www.upperoxford.us
+Pennsylvania,Dauphin County,Upper Paxton Township,http://www.upperpaxtontwp.org
+Pennsylvania,Montgomery County,Upper Pottsgrove Township,http://www.uptownship.org/
+Pennsylvania,Montgomery County,Upper Providence Township,http://www.uprov-montco.org
+Pennsylvania,Delaware County,Upper Providence Township,http://www.upperprovidence.org
+Pennsylvania,Montgomery County,Upper Salford Township,http://www.uppersalfordtownship.org
+Pennsylvania,Lehigh County,Upper Saucon Township,http://www.uppersaucon.org
+Pennsylvania,Bucks County,Upper Southampton Township,http://www.southamptonpa.com
+Pennsylvania,Allegheny County,Upper St. Clair Township,http://www.twpusc.org
+Pennsylvania,Fayette County,Upper Tyrone Township,http://uppertyronetwp.org
+Pennsylvania,Chester County,Upper Uwchlan Township,http://www.upperuwchlan-pa.gov
+Pennsylvania,Cambria County,Upper Yoder Township,http://upperyodertownship.org
+Pennsylvania,Chester County,Uwchlan Township,http://www.uwchlan.com
+Pennsylvania,Chester County,Valley Township,http://www.valleytownship.org
+Pennsylvania,Westmoreland County,Vandergrift,http://www.vandergriftborough.org/
+Pennsylvania,Lackawanna County,Vandling,http://vandlingpa.us
+Pennsylvania,Beaver County,Vanport Township,http://www.vanporttwp.com
+Pennsylvania,Crawford County,Vernon Township,http://www.vernontwp-pa.gov
+Pennsylvania,Allegheny County,Verona,http://veronaborough.com
+Pennsylvania,Allegheny County,Versailles,http://versaillesboro.com
+Pennsylvania,Centre County,Walker Township,http://walkertownship.com
+Pennsylvania,Juniata County,Walker Township,http://walkertownship.org
+Pennsylvania,Schuylkill County,Walker Township,http://www.walkertwp.com/Pages/default.aspx
+Pennsylvania,Allegheny County,Wall,http://www.wallborough.com
+Pennsylvania,Chester County,Wallace Township,http://www.wallacetwp.org
+Pennsylvania,Northampton County,Walnutport,http://www.walnutportpa.org/
+Pennsylvania,Lawrence County,Wampum,http://wampumboro.com
+Pennsylvania,Bucks County,Warminster Township,http://www.warminstertownship.org
+Pennsylvania,Warren County,Warren,http://www.cityofwarrenpa.org
+Pennsylvania,Bradford County,Warren Township,http://warrentwp.org
+Pennsylvania,Bucks County,Warrington Township,http://warringtontownship.org
+Pennsylvania,Luzerne County,Warrior Run,http://www.wrboro.org
+Pennsylvania,Lancaster County,Warwick Township,http://www.warwicktownship.org
+Pennsylvania,Bucks County,Warwick Township,https://warwick-bucks.com/
+Pennsylvania,Washington County,Washington,http://www.washingtonpa.us/
+Pennsylvania,Franklin County,Washington Township,http://www.washtwp-franklin.org
+Pennsylvania,Westmoreland County,Washington Township,http://www.washingtontownship.com
+Pennsylvania,Lehigh County,Washington Township,http://www.washingtonlehigh.com
+Pennsylvania,Northampton County,Washington Township,https://www.washington-township.com/
+Pennsylvania,Erie County,Washington Township,http://www.washington-township.info
+Pennsylvania,Berks County,Washington Township,http://www.washtwpberks.org/index.asp
+Pennsylvania,Fayette County,Washington Township,http://washingtontownshipbellevernon.org/
+Pennsylvania,Dauphin County,Washington Township,http://wtwp.org
+Pennsylvania,Jefferson County,Washington Township,http://www.washingtonjefferson.org
+Pennsylvania,Lycoming County,Washington Township,http://washingtontwplyc.com
+Pennsylvania,Erie County,Waterford,http://waterfordboro.net
+Pennsylvania,Erie County,Waterford Township,http://www.waterfordtownship.net
+Pennsylvania,Lycoming County,Watson Township,http://watsontownship-pa.com
+Pennsylvania,Northumberland County,Watsontown,http://www.watsontownpa.info/
+Pennsylvania,Perry County,Watts Township,http://www.wattstownship.org
+Pennsylvania,Lackawanna County,Waverly Township,http://www.waverlytwp.com
+Pennsylvania,Wayne County,Waymart,http://www.waymart.org/
+Pennsylvania,Lawrence County,Wayne Township,http://waynetownshippa.net
+Pennsylvania,Mifflin County,Wayne Township,http://www.co.mifflin.pa.us/mif-wayne/site/default.asp
+Pennsylvania,Clinton County,Wayne Township,http://wayne-township.com
+Pennsylvania,Erie County,Wayne Township,http://www.waynetownshippa.com
+Pennsylvania,Crawford County,Wayne Township,http://www.waynetwpcc.org
+Pennsylvania,Dauphin County,Wayne Township,https://www.waynetwppa.org/
+Pennsylvania,Franklin County,Waynesboro,http://www.waynesboropa.org/
+Pennsylvania,Greene County,Waynesburg,http://waynesburgboro.com
+Pennsylvania,Carbon County,Weatherly,http://www.weatherlypa.gov
+Pennsylvania,Lehigh County,Weisenberg Township,http://www.weisenbergtownship.org
+Pennsylvania,Tioga County,Wellsboro,http://www.wellsboroborough.com/
+Pennsylvania,Berks County,Wernersville,http://www.wernersvilleborough.org
+Pennsylvania,Erie County,Wesleyville,http://wesleyvilleborough.com
+Pennsylvania,Chester County,West Bradford Township,http://www.westbradford.org
+Pennsylvania,Chester County,West Brandywine Township,http://www.wbrandywine.org
+Pennsylvania,Chester County,West Caln Township,http://westcaln.org/
+Pennsylvania,Cumberland County,West Chester,http://west-chester.com
+Pennsylvania,Lancaster County,West Cocalico Township,http://westcocalicotownship.com
+Pennsylvania,Montgomery County,West Conshohocken,https://westconsho.com/
+Pennsylvania,Lebanon County,West Cornwall Township,http://westcornwalltwp.com
+Pennsylvania,Lancaster County,West Donegal Township,http://wdtwp.com
+Pennsylvania,Lancaster County,West Earl Township,http://www.westearltwp.org
+Pennsylvania,Northampton County,West Easton,http://www.westeastonborough.com
+Pennsylvania,Chester County,West Goshen Township,http://www.wgoshen.org
+Pennsylvania,Chester County,West Grove,http://www.westgroveborough.org
+Pennsylvania,Dauphin County,West Hanover Township,http://www.westhanover.com
+Pennsylvania,Luzerne County,West Hazleton,http://www.westhazletonboro.org
+Pennsylvania,Lancaster County,West Hempfield Township,http://www.westhempfield.org
+Pennsylvania,Allegheny County,West Homestead,http://westhomesteadpa.com
+Pennsylvania,Armstrong County,West Kittanning,http://www.westkittanningpa.com
+Pennsylvania,Lancaster County,West Lampeter Township,http://www.westlampeter.com
+Pennsylvania,Lebanon County,West Lebanon Township,http://westlebtwp.org
+Pennsylvania,Westmoreland County,West Leechburg,https://www.westleechburg.us/
+Pennsylvania,York County,West Manchester Township,http://www.westmanchestertownship.com/
+Pennsylvania,York County,West Manheim Township,http://www.westmanheimtwp.com/
+Pennsylvania,Beaver County,West Mayfield,http://www.westmayfieldborough.us
+Pennsylvania,Crawford County,West Mead Township,https://westmead.org
+Pennsylvania,Allegheny County,West Mifflin,http://www.westmifflinborough.com
+Pennsylvania,Westmoreland County,West Newton,https://mywestnewton.com/
+Pennsylvania,Montgomery County,West Norriton Township,http://www.westnorritontwp.org
+Pennsylvania,Cumberland County,West Pennsboro Township,http://www.westpennsborotwp.org
+Pennsylvania,Luzerne County,West Pittston,http://westpittstonborough.com
+Pennsylvania,Montgomery County,West Pottsgrove Township,https://westpottsgrove.org/
+Pennsylvania,Bedford County,West Providence Township,http://www.westprovidencetownship.org
+Pennsylvania,Berks County,West Reading,http://www.westreadingborough.com
+Pennsylvania,Bucks County,West Rockhill Township,http://www.westrockhilltownship.org
+Pennsylvania,Allegheny County,West View,http://www.westviewborough.org
+Pennsylvania,Chester County,West Whiteland Township,http://www.westwhiteland.org
+Pennsylvania,Luzerne County,West Wyoming,http://www.westwyoming.org
+Pennsylvania,York County,West York,https://westyorkpa.gov
+Pennsylvania,Cambria County,Westmont,http://westmontborough.com/
+Pennsylvania,Chester County,Westtown Township,http://www.westtownpa.org
+Pennsylvania,Fayette County,Wharton Township,http://whartontownship.com
+Pennsylvania,Luzerne County,White Haven,http://www.whitehavenborough.org
+Pennsylvania,Allegheny County,White Oak,http://www.woboro.com
+Pennsylvania,Cambria County,White Township,http://twp.white.pa.us
+Pennsylvania,Allegheny County,Whitehall,http://www.whitehallboro.org
+Pennsylvania,Lehigh County,Whitehall Township,http://www.whitehalltownship.org
+Pennsylvania,Montgomery County,Whitemarsh Township,http://www.whitemarshtwp.org
+Pennsylvania,Montgomery County,Whitpain Township,http://www.whitpaintownship.org
+Pennsylvania,Dauphin County,Wiconisco Township,http://wiconiscotownship.com
+Pennsylvania,Luzerne County,Wilkes-Barre,http://www.wilkes-barre.city
+Pennsylvania,Luzerne County,Wilkes-Barre Township,http://twp.wilkesbarre.pa.us
+Pennsylvania,Allegheny County,Wilkinsburg,http://www.wilkinsburgpa.gov
+Pennsylvania,Northampton County,Williams Township,http://www.williamstwp.org
+Pennsylvania,Dauphin County,Williams Township,http://www.wmstwp.org
+Pennsylvania,Blair County,Williamsburg,https://sites.google.com/site/williamsburgpennsylvania/home
+Pennsylvania,Lycoming County,Williamsport,http://cityofwilliamsport.org
+Pennsylvania,Chester County,Willistown Township,http://www.willistown.pa.us
+Pennsylvania,Allegheny County,Wilmerding,http://www.wilmerdingboro.com
+Pennsylvania,Northampton County,Wilson,http://www.wilsonborough.org/
+Pennsylvania,Northampton County,Wind Gap,https://windgap-pa.gov/
+Pennsylvania,Somerset County,Windber,http://windber.com/
+Pennsylvania,York County,Windsor Township,http://www.windsortwp.com/
+Pennsylvania,Butler County,Winfield Township,http://www.winfieldtownship.net
+Pennsylvania,Mercer County,Wolf Creek Township,http://wolfcreektwp.com
+Pennsylvania,Lycoming County,Wolf Township,http://wolftownship.org
+Pennsylvania,Berks County,Womelsdorf,http://www.womelsdorfboro.org
+Pennsylvania,Crawford County,Woodcock Township,http://www.woodcocktownship.com
+Pennsylvania,Lycoming County,Woodward Township,http://woodward-township.hub.biz
+Pennsylvania,Montgomery County,Worcester Township,http://www.worcestertwp.com
+Pennsylvania,Cumberland County,Wormleysburg,http://www.wormleysburgpa.org
+Pennsylvania,Butler County,Worth Township,http://www.worthtwp.org
+Pennsylvania,Bucks County,Wrightstown Township,http://wrightstownpa.org
+Pennsylvania,York County,Wrightsville,http://www.wrightsvilleborough.com
+Pennsylvania,Bradford County,Wyalusing,http://wyalusingborough.com
+Pennsylvania,Luzerne County,Wyoming,http://wyomingpa.org
+Pennsylvania,Berks County,Wyomissing,http://www.wyomissingboro.org/
+Pennsylvania,Bucks County,Yardley,http://www.yardleyboro.com/
+Pennsylvania,Delaware County,Yeadon,http://yeadonborough.com
+Pennsylvania,York County,Yoe,http://www.YoeBorough.org
+Pennsylvania,York County,York,http://www.yorkcity.org/
+Pennsylvania,Adams County,York Springs,http://www.adamscounty.us/Munic/Pages/York-Springs-Borough.aspx
+Pennsylvania,York County,York Township,http://www.yorktownship.com/
+Pennsylvania,Jefferson County,Young Township,http://www.youngtwpjeff.com
+Pennsylvania,Warren County,Youngsville,http://www.youngsvillepa.org/
+Pennsylvania,Westmoreland County,Youngwood,http://www.youngwood.org
+Pennsylvania,Butler County,Zelienople,http://zelieboro.org
+Puerto Rico,Campbell County,Añasco,http://www.anascopr.net
+Puerto Rico,Campbell County,Adjuntas,http://adjuntaspr.com
+Puerto Rico,Campbell County,Aguada,http://aguada.gov.pr
+Puerto Rico,Campbell County,Aguas Buenas,http://legislaturaaguasbuenas.com/
+Puerto Rico,Campbell County,Aibonito,http://www.aibonitopr.net/
+Puerto Rico,Campbell County,Arroyo,https://www.municipiodearroyo.com/
+Puerto Rico,Campbell County,Barranquitas,http://barranquitaspr.net/pueblo/
+Puerto Rico,Campbell County,Bayamón,http://www.municipiodebayamon.com
+Puerto Rico,Campbell County,Cabo Rojo,http://www.caborojopr.net/
+Puerto Rico,Campbell County,Caguas,http://www.Caguas.gov.pr
+Puerto Rico,Campbell County,Carolina,https://www.municipiocarolina.com/
+Puerto Rico,Campbell County,Cayey,http://www.agencias.pr.gov/municipio/cayey
+Puerto Rico,Campbell County,Coamo,http://www.coamo.puertorico.pr
+Puerto Rico,Campbell County,Comerío,http://www.comerio.gobierno.pr
+Puerto Rico,Campbell County,Dorado,https://www.doradoparaiso.com
+Puerto Rico,Campbell County,Fajardo,http://fajardopr.org
+Puerto Rico,Campbell County,Guayama,http://www.viveelencanto.com
+Puerto Rico,Campbell County,Guaynabo,http://www.guaynabocity.gov.pr
+Puerto Rico,Campbell County,Hormigueros,http://www.municipiohormiguerospr.com/
+Puerto Rico,Campbell County,Isabela,https://venaisabela.com/
+Puerto Rico,Campbell County,Maunabo,http://maunabomunicipio.com/
+Puerto Rico,Campbell County,Mayagüez,http://www.mayaguezpr.gov
+Puerto Rico,Campbell County,Naranjito,https://municipiodenaranjito.com/
+Puerto Rico,Campbell County,Orocovis,https://www.orocovispr.org/
+Puerto Rico,Campbell County,Peñuelas,https://www.municipiodepenuelas.com
+Puerto Rico,Campbell County,Ponce,http://visitponce.com/
+Puerto Rico,Campbell County,Quebradillas,http://www.quebradillas.pr.gov/
+Puerto Rico,Campbell County,Rincón,http://www.rincon.org/
+Puerto Rico,Campbell County,San Juan,http://sanjuanciudadpatria.com/en
+Puerto Rico,Campbell County,San Sebastián,http://ssdelpepino.com/
+Puerto Rico,Campbell County,Toa Baja,http://www.toabaja.com
+Puerto Rico,Campbell County,Trujillo Alto,http://www.trujilloalto.pr/
+Puerto Rico,Campbell County,Vega Baja,http://www.vegabaja.gov.pr/
+Puerto Rico,Campbell County,Yauco,http://www.yaucoatuservicio.com
+Rhode Island,Bristol County,Barrington,http://www.barrington.ri.gov/
+Rhode Island,Bristol County,Bristol,http://www.bristolri.us
+Rhode Island,Providence County,Central Falls,http://www.centralfallsri.us/
+Rhode Island,Kent County,Coventry,http://coventryri.org
+Rhode Island,Providence County,Cranston,https://www.cranstonri.gov
+Rhode Island,Providence County,Cumberland,http://www.cumberlandri.org
+Rhode Island,Kent County,East Greenwich,http://www.eastgreenwichri.com/
+Rhode Island,Providence County,East Providence,http://www.eastprovidenceri.net/
+Rhode Island,Providence County,Foster,https://www.townoffoster.com/
+Rhode Island,Providence County,Glocester,http://www.glocesterri.org/
+Rhode Island,Washington County,Hopkinton,http://www.hopkintonri.org
+Rhode Island,Newport County,Jamestown,http://www.jamestownri.gov/
+Rhode Island,Providence County,Johnston,https://www.townofjohnstonri.com/
+Rhode Island,Newport County,Little Compton,http://www.littlecomptonri.org/
+Rhode Island,Newport County,Middletown,https://middletownri.com/
+Rhode Island,Washington County,Narragansett,http://www.narragansettri.gov/
+Rhode Island,Washington County,New Shoreham,http://www.new-shoreham.com/
+Rhode Island,Newport County,Newport,http://www.cityofnewport.com
+Rhode Island,Washington County,North Kingstown,http://www.northkingstown.org/
+Rhode Island,Providence County,North Smithfield,http://www.nsmithfieldri.org/
+Rhode Island,Providence County,Pawtucket,http://www.pawtucketri.com
+Rhode Island,Newport County,Portsmouth,http://www.portsmouthri.com/
+Rhode Island,Providence County,Providence,https://www.providenceri.gov/
+Rhode Island,Washington County,Richmond,http://www.richmondri.com
+Rhode Island,Providence County,Scituate,http://www.scituateri.org/
+Rhode Island,Providence County,Smithfield,http://smithfieldri.com/
+Rhode Island,Washington County,South Kingstown,http://www.southkingstownri.com
+Rhode Island,Newport County,Tiverton,http://www.tiverton.ri.gov/
+Rhode Island,Newport County,Warren,http://www.townofwarren-ri.gov/
+Rhode Island,Kent County,Warwick,http://www.warwickri.gov/
+Rhode Island,Providence County,Woonsocket,https://www.woonsocketri.org/
+South Carolina,Abbeville County,Abbeville,http://www.abbevillecitysc.com
+South Carolina,Aiken County,Aiken,https://www.cityofaikensc.gov
+South Carolina,Allendale County,Allendale,https://townofallendale.sc.gov/
+South Carolina,Anderson County,Anderson,http://www.cityofandersonsc.com
+South Carolina,Georgetown County,Andrews,http://townofandrews.org
+South Carolina,Richland County,Arcadia Lakes,http://arcadialakes.net
+South Carolina,Horry County,Atlantic Beach,http://www.townofatlanticbeachsc.com
+South Carolina,Charleston County,Awendaw,http://www.awendawsc.org
+South Carolina,Horry County,Aynor,http://www.townofaynor.net
+South Carolina,Bamberg County,Bamberg,http://bambergsc.com
+South Carolina,Barnwell County,Barnwell,http://www.cityofbarnwell.com
+South Carolina,Lexington County,Batesburg-Leesville,http://www.batesburg-leesville.org
+South Carolina,Beaufort County,Beaufort,http://www.cityofbeaufort.org
+South Carolina,Anderson County,Belton,http://www.cityofbeltonsc.com
+South Carolina,Marlboro County,Bennettsville,http://www.bennettsvillesc.com/
+South Carolina,Lee County,Bishopville,http://cityofbishopvillesc.com/
+South Carolina,Cherokee County,Blacksburg,http://www.townofblacksburgsc.com
+South Carolina,Barnwell County,Blackville,http://www.townofblackville.com
+South Carolina,Beaufort County,Bluffton,https://www.townofbluffton.sc.gov/
+South Carolina,Richland County,Blythewood,http://www.townofblythewoodsc.gov
+South Carolina,Orangeburg County,Bowman,https://townofbowman.sc.gov/
+South Carolina,Orangeburg County,Branchville,http://www.branchville.sc.gov
+South Carolina,Horry County,Briarcliffe Acres,http://www.townofbriarcliffe.us
+South Carolina,Hampton County,Brunson,http://www.brunson.sc.gov
+South Carolina,Hampton County,Burnettown,http://www.burnettown.com
+South Carolina,Abbeville County,Calhoun Falls,http://www.townofcalhounfallssc.com
+South Carolina,Kershaw County,Camden,http://cityofcamden.org
+South Carolina,Spartanburg County,Campobello,https://www.townofcampobellosc.com/
+South Carolina,Union County,Carlisle,https://www.townofcarlisle.com/
+South Carolina,Lexington County,Cayce,http://cityofcayce-sc.gov
+South Carolina,Pickens County,Central,http://www.cityofcentral.org/
+South Carolina,Lexington County,Chapin,http://www.chapinsc.com
+South Carolina,Charleston County,Charleston,http://www.charleston-sc.gov
+South Carolina,Chesterfield County,Cheraw,http://www.cheraw.com
+South Carolina,Spartanburg County,Chesnee,http://www.cityofchesnee.org
+South Carolina,Chester County,Chester,http://www.chestersc.org
+South Carolina,Chester County,Chesterfield,http://chesterfield-sc.com
+South Carolina,Pickens County,Clemson,http://www.clemsoncity.org
+South Carolina,Laurens County,Clinton,http://www.cityofclintonsc.com/
+South Carolina,Marlboro County,Clio,http://www.townofclio.com
+South Carolina,York County,Clover,http://www.cloversc.org
+South Carolina,Richland County,Columbia,http://www.columbiasc.net
+South Carolina,Horry County,Conway,http://www.cityofconway.com
+South Carolina,Orangeburg County,Cope,https://www.orangeburgcounty.org/DocumentCenter/View/1603/Cope-Municipal-Elected-Officials
+South Carolina,Orangeburg County,Cordova,http://www.orangeburgcounty.org/depts/voterReg/voterRegDownloads/municipalities/VR-municipalElectedOfficials-CORDOVA.pdf
+South Carolina,Colleton County,Cottageville,http://www.cottageville.org
+South Carolina,Florence County,Coward,https://townofcoward.com/
+South Carolina,Spartanburg County,Cowpens,http://www.townofcowpens.com/
+South Carolina,Darlington County,Darlington,http://cityofdarlington.com
+South Carolina,Dillon County,Dillon,http://www.cityofdillonsc.us
+South Carolina,Abbeville County,Donalds,https://www.facebook.com/donalds.sc/
+South Carolina,Abbeville County,Due West,http://duewestsc.com/
+South Carolina,Spartanburg County,Duncan,https://townofduncansc.com/
+South Carolina,Pickens County,Easley,http://www.cityofeasley.com
+South Carolina,Richland County,Eastover,http://www.eastoversc.com
+South Carolina,Edgefield County,Edgefield,http://www.exploreedgefield.com
+South Carolina,Colleton County,Edisto Beach,http://www.townofedistobeach.com
+South Carolina,Bamberg County,Ehrhardt,http://ehrhardtsc.com
+South Carolina,Kershaw County,Elgin,http://townofelginsc.com
+South Carolina,Orangeburg County,Elloree,http://www.elloreesc.com
+South Carolina,Hampton County,Estill,http://www.townofestill.sc.gov
+South Carolina,Orangeburg County,Eutawville,http://www.eutawvillesc.org
+South Carolina,Florence County,Florence,http://www.cityofflorence.com
+South Carolina,Charleston County,Folly Beach,http://www.cityoffollybeach.com
+South Carolina,Richland County,Forest Acres,http://forestacres.net
+South Carolina,York County,Fort Mill,https://fortmillsc.gov/
+South Carolina,Greenville County,Fountain Inn,http://www.fountaininn.org
+South Carolina,Cherokee County,Gaffney,http://www.getintogaffney.com/
+South Carolina,Lexington County,Gaston,http://www.gastonsc.org/
+South Carolina,Georgetown County,Georgetown,http://www.cityofgeorgetownsc.com
+South Carolina,Hampton County,Gifford,https://www.giffordsc.org/
+South Carolina,Lexington County,Gilbert,http://www.townofgilbertsc.com
+South Carolina,Berkeley County,Goose Creek,http://www.cityofgoosecreek.com
+South Carolina,Laurens County,Gray Court,https://townofgraycourt.sc.gov/
+South Carolina,Chester County,Great Falls,http://www.greatfallssc.org/
+South Carolina,Williamsburg County,Greeleyville,http://townofgreeleyville.com
+South Carolina,Greenville County,Greenville,http://www.greenvillesc.gov
+South Carolina,Greenwood County,Greenwood,http://www.cityofgreenwoodsc.com
+South Carolina,Greenville County,Greer,http://www.cityofgreer.org
+South Carolina,Hampton County,Hampton,http://www.hamptonsc.net
+South Carolina,Berkeley County,Hanahan,http://www.cityofhanahan.com
+South Carolina,Beaufort County,Hardeeville,http://www.cityofhardeeville.com
+South Carolina,Dorchester County,Harleyville,http://www.harleyvillesc.com
+South Carolina,Darlington County,Hartsville,http://www.hartsvillesc.gov
+South Carolina,Lancaster County,Heath Springs,https://townofheathsprings.com/
+South Carolina,Williamsburg County,Hemingway,https://www.townofhemingway.org
+South Carolina,York County,Hickory Grove,http://townofhickorygrove.com/
+South Carolina,Beaufort County,Hilton Head Island,http://www.hiltonheadislandsc.gov
+South Carolina,Greenwood County,Hodges,https://www.facebook.com/townofhodges/
+South Carolina,Orangeburg County,Holly Hill,https://hollyhill.sc.gov/
+South Carolina,Charleston County,Hollywood,http://www.townofhollywood.org
+South Carolina,Abbeville County,Honea Path,https://honeapathsc.com/
+South Carolina,Spartanburg County,Inman,http://www.cityofinman.org/
+South Carolina,Lexington County,Irmo,https://www.townofirmosc.com/
+South Carolina,Charleston County,Isle of Palms,http://www.iop.net
+South Carolina,Anderson County,Iva,https://townofiva.org/
+South Carolina,Anderson County,Jackson,http://www.jackson-sc.gov
+South Carolina,Charleston County,James Island,http://jamesislandsc.us/
+South Carolina,Chesterfield County,Jefferson,http://www.seejeffersonsc.com
+South Carolina,Florence County,Johnsonville,http://www.cityofjohnsonville.com
+South Carolina,Edgefield County,Johnston,https://www.facebook.com/townofjohnston/
+South Carolina,Union County,Jonesville,https://townofjonesvillesc.org/
+South Carolina,Lancaster County,Kershaw,http://www.townofkershawsc.gov
+South Carolina,Charleston County,Kiawah Island,http://www.kiawahisland.org
+South Carolina,Williamsburg County,Kingstree,http://www.kingstree.org/
+South Carolina,Florence County,Lake City,http://www.lakecitysc.gov
+South Carolina,Darlington County,Lamar,https://www.lamarsc.org/
+South Carolina,Lancaster County,Lancaster,http://www.lancastercitysc.com
+South Carolina,Spartanburg County,Landrum,http://cityoflandrumsc.com
+South Carolina,Williamsburg County,Lane,https://townoflane.com/
+South Carolina,Dillon County,Latta,http://www.townoflatta.sc.gov
+South Carolina,Laurens County,Laurens,http://www.cityoflaurenssc.com
+South Carolina,Lexington County,Lexington,http://www.lexsc.com
+South Carolina,Pickens County,Liberty,http://www.libertysc.com/
+South Carolina,Newberry County,Little Mountain,http://www.littlemountainsc.com/
+South Carolina,Horry County,Loris,http://www.cityoflorissc.com
+South Carolina,Abbeville County,Lowndesville,https://www.facebook.com/LOWNDESVILLE-SOUTH-CAROLINA-181551731876991/
+South Carolina,Chester County,Lowrys,https://www.townoflowrys.org/
+South Carolina,Spartanburg County,Lyman,http://www.lymansc.gov/
+South Carolina,Clarendon County,Manning,http://www.cityofmanning.org
+South Carolina,Marion County,Marion,http://www.marionsc.gov
+South Carolina,Greenville County,Mauldin,http://www.cityofmauldin.org
+South Carolina,Sumter County,Mayesville,http://mayesvillesc.com/
+South Carolina,Chesterfield County,McBee,http://TownOfMcBeeSC.com
+South Carolina,Charleston County,McClellanville,https://www.mcclellanvillesc.org/
+South Carolina,Marlboro County,McColl,http://www.marlborocounty.sc.gov/History/McColl/Pages/default.aspx
+South Carolina,York County,McConnells,https://www.townofmcconnells.com/
+South Carolina,McCormick County,McCormick,http://www.townofmccormicksc.org/
+South Carolina,Charleston County,Meggett,http://www.townofmeggettsc.org/
+South Carolina,Berkeley County,Moncks Corner,http://www.monckscornersc.gov
+South Carolina,Chesterfield County,Mount Croghan,http://www.mtcroghan.com
+South Carolina,Charleston County,Mount Pleasant,http://www.tompsc.com
+South Carolina,Marion County,Mullins,http://www.mullinssc.us/
+South Carolina,Horry County,Myrtle Beach,http://www.cityofmyrtlebeach.com
+South Carolina,Newberry County,New Ellenton,http://www.newellentonsc.com
+South Carolina,Newberry County,Newberry,http://www.cityofnewberry.com/
+South Carolina,Greenwood County,Ninety Six,http://www.ninetysixsc.gov
+South Carolina,Pickens County,Norris,http://www.townofnorris.org/
+South Carolina,Orangeburg County,North,https://townofnorth.sc.gov/
+South Carolina,Aiken County,North Augusta,http://www.northaugusta.net
+South Carolina,Berkeley County,North Charleston,http://www.northcharleston.org
+South Carolina,Horry County,North Myrtle Beach,http://www.nmb.us
+South Carolina,Orangeburg County,Norway,http://www.orangeburgcounty.org/depts/voterReg/elections.asp#officials
+South Carolina,Florence County,Olanta,http://www.olantasc.com
+South Carolina,Orangeburg County,Orangeburg,http://www.orangeburg.sc.us
+South Carolina,Spartanburg County,Pacolet,http://www.townofpacolet.com/
+South Carolina,Chesterfield County,Pageland,http://townofpageland.com
+South Carolina,Florence County,Pamplico,http://townofpamplico.com
+South Carolina,McCormick County,Parksville,https://mccormickscchamber.org/what-to-do/historic-railtowns/parksville/
+South Carolina,Chesterfield County,Patrick,http://www.townofpatrick.com
+South Carolina,Georgetown County,Pawleys Island,http://www.townofpawleysisland.com/
+South Carolina,Anderson County,Pelzer,http://www.townofpelzer.us
+South Carolina,Anderson County,Pendleton,http://www.townofpendleton.org
+South Carolina,Pickens County,Pickens,http://cityofpickens.com/
+South Carolina,Lexington County,Pine Ridge,http://www.townofpineridgesc.com
+South Carolina,McCormick County,Plum Branch,https://www.facebook.com/pages/category/Community/Town-of-Plum-Branch-SC-117224126355449/
+South Carolina,Newberry County,Pomaria,https://www.townofpomariasc.com/
+South Carolina,Beaufort County,Port Royal,http://www.portroyal.org/
+South Carolina,Newberry County,Prosperity,http://www.prosperitysc.com/
+South Carolina,Florence County,Quinby,https://www.townofquinby.com/
+South Carolina,Charleston County,Ravenel,http://www.townofravenel.com
+South Carolina,Spartanburg County,Reidville,https://www.townofreidvillesc.com/
+South Carolina,Saluda County,Ridge Spring,http://www.ridgespringsc.com/
+South Carolina,Jasper County,Ridgeland,http://www.ridgelandsc.gov
+South Carolina,Dorchester County,Ridgeville,https://ridgevillegov.com/
+South Carolina,Fairfield County,Ridgeway,http://www.ridgewaysc.org
+South Carolina,York County,Rock Hill,http://www.cityofrockhill.com
+South Carolina,Charleston County,Rockville,http://townofrockville.com
+South Carolina,Oconee County,Salem,https://www.facebook.com/Salem-Town-Hall-1702501816656220/
+South Carolina,Oconee County,Salley,https://www.facebook.com/townofsalley/
+South Carolina,Saluda County,Saluda,http://www.townofsaluda.com/home-page
+South Carolina,Orangeburg County,Santee,http://townofsantee-sc.org
+South Carolina,Charleston County,Seabrook Island,http://www.townofseabrookisland.org
+South Carolina,Oconee County,Seneca,http://www.seneca.sc.us/
+South Carolina,Newberry County,Silverstreet,https://sites.google.com/site/townofsilverstreet/
+South Carolina,Greenville County,Simpsonville,http://www.simpsonville.com
+South Carolina,Pickens County,Six Mile,http://www.sixmilesc.org/
+South Carolina,Lexington County,South Congaree,http://www.townofsouthcongaree.org/
+South Carolina,Spartanburg County,Spartanburg,http://www.cityofspartanburg.org
+South Carolina,Lexington County,Springdale,http://www.springdalesc.com
+South Carolina,Orangeburg County,Springfield,http://www.springfieldsc.com/
+South Carolina,Dorchester County,St. George,https://saintgeorgesc.org/
+South Carolina,Calhoun County,St. Matthews,https://stmatthews.sc.gov/
+South Carolina,Anderson County,Starr,https://www.facebook.com/pages/category/Government-Organization/Town-of-Starr-576045745893248/
+South Carolina,Charleston County,Sullivan's Island,http://sullivansisland-sc.com
+South Carolina,Clarendon County,Summerton,http://www.townofsummerton.com
+South Carolina,Dorchester County,Summerville,https://www.summervillesc.gov/
+South Carolina,Sumter County,Sumter,http://www.sumtersc.gov
+South Carolina,Horry County,Surfside Beach,http://www.surfsidebeach.org
+South Carolina,Lexington County,Swansea,http://www.swanseatown.net/
+South Carolina,York County,Tega Cay,http://www.tegacaysc.org/
+South Carolina,Florence County,Timmonsville,https://www.timmonsvillesc.org/
+South Carolina,Greenville County,Travelers Rest,http://travelersrestsc.com
+South Carolina,Edgefield County,Trenton,http://www.thetownoftrenton.com
+South Carolina,Clarendon County,Turbeville,http://www.townofturbeville.com
+South Carolina,Union County,Union,http://www.cityofunion.net/default.asp?sec_id=140005136
+South Carolina,Lancaster County,Van Wyck,http://townofvanwyck.net
+South Carolina,Hampton County,Varnville,http://www.varnvillesc.org
+South Carolina,Hampton County,Wagener,http://www.wagenersc.com
+South Carolina,Oconee County,Walhalla,http://www.cityofwalhalla.com/
+South Carolina,Colleton County,Walterboro,http://www.walterborosc.org
+South Carolina,Greenwood County,Ware Shoals,https://www.facebook.com/townofwareshoals/
+South Carolina,Spartanburg County,Wellford,http://www.cityofwellford.com/
+South Carolina,Lexington County,West Columbia,http://www.westcolumbiasc.gov
+South Carolina,Anderson County,West Pelzer,http://westpelzer.com
+South Carolina,Oconee County,West Union,https://townofwestunion.com/
+South Carolina,Oconee County,Westminster,http://www.westminstersc.org/
+South Carolina,Newberry County,Whitmire,https://townofwhitmire.godaddysites.com/
+South Carolina,Anderson County,Williamston,http://www.williamstonsc.us
+South Carolina,Barnwell County,Williston,http://www.williston-sc.com
+South Carolina,Barnwell County,Windsor,https://www.facebook.com/windsor.southcarolina/
+South Carolina,Fairfield County,Winnsboro,http://www.townofwinnsboro.com
+South Carolina,Spartanburg County,Woodruff,http://www.cityofwoodruff.com
+South Carolina,Hampton County,Yemassee,http://www.townofyemassee.org/
+South Carolina,York County,York,https://yorksc.gov/
+South Dakota,Brown County,Aberdeen,http://www.aberdeen.sd.us/
+South Dakota,Union County,Alcester,http://www.alcestersd.org
+South Dakota,Hanson County,Alexandria,http://www.alexandriasd.com
+South Dakota,Jerauld County,Alpena,http://www.alpenasd.com
+South Dakota,Kingsbury County,Arlington,http://www.arlingtonsd.com
+South Dakota,Douglas County,Armour,http://www.armoursd.com
+South Dakota,Sanborn County,Artesian,http://www.artesiansd.com/
+South Dakota,Brookings County,Aurora,https://aurorasd.govoffice3.com
+South Dakota,Bon Homme County,Avon,http://www.avonsd.com/
+South Dakota,Minnehaha County,Baltic,http://baltic.govoffice.com
+South Dakota,Butte County,Belle Fourche,http://www.bellefourche.org
+South Dakota,Union County,Beresford,http://www.beresfordsd.com/
+South Dakota,Perkins County,Bison,http://www.bisonsd.com/
+South Dakota,Edmunds County,Bowdle,https://bowdlesd.govoffice2.com
+South Dakota,Pennington County,Box Elder,http://www.boxelder.us/
+South Dakota,Minnehaha County,Brandon,https://cityofbrandon.org/
+South Dakota,McCook County,Bridgewater,http://bridgewatersd.com/
+South Dakota,Day County,Bristol,http://www.bristolsd.com/
+South Dakota,Marshall County,Britton,https://cityofbritton.com/
+South Dakota,Brookings County,Brookings,http://www.cityofbrookings.org/
+South Dakota,Harding County,Buffalo,https://townofbuffalo.municipalimpact.com/
+South Dakota,McCook County,Canistota,http://www.canistotasd.com
+South Dakota,Lincoln County,Canton,https://cantonsd.org/
+South Dakota,Miner County,Carthage,http://www.carthagesd.net
+South Dakota,Hamlin County,Castlewood,https://www.castlewoodcity.com
+South Dakota,Turner County,Centerville,http://www.centervillesd.com/
+South Dakota,Brule County,Chamberlain,http://www.chamberlainsd.org
+South Dakota,Clark County,Clark,http://www.clarksd.com
+South Dakota,Deuel County,Clear Lake,http://www.clearlakesd.com
+South Dakota,Minnehaha County,Colton,https://coltonsd.govoffice3.com/
+South Dakota,Faulk County,Cresbard,http://www.cresbardsd.com
+South Dakota,Minnehaha County,Crooks,http://crookssd.govoffice3.com/
+South Dakota,Custer County,Custer,http://www.custersd.com/
+South Dakota,Kingsbury County,De Smet,http://www.desmetsd.com/
+South Dakota,Lawrence County,Deadwood,http://www.cityofdeadwood.com
+South Dakota,Minnehaha County,Dell Rapids,http://www.cityofdellrapids.org/
+South Dakota,Fall River County,Edgemont,http://www.edgemont-sd.com/
+South Dakota,Union County,Elk Point,http://www.elkpoint.org
+South Dakota,Hanson County,Emery,http://www.cityofemerysd.com
+South Dakota,Hamlin County,Estelline,http://www.estellinesd.com
+South Dakota,Davison County,Ethan,http://www.ethansd.com
+South Dakota,McPherson County,Eureka,http://www.eurekasd.com
+South Dakota,Meade County,Faith,http://www.faithsd.com
+South Dakota,Faulk County,Faulkton,http://www.faulktoncity.org
+South Dakota,Moody County,Flandreau,http://www.cityofflandreau.com
+South Dakota,Stanley County,Fort Pierre,http://www.fortpierre.com/
+South Dakota,Hutchinson County,Freeman,http://cityoffreeman.webs.com/
+South Dakota,Minnehaha County,Garretson,https://cityofgarretson.com/
+South Dakota,Yankton County,Gayville,http://www.gayvillesd.org
+South Dakota,Potter County,Gettysburg,http://cityofgettysburgsd.com
+South Dakota,Gregory County,Gregory,http://www.cityofgregory.com/
+South Dakota,Brown County,Groton,http://www.grotonsd.gov
+South Dakota,Lincoln County,Harrisburg,http://harrisburgsd.gov/
+South Dakota,Minnehaha County,Hartford,http://www.hartfordsd.us/
+South Dakota,Custer County,Hermosa,https://www.hermosasd.com/
+South Dakota,Campbell County,Herreid,http://www.herreidsd.com/
+South Dakota,Hyde County,Highmore,http://highmoresd.govoffice3.com
+South Dakota,Pennington County,Hill City,https://www.hillcitysd.com/
+South Dakota,Beadle County,Hitchcock,http://www.hitchcocksd.com
+South Dakota,Fall River County,Hot Springs,https://www.hs-sd.org/
+South Dakota,Miner County,Howard,http://www.cityofhoward.com
+South Dakota,Minnehaha County,Humboldt,http://www.humboldt.govoffice.com/
+South Dakota,Beadle County,Huron,http://www.huronsd.com/
+South Dakota,Edmunds County,Ipswich,http://www.ipswich-sd.com
+South Dakota,Turner County,Irene,https://www.irenesd.com
+South Dakota,Kingsbury County,Iroquois,http://www.iroquoissd.com
+South Dakota,Jackson County,Kadoka,http://www.kadokasd.com
+South Dakota,Marshall County,Langford,http://langfordsd.com
+South Dakota,Lawrence County,Lead,http://cityoflead.com
+South Dakota,Perkins County,Lemmon,http://www.lemmonsd.com/
+South Dakota,Lincoln County,Lennox,http://www.cityoflennoxsd.com
+South Dakota,McPherson County,Leola,http://www.leolasd.com
+South Dakota,Sanborn County,Letcher,http://www.letchersd.com/
+South Dakota,Lake County,Madison,http://www.cityofmadisonsd.com
+South Dakota,Bennett County,Martin,http://www.martinsd.net/
+South Dakota,Hutchinson County,Menno,http://www.mennosd.org/
+South Dakota,Haakon County,Midland,http://www.midlandsd.com
+South Dakota,Grant County,Milbank,http://www.milbanksd.com
+South Dakota,Hand County,Miller,http://www.millersd.org/
+South Dakota,Todd County,Mission,http://www.mission-sd.com
+South Dakota,Davison County,Mitchell,http://www.cityofmitchell.org/
+South Dakota,Walworth County,Mobridge,http://www.mobridge.org/
+South Dakota,McCook County,Montrose,http://www.cityofmontrosesd.com/
+South Dakota,Jones County,Murdo,http://www.murdosd.com/
+South Dakota,Pennington County,New Underwood,http://www.newunderwood.com/
+South Dakota,Union County,North Sioux City,http://northsiouxcity-sd.gov
+South Dakota,Lyman County,Oacoma,http://oacomasd.com
+South Dakota,Sully County,Onida,http://www.onida.org
+South Dakota,Turner County,Parker,http://www.parkersd.org/
+South Dakota,Hutchinson County,Parkston,http://www.parkston.com
+South Dakota,Charles Mix County,Pickstown,http://www.pickstown-sd.net
+South Dakota,Meade County,Piedmont,http://www.piedmontsd.com/
+South Dakota,Hughes County,Pierre,http://www.pierre.sd.gov
+South Dakota,Aurora County,Plankinton,http://www.plankinton.com
+South Dakota,Charles Mix County,Platte,http://www.plattesd.org/
+South Dakota,Campbell County,Pollock,http://www.pollocksouthdakota.com/
+South Dakota,Pennington County,Rapid City,https://www.rcgov.org/
+South Dakota,Spink County,Redfield,http://www.redfield-sd.com/
+South Dakota,Edmunds County,Roscoe,http://www.roscoesd.org
+South Dakota,Roberts County,Rosholt,http://www.rosholtsd.com/
+South Dakota,McCook County,Salem,http://www.salemsd.com
+South Dakota,Bon Homme County,Scotland,http://www.cityofscotland.com/
+South Dakota,Walworth County,Selby,http://www.selbysd.govoffice2.com/
+South Dakota,Minnehaha County,Sherman,http://www.shermansd.com/
+South Dakota,Minnehaha County,Sioux Falls,https://www.siouxfalls.org
+South Dakota,Roberts County,Sisseton,http://www.sisseton.com
+South Dakota,Lawrence County,Spearfish,http://www.cityofspearfish.com
+South Dakota,Bon Homme County,Springfield,http://www.springfieldsd.com/
+South Dakota,Aurora County,Stickney,http://www.stickneysd.com/
+South Dakota,Meade County,Sturgis,http://www.sturgis-sd.gov/
+South Dakota,Meade County,Summerset,http://www.summerset.us/
+South Dakota,Bon Homme County,Tabor,http://www.taborsd.com/
+South Dakota,Lincoln County,Tea,https://www.teasd.com/
+South Dakota,Dewey County,Timber Lake,http://www.timberlakesouthdakota.com
+South Dakota,Deuel County,Toronto,http://www2.torontosd.com/home
+South Dakota,Hutchinson County,Tripp,http://www.trippsd.com/
+South Dakota,Bon Homme County,Tyndall,https://www.mytyndallsd.com/
+South Dakota,Minnehaha County,Valley Springs,http://www.cityofvalleysprings.com/
+South Dakota,Clay County,Vermillion,https://www.vermillion.us/
+South Dakota,Turner County,Viborg,https://www.viborgsd.org/
+South Dakota,Brookings County,Volga,http://www.volgacity.com/
+South Dakota,Charles Mix County,Wagner,http://www.cityofwagner.org
+South Dakota,Pennington County,Wall,https://www.wallsd.us/
+South Dakota,Codington County,Watertown,https://www.watertownsd.us/
+South Dakota,Day County,Webster,http://www.webstersd.com/
+South Dakota,Jerauld County,Wessington Springs,http://wessingtonsprings.com
+South Dakota,Brookings County,White,http://www.whitesd.com
+South Dakota,Aurora County,White Lake,http://www.whitelakesd.com
+South Dakota,Lawrence County,Whitewood,http://www.cityofwhitewood.net
+South Dakota,Roberts County,Wilmot,http://www.wilmotsouthdakota.com/
+South Dakota,Tripp County,Winner,http://www.winnersd.org
+South Dakota,Sanborn County,Woonsocket,http://www.woonsocketsd.com
+South Dakota,Lincoln County,Worthing,http://cityofworthing.com
+South Dakota,Yankton County,Yankton,https://www.cityofyankton.org/
+Tennessee,Robertson County,Adams,http://www.adamstennessee.org
+Tennessee,McNairy County,Adamsville,http://www.cityofadamsville.com
+Tennessee,Crockett County,Alamo,http://www.townofalamo.net/
+Tennessee,Blount County,Alcoa,http://www.cityofalcoa-tn.gov
+Tennessee,DeKalb County,Alexandria,http://www.townofalexandria.us
+Tennessee,Putnam County,Algood,https://algood-tn.com/
+Tennessee,Giles County,Ardmore,http://www.cityofardmoretn.com/
+Tennessee,Shelby County,Arlington,http://www.townofarlington.org/
+Tennessee,Cheatham County,Ashland City,http://www.ashlandcity.net
+Tennessee,McMinn County,Athens,http://www.cityofathenstn.com
+Tennessee,Tipton County,Atoka,http://www.townofatoka.com
+Tennessee,Jefferson County,Baneberry,https://cityofbaneberry.com/
+Tennessee,Shelby County,Bartlett,http://www.cityofbartlett.org/
+Tennessee,Putnam County,Baxter,https://cityofbaxter.com/
+Tennessee,Bedford County,Bell Buckle,http://townofbellbuckle.com
+Tennessee,Davidson County,Belle Meade,http://www.citybellemeade.org
+Tennessee,Crockett County,Bells,http://cityofbellstn.com/
+Tennessee,Davidson County,Berry Hill,http://www.berryhilltn.org
+Tennessee,Benton County,Big Sandy,http://www.bigsandytn.com/
+Tennessee,Grainger County,Blaine,https://www.blainetn.gov/
+Tennessee,Sullivan County,Bluff City,http://www.bluffcitytn.org/
+Tennessee,Hardeman County,Bolivar,http://www.cityofbolivar.com
+Tennessee,Williamson County,Brentwood,http://www.brentwoodtn.gov
+Tennessee,Tipton County,Brighton,http://www.townofbrighton.com
+Tennessee,Sullivan County,Bristol,http://www.bristoltn.org/
+Tennessee,Haywood County,Brownsville,http://brownsvilletn.gov
+Tennessee,Dickson County,Burns,http://townofburnstn.net
+Tennessee,Pickett County,Byrdstown,http://www.townofbyrdstown.com
+Tennessee,Benton County,Camden,http://www.cityofcamdentn.com
+Tennessee,Smith County,Carthage,https://townofcarthagetn.com/
+Tennessee,Campbell County,Caryville,https://www.townofcaryvilletn.com/
+Tennessee,Clay County,Celina,https://www.cityofcelinatn.com/
+Tennessee,Hickman County,Centerville,http://www.townofcenterville.com
+Tennessee,Marshall County,Chapel Hill,http://www.townofchapelhilltn.com/
+Tennessee,Hamilton County,Chattanooga,http://www.chattanooga.gov
+Tennessee,Hawkins County,Church Hill,http://www.churchhilltn.gov
+Tennessee,Carroll County,Clarksburg,http://www.clarksburgtn.org
+Tennessee,Montgomery County,Clarksville,http://www.cityofclarksville.com/
+Tennessee,Bradley County,Cleveland,http://www.clevelandtn.gov
+Tennessee,Wayne County,Clifton,http://www.cityofclifton.com/
+Tennessee,Anderson County,Clinton,http://www.clintontn.net
+Tennessee,Hamilton County,Collegedale,http://www.collegedaletn.gov
+Tennessee,Shelby County,Collierville,http://www.collierville.com
+Tennessee,Wayne County,Collinwood,http://www.cityofcollinwood.org
+Tennessee,Maury County,Columbia,http://www.columbiatn.com
+Tennessee,Putnam County,Cookeville,http://cookeville-tn.gov
+Tennessee,Robertson County,Coopertown,http://www.coopertowntn.org
+Tennessee,Marshall County,Cornersville,https://www.cornersvilletn.org/
+Tennessee,Tipton County,Covington,http://www.covingtontn.com
+Tennessee,Franklin County,Cowan,https://www.cityofcowan.com/
+Tennessee,Cumberland County,Crossville,http://crossvilletn.gov
+Tennessee,Claiborne County,Cumberland Gap,http://townofcumberlandgap.com
+Tennessee,Jefferson County,Dandridge,http://www.dandridgetn.gov/
+Tennessee,Rhea County,Dayton,http://www.daytontn.net
+Tennessee,Meigs County,Decatur,http://www.decaturtn.net
+Tennessee,Franklin County,Decherd,http://www.decherd.net
+Tennessee,Dickson County,Dickson,http://www.cityofdickson.com
+Tennessee,Stewart County,Dover,https://www.dovertn.com/
+Tennessee,Weakley County,Dresden,http://www.cityofdresden.net/
+Tennessee,Polk County,Ducktown,http://www.cityofducktown.com
+Tennessee,Sequatchie County,Dunlap,http://www.cityofdunlap.com
+Tennessee,Gibson County,Dyer,http://www.cityofdyertn.com
+Tennessee,Dyer County,Dyersburg,http://www.dyersburgtn.gov
+Tennessee,Rutherford County,Eagleville,http://www.eaglevilletn.com
+Tennessee,Hamilton County,East Ridge,http://www.eastridgetn.gov
+Tennessee,Carter County,Elizabethton,http://www.elizabethton.org
+Tennessee,Giles County,Elkton,http://www.elktontn.com
+Tennessee,McMinn County,Englewood,http://www.townofenglewood.com
+Tennessee,Houston County,Erin,http://www.erintn.org
+Tennessee,Unicoi County,Erwin,http://www.erwintn.org/
+Tennessee,Franklin County,Estill Springs,https://www.estillspringstn.com/
+Tennessee,McMinn County,Etowah,https://www.cityofetowahtn.com
+Tennessee,Williamson County,Fairview,http://www.fairview-tn.org/
+Tennessee,Knox County,Farragut,http://www.townoffarragut.org
+Tennessee,Lincoln County,Fayetteville,http://www.fayettevilletn.com
+Tennessee,Davidson County,Forest Hills,http://cityofforesthills.com
+Tennessee,Williamson County,Franklin,http://franklintn.gov
+Tennessee,Sumner County,Gallatin,http://gallatin-tn.gov
+Tennessee,Fayette County,Gallaway,http://www.gallawaytn.gov/
+Tennessee,Sevier County,Gatlinburg,http://gatlinburgtn.gov
+Tennessee,Shelby County,Germantown,http://www.germantown-tn.gov/
+Tennessee,Weakley County,Gleason,http://www.GleasonOnline.com
+Tennessee,Davidson County,Goodlettsville,http://www.goodlettsville.gov/
+Tennessee,Smith County,Gordonsville,http://www.townofgordonsville.com/
+Tennessee,Hardeman County,Grand Junction,http://www.grandjunctiontn.com
+Tennessee,Rhea County,Graysville,http://graysvilletn.org
+Tennessee,Loudon County,Greenback,https://www.greenbackgov.com/
+Tennessee,Robertson County,Greenbrier,http://greenbriertn.org/
+Tennessee,Greene County,Greeneville,http://www.greenevilletn.gov
+Tennessee,Weakley County,Greenfield,http://www.greenfieldtn.org/
+Tennessee,Lauderdale County,Halls,http://www.town.halls.tn.us/
+Tennessee,Roane County,Harriman,http://www.cityofharriman.net/
+Tennessee,Claiborne County,Harrogate,http://www.harrogate-tn.com/
+Tennessee,Trousdale County,Hartsville,https://www.trousdalecountytn.gov/
+Tennessee,Chester County,Henderson,http://hendersontn.org
+Tennessee,Sumner County,Hendersonville,https://www.hvilletn.org/
+Tennessee,Lewis County,Hohenwald,http://hohenwald.com
+Tennessee,Carroll County,Hollow Rock,http://carrollcounty-tn-chamber.com/hollow-rock-1.htm
+Tennessee,Gibson County,Humboldt,http://www.humboldthistorical.com/
+Tennessee,Carroll County,Huntingdon,http://www.huntingdontn.com
+Tennessee,Franklin County,Huntland,https://huntland.org/
+Tennessee,Scott County,Huntsville,http://www.townofhuntsville.com/
+Tennessee,Campbell County,Jacksboro,http://www.jacksboro.org
+Tennessee,Madison County,Jackson,http://www.jacksontn.gov/
+Tennessee,Fentress County,Jamestown,http://jamestowntn.gov/
+Tennessee,Marion County,Jasper,http://www.jasper-tn.com/
+Tennessee,Jefferson County,Jefferson City,http://www.jeffcitytn.com
+Tennessee,Campbell County,Jellico,https://www.jellicocity.com/
+Tennessee,Washington County,Johnson City,http://www.johnsoncitytn.org
+Tennessee,Washington County,Jonesborough,http://www.jonesborough.com
+Tennessee,Marion County,Kimball,https://www.townofkimball.com/
+Tennessee,Sullivan County,Kingsport,http://www.KingsportTN.gov
+Tennessee,Roane County,Kingston,https://kingstontn.gov/
+Tennessee,Cheatham County,Kingston Springs,http://kingstonsprings.net/
+Tennessee,Knox County,Knoxville,http://www.knoxvilletn.gov
+Tennessee,Campbell County,La Follette,http://www.lafollettetn.gov
+Tennessee,Fayette County,La Grange,http://www.lagrangetn.com
+Tennessee,Rutherford County,La Vergne,http://www.lavergnetn.gov/
+Tennessee,Macon County,Lafayette,http://www.lafayette-tn.org
+Tennessee,Shelby County,Lakeland,https://www.lakelandtn.gov/
+Tennessee,Hamilton County,Lakesite,http://www.lakesitetn.gov/
+Tennessee,Lawrence County,Lawrenceburg,http://www.lawrenceburgtn.gov/
+Tennessee,Wilson County,Lebanon,http://www.lebanontn.org/
+Tennessee,Loudon County,Lenoir City,http://www.lenoircitytn.gov
+Tennessee,Marshall County,Lewisburg,https://www.lewisburgtn.gov/
+Tennessee,Henderson County,Lexington,http://www.lexingtontn.gov
+Tennessee,Perry County,Linden,http://lindentn.org/
+Tennessee,Overton County,Livingston,http://www.cityoflivingston.net
+Tennessee,Perry County,Lobelville,http://www.lobelvilletn.org/
+Tennessee,Hamilton County,Lookout Mountain,http://www.lookoutmountaintn.org/
+Tennessee,Lawrence County,Loretto,http://cityoflorettotn.com
+Tennessee,Loudon County,Loudon,http://www.cityofloudontn.org/
+Tennessee,Blount County,Louisville,http://www.louisvilletn.gov
+Tennessee,Monroe County,Madisonville,http://www.cityofmadisonville.org/
+Tennessee,Coffee County,Manchester,http://www.cityofmanchestertn.com
+Tennessee,Weakley County,Martin,http://www.cityofmartin.net/
+Tennessee,Blount County,Maryville,http://www.maryvillegov.com
+Tennessee,Union County,Maynardville,http://www.maynardvilletn.com/
+Tennessee,Carroll County,McKenzie,http://www.mckenzietn.gov
+Tennessee,Carroll County,McLemoresville,http://www.cityofmclemoresville.com/
+Tennessee,Warren County,McMinnville,http://www.mcminnvilletn.gov//
+Tennessee,Gibson County,Medina,http://www.cityofmedinatn.org
+Tennessee,Shelby County,Memphis,http://www.memphistn.gov
+Tennessee,Hardeman County,Middleton,http://cityofmiddleton.org
+Tennessee,Gibson County,Milan,http://www.cityofmilantn.com/
+Tennessee,Sumner County,Millersville,https://www.cityofmillersville.com/
+Tennessee,Shelby County,Millington,http://www.millingtontn.gov/
+Tennessee,Giles County,Minor Hill,http://www.minorhilltn.com
+Tennessee,Grundy County,Monteagle,http://www.townofmonteagle-tn.gov
+Tennessee,Putnam County,Monterey,http://www.exploremontereytn.com
+Tennessee,Hamblen County,Morristown,http://www.mymorristown.com
+Tennessee,Fayette County,Moscow,http://cityofmoscowtn.com
+Tennessee,Greene County,Mosheim,http://www.mosheim-tn.org
+Tennessee,Hawkins County,Mount Carmel,http://www.mountcarmeltn.gov
+Tennessee,Wilson County,Mount Juliet,http://www.mtjuliet-tn.gov/
+Tennessee,Maury County,Mount Pleasant,https://www.mtpleasant-tn.gov
+Tennessee,Johnson County,Mountain City,http://www.johnsoncountytn.org/
+Tennessee,Tipton County,Munford,http://www.munford.com
+Tennessee,Rutherford County,Murfreesboro,http://www.murfreesborotn.gov
+Tennessee,Davidson County,Nashville,http://nashville.gov
+Tennessee,Humphreys County,New Johnsonville,http://www.cityofnewjohnsonville.com
+Tennessee,Claiborne County,New Tazewell,http://newtazewelltn.org/
+Tennessee,Dyer County,Newbern,http://www.cityofnewbern.org/
+Tennessee,Cocke County,Newport,http://www.cityofnewport-tn.com
+Tennessee,McMinn County,Niota,https://www.cityofniota.org/
+Tennessee,Williamson County,Nolensville,http://www.nolensvilletn.gov
+Tennessee,Anderson County,Norris,http://www.cityofnorris.com
+Tennessee,Davidson County,Oak Hill,http://www.oakhilltn.us
+Tennessee,Anderson County,Oak Ridge,http://www.oakridgetn.gov
+Tennessee,Fayette County,Oakland,http://www.oaklandtennessee.org
+Tennessee,Anderson County,Oliver Springs,http://www.oliversprings-tn.gov/
+Tennessee,Scott County,Oneida,http://www.townofoneida.com/
+Tennessee,Henry County,Paris,http://paristn.gov/
+Tennessee,Henderson County,Parkers Crossroads,http://www.parkerscrossroad.org
+Tennessee,Cocke County,Parrottsville,http://www.parrottsvilletn.org
+Tennessee,Decatur County,Parsons,http://www.cityofparsons.com
+Tennessee,Cheatham County,Pegram,http://www.pegram.net/
+Tennessee,Sevier County,Pigeon Forge,http://www.cityofpigeonforge.com/
+Tennessee,Fayette County,Piperton,http://www.pipertontn.com
+Tennessee,Sevier County,Pittman Center,http://www.pittmancentertn.com
+Tennessee,Cheatham County,Pleasant View,http://www.townofpleasantview.com/
+Tennessee,Sumner County,Portland,http://www.cityofportlandtn.gov/
+Tennessee,Giles County,Pulaski,http://www.pulaski-tn.com
+Tennessee,Hamilton County,Red Bank,http://www.redbanktn.gov
+Tennessee,Macon County,Red Boiling Springs,http://www.redboilingspringstn.com/
+Tennessee,Hamilton County,Ridgeside,http://www.ridgeside.net
+Tennessee,Robertson County,Ridgetop,https://ridgetoptn.org/
+Tennessee,Lauderdale County,Ripley,http://www.cityofripleytn.com/
+Tennessee,Blount County,Rockford,https://www.rockfordtn.com/
+Tennessee,Roane County,Rockwood,https://cityofrockwood.com/
+Tennessee,Anderson County,Rocky Top,http://rockytoptn.org
+Tennessee,Hawkins County,Rogersville,http://townofrogersville.com/
+Tennessee,Fayette County,Rossville,http://www.townofrossville.com
+Tennessee,Hardin County,Savannah,http://www.cityofsavannah.org
+Tennessee,Henderson County,Scotts Hill,http://cityofscottshill.com
+Tennessee,McNairy County,Selmer,http://townofselmer.com/
+Tennessee,Sevier County,Sevierville,http://www.seviervilletn.org
+Tennessee,Bedford County,Shelbyville,http://www.shelbyvilletn.org
+Tennessee,Hamilton County,Signal Mountain,http://signalmountaintn.gov
+Tennessee,DeKalb County,Smithville,http://smithvillecityhall.com
+Tennessee,Rutherford County,Smyrna,http://townofsmyrna.org/
+Tennessee,Hancock County,Sneedville,http://www.hancockcountytn.com/Sneedville-City-Government.php
+Tennessee,Hamilton County,Soddy-Daisy,http://www.soddy-daisy.org
+Tennessee,Fayette County,Somerville,http://www.somervilletn.org
+Tennessee,Marion County,South Pittsburg,http://southpittsburgtn.org/
+Tennessee,White County,Sparta,http://spartatn.com
+Tennessee,Rhea County,Spring City,http://www.townofspringcitytn.org
+Tennessee,Williamson County,Spring Hill,https://www.springhilltn.org
+Tennessee,Robertson County,Springfield,http://www.springfield-tn.org
+Tennessee,Haywood County,Stanton,https://haywoodcountybrownsville.com/haywood-county/stanton/
+Tennessee,Monroe County,Sweetwater,http://www.sweetwatertn.net/
+Tennessee,Monroe County,Tellico Plains,https://www.tellicoplainstn.com
+Tennessee,Houston County,Tennessee Ridge,http://www.tnridge.com/
+Tennessee,Williamson County,Thompson's Station,http://www.thompsons-station.com
+Tennessee,Madison County,Three Way,https://cityofthreeway.org/
+Tennessee,Lake County,Tiptonville,http://www.tiptonville.org/index.html
+Tennessee,Blount County,Townsend,http://www.cityoftownsend.com
+Tennessee,Gibson County,Trenton,http://trentontn.net
+Tennessee,Carroll County,Trezevant,http://carrollcounty-tn-chamber.com/index-3.htm
+Tennessee,Dyer County,Trimble,http://www.trimbletennessee.com
+Tennessee,Obion County,Troy,http://www.troytn.com/
+Tennessee,Coffee County,Tullahoma,http://www.tullahomatn.gov
+Tennessee,Greene County,Tusculum,http://www.tusculumcity.org/
+Tennessee,Unicoi County,Unicoi,http://www.unicoitn.net/
+Tennessee,Obion County,Union City,http://www.unioncitytn.gov
+Tennessee,Monroe County,Vonore,https://www.town-of-vonore.com/
+Tennessee,Hamilton County,Walden,http://waldentn.gov/
+Tennessee,Wilson County,Watertown,http://www.watertowntn.com/
+Tennessee,Humphreys County,Waverly,http://waverlytn.org
+Tennessee,Wayne County,Waynesboro,http://www.cityofwaynesboro.org
+Tennessee,Sumner County,Westmoreland,http://www.westmorelandtn.gov
+Tennessee,Dickson County,White Bluff,http://www.townofwhitebluff.com
+Tennessee,Sumner County,White House,http://www.cityofwhitehouse.com/
+Tennessee,Jefferson County,White Pine,https://whitepinetn.gov/
+Tennessee,Hardeman County,Whiteville,http://www.townofwhiteville.com
+Tennessee,Marion County,Whitwell,http://cityofwhitwell.com/
+Tennessee,Franklin County,Winchester,http://www.winchester-tn.com
+Tennessee,Cannon County,Woodbury,https://cannoncountytn.org/woodbury-city-of/
+Texas,Lubbock County,Abernathy,http://cityofabernathy.org
+Texas,Taylor County,Abilene,http://abilenetx.com
+Texas,Dallas County,Addison,http://www.addisontx.gov/
+Texas,Hidalgo County,Alamo,http://www.alamotexas.org
+Texas,Bexar County,Alamo Heights,http://www.alamoheightstx.gov
+Texas,Parker County,Aledo,http://www.aledo-texas.com/
+Texas,Jim Wells County,Alice,http://www.cityofalice.org
+Texas,Smith County,Allen,http://www.cityofallen.org
+Texas,Brewster County,Alpine,http://cityofalpine.com
+Texas,Cherokee County,Alto,https://cityofalto.com/
+Texas,Hidalgo County,Alton,http://www.alton-tx.gov
+Texas,Johnson County,Alvarado,http://www.cityofalvarado.org
+Texas,Brazoria County,Alvin,http://www.alvin-tx.gov
+Texas,Potter County,Amarillo,http://www.amarillo.gov
+Texas,Liberty County,Ames,http://www.cityofamestexas.com
+Texas,Lamb County,Amherst,http://cityofamhersttx.com
+Texas,Chambers County,Anahuac,http://www.anahuac.us
+Texas,Grimes County,Anderson,http://andersontx.gov/
+Texas,Andrews County,Andrews,http://www.cityofandrews.org
+Texas,Brazoria County,Angleton,http://www.angleton.tx.us
+Texas,Collin County,Anna,http://www.annatexas.gov
+Texas,Parker County,Annetta,http://www.annettatx.gov
+Texas,Parker County,Annetta South,http://annettasouth.org
+Texas,Jones County,Anson,http://anson-tx.us
+Texas,El Paso County,Anthony,http://townofanthony.org
+Texas,San Patricio County,Aransas Pass,http://www.aransaspasstx.gov
+Texas,Archer County,Archer City,http://www.archercity.org/
+Texas,Fort Bend County,Arcola,http://www.arcolatexas.org
+Texas,Denton County,Argyle,http://www.argyletx.com/
+Texas,Tarrant County,Arlington,http://www.ArlingtonTX.gov
+Texas,Henderson County,Athens,http://athenstx.gov
+Texas,Cass County,Atlanta,http://atlantatexas.org
+Texas,Denton County,Aubrey,http://www.ci.aubrey.tx.us
+Texas,Wise County,Aurora,http://www.auroratexas.gov
+Texas,Travis County,Austin,http://austintexas.gov
+Texas,Parker County,Azle,http://www.cityofazle.org/
+Texas,Brazoria County,Bailey's Prairie,http://baileysprairie.org
+Texas,Dallas County,Balch Springs,http://www.cityofbalchsprings.com/
+Texas,Bexar County,Balcones Heights,http://bhtx.gov
+Texas,Runnels County,Ballinger,http://www.ballinger-tx.com
+Texas,Bandera County,Bandera,http://www.cityofbandera.com
+Texas,Brown County,Bangs,https://cityofbangs.org/
+Texas,Williamson County,Bartlett,https://bartlett-tx.us/
+Texas,Denton County,Bartonville,http://www.townofbartonville.com
+Texas,Bastrop County,Bastrop,http://www.cityofbastrop.org
+Texas,Matagorda County,Bay City,http://www.cityofbaycity.org
+Texas,Galveston County,Bayou Vista,http://bayouvista.us/
+Texas,Harris County,Baytown,http://www.baytown.org/
+Texas,Chambers County,Beach City,http://www.beachcitytx.us
+Texas,Hays County,Bear Creek,http://vilbc.org
+Texas,Jefferson County,Beaumont,http://beaumonttexas.gov
+Texas,Rockwall County,Bedford,http://www.bedfordtx.gov/
+Texas,Grimes County,Bedias,http://bedias.com
+Texas,Travis County,Bee Cave,http://www.beecavetexas.gov/
+Texas,Bee County,Beeville,http://www.beevilletx.org/
+Texas,Harris County,Bellaire,http://www.bellairetx.gov
+Texas,McLennan County,Bellmead,http://www.bellmead.com
+Texas,Grayson County,Bells,http://www.cityofbells.org
+Texas,Austin County,Bellville,http://www.cityofbellville.com
+Texas,Bell County,Belton,http://www.beltontexas.gov
+Texas,Cameron County,Benbrook,http://www.ci.benbrook.tx.us/
+Texas,Henderson County,Berryville,http://www.cityofberryville.org
+Texas,Burnet County,Bertram,http://www.cityofbertram.org/
+Texas,McLennan County,Beverly Hills,https://beverlyhillstexas.net/
+Texas,Jefferson County,Bevil Oaks,http://cityofbeviloaks.com
+Texas,Reagan County,Big Lake,http://www.biglaketx.com/
+Texas,Upshur County,Big Sandy,http://bigsandytx.gov/
+Texas,Howard County,Big Spring,http://www.mybigspring.com
+Texas,Nueces County,Bishop,https://www.bishoptx.com/
+Texas,Potter County,Bishop Hills,http://bishophillstx.org
+Texas,Blanco County,Blanco,http://www.cityofblanco.com
+Texas,Lamar County,Blossom,http://www.cityofblossom.tx.citygovt.org/
+Texas,Runnels County,Blue Mound,https://www.bluemoundtexas.org/
+Texas,Collin County,Blue Ridge,http://blueridgecity.com
+Texas,Kendall County,Boerne,http://www.ci.boerne.tx.us
+Texas,Fannin County,Bonham,http://www.cobon.net
+Texas,Brazoria County,Bonney,http://www.bonneytexas.gov
+Texas,Lipscomb County,Booker,http://www.bookertexas.com
+Texas,Hutchinson County,Borger,http://borgertx.gov/
+Texas,Parmer County,Bovina,http://www.cityofbovina.net/
+Texas,Montague County,Bowie,https://www.cityofbowietx.com/
+Texas,Wise County,Boyd,https://cityofboyd.com/
+Texas,Kinney County,Brackettville,http://www.thecityofbrackettville.com
+Texas,McCulloch County,Brady,http://www.bradytx.us
+Texas,Brazoria County,Brazoria,http://cityofbrazoria.org/
+Texas,Austin County,Brazos Country,http://citybrazoscountry.org/
+Texas,Stephens County,Breckenridge,https://breckenridgetx.gov/
+Texas,Washington County,Brenham,https://www.cityofbrenham.org/
+Texas,Travis County,Briarcliff,https://www.briarclifftx.com/
+Texas,Orange County,Bridge City,http://www.bridgecitytex.com
+Texas,Wise County,Bridgeport,http://www.cityofbridgeport.net
+Texas,Waller County,Brookshire,http://cityofbrookshire.org
+Texas,Brazoria County,Brookside Village,https://brooksidevillage-tx.org/
+Texas,Terry County,Brownfield,http://www.ci.brownfield.tx.us/
+Texas,Henderson County,Brownsboro,http://www.brownsboro.us
+Texas,Cameron County,Brownsville,http://brownsvilletx.gov
+Texas,Brown County,Brownwood,http://brownwoodtexas.gov
+Texas,McLennan County,Bruceville-Eddy,http://bruceville-eddy.us
+Texas,Brazos County,Bryan,https://www.bryantx.gov
+Texas,Jack County,Bryson,http://cityofbrysontexas.com
+Texas,Hays County,Buda,http://www.ci.buda.tx.us
+Texas,Leon County,Buffalo,http://buffalotex.com
+Texas,Smith County,Bullard,http://www.bullardtexas.net
+Texas,Comal County,Bulverde,http://bulverdetx.gov
+Texas,Harris County,Bunker Hill Village,https://bunkerhilltx.gov
+Texas,Wichita County,Burkburnett,http://www.burkburnett.org/
+Texas,Johnson County,Burleson,http://www.burlesontx.com
+Texas,Burnet County,Burnet,http://www.cityofburnet.com
+Texas,Hunt County,Caddo Mills,http://www.cityofcaddomills.com
+Texas,Burleson County,Caldwell,http://www.caldwelltx.gov
+Texas,Cooke County,Callisburg,http://www.callisburgtx.com
+Texas,Milam County,Cameron,https://www.camerontexas.net/
+Texas,Hemphill County,Canadian,http://www.canadiantx.com
+Texas,Van Zandt County,Canton,http://www.cantontx.gov/index.php
+Texas,Randall County,Canyon,http://www.canyontx.com/
+Texas,Dimmit County,Carrizo Springs,http://www.cityofcarrizo.org/
+Texas,Dallas County,Carrollton,http://www.cityofcarrollton.com
+Texas,Panola County,Carthage,http://www.carthagetexas.com
+Texas,Bexar County,Castle Hills,http://www.cityofcastlehills.com/
+Texas,Medina County,Castroville,http://www.castrovilletx.gov
+Texas,Dallas County,Cedar Hill,http://cedarhilltx.com/
+Texas,Williamson County,Cedar Park,http://www.cedarparktexas.gov/
+Texas,Collin County,Celina,http://www.celina-tx.gov
+Texas,Shelby County,Center,http://www.centertexas.org/
+Texas,Leon County,Centerville,http://centervilletx.gov
+Texas,Henderson County,Chandler,http://www.chandlertx.com
+Texas,Childress County,Childress,http://childresstexas.com/
+Texas,Jefferson County,China,http://chinatexas.net
+Texas,Bexar County,China Grove,http://www.cityofchinagrove.org/
+Texas,Nacogdoches County,Chireno,http://www.chireno.com/
+Texas,Guadalupe County,Cibolo,http://www.cibolotx.gov
+Texas,Eastland County,Cisco,http://www.cityofcisco.com
+Texas,Red River County,Clarksville,https://clarksvilletx.com/
+Texas,Gregg County,Clarksville City,https://directory.tml.org/profile/city/1183
+Texas,Armstrong County,Claude,http://cityofclaude.com/
+Texas,Galveston County,Clear Lake Shores,http://www.clearlakeshores-tx.gov/
+Texas,Johnson County,Cleburne,http://www.cleburne.net
+Texas,Liberty County,Cleveland,http://www.clevelandtexas.com
+Texas,Bosque County,Clifton,http://www.cityofclifton.org
+Texas,El Paso County,Clint,https://www.clinttexas.com/
+Texas,Brazoria County,Clute,http://ci.clute.tx.us/
+Texas,Callahan County,Clyde,http://clydetexas.us
+Texas,La Salle County,Cockrell Hill,http://cockrell-hill.tx.us/
+Texas,Henderson County,Coffee City,http://www.cityofcoffeecity.com
+Texas,Coleman County,Coleman,http://www.cityofcolemantx.us
+Texas,Brazos County,College Station,http://www.cstx.gov
+Texas,Dallas County,Colleyville,http://www.colleyville.com/
+Texas,Grayson County,Collinsville,http://www.collinsvilletexas.org
+Texas,Mitchell County,Colorado City,http://www.coloradocitytexas.org/
+Texas,Colorado County,Columbus,http://www.columbustexas.net
+Texas,Comanche County,Comanche,http://www.cityofcomanchetexas.net/
+Texas,Cameron County,Combes,https://www.townofcombes.com/
+Texas,Kaufman County,Combine,http://combinetx.com
+Texas,Hunt County,Commerce,http://commercetx.org
+Texas,Hopkins County,Como,http://cityofcomotx.com
+Texas,Montgomery County,Conroe,http://www.cityofconroe.org/
+Texas,Bexar County,Converse,http://www.conversetx.net
+Texas,Limestone County,Coolidge,http://www.cityofcoolidgetx.com
+Texas,Delta County,Cooper,https://www.cityofcoopertx.municipalimpact.com/
+Texas,Dallas County,Coppell,http://www.coppelltx.gov/
+Texas,Denton County,Copper Canyon,http://www.coppercanyon-tx.org
+Texas,Coryell County,Copperas Cove,http://www.copperascovetx.gov
+Texas,Denton County,Corinth,http://www.cityofcorinth.com
+Texas,Nueces County,Corpus Christi,http://www.cctexas.com
+Texas,Navarro County,Corsicana,http://www.cityofcorsicana.com
+Texas,Kaufman County,Cottonwood,http://www.cityofcottonwoodtexas.org
+Texas,Burnet County,Cottonwood Shores,http://cottonwoodshores.org
+Texas,Williamson County,Coupland,http://www.cityofcouplandtx.us/
+Texas,Hill County,Covington,https://tshaonline.org/handbook/online/articles/hlc55
+Texas,Kaufman County,Crandall,http://www.crandalltexas.com
+Texas,Crane County,Crane,http://cityofcranetexas.com
+Texas,Bosque County,Cranfills Gap,http://www.CranfillsGapTexas.com
+Texas,Houston County,Crockett,http://www.crocketttexas.org
+Texas,Crosby County,Crosbyton,http://www.cityofcrosbyton.org
+Texas,Callahan County,Cross Plains,http://www.crossplains.org
+Texas,Denton County,Cross Roads,http://www.crossroadstx.gov
+Texas,Johnson County,Cross Timber,http://www.crosstimbertx.org
+Texas,Foard County,Crowell,http://www.crowelltex.com/
+Texas,Tarrant County,Crowley,http://www.ci.crowley.tx.us
+Texas,Zavala County,Crystal City,http://www.crystalcitytx.org
+Texas,DeWitt County,Cuero,http://www.cityofcuero.com
+Texas,Hopkins County,Cumby,http://cumbytx.com
+Texas,Morris County,Daingerfield,https://www.cityofdaingerfield.com/
+Texas,Dallam County,Dalhart,http://www.dalharttx.gov
+Texas,Dallas County,Dallas,http://www.dallascityhall.com/
+Texas,Rusk County,Dalworthington Gardens,http://www.cityofdwg.net/
+Texas,Brazoria County,Danbury,https://www.danburytx.gov/
+Texas,Lipscomb County,Darrouzett,http://www.darrouzett.org
+Texas,Navarro County,Dawson,https://www.cityofdawsontx.com/
+Texas,Liberty County,Dayton,https://www.cityofdaytontx.com/
+Texas,Bowie County,De Kalb,https://dekalbtx.org/
+Texas,Comanche County,De Leon,https://www.cityofdeleon.org/
+Texas,Wise County,Decatur,http://www.decaturtx.org/
+Texas,Hood County,DeCordova,https://cityofdecordova.org/
+Texas,Harris County,Deer Park,http://www.deerparktx.gov
+Texas,Val Verde County,Del Rio,http://www.cityofdelrio.com/
+Texas,Hudspeth County,Dell City,http://www.dellcity.com
+Texas,Grayson County,Denison,http://www.cityofdenison.com
+Texas,Denton County,Denton,http://www.cityofdenton.com/
+Texas,Yoakum County,Denver City,https://denvercitytexas.org/
+Texas,Lamar County,Deport,http://www.cityofdeport.org
+Texas,Collin County,DeSoto,http://www.ci.desoto.tx.us
+Texas,Red River County,Detroit,http://www.detroit.tx.citygovt.org/
+Texas,Liberty County,Devers,http://cityofdevers.com
+Texas,Medina County,Devine,http://www.devinetx.com/
+Texas,Angelina County,Diboll,http://www.cityofdiboll.com
+Texas,Galveston County,Dickinson,https://www.ci.dickinson.tx.us/
+Texas,Frio County,Dilley,http://www.cityofdilleytx.com
+Texas,Denton County,DISH,http://www.townofdish.com
+Texas,Hidalgo County,Donna,http://cityofdonna.org
+Texas,Grayson County,Dorchester,https://cityofdorchester.org/
+Texas,Denton County,Double Oak,http://www.double-oak.com
+Texas,Hays County,Dripping Springs,http://www.cityofdrippingsprings.com/
+Texas,Erath County,Dublin,http://www.ci.dublin.tx.us
+Texas,Moore County,Dumas,http://www.ci.dumas.tx.us/
+Texas,Dallas County,Duncanville,https://www.duncanville.com/
+Texas,Colorado County,Eagle Lake,http://coeltx.net
+Texas,Maverick County,Eagle Pass,http://www.eaglepasstx.us/
+Texas,Brown County,Early,http://www.earlytx.net
+Texas,Wharton County,East Bernard,http://www.eastbernardtx.com/
+Texas,Rains County,East Tawakoni,http://cityofeasttawakoni.com/
+Texas,Eastland County,Eastland,http://www.cityofeastland.com
+Texas,Gregg County,Easton,https://cityofeastontx.com/home
+Texas,Hidalgo County,Edcouch,https://www.edcouchtx.us/
+Texas,Concho County,Eden,http://www.edentexas.com/
+Texas,Tarrant County,Edgecliff Village,http://cour60.wix.com/evgov
+Texas,Van Zandt County,Edgewood,https://edgewoodtexas.org/
+Texas,Hidalgo County,Edinburg,http://www.cityofedinburg.com
+Texas,Wise County,Edna,http://www.cityofedna.com
+Texas,Van Zandt County,Edom,http://www.edomtexas.com/
+Texas,Wharton County,El Campo,http://www.cityofelcampo.org/
+Texas,Webb County,El Cenizo,http://www.cityofelcenizo.com/
+Texas,Harris County,El Lago,http://www.ellago-tx.com
+Texas,El Paso County,El Paso,http://www.elpasotexas.gov
+Texas,Schleicher County,Eldorado,http://www.eldoradotexas.us/
+Texas,Wichita County,Electra,http://www.electratexas.org/
+Texas,Bastrop County,Elgin,http://elgintx.com
+Texas,Anderson County,Elkhart,https://www.cityofelkharttx.gov/
+Texas,Bexar County,Elmendorf,https://www.elmendorf-tx.com/
+Texas,Johnson County,Elsa,http://cityofelsa.net
+Texas,Rains County,Emory,https://www.cityofemory.com/
+Texas,Henderson County,Enchanted Oaks,http://www.enchantedoaks.org
+Texas,La Salle County,Encinal,https://www.cityofencinal.com/
+Texas,Ellis County,Ennis,http://www.ennistx.gov
+Texas,Dallas County,Euless,http://www.eulesstx.gov/
+Texas,Henderson County,Eustace,http://www.eustacetexas.org
+Texas,Coryell County,Evant,https://cityofevanttx.com/home
+Texas,Gregg County,Everman,http://www.evermantx.net/
+Texas,Bexar County,Fair Oaks Ranch,http://fairoaksranchtx.org
+Texas,Fort Bend County,Fairchilds,https://fairchildstx.com/
+Texas,Freestone County,Fairfield,http://www.fairfieldtexas.com
+Texas,Collin County,Fairview,http://www.fairviewtexas.org
+Texas,Brooks County,Falfurrias,http://www.ci.falfurrias.tx.us
+Texas,Coryell County,Farmers Branch,http://www.farmersbranchtx.gov
+Texas,Collin County,Farmersville,http://www.farmersvilletx.com
+Texas,Rockwall County,Fate,http://www.cityoffate.com/
+Texas,Fayette County,Fayetteville,http://fayettevillecitytx.com
+Texas,Ellis County,Ferris,https://www.ferristexas.gov/
+Texas,Fayette County,Flatonia,http://www.destinationflatonia.com
+Texas,Wilson County,Floresville,http://www.cityoffloresville.org/
+Texas,Denton County,Flower Mound,http://www.flower-mound.com
+Texas,Floyd County,Floydada,https://www.cityoffloydada.com/
+Texas,Cherokee County,Forest Hill,http://www.foresthilltx.org/
+Texas,Kaufman County,Forney,http://cityofforney.org
+Texas,Pecos County,Fort Stockton,http://cityoffortstockton.com
+Texas,Tarrant County,Fort Worth,http://www.fortworthtexas.gov/
+Texas,Robertson County,Franklin,http://cityoffranklintx.com/
+Texas,Anderson County,Frankston,http://www.frankstontexas.com
+Texas,Gillespie County,Fredericksburg,http://www.fbgtx.org
+Texas,Brazoria County,Freeport,http://www.freeport.tx.us
+Texas,Duval County,Freer,http://www.freertx.org
+Texas,Galveston County,Friendswood,http://www.ci.friendswood.tx.us
+Texas,Parmer County,Friona,https://www.cityoffriona.com/
+Texas,Collin County,Frisco,http://www.friscotexas.gov
+Texas,Hutchinson County,Fritch,http://www.fritchcityhall.com
+Texas,Fort Bend County,Fulshear,https://www.fulsheartexas.gov/
+Texas,Aransas County,Fulton,http://www.fultontexas.org
+Texas,Cooke County,Gainesville,http://www.gainesville.tx.us
+Texas,Harris County,Galena Park,http://www.cityofgalenapark-tx.gov
+Texas,Galveston County,Galveston,http://galvestontx.gov
+Texas,Bell County,Ganado,http://www.cityofganado.com
+Texas,Comal County,Garden Ridge,http://www.ci.garden-ridge.tx.us
+Texas,Dallas County,Garland,http://www.garlandtx.gov
+Texas,Ellis County,Garrett,http://cityofgarrett.com
+Texas,Nacogdoches County,Garrison,http://www.garrisontx.us
+Texas,Coryell County,Gatesville,http://ci.gatesville.tx.us
+Texas,Live Oak County,George West,https://cityofgw.org/
+Texas,Williamson County,Georgetown,http://georgetown.org/
+Texas,Lee County,Giddings,http://www.giddings.net
+Texas,Upshur County,Gilmer,http://gilmer-tx.com/
+Texas,Gregg County,Gladewater,http://cityofgladewater.com
+Texas,Somervell County,Glen Rose,https://www.glenrosetexas.org/
+Texas,Dallas County,Glenn Heights,http://www.glennheightstx.gov
+Texas,Johnson County,Godley,http://godleytx.gov
+Texas,Mills County,Goldthwaite,https://www.visitgoldthwaite.com/
+Texas,Goliad County,Goliad,http://www.goliadtx.net
+Texas,Gonzales County,Gonzales,http://www.cityofgonzales.org
+Texas,Palo Pinto County,Gordon,https://www.discovergordon.com/
+Texas,Eastland County,Gorman,http://www.gormantx.com
+Texas,Young County,Graham,http://www.cityofgrahamtexas.com/
+Texas,Hood County,Granbury,http://www.granbury.org
+Texas,Dallas County,Grand Prairie,https://www.gptx.org
+Texas,Van Zandt County,Grand Saline,https://grandsalinetx.gov/
+Texas,Johnson County,Grandview,http://www.cityofgrandview.org
+Texas,Williamson County,Granger,https://grangertx.us/
+Texas,Burnet County,Granite Shoals,http://www.graniteshoals.org
+Texas,Houston County,Grapeland,https://www.grapeland.com/
+Texas,Denton County,Grapevine,https://www.grapevinetexas.gov/
+Texas,Hunt County,Greenville,http://www.ci.greenville.tx.us
+Texas,San Patricio County,Gregory,https://www.cityofgregorytx.com/
+Texas,Bexar County,Grey Forest,http://greyforest-tx.gov
+Texas,Limestone County,Groesbeck,http://www.cityofgroesbeck.com/
+Texas,Jefferson County,Groves,http://www.cigrovestx.com
+Texas,Henderson County,Gun Barrel City,http://www.gunbarrelcity.net
+Texas,Grayson County,Gunter,http://ci.gunter.tx.us
+Texas,Denton County,Hackberry,http://cityofhackberry.net
+Texas,Hale County,Hale Center,http://www.cityofhalecenter.com
+Texas,Lavaca County,Hallettsville,http://www.cityofhallettsville.org/
+Texas,Harrison County,Hallsville,http://cityofhallsvilletx.com
+Texas,Walker County,Haltom City,http://www.haltomcitytx.com/
+Texas,Hamilton County,Hamilton,http://hamiltontexas.com
+Texas,Liberty County,Hardin,http://www.hardintexas.com
+Texas,Bell County,Harker Heights,http://www.ci.harker-heights.tx.us/
+Texas,Cameron County,Harlingen,http://myharlingen.us
+Texas,Haskell County,Haskell,http://haskelltexasusa.com
+Texas,Tarrant County,Haslet,http://haslet.org/
+Texas,Hays County,Hays,https://cityofhays.org/
+Texas,Robertson County,Hearne,https://www.cityofhearne.org/
+Texas,Rockwall County,Heath,http://heathtx.com
+Texas,Harris County,Hedwig Village,http://www.hedwigtx.gov
+Texas,Bexar County,Helotes,http://www.helotes-tx.gov
+Texas,Sabine County,Hemphill,https://www.cityofhemphill.com/
+Texas,Waller County,Hempstead,http://hempsteadcitytx.com/
+Texas,Rusk County,Henderson,http://www.hendersontx.us
+Texas,Clay County,Henrietta,http://www.cityofhenrietta.com
+Texas,Deaf Smith County,Hereford,http://www.hereford-tx.gov
+Texas,McLennan County,Hewitt,http://www.cityofhewitt.com/
+Texas,Denton County,Hickory Creek,http://www.hickorycreek-tx.gov
+Texas,Hamilton County,Hico,http://hico-tx.com
+Texas,Moore County,Hidalgo,http://cityofhidalgo.net
+Texas,Smith County,Hideaway,https://cityofhideaway.org/
+Texas,Burnet County,Highland Haven,http://highlandhaventx.com
+Texas,Dallas County,Highland Park,http://www.hptx.org/
+Texas,Denton County,Highland Village,http://www.highlandvillage.org
+Texas,Bexar County,Hill Country Village,http://www.hcv.org/
+Texas,Brazoria County,Hillcrest,https://www.hillcrestvillagetx.gov
+Texas,Hill County,Hillsboro,http://www.hillsborotx.org
+Texas,Harris County,Hilshire Village,http://www.hilshirevillagetexas.com
+Texas,Galveston County,Hitchcock,http://www.cityofhitchcock.org/
+Texas,Brazoria County,Holiday Lakes,http://holidaylakestexas.com
+Texas,Bell County,Holland,https://www.cityofholland.org/
+Texas,Archer County,Holliday,http://www.hollidaytx.org
+Texas,Bexar County,Hollywood Park,http://www.hollywoodpark-tx.gov/
+Texas,Medina County,Hondo,http://www.cityofhondo.com
+Texas,Fannin County,Honey Grove,http://cityofhoneygrove.org
+Texas,El Paso County,Horizon City,http://www.horizoncity.org
+Texas,Llano County,Horseshoe Bay,http://www.horseshoe-bay-tx.gov
+Texas,Gibson County,Houston,http://www.houstontx.gov/
+Texas,Grayson County,Howe,http://cityofhowe.org
+Texas,Hill County,Hubbard,http://hubbardcity.com
+Texas,Angelina County,Hudson,https://hudsontx.com/
+Texas,Parker County,Hudson Oaks,https://hudsonoaks.com/
+Texas,Cass County,Hughes Springs,http://www.hughesspringstxusa.com
+Texas,Harris County,Humble,http://www.cityofhumble.net
+Texas,Harris County,Hunters Creek Village,http://www.cityofhunterscreek.com
+Texas,Angelina County,Huntington,http://www.cityofhuntington.org
+Texas,Walker County,Huntsville,http://www.huntsvilletx.gov/
+Texas,Galveston County,Hurst,https://www.hursttx.gov/
+Texas,Dallas County,Hutchins,http://www.cityofhutchins.org/
+Texas,Williamson County,Hutto,http://www.huttotx.gov/
+Texas,Lubbock County,Idalou,http://idaloutx.com
+Texas,Cameron County,Indian Lake,http://www.townofindianlake.com/
+Texas,Austin County,Industry,http://www.industry-tx.com
+Texas,San Patricio County,Ingleside,http://www.inglesidetx.gov/
+Texas,Kerr County,Ingram,http://www.cityofingram.com
+Texas,Grimes County,Iola,https://tshaonline.org/handbook/online/articles/hli07
+Texas,Brazoria County,Iowa Colony,https://www.iowacolonytx.gov/
+Texas,Wichita County,Iowa Park,http://www.iowapark.com/
+Texas,Dallas County,Irving,http://www.cityofirving.org/
+Texas,Ellis County,Italy,http://www.ci.italy.tx.us
+Texas,Hill County,Itasca,http://www.biglittletowntx.com/
+Texas,Tyler County,Ivanhoe,http://cityofivanhoetx.com/
+Texas,Harris County,Jacinto City,http://www.jacintocity-tx.gov
+Texas,Jack County,Jacksboro,http://www.cityofjacksboro.com
+Texas,Cherokee County,Jacksonville,http://www.jacksonvilletx.org
+Texas,Galveston County,Jamaica Beach,http://www.ci.jamaicabeach.tx.us/
+Texas,Williamson County,Jarrell,http://www.cityofjarrell.com/
+Texas,Kaufman County,Jasper,http://jaspertx.org
+Texas,Marion County,Jefferson,http://www.jeffersontexas.us
+Texas,Harris County,Jersey Village,http://www.jerseyvillagetx.com
+Texas,Leon County,Jewett,http://cityofjewett.com
+Texas,Blanco County,Johnson City,http://www.johnsoncitytx.org
+Texas,Brazoria County,Jones Creek,http://www.villageofjonescreektexas.com
+Texas,Travis County,Jonestown,https://jonestowntx.gov/
+Texas,Collin County,Josephine,http://www.cityofjosephinetx.com
+Texas,Johnson County,Joshua,http://www.cityofjoshuatx.us
+Texas,Atascosa County,Jourdanton,http://jourdantontexas.org/
+Texas,Kimble County,Junction,http://cityofjunction.com
+Texas,Denton County,Justin,http://cityofjustin.com
+Texas,Karnes County,Karnes City,http://cityofkctx.com
+Texas,Harris County,Katy,http://cityofkaty.com
+Texas,Kaufman County,Kaufman,http://www.kaufmantx.org
+Texas,Johnson County,Keene,http://www.keenetx.com
+Texas,Walker County,Keller,http://www.cityofkeller.com/
+Texas,Galveston County,Kemah,http://www.kemah-tx.gov
+Texas,Kaufman County,Kemp,http://www.cityofkemp.org
+Texas,Fort Bend County,Kendleton,http://www.kendletontx.net/
+Texas,Karnes County,Kenedy,http://www.cityofkenedy.org
+Texas,Liberty County,Kenefick,http://cityofkenefick.com
+Texas,Liberty County,Kennedale,http://www.cityofkennedale.com
+Texas,Navarro County,Kerens,http://ci.kerens.tx.us/
+Texas,Winkler County,Kermit,http://www.kermittexas.us/
+Texas,Kerr County,Kerrville,http://kerrvilletx.gov
+Texas,Gregg County,Kilgore,http://cityofkilgore.com
+Texas,Bell County,Killeen,http://www.killeentexas.gov
+Texas,Guadalupe County,Kingsbury,http://www.kingsburytexas.org/
+Texas,Kleberg County,Kingsville,http://www.cityofkingsville.com/
+Texas,Bexar County,Kirby,http://www.kirbytx.org/
+Texas,Jasper County,Kirbyville,http://www.cityofkirbyville.com
+Texas,Grayson County,Knollwood,http://www.knollwoodvillage.com
+Texas,Limestone County,Kosse,http://www.kossetexas.com
+Texas,Hardin County,Kountze,http://cityofkountze.org
+Texas,Denton County,Krugerville,http://www.krugerville.org
+Texas,Denton County,Krum,http://www.ci.krum.tx.us
+Texas,Brazos County,Kurten,http://www.kurtentexas.com
+Texas,Hays County,Kyle,http://www.cityofkyle.com
+Texas,Cameron County,La Feria,http://www.cityoflaferia.com
+Texas,Fayette County,La Grange,http://www.cityoflg.com
+Texas,Hidalgo County,La Joya,http://www.cityoflajoya.com
+Texas,Galveston County,La Marque,http://www.ci.la-marque.tx.us/
+Texas,Harris County,La Porte,http://www.ci.la-porte.tx.us/
+Texas,Wilson County,La Vernia,http://www.lavernia-tx.gov/
+Texas,Hidalgo County,La Villa,http://www.cityoflavilla.org
+Texas,McLennan County,Lacy-Lakeview,http://www.lacylakeview.org/
+Texas,Fannin County,Ladonia,http://www.cityofladonia.com
+Texas,Travis County,Lago Vista,https://lagovistatexas.gov
+Texas,Cameron County,Laguna Vista,http://lvtexas.com/
+Texas,Denton County,Lake Dallas,http://www.lakedallas.com
+Texas,Brazoria County,Lake Jackson,http://www.lakejackson-tx.gov
+Texas,Denton County,Lake Worth,http://www.lakeworthtx.org/
+Texas,Gregg County,Lakeport,http://www.lakeporttx.gov
+Texas,Tarrant County,Lakeside,http://www.lakesidetexas.us/
+Texas,Archer County,Lakeside City,http://www.lakesidecitytx.org
+Texas,Travis County,Lakeway,http://www.lakeway-tx.gov
+Texas,Denton County,Lakewood Village,http://www.lakewoodvillagetx.us
+Texas,Dawson County,Lamesa,http://www.ci.lamesa.tx.us
+Texas,Lampasas County,Lampasas,http://www.cityoflampasas.com
+Texas,Galveston County,Lancaster,http://www.lancaster-tx.com/
+Texas,Webb County,Laredo,http://www.laredotexas.gov/
+Texas,Collin County,Lavon,http://cityoflavon.com
+Texas,Galveston County,League City,http://www.leaguecitytx.gov/
+Texas,Williamson County,Leander,http://www.leandertx.gov/
+Texas,Bexar County,Leon Valley,http://www.leonvalleytexas.gov/
+Texas,Fannin County,Leonard,http://www.cityofleonard.net
+Texas,Hockley County,Levelland,http://www.levellandtexas.org
+Texas,Denton County,Lewisville,http://www.cityoflewisville.com
+Texas,Lee County,Lexington,http://cityoflexingtontx.com
+Texas,Liberty County,Liberty,http://www.cityofliberty.org
+Texas,Smith County,Lindale,http://www.lindaletx.gov
+Texas,Cass County,Linden,http://lindentexas.org
+Texas,Cooke County,Lindsay,http://lindsay.texas.gov/
+Texas,Denton County,Little Elm,http://www.littleelm.org
+Texas,Lamb County,Littlefield,http://www.littlefieldtexas.org
+Texas,Bexar County,Live Oak,http://www.liveoaktx.net/
+Texas,Brazoria County,Liverpool,http://cityofliverpooltexas.com
+Texas,Polk County,Livingston,http://www.cityoflivingston-tx.com/
+Texas,Llano County,Llano,http://www.cityofllano.com/
+Texas,Caldwell County,Lockhart,http://www.lockhart-tx.org
+Texas,Henderson County,Log Cabin,http://logcabin.texas.gov
+Texas,Lampasas County,Lometa,http://www.lometatx.com
+Texas,Morris County,Lone Star,https://www.lonestartx.net/
+Texas,Gregg County,Longview,http://www.longviewtexas.gov
+Texas,McLennan County,Lorena,https://www.ci.lorena.tx.us/
+Texas,Crosby County,Lorenzo,http://www.cityoflorenzo.net/
+Texas,Cameron County,Los Fresnos,http://www.citylf.us
+Texas,Collin County,Lowry Crossing,https://www.lowrycrossingtexas.org/
+Texas,Lubbock County,Lubbock,http://www.ci.lubbock.tx.us
+Texas,Collin County,Lucas,http://www.lucastexas.us
+Texas,Angelina County,Lufkin,http://cityoflufkin.com
+Texas,Caldwell County,Luling,http://www.cityofluling.net
+Texas,Hardin County,Lumberton,http://cityoflumberton.com
+Texas,Willacy County,Lyford,https://www.lyfordtx.us/
+Texas,Atascosa County,Lytle,http://www.lytletx.org
+Texas,Kaufman County,Mabank,http://www.cityofmabanktx.org
+Texas,Madison County,Madisonville,https://madisonvilletexas.us/
+Texas,Montgomery County,Magnolia,http://www.cityofmagnolia.com/
+Texas,Henderson County,Malakoff,http://cityofmalakoff.net
+Texas,Travis County,Manor,http://cityofmanor.org
+Texas,Tarrant County,Mansfield,https://www.mansfieldtexas.gov
+Texas,Brazoria County,Manvel,http://www.cityofmanvel.com
+Texas,Burnet County,Marble Falls,http://ci.marble-falls.tx.us
+Texas,Presidio County,Marfa,https://cityofmarfa.com/
+Texas,Guadalupe County,Marion,http://cityofmariontx.org
+Texas,Denton County,Marlin,http://www.marlintexas.com/
+Texas,Harrison County,Marshall,http://www.marshalltexas.net
+Texas,McLennan County,Mart,http://www.cityofmart.net
+Texas,Caldwell County,Martindale,http://www.martindale.texas.gov/
+Texas,Mason County,Mason,http://www.mason.tx.citygovt.org/
+Texas,San Patricio County,Mathis,https://www.cityofmathis.com/
+Texas,Ellis County,Maypearl,http://ci.maypearl.tx.us
+Texas,Hidalgo County,McAllen,http://www.mcallen.net
+Texas,Upton County,McCamey,https://mccameycity.com/
+Texas,McLennan County,McGregor,http://cityofmcgregor.com
+Texas,Collin County,McKinney,http://www.mckinneytexas.org
+Texas,Rockwall County,McLendon-Chisholm,http://www.mclendon-chisholm.com/
+Texas,Burnet County,Meadowlakes,http://meadowlakestexas.org
+Texas,Fort Bend County,Meadows Place,http://www.cityofmeadowsplace.org
+Texas,Collin County,Melissa,http://cityofmelissa.com
+Texas,Harris County,Mercedes,http://cityofmercedes.com
+Texas,Bosque County,Meridian,https://www.meridiantexas.us/
+Texas,Taylor County,Merkel,http://merkeltexas.com/
+Texas,Dallas County,Mesquite,http://cityofmesquite.com
+Texas,Limestone County,Mexia,https://cityofmexia.com/
+Texas,Midland County,Midland,http://www.midlandtexas.gov/
+Texas,Ellis County,Midlothian,http://midlothian.tx.us
+Texas,Ellis County,Milford,http://cityofmilfordtx.com
+Texas,Wood County,Mineola,http://www.Mineola.com
+Texas,Palo Pinto County,Mineral Wells,http://www.mineralwellstx.gov/
+Texas,Hidalgo County,Mission,https://missiontexas.us/
+Texas,Fort Bend County,Missouri City,http://www.missouricitytx.gov
+Texas,Ward County,Monahans,http://www.cityofmonahans.org/
+Texas,Chambers County,Mont Belvieu,http://www.montbelvieu.net
+Texas,Montgomery County,Montgomery,http://www.montgomerytexas.gov
+Texas,McLennan County,Moody,http://www.cityofmoody.net/
+Texas,Harris County,Morgan's Point,http://morganspoint-tx.com
+Texas,Bell County,Morgan's Point Resort,http://www.morganspointresorttx.com
+Texas,Lavaca County,Moulton,http://www.cityofmoulton.com
+Texas,Titus County,Mount Pleasant,http://www.mpcity.net/
+Texas,Franklin County,Mount Vernon,http://www.comvtx.com
+Texas,Cooke County,Muenster,https://cityofmuenstertx.org
+Texas,Bailey County,Muleshoe,http://www.city-of-muleshoe.com/
+Texas,Knox County,Munday,http://www.mundaytexas.com
+Texas,Galveston County,Murphy,http://www.murphytx.org
+Texas,Nacogdoches County,Nacogdoches,http://www.ci.nacogdoches.tx.us/
+Texas,Morris County,Naples,http://city-of-naples-texas.com/
+Texas,Bowie County,Nash,http://nashtx.org
+Texas,Harris County,Nassau Bay,http://www.nassaubay.com
+Texas,Medina County,Natalia,http://cityofnatalia.com/
+Texas,Brazos County,Navasota,http://www.navasotatx.gov
+Texas,Jefferson County,Nederland,http://www.ci.nederland.tx.us
+Texas,Fort Bend County,Needville,http://cityofneedville.com
+Texas,Collin County,Nevada,http://cityofnevadatx.org/
+Texas,Guadalupe County,New Berlin,http://www.newberlintx.org
+Texas,Bowie County,New Boston,http://www.nbcity.org
+Texas,Comal County,New Braunfels,https://newbraunfels.gov
+Texas,Smith County,New Chapel Hill,https://tshaonline.org/handbook/online/articles/hrnhb
+Texas,Lubbock County,New Deal,https://www.cityofnewdealtx.com/
+Texas,Wise County,New Fairview,https://newfairview.org/
+Texas,Lynn County,New Home,https://tshaonline.org/handbook/online/articles/hln09
+Texas,Collin County,New Hope,http://www.NewHopeTx.gov
+Texas,Cherokee County,New Summerfield,https://www.newsummerfield.us/
+Texas,Wise County,Newark,http://newarktexas.com/
+Texas,Newton County,Newton,http://www.newtontexas.org/
+Texas,Hays County,Niederwald,http://www.cityofniederwald.org/
+Texas,Gonzales County,Nixon,https://nixon.texas.gov/
+Texas,Bell County,Nolanville,http://ci.nolanville.tx.us
+Texas,Cameron County,North Richland Hills,https://www.nrhtx.com/
+Texas,Denton County,Northlake,http://town.northlake.tx.us
+Texas,Ellis County,Oak Leaf,http://www.oakleaftexas.org
+Texas,Denton County,Oak Point,http://www.oakpointtexas.com
+Texas,Cooke County,Oak Ridge,https://www.townofoakridge.com/
+Texas,Montgomery County,Oak Ridge North,http://www.oakridgenorth.com
+Texas,Leon County,Oakwood,http://www.cityofoakwood.tx.citygovt.org
+Texas,San Patricio County,Odem,https://www.cityofodemtx.com/
+Texas,Ector County,Odessa,http://www.odessa-tx.gov/
+Texas,Chambers County,Old River-Winfree,http://cityofoldriverwinfree.com
+Texas,Bexar County,Olmos Park,http://www.olmospark.org/
+Texas,Young County,Olney,http://www.olney.tx.citygovt.org/
+Texas,Polk County,Onalaska,http://cityofonalaska.us/
+Texas,Orange County,Orange,http://www.orangetexas.net/
+Texas,Fort Bend County,Orchard,http://orchardtexas.net
+Texas,Rusk County,Overton,https://cityofoverton.com/
+Texas,Ellis County,Ovilla,https://www.cityofovilla.org/
+Texas,Matagorda County,Palacios,http://www.palaciostexas.com//
+Texas,Anderson County,Palestine,http://www.cityofpalestinetx.com
+Texas,Cameron County,Palm Valley,https://palmvalleytx.com/
+Texas,Ellis County,Palmer,http://www.ci.palmer.tx.us
+Texas,Grayson County,Palmhurst,http://cityofpalmhursttx.com
+Texas,Denton County,Palmview,http://cityofpalmview.com
+Texas,Gray County,Pampa,http://www.cityofpampa.org
+Texas,Carson County,Panhandle,http://www.panhandletx.govoffice2.com
+Texas,Montgomery County,Panorama Village,https://www.panoramavillagetx.gov/
+Texas,Tarrant County,Pantego,http://www.townofpantego.com
+Texas,Lamar County,Paris,http://www.paristexas.gov/
+Texas,Collin County,Parker,http://www.parkertexas.us
+Texas,Harris County,Pasadena,http://www.pasadenatx.gov/
+Texas,Waller County,Pattison,http://pattisontexas.org/
+Texas,Montgomery County,Patton Village,http://www.pattonvillage.us/
+Texas,Houston County,Peñitas,http://www.cityofpenitas.com
+Texas,Brazoria County,Pearland,http://www.pearlandtx.gov
+Texas,Frio County,Pearsall,http://cityofpearsall.org
+Texas,Ellis County,Pecan Hill,http://www.pecanhill.com
+Texas,Reeves County,Pecos,http://www.pecostx.gov/
+Texas,Wharton County,Pelican Bay,http://cityofpelicanbay.com/
+Texas,Ochiltree County,Perryton,https://www.cityofperryton.com/
+Texas,Hale County,Petersburg,https://petersburgtx.com/
+Texas,Travis County,Pflugerville,http://www.pflugervilletx.gov/
+Texas,Gregg County,Pharr,http://www.pharr-tx.gov
+Texas,Denton County,Pilot Point,http://www.cityofpilotpoint.org
+Texas,Orange County,Pinehurst,http://www.cityofpinehursttexas.com/
+Texas,Harris County,Piney Point Village,http://www.cityofpineypoint.com/
+Texas,Camp County,Pittsburg,http://www.pittsburgtexas.com
+Texas,Hale County,Plainview,http://plainviewtx.org
+Texas,Collin County,Plano,http://plano.gov
+Texas,Grimes County,Plantersville,https://cityofplantersville.net/
+Texas,Fort Bend County,Pleak,http://villageofpleak.com
+Texas,Atascosa County,Pleasanton,http://www.pleasantontx.org
+Texas,Liberty County,Plum Grove,http://cityofplumgrovetexas.com
+Texas,Travis County,Point Venture,http://vopv.org/
+Texas,Nueces County,Port Aransas,http://www.cityofportaransas.org/
+Texas,Jefferson County,Port Arthur,http://PortArthur.net
+Texas,Cameron County,Port Isabel,http://www.portisabel-texas.com/
+Texas,Calhoun County,Port Lavaca,http://www.portlavaca.org
+Texas,Jefferson County,Port Neches,http://ci.port-neches.tx.us
+Texas,San Patricio County,Portland,http://www.portlandtx.com
+Texas,Garza County,Post,http://www.cityofposttexas.com/
+Texas,Kaufman County,Post Oak Bend City,http://www.postoakbend.org
+Texas,Atascosa County,Poteet,https://www.poteettx.org/
+Texas,Wilson County,Poth,http://www.cityofpoth.org/
+Texas,Grayson County,Pottsboro,http://www.pottsboro.govoffice2.com
+Texas,Waller County,Prairie View,http://www.prairieviewtexas.gov/
+Texas,Presidio County,Presidio,http://presidiotx.us/
+Texas,Cameron County,Primera,https://cityofprimera.com/
+Texas,Collin County,Princeton,http://princetontx.gov
+Texas,Wood County,Progreso,https://cityofprogreso.com/
+Texas,Collin County,Prosper,http://www.prospertx.gov
+Texas,Denton County,Providence Village,https://www.pvtx.gov
+Texas,Hardeman County,Quanah,http://www.quanah.tx.citygovt.org
+Texas,Cass County,Queen City,http://www.queencitytx.org
+Texas,Hunt County,Quinlan,http://www.cityofquinlan.net/
+Texas,Brazoria County,Quintana,http://www.quintanatx.org
+Texas,Wood County,Quitman,https://quitmantx.org/
+Texas,Cameron County,Rancho Viejo,http://www.ranchoviejotexas.com/
+Texas,Lubbock County,Ransom Canyon,http://www.ci.ransom-canyon.tx.us
+Texas,Willacy County,Raymondville,https://raymondvilletx.us/
+Texas,Ellis County,Red Oak,http://www.redoaktx.org
+Texas,Bowie County,Redwater,https://redwatertexas.com/
+Texas,Lamar County,Reno,http://www.renotexas.us/
+Texas,Parker County,Reno,http://www.renotx.gov
+Texas,Wise County,Rhome,http://www.cityofrhome.com/
+Texas,Navarro County,Rice,http://www.ricetx.com/
+Texas,Dallas County,Richardson,https://www.cor.net
+Texas,Liberty County,Richland Hills,http://www.richlandhills.com/
+Texas,Fort Bend County,Richmond,http://richmondtx.gov
+Texas,Brazoria County,Richwood,http://www.richwoodtx.gov
+Texas,Starr County,Rio Grande City,http://www.cityofrgc.com/
+Texas,Angelina County,Rio Hondo,http://www.riohondo.us
+Texas,Eastland County,Rising Star,http://www.risingstartexas.net
+Texas,Wilson County,River Oaks,http://www.riveroakstx.com/
+Texas,Denton County,Roanoke,http://www.roanoketexas.com
+Texas,McLennan County,Robinson,https://www.robinsontexas.org/
+Texas,Nueces County,Robstown,https://www.cityofrobstown.com/
+Texas,Milam County,Rockdale,http://www.rockdalecityhall.com/
+Texas,Aransas County,Rockport,http://www.cityofrockport.com
+Texas,Rockwall County,Rockwall,http://www.rockwall.com/
+Texas,Bell County,Rogers,https://www.cityofrogerstx.gov/index.php
+Texas,Travis County,Rollingwood,https://rollingwoodtx.gov/
+Texas,Starr County,Roma,https://www.cityofroma.net/
+Texas,Montgomery County,Roman Forest,https://www.rftx.org/
+Texas,Hockley County,Ropesville,https://cityofropesville.com/
+Texas,Nolan County,Roscoe,http://roscoetx.com/
+Texas,Hardin County,Rose Hill Acres,http://rosehillacres.org/
+Texas,Fisher County,Rosebud,http://www.rosebudtexas.us
+Texas,Fort Bend County,Rosenberg,http://www.rosenbergtx.gov
+Texas,Williamson County,Round Rock,http://www.roundrocktexas.gov/
+Texas,Dallas County,Rowlett,http://www.ci.rowlett.tx.us/
+Texas,Rockwall County,Royse City,http://www.roysecity.com
+Texas,Wise County,Runaway Bay,https://runawaybaytexas.com/
+Texas,Cherokee County,Rusk,https://www.rusktx.org/
+Texas,Uvalde County,Sabinal,https://www.cityofsabinal.org
+Texas,Collin County,Sachse,http://www.cityofsachse.com
+Texas,Lamar County,Saginaw,http://www.ci.saginaw.tx.us/
+Texas,Bell County,Salado,https://www.saladotx.gov/
+Texas,Tom Green County,San Angelo,http://www.cosatx.us/
+Texas,Bexar County,San Antonio,http://www.sanantonio.gov/
+Texas,San Augustine County,San Augustine,https://www.cityofsanaugustinetx.gov/
+Texas,Cameron County,San Benito,http://www.cityofsanbenito.com
+Texas,El Paso County,San Elizario,http://cityofsanelizario.com/
+Texas,Austin County,San Felipe,http://townofsanfelipe.net
+Texas,Harris County,San Juan,http://www.cityofsanjuantexas.com
+Texas,Travis County,San Leanna,http://www.sanleannatx.com/
+Texas,Hays County,San Marcos,http://www.sanmarcostx.gov
+Texas,San Saba County,San Saba,http://www.sansabatexas.com/
+Texas,Bexar County,Sandy Oaks,http://www.cityofsandyoaks.com/
+Texas,Denton County,Sanger,http://www.sangertexas.org
+Texas,Milam County,Sansom Park,http://www.sansompark.org/
+Texas,Coleman County,Santa Anna,http://www.santaannatex.org
+Texas,Guadalupe County,Santa Clara,http://www.cisantaclaratx.us
+Texas,Galveston County,Santa Fe,http://ci.santa-fe.tx.us/
+Texas,Fannin County,Savoy,http://cityofsavoy.org
+Texas,Guadalupe County,Schertz,http://schertz.com
+Texas,Fayette County,Schulenburg,http://schulenburgtx.org
+Texas,Kaufman County,Scurry,https://tshaonline.org/handbook/online/articles/hls33
+Texas,Chambers County,Seabrook,http://www.seabrooktx.gov
+Texas,Calhoun County,Seadrift,https://seadrifttx.org/
+Texas,Dallas County,Seagoville,http://www.seagoville.us/
+Texas,Gaines County,Seagraves,http://seagravestx.us/
+Texas,Austin County,Sealy,http://www.ci.sealy.tx.us
+Texas,Guadalupe County,Seguin,http://www.seguintexas.gov
+Texas,Bexar County,Selma,http://ci.selma.tx.us
+Texas,Henderson County,Seven Points,http://www.sevenpointstx.com
+Texas,Baylor County,Seymour,http://www.cityofseymour.org
+Texas,Denton County,Shady Shores,http://www.shady-shores.com/
+Texas,Lubbock County,Shallowater,http://www.shallowatertx.us/
+Texas,Wheeler County,Shamrock,http://www.shamrocktexas.net
+Texas,Bexar County,Shavano Park,http://shavanopark.org/
+Texas,Montgomery County,Shenandoah,https://www.shenandoahtx.us/
+Texas,San Jacinto County,Shepherd,https://www.shepherdtx.org/
+Texas,Grayson County,Sherman,http://www.cityofsherman.com
+Texas,Lavaca County,Shiner,http://www.shinertexas.gov
+Texas,Chambers County,Shoreacres,http://www.cityofshoreacres.us
+Texas,Hardin County,Silsbee,http://www.cityofsilsbee.com
+Texas,Fort Bend County,Simonton,http://simontontexas.org
+Texas,San Patricio County,Sinton,https://www.sintontexas.org/
+Texas,Carson County,Skellytown,http://www.skellytowntexas.com
+Texas,Lubbock County,Slaton,https://cityofslaton.com/
+Texas,Gonzales County,Smiley,https://smileytx.com/
+Texas,Bastrop County,Smithville,http://www.ci.smithville.tx.us
+Texas,Hockley County,Smyer,https://www.smyer-isd.org
+Texas,Scurry County,Snyder,http://ci.snyder.tx.us/
+Texas,El Paso County,Socorro,http://www.ci.socorro.tx.us
+Texas,Bexar County,Somerset,https://cityofsomerset.org/
+Texas,Burleson County,Somerville,http://somervilletx.gov/
+Texas,Sutton County,Sonora,http://www.sonoratx-chamber.com/
+Texas,Hardin County,Sour Lake,https://www.cityofsourlake.com/
+Texas,Harris County,South Houston,http://www.southhoustontx.org
+Texas,Cameron County,South Padre Island,http://myspi.org
+Texas,Tarrant County,Southlake,https://www.cityofsouthlake.com/
+Texas,Grayson County,Southmayd,http://southmaydtx.com
+Texas,Harris County,Southside Place,http://www.ci.southside-place.tx.us/
+Texas,Montgomery County,Splendora,https://cityofsplendora.org/
+Texas,Comal County,Spring Branch,http://cityofspringbranch.org/
+Texas,Harris County,Spring Valley Village,http://www.springvalleytx.com
+Texas,Parker County,Springtown,https://cityofspringtown.com/
+Texas,Bexar County,St. Hedwig,http://sainthedwigcity.com/
+Texas,Collin County,St. Paul,http://www.stpaultexas.us
+Texas,Fort Bend County,Stafford,http://www.staffordtx.gov
+Texas,Jones County,Stamford,http://www.stamfordtx.org
+Texas,Martin County,Stanton,http://www.cityofstantontx.com/
+Texas,Guadalupe County,Staples,http://www.cityofstaples.com
+Texas,Erath County,Stephenville,http://www.stephenvilletx.gov/
+Texas,Sterling County,Sterling City,http://www.sterlingcitytexas.com
+Texas,Hutchinson County,Stinnett,http://www.cityofstinnett.com/
+Texas,Wilson County,Stockdale,http://stockdaletx.org
+Texas,Sherman County,Stratford,http://www.stratfordtx.com/
+Texas,Palo Pinto County,Strawn,http://www.StrawnTexas.net
+Texas,Lamb County,Sudan,http://www.cityofsudantx.com
+Texas,Fort Bend County,Sugar Land,http://www.sugarlandtx.gov/
+Texas,Coleman County,Sullivan City,http://www.sullivancity.org/
+Texas,Hopkins County,Sulphur Springs,http://www.sulphurspringstx.org
+Texas,Dallas County,Sunnyvale,http://www.townofsunnyvale.org/
+Texas,Llano County,Sunrise Beach Village,http://cityofsunrisebeach.org/
+Texas,Travis County,Sunset Valley,http://www.sunsetvalley.org/
+Texas,Brazoria County,Surfside Beach,http://www.surfsidetx.org
+Texas,Brazoria County,Sweeny,http://www.sweenytx.gov
+Texas,Nolan County,Sweetwater,http://www.cityofsweetwatertx.com/
+Texas,San Patricio County,Taft,https://www.cityoftaft.us/
+Texas,Lynn County,Tahoka,http://www.tahoka-texas.com/
+Texas,Kaufman County,Talty,http://www.taltytexas.com
+Texas,Rusk County,Tatum,https://tatumtexas.com/
+Texas,Williamson County,Taylor,http://www.ci.taylor.tx.us/
+Texas,Harris County,Taylor Lake Village,https://www.taylorlakevillage.us/
+Texas,Freestone County,Teague,http://www.cityofteaguetx.com
+Texas,Limestone County,Tehuacana,http://www.tehuacana.com
+Texas,Bell County,Temple,http://www.templetx.gov
+Texas,Kaufman County,Terrell,http://cityofterrell.org
+Texas,Bexar County,Terrell Hills,http://terrell-hills.com
+Texas,Bowie County,Texarkana,http://ci.texarkana.tx.us/
+Texas,Galveston County,Texas City,http://www.texas-city-tx.org/
+Texas,Denton County,The Colony,http://www.thecolonytx.gov
+Texas,Travis County,The Hills,http://www.villageofthehills.org
+Texas,Limestone County,Thornton,http://cityofthorntontx.com
+Texas,Williamson County,Thrall,http://www.thrallisd.com
+Texas,Live Oak County,Three Rivers,http://www.gothreerivers.com
+Texas,Throckmorton County,Throckmorton,http://www.throckmortontx.org/index.html
+Texas,Galveston County,Tiki Island,http://www.villageoftikiisland.org/
+Texas,Shelby County,Timpson,http://www.cityoftimpson.com
+Texas,Grayson County,Tioga,https://www.tiogatx.gov/
+Texas,Hood County,Tolar,http://www.cityoftolar.com
+Texas,Grayson County,Tom Bean,http://www.tombean.net
+Texas,Harris County,Tomball,http://www.ci.tomball.tx.us
+Texas,Henderson County,Tool,http://tooltexas.org
+Texas,Henderson County,Trinidad,http://www.trinidadtexas.com
+Texas,Trinity County,Trinity,http://www.cityoftrinity.com
+Texas,Denton County,Trophy Club,http://www.trophyclub.org
+Texas,Smith County,Troup,https://trouptx.com/
+Texas,Bell County,Troy,https://www.cityoftroy.us/
+Texas,Swisher County,Tulia,http://www.tuliatexas.org/
+Texas,Taylor County,Tye,http://www.cityoftye.org/
+Texas,Smith County,Tyler,http://www.cityoftyler.org
+Texas,Hays County,Uhland,http://www.cityofuhland.com
+Texas,Harrison County,Uncertain,http://www.cityofuncertain.com
+Texas,Bexar County,Universal City,http://www.universalcitytexas.com/
+Texas,Dallas County,University Park,https://www.uptexas.org/
+Texas,Uvalde County,Uvalde,https://www.uvaldetx.gov/
+Texas,Bosque County,Valley Mills,http://www.vmtx.us
+Texas,Cooke County,Valley View,http://www.cityofvv.com
+Texas,Van Zandt County,Van,http://www.vantexas.org/
+Texas,Grayson County,Van Alstyne,http://www.cityofvanalstyne.us
+Texas,Culberson County,Van Horn,http://www.vanhorntexas.org/
+Texas,Oldham County,Vega,http://www.oldhamcofc.org/
+Texas,Johnson County,Venus,http://cityofvenus.org
+Texas,Wilbarger County,Vernon,http://www.vernontx.gov/faq.aspx
+Texas,Victoria County,Victoria,https://www.victoriatx.gov/
+Texas,Orange County,Vidor,https://cityofvidor.com/
+Texas,El Paso County,Vinton,http://www.vintontx.govoffice2.com
+Texas,Travis County,Volente,http://www.villageofvolente-tx.gov
+Texas,McLennan County,Waco,http://www.waco-texas.com/
+Texas,Gonzales County,Waelder,http://www.cityofwaelder.org/
+Texas,Bowie County,Wake Village,http://wakevillagetx.com
+Texas,Waller County,Waller,http://www.wallertexas.com
+Texas,Austin County,Wallis,http://www.wallistexas.org
+Texas,Harrison County,Waskom,http://cityofwaskom.com
+Texas,Collin County,Watauga,http://www.ci.watauga.tx.us/
+Texas,Ellis County,Waxahachie,http://www.waxahachie.com
+Texas,Parker County,Weatherford,http://www.weatherfordtx.gov
+Texas,Travis County,Webberville,http://www.webberville.org/village_commission/
+Texas,Harris County,Webster,http://www.cityofwebster.com
+Texas,Colorado County,Weimar,http://weimartexas.org
+Texas,Hidalgo County,Weslaco,http://www.weslacotx.gov
+Texas,McLennan County,West,http://www.cityofwest.com/
+Texas,Brazoria County,West Columbia,http://westcolumbiatx.org
+Texas,Travis County,West Lake Hills,http://www.westlakehills.org/
+Texas,Orange County,West Orange,http://www.cityofwestorange.com/
+Texas,Hunt County,West Tawakoni,http://www.cityofwesttawakoni.com
+Texas,Harris County,West University Place,http://westutx.gov/
+Texas,Tarrant County,Westlake,http://www.westlake-tx.org
+Texas,Collin County,Weston,http://www.westontexas.com
+Texas,Fort Bend County,Weston Lakes,http://cityofwestonlakes-tx.gov
+Texas,Tarrant County,Westover Hills,http://westoverhills.us/
+Texas,Grayson County,Westworth Village,http://www.cityofwestworth.com/
+Texas,Wharton County,Wharton,http://www.cityofwharton.com
+Texas,Wheeler County,Wheeler,http://wheelertexas.org/
+Texas,Carson County,White Deer,http://www.whitedeer.us
+Texas,Gregg County,White Oak,http://www.cityofwhiteoak.com/
+Texas,Washington County,White Settlement,http://www.wstx.us/
+Texas,Smith County,Whitehouse,http://www.whitehousetx.org
+Texas,Grayson County,Whitesboro,http://www.whitesborotexas.com
+Texas,Grayson County,Whitewright,http://www.whitewright.com
+Texas,Hill County,Whitney,http://cityofwhitneytx.org
+Texas,Wichita County,Wichita Falls,http://www.wichitafallstx.gov
+Texas,Montgomery County,Willis,https://www.ci.willis.tx.us/
+Texas,Parker County,Willow Park,http://www.willowpark.org
+Texas,Van Zandt County,Wills Point,https://willspointtx.org/
+Texas,Dallas County,Wilmer,http://www.cityofwilmer.net/
+Texas,Lynn County,Wilson,http://www.tshaonline.org/handbook/online/articles/hlw37
+Texas,Hays County,Wimberley,http://www.cityofwimberley.com
+Texas,Bexar County,Windcrest,http://www.ci.windcrest.tx.us
+Texas,Wood County,Winnsboro,http://winnsborotexas.com
+Texas,Smith County,Winona,http://www.winonatexas.com/
+Texas,Runnels County,Winters,http://www.winters-texas.us
+Texas,Hunt County,Wolfe City,http://wolfecitytx.org
+Texas,Lubbock County,Wolfforth,http://www.wolfforthtx.us
+Texas,Montgomery County,Woodbranch,https://woodbranchtx.us/
+Texas,Hays County,Woodcreek,http://woodcreektx.gov
+Texas,Refugio County,Woodsboro,https://www.woodsborotx.net/
+Texas,Tyler County,Woodville,http://www.woodville-tx.gov/
+Texas,McLennan County,Woodway,https://www.woodwaytexas.gov
+Texas,Collin County,Wylie,http://www.ci.wylie.tx.us/index.php
+Texas,Lavaca County,Yoakum,http://www.cityofyoakum.org
+Texas,DeWitt County,Yorktown,http://www.yorktowntx.com
+Utah,Utah County,Alpine,http://www.alpinecity.org
+Utah,Salt Lake County,Alta,http://www.townofalta.com/
+Utah,Cache County,Amalga,http://www.amalgatown.com/
+Utah,Utah County,American Fork,https://www.americanfork.gov/
+Utah,Washington County,Apple Valley,http://www.applevalleyut.org/
+Utah,Sevier County,Aurora,http://www.auroracity.org/
+Utah,Uintah County,Ballard,http://www.ballardcity.org
+Utah,Beaver County,Beaver,http://www.beaverutah.net
+Utah,San Juan County,Blanding,http://www.visitblanding.com/
+Utah,San Juan County,Bluff,http://townofbluff.org/
+Utah,Salt Lake County,Bluffdale,http://www.bluffdale.com/
+Utah,Davis County,Bountiful,http://bountifulutah.gov
+Utah,Box Elder County,Brigham City,http://brighamcity.utah.gov
+Utah,Garfield County,Bryce Canyon City,http://www.brycecanyoncityut.gov/
+Utah,Emery County,Castle Dale,http://www.emerycounty.com/castledale/castledale.htm
+Utah,Grand County,Castle Valley,http://www.castlevalleyutah.com
+Utah,Iron County,Cedar City,http://www.cedarcity.org
+Utah,Utah County,Cedar Fort,http://www.townofcedarfort.com
+Utah,Utah County,Cedar Hills,http://www.cedarhills.org
+Utah,Sanpete County,Centerfield,https://www.centerfieldcity.org/
+Utah,Davis County,Centerville,http://centervilleut.net
+Utah,Wasatch County,Charleston,http://www.charlestonutah.org/
+Utah,Piute County,Circleville,http://www.circlevilleutah.org/
+Utah,Davis County,Clearfield,https://clearfield.city/
+Utah,Davis County,Clinton,http://clintoncity.net
+Utah,Summit County,Coalville,http://www.coalvillecity.org/
+Utah,Salt Lake County,Copperton,https://coppertonutah.org
+Utah,Box Elder County,Corinne,http://corinnecity.com
+Utah,Salt Lake County,Cottonwood Heights,http://www.cottonwoodheights.utah.gov/
+Utah,Wasatch County,Daniel,http://danielutah.org/
+Utah,Millard County,Delta,http://www.delta.utah.gov/
+Utah,Box Elder County,Deweyville,http://www.townofdeweyville.org/
+Utah,Salt Lake County,Draper,https://www.draperutah.gov
+Utah,Duchesne County,Duchesne,http://www.duchesnecity.com
+Utah,Daggett County,Dutch John,https://dutchjohn.org/
+Utah,Utah County,Eagle Mountain,http://www.emcity.org
+Utah,Utah County,Elk Ridge,http://www.elkridgecity.org
+Utah,Box Elder County,Elwood,http://www.elwoodtown.com
+Utah,Emery County,Emery,http://www.emerycounty.com/emery/emery.htm
+Utah,Emery County,Emigration Canyon,https://www.ecmetro.org/
+Utah,Iron County,Enoch,https://www.cityofenoch.org/
+Utah,Washington County,Enterprise,https://enterpriseutah.org/
+Utah,Sanpete County,Ephraim,http://www.ephraimcity.org/
+Utah,Garfield County,Escalante,http://www.escalantecity-utah.com
+Utah,Juab County,Eureka,http://www.eurekautah.org
+Utah,Sanpete County,Fairview,http://fairviewcity.com/
+Utah,Davis County,Farmington,http://www.farmington.utah.gov
+Utah,Weber County,Farr West,http://farrwestcity.net/
+Utah,Seneca County,Fayette,http://townoffayetteny.org/
+Utah,Emery County,Ferron,http://www.ferroncity.org
+Utah,Millard County,Fillmore,http://www.fillmorecity.org
+Utah,Sanpete County,Fountain Green,http://fountaingreencity.com/
+Utah,Davis County,Fruit Heights,http://www.fruitheightscity.com
+Utah,Box Elder County,Garland,http://www.garlandutah.org
+Utah,Utah County,Genola,http://genola.org
+Utah,Litchfield County,Goshen,http://www.goshenct.gov
+Utah,Tooele County,Grantsville,http://grantsvilleut.gov/gcc/
+Utah,Emery County,Green River,http://greenriverutah.com
+Utah,Sanpete County,Gunnison,http://www.gunnisoncity.org/
+Utah,Wayne County,Hanksville,http://www.hanksvilleutah.gov
+Utah,Butler County,Harmony,http://www.harmony-pa.us
+Utah,Weber County,Harrisville,http://www.cityofharrisville.com/
+Utah,Wasatch County,Heber City,https://www.heberut.gov/
+Utah,Carbon County,Helper,http://www.helpercity.net
+Utah,Salt Lake County,Herriman,http://www.herriman.org
+Utah,Utah County,Highland,http://www.highlandcity.org
+Utah,Washington County,Hildale,http://hildalecity.com/
+Utah,Salt Lake County,Holladay,http://www.cityofholladay.com/
+Utah,Box Elder County,Honeyville,http://www.honeyvillecity.org
+Utah,Weber County,Hooper,http://www.hoopercity.com
+Utah,Emery County,Huntington,https://www.huntingtonut.com/
+Utah,Weber County,Huntsville,http://www.huntsvilletown.com/
+Utah,Washington County,Hurricane,http://www.cityofhurricane.com/
+Utah,Cache County,Hyde Park,http://hydepark.utahlinks.org
+Utah,Cache County,Hyrum,http://hyrumcity.org
+Utah,Wasatch County,Independence,http://www.independenceut.org
+Utah,Wasatch County,Interlaken,http://www.town-of-interlaken.com
+Utah,Washington County,Ivins,http://www.ivins.com/
+Utah,Sevier County,Joseph,http://josephtown.com
+Utah,Summit County,Kamas,https://kamascityut.gov/
+Utah,Kane County,Kanab,http://kanab.utah.gov
+Utah,Iron County,Kanarraville,http://www.kanarraville.org
+Utah,Davis County,Kaysville,http://www.kaysvillecity.com
+Utah,Salt Lake County,Kearns,https://www.kmtutah.org/
+Utah,Washington County,La Verkin,http://www.laverkin.org/
+Utah,Tooele County,Lake Point,https://lakepoint.gov/
+Utah,Rich County,Laketown,http://www.laketownutah.org/
+Utah,Davis County,Layton,http://laytoncity.org
+Utah,Utah County,Lehi,https://www.lehi-ut.gov
+Utah,Juab County,Levan,http://levantown.org
+Utah,Cache County,Lewiston,http://lewiston-ut.org/
+Utah,Utah County,Lindon,http://www.lindoncity.org
+Utah,Cache County,Logan,http://www.loganutah.org
+Utah,Millard County,Lynndyl,http://lynndyl.utah.gov
+Utah,Salt Lake County,Magna,https://www.magnametrotownship.org/
+Utah,Daggett County,Manila,http://www.manilautah.com
+Utah,Sanpete County,Manti,http://manticity.com/
+Utah,Mantua Township,Mantua,https://www.mantuautah.org/
+Utah,Portage County,Mantua,http://mantuavillage.com/
+Utah,Utah County,Mapleton,http://www.mapleton.org
+Utah,Weber County,Marriott-Slaterville,http://www.marriott-slaterville.org/
+Utah,Cache County,Mendon,http://mendoncity.org/
+Utah,Worcester County,Mendon,http://mendonma.gov/
+Utah,Salt Lake County,Midvale,http://www.midvalecity.org/
+Utah,Wasatch County,Midway,http://www.midwaycityut.org/
+Utah,Beaver County,Milford,http://www.milfordcityutah.com
+Utah,Salt Lake County,Millcreek,https://millcreek.us/
+Utah,Cache County,Millville,http://millvillecity.org
+Utah,Grand County,Moab,http://moabcity.org
+Utah,Juab County,Mona,http://www.monacity.org
+Utah,Sevier County,Monroe,http://www.littlegreenvalley.com
+Utah,San Juan County,Monticello,http://www.monticelloutah.org/
+Utah,Morgan County,Morgan,https://morgancityut.org/
+Utah,Sanpete County,Moroni,https://moronicity.org/
+Utah,Sanpete County,Mount Pleasant,http://www.mtpleasantcity.com/
+Utah,Salt Lake County,Murray,http://www.murray.utah.gov/
+Utah,Duchesne County,Myton,http://www.mytoncity.com
+Utah,Uintah County,Naples,http://naplescityut.gov
+Utah,Juab County,Nephi,http://nephi.utah.gov
+Utah,Washington County,New Harmony,http://newharmonyutah.org/
+Utah,Cache County,Nibley,https://www.nibleycity.com/
+Utah,Cache County,North Logan,http://www.ci.north-logan.ut.us/
+Utah,Weber County,North Ogden,https://www.northogdencity.com/
+Utah,Davis County,North Salt Lake,http://nslcity.org
+Utah,Summit County,Oakley,https://www.oakleycity.com/
+Utah,Weber County,Ogden,http://ogdencity.com/
+Utah,Emery County,Orangeville,https://orangevillecity.org/
+Utah,Kane County,Orderville,https://www.townoforderville.com/
+Utah,Utah County,Orem,http://www.orem.org
+Utah,Garfield County,Panguitch,http://panguitch.com
+Utah,Cache County,Paradise,http://paradise.utah.gov
+Utah,Summit County,Park City,http://www.parkcity.org/
+Utah,Iron County,Parowan,http://parowan.org
+Utah,Utah County,Payson,http://www.paysonutah.org
+Utah,Box Elder County,Perry,http://www.perrycity.org
+Utah,Weber County,Plain City,http://plaincityutah.org
+Utah,Utah County,Pleasant Grove,http://www.plgrove.org/
+Utah,Weber County,Pleasant View,http://www.pleasantviewcity.com
+Utah,Portage County,Portage,http://www.citlink.net/~portagetown/
+Utah,Carbon County,Price,http://www.pricecityutah.com
+Utah,Cache County,Providence,http://www.providencecity.com
+Utah,Utah County,Provo,http://www.provo.org/
+Utah,Sevier County,Richfield,http://www.richfieldcity.com
+Utah,Cache County,Richmond,http://richmondutah.org
+Utah,Cache County,River Heights,https://www.riverheights.org/
+Utah,Weber County,Riverdale,http://www.riverdalecity.com/
+Utah,Salt Lake County,Riverton,http://rivertonutah.gov
+Utah,Juab County,Rocky Ridge,http://www.rockyridgetown.com
+Utah,Duchesne County,Roosevelt,http://www.rooseveltcity.com
+Utah,Weber County,Roy,https://www.royutah.org
+Utah,Rush Lake (Tooele County,Rush Valley,http://www.rushvalleytown.com/
+Utah,Utah County,Salem,http://www.salemcity.org
+Utah,Essex County,Salem,http://www.salem.com
+Utah,Sevier County,Salina,http://www.salinacity.org/
+Utah,Salt Lake County,Sandy,http://www.sandy.utah.gov/
+Utah,Washington County,Santa Clara,https://sccity.org/
+Utah,Utah County,Santaquin,http://www.santaquin.org
+Utah,Utah County,Saratoga Springs,http://www.saratogaspringscity.com
+Utah,Saratoga County,Saratoga Springs,http://www.saratoga-springs.org/
+Utah,Carbon County,Scofield,http://www.utah.com/stateparks/scofield.htm
+Utah,Cache County,Smithfield,http://www.smithfieldcity.org
+Utah,Salt Lake County,South Jordan,https://www.sjc.utah.gov
+Utah,Weber County,South Ogden,https://www.southogdencity.com/
+Utah,Salt Lake County,South Salt Lake,https://sslc.gov/
+Utah,Davis County,South Weber,http://www.southwebercity.com
+Utah,Utah County,Spanish Fork,http://www.spanishfork.org
+Utah,Utah County,Springville,http://www.springville.org
+Utah,Washington County,St. George,https://www.sgcity.org/
+Utah,San Joaquin County,Stockton,http://www.stocktongov.com
+Utah,Davis County,Sunset,http://sunset-ut.com
+Utah,Davis County,Syracuse,http://www.syracuseut.com
+Utah,Onondaga County,Syracuse,https://www.syr.gov/
+Utah,Salt Lake County,Taylorsville,http://www.taylorsvilleut.gov/
+Utah,Tooele County,Tooele,http://tooelecity.org/
+Utah,Washington County,Toquerville,https://www.toquerville.org/
+Utah,Wayne County,Torrey,http://www.torreyutah.gov
+Utah,Tazewell County,Tremont,https://www.tremontil.com/
+Utah,Box Elder County,Tremonton,http://www.tremontoncity.com
+Utah,Mercer County,Trenton,https://www.trentonnj.org/
+Utah,Garfield County,Tropic,http://www.townoftropicut.gov
+Utah,Weber County,Uintah,http://www.uintahcity.com/
+Utah,Uintah County,Vernal,http://www.vernalcity.org/
+Utah,Utah County,Vineyard,http://www.vineyard.utah.gov
+Utah,Washington County,Virgin,http://virgin.utah.gov
+Utah,Sanpete County,Wales,https://www.walesutah.org/
+Utah,Washington County,Washington,https://www.washingtoncity.org/
+Utah,Weber County,Washington Terrace,http://www.wt.govoffice.com
+Utah,Carbon County,Wellington,http://wellingtonutah.us
+Utah,Cache County,Wellsville,http://www.wellsvillecity.com
+Utah,Tooele County,Wendover,http://wendovercityutah.com/
+Utah,Davis County,West Bountiful,http://wbcity.org
+Utah,Weber County,West Haven,http://www.westhavencity.com/
+Utah,Salt Lake County,West Jordan,http://www.westjordan.utah.gov
+Utah,Davis County,West Point,http://westpointcity.org
+Utah,Salt Lake County,West Valley City,http://www.wvc-ut.gov/
+Utah,Salt Lake County,White City,https://www.whitecity-ut.org/
+Utah,Box Elder County,Willard,http://www.willardcity.com
+Utah,Utah County,Woodland Hills,http://woodlandhills-ut.gov
+Utah,Davis County,Woods Cross,http://www.woodscross.com
+Vermont,Addison County,Addison,https://www.addisonvt.net/
+Vermont,Grand Isle County,Alburgh,http://alburghvt.org
+Vermont,Grand Isle County,Alburgh (village),http://alburghvt.org/
+Vermont,Bennington County,Arlington,http://www.arlingtonvt.org
+Vermont,Franklin County,Bakersfield,http://townofbakersfield.org
+Vermont,Caledonia County,Barnet,http://www.barnetvermont.org
+Vermont,Washington County,Barre (city),http://www.barrecity.org
+Vermont,Washington County,Barre (town),http://www.barretown.org
+Vermont,Windham County,Bellows Falls (village),https://www.rockinghamvt.org/
+Vermont,Bennington County,Bennington,http://www.townofbennington.org
+Vermont,Rutland County,Benson,http://www.benson-vt.com
+Vermont,Washington County,Berlin,http://www.berlinvt.org
+Vermont,Windsor County,Bethel,http://bethelvt.govoffice3.com
+Vermont,Chittenden County,Bolton,http://boltonvt.com
+Vermont,Orange County,Bradford,http://www.bradford-vt.us/
+Vermont,Orange County,Braintree,http://www.braintreevt.com/
+Vermont,Rutland County,Brandon,http://www.town.brandon.vt.us
+Vermont,Windham County,Brattleboro,http://www.brattleboro.org/
+Vermont,Essex County,Brighton,https://brightonvt.org
+Vermont,Addison County,Bristol,http://bristolvt.org
+Vermont,Orange County,Brookfield,http://www.brookfieldvt.org/
+Vermont,Windham County,Brookline,http://www.brooklinevt.com/
+Vermont,Caledonia County,Burke,http://www.burkevermont.org
+Vermont,Chittenden County,Burlington,http://www.BurlingtonVT.gov
+Vermont,Washington County,Cabot,http://www.cabotvt.us
+Vermont,Washington County,Calais,http://www.calaisvermont.gov
+Vermont,Lamoille County,Cambridge,http://www.cambridge.vermont.gov
+Vermont,Essex County,Canaan,http://www.canaan-vt.org
+Vermont,Rutland County,Castleton,http://castletonvermont.org/
+Vermont,Chittenden County,Charlotte,http://www.charlottevt.org
+Vermont,Orange County,Chelsea,http://www.chelseavt.org
+Vermont,Windsor County,Chester,http://chestervt.gov
+Vermont,Chittenden County,Colchester,http://www.colchestervt.gov
+Vermont,Essex County,Concord,http://www.concordvt.us
+Vermont,Addison County,Cornwall,http://cornwallvt.com
+Vermont,Orleans County,Craftsbury,http://www.townofcraftsbury.com
+Vermont,Caledonia County,Danville,http://www.danvillevermont.org
+Vermont,Bennington County,Dorset,http://dorsetvt.org
+Vermont,Windham County,Dover,https://www.doververmont.com/
+Vermont,Washington County,Duxbury,http://www.duxburyvermont.org
+Vermont,Lamoille County,Eden,http://www.edenvt.org/
+Vermont,Lamoille County,Elmore,http://www.elmorevt.org
+Vermont,Franklin County,Enosburg Falls (village),http://villageofenosburgfalls.org
+Vermont,Franklin County,Enosburgh,http://www.enosburghvermont.org
+Vermont,Chittenden County,Essex,https://www.essexvt.org/
+Vermont,Chittenden County,Essex Junction,http://www.essexjunction.org
+Vermont,Rutland County,Fair Haven,http://www.fairhavenvt.org/
+Vermont,Franklin County,Fairfax,http://www.fairfax-vt.gov
+Vermont,Franklin County,Fairfield,http://fairfieldvermont.us
+Vermont,Orange County,Fairlee,http://www.fairleevt.org/
+Vermont,Washington County,Fayston,http://www.faystonvt.com
+Vermont,Addison County,Ferrisburgh,http://www.ferrisburghvt.org
+Vermont,Franklin County,Franklin,https://www.franklinvermont.org/
+Vermont,Franklin County,Georgia,http://www.townofgeorgia.com
+Vermont,Addison County,Goshen,http://goshenvt.org
+Vermont,Grand Isle County,Grand Isle,http://www.grandislevt.org
+Vermont,Addison County,Granville,http://www.granvillevermont.org
+Vermont,Caledonia County,Groton,http://www.grotonvt.com
+Vermont,Essex County,Guildhall,http://www.guildhallvt.org
+Vermont,Addison County,Hancock,https://www.hancockvt.org/
+Vermont,Caledonia County,Hardwick,http://hardwickvt.org
+Vermont,Windsor County,Hartford,http://www.hartford-vt.org
+Vermont,Franklin County,Highgate,http://highgatevt.org
+Vermont,Chittenden County,Hinesburg,http://www.hinesburg.org
+Vermont,Chittenden County,Huntington,http://huntingtonvt.org
+Vermont,Lamoille County,Hyde Park (town),http://hydeparkvt.com
+Vermont,Lamoille County,Hyde Park (village),http://www.villageofhydepark.com
+Vermont,Grand Isle County,Isle La Motte,http://islelamotte.us
+Vermont,Chittenden County,Jericho,http://www.jerichovt.org
+Vermont,Lamoille County,Johnson,http://www.townofjohnson.com
+Vermont,Rutland County,Killington,http://www.killingtontown.com
+Vermont,Addison County,Leicester,http://www.leicestervt.org
+Vermont,Addison County,Lincoln,http://www.lincolnvermont.org
+Vermont,Windham County,Londonderry,http://www.londonderryvt.org/
+Vermont,Windsor County,Ludlow (town),http://www.ludlow.vt.us
+Vermont,Caledonia County,Lyndon,http://www.lyndonvt.org
+Vermont,Essex County,Maidstone,http://www.maidstone-vt.org
+Vermont,Bennington County,Manchester,http://manchester-vt.gov
+Vermont,Bennington County,Manchester (village),http://villageofmanchester.com
+Vermont,Washington County,Marshfield,http://www.town.marshfield.vt.us/
+Vermont,Addison County,Middlebury,http://www.townofmiddlebury.org
+Vermont,Washington County,Middlesex,http://middlesexvermont.org
+Vermont,Chittenden County,Milton,http://www.miltonvt.org/
+Vermont,Addison County,Monkton,http://monktonvt.com
+Vermont,Franklin County,Montgomery,https://montgomeryvt.us/
+Vermont,Washington County,Montpelier,http://www.montpelier-vt.org/
+Vermont,Washington County,Moretown,http://www.moretownvt.org
+Vermont,Lamoille County,Morristown,http://www.morristownvt.org
+Vermont,Rutland County,Mount Holly,http://www.mounthollyvt.org/
+Vermont,Addison County,New Haven,http://www.newhavenvt.com
+Vermont,Orange County,Newbury (town),http://www.newburyvt.org/
+Vermont,Orleans County,Newport (city),http://www.newportvermont.org/
+Vermont,Bennington County,North Bennington,https://northbennington.org/village/
+Vermont,Grand Isle County,North Hero,http://www.northherovt.com
+Vermont,Washington County,Northfield,http://www.northfield-vt.gov
+Vermont,Windsor County,Norwich,http://www.norwich.vt.us
+Vermont,Addison County,Orwell,https://townoforwellvt.org/
+Vermont,Addison County,Panton,http://www.pantonvt.us
+Vermont,Rutland County,Pawlet,http://pawlet.vt.gov/
+Vermont,Caledonia County,Peacham,http://www.peacham.net
+Vermont,Bennington County,Peru,http://www.peruvt.org/
+Vermont,Washington County,Plainfield,http://www.plainfieldvt.us
+Vermont,Windsor County,Pomfret,http://pomfretvt.us
+Vermont,Bennington County,Pownal,https://www.townofpownal.org/
+Vermont,Windham County,Putney,http://www.putneyvt.org
+Vermont,Orange County,Randolph,http://randolphvt.org
+Vermont,Windsor County,Reading,http://www.readingvt.govoffice.com
+Vermont,Bennington County,Readsboro,http://readsborovt.org
+Vermont,Franklin County,Richford,http://richfordvt.org
+Vermont,Chittenden County,Richmond,http://www.richmondvt.gov
+Vermont,Addison County,Ripton,http://www.riptonvermont.org
+Vermont,Windsor County,Rochester,http://www.rochestervermont.org
+Vermont,Windsor County,Royalton,http://www.royaltonvt.com
+Vermont,Rutland County,Rutland (city),http://www.rutlandcity.org/
+Vermont,Caledonia County,Ryegate,http://www.ryegatevt.org
+Vermont,Addison County,Salisbury,http://townofsalisbury.org
+Vermont,Bennington County,Sandgate,http://www.sandgatevermont.org/
+Vermont,Bennington County,Shaftsbury,http://www.shaftsbury.net
+Vermont,Windsor County,Sharon,http://sharonvt.net
+Vermont,Chittenden County,Shelburne,http://www.shelburnevt.org
+Vermont,Addison County,Shoreham,http://www.shorehamvt.org
+Vermont,Chittenden County,South Burlington,https://www.southburlingtonvt.gov/
+Vermont,Grand Isle County,South Hero,http://www.southherovt.org
+Vermont,Windsor County,Springfield,https://springfieldvt.gov/
+Vermont,Franklin County,St. Albans (city),http://www.stalbansvt.com/
+Vermont,Franklin County,St. Albans (town),http://www.stalbanstown.com
+Vermont,Chittenden County,St. George,http://www.stgeorgevt.com
+Vermont,Caledonia County,St. Johnsbury,http://www.stjvt.com
+Vermont,Bennington County,Stamford,http://stamfordvt.org
+Vermont,Addison County,Starksboro,http://www.starksborovt.org
+Vermont,Windsor County,Stockbridge,http://www.stockbridgevt.org/
+Vermont,Lamoille County,Stowe,http://www.townofstowevt.org
+Vermont,Orange County,Strafford,http://www.straffordvt.net/
+Vermont,Bennington County,Sunderland,http://www.sunderlandvt.org
+Vermont,Franklin County,Swanton (town),http://townofswantonvermont.weebly.com
+Vermont,Franklin County,Swanton (village),http://www.swanton.net
+Vermont,Orange County,Thetford,https://www.thetfordvt.gov/
+Vermont,Orange County,Topsham,http://townoftopshamvt.org
+Vermont,Orange County,Tunbridge,http://www.tunbridgevt.org
+Vermont,Addison County,Vergennes,http://www.vergennes.org
+Vermont,Windham County,Vernon,http://www.vernon-vt.org/
+Vermont,Washington County,Waitsfield,http://www.waitsfieldvt.us
+Vermont,Rutland County,Wallingford,http://www.wallingfordvt.com/
+Vermont,Addison County,Waltham,https://sites.google.com/site/townofwalthamvermont/
+Vermont,Washington County,Warren,http://www.warrenvt.org
+Vermont,Washington County,Waterbury,http://www.waterburyvt.com
+Vermont,Lamoille County,Waterville,http://www.watervillevt.org
+Vermont,Windsor County,Weathersfield,http://www.weathersfield.org
+Vermont,Windsor County,West Windsor,http://www.westwindsorvt.govoffice2.com
+Vermont,Chittenden County,Westford,http://westfordvt.us
+Vermont,Windham County,Westminster,http://www.westminstervt.org/
+Vermont,Windsor County,Weston,http://www.westonvt.com
+Vermont,Addison County,Weybridge,http://www.townofweybridge.org
+Vermont,Chittenden County,Williston,http://www.town.williston.vt.us
+Vermont,Windham County,Wilmington,http://www.wilmingtonvermont.us/
+Vermont,Windsor County,Windsor,http://www.windsorvt.org
+Vermont,Bennington County,Winhall,http://www.winhall.org
+Vermont,Chittenden County,Winooski,https://www.winooskivt.gov/
+Vermont,Lamoille County,Wolcott,http://www.wolcottvt.org
+Vermont,Bennington County,Woodford,http://woodfordvt.org
+Vermont,Windsor County,Woodstock,https://www.woodstockvt.com/
+Virginia,Washington County,Abingdon,http://www.abingdon-va.gov
+Virginia,Accomack County,Accomac,http://accomac.org
+Virginia,Amherst County,Amherst,http://www.amherstva.gov/
+Virginia,Amherst County,Appomattox,https://townofappomattox.com/
+Virginia,Amherst County,Arlington,http://www.arlingtonva.us/
+Virginia,Bedford County,Bedford,http://www.bedfordva.gov
+Virginia,Chesterfield County,Berryville,http://www.berryvilleva.gov
+Virginia,Caroline County,Bowling Green,http://www.townofbowlinggreen.com/
+Virginia,Charlotte County,Charlotte Court House,http://www.towncch.com
+Virginia,Accomack County,Charlottesville,http://www.charlottesville.gov/
+Virginia,Pittsylvania County,Chatham,http://www.chatham-va.gov/
+Virginia,Montgomery County,Christiansburg,http://www.christiansburg.org/
+Virginia,Dickenson County,Clintwood,http://www.townofclintwood.com
+Virginia,Accomack County,Covington,https://covington.va.us/
+Virginia,Culpeper County,Culpeper,http://www.culpeperva.gov
+Virginia,Northampton County,Eastville,http://eastville.esva.net/
+Virginia,Greene County,Emporia,http://www.ci.emporia.va.us/
+Virginia,Essex County,Fairfax,http://www.fairfaxva.gov
+Virginia,Prince Edward County,Farmville,http://www.farmvilleva.com
+Virginia,Floyd County,Floyd,https://floydcova.org/
+Virginia,Warren County,Front Royal,http://www.frontroyalva.com
+Virginia,Scott County,Gate City,http://www.mygatecity.com/
+Virginia,Gloucester County,Gloucester,https://www.gloucesterva.info/
+Virginia,Buchanan County,Grundy,https://www.townofgrundy.com/
+Virginia,Halifax County,Halifax,http://townofhalifax.com
+Virginia,Richmond County,Harrisonburg,https://www.harrisonburgva.gov/
+Virginia,Carroll County,Hillsville,http://www.townofhillsville.com
+Virginia,Grayson County,Independence,http://www.independenceva.com
+Virginia,Lee County,Jonesville,http://www.townofjonesville.org
+Virginia,Brunswick County,Lawrenceville,https://lawrencevilleweb.us/
+Virginia,Russell County,Lebanon,http://www.lebanonva.net/
+Virginia,Loudoun County,Leesburg,http://www.leesburgva.gov
+Virginia,Richmond County,Lexington,http://lexingtonva.gov/
+Virginia,Louisa County,Louisa,http://louisatown.org/
+Virginia,Page County,Luray,http://www.townofluray.com
+Virginia,Madison County,Madison,http://www.madisonco.virginia.gov/
+Virginia,File:Flag of Prince William County,Manassas,http://www.manassasva.gov
+Virginia,Smyth County,Marion,http://www.marionva.org/
+Virginia,Henrico County,Martinsville,http://www.martinsville-va.gov
+Virginia,Westmoreland County,Montross,https://www.townofmontross.org
+Virginia,Orange County,Orange,http://www.townoforangeva.org/index.asp?NID=31
+Virginia,Giles County,Pearisburg,http://www.pearisburg.org
+Virginia,Pulaski County,Pulaski,http://www.pulaskitown.org/
+Virginia,Franklin County,Rocky Mount,http://www.rockymountva.org
+Virginia,Richmond County,Salem,http://www.salemva.gov/
+Virginia,Stafford County,Stafford,https://staffordcountyva.gov/
+Virginia,Stafford County,Stafford,https://www.staffordbc.gov.uk
+Virginia,Greene County,Stanardsville,http://www.stanardsville.org
+Virginia,Amherst County,Staunton,http://www.staunton.va.us/
+Virginia,Patrick County,Stuart,http://www.townofstuartva.com/
+Virginia,Essex County,Tappahannock,http://www.tappahannock-va.gov
+Virginia,Tazewell County,Tazewell,http://www.townoftazewell.org/
+Virginia,Fauquier County,Warrenton,http://www.warrentonva.gov
+Virginia,Richmond County,Warsaw,https://www.townofwarsaw.com/government
+Virginia,Rappahannock County,Washington,http://washingtonva.gov
+Virginia,Isle of Wight County,Williamsburg,http://www.williamsburgva.gov/
+Virginia,Franklin County,Winchester,http://www.winchesterva.gov/
+Virginia,Wise County,Wise,http://www.townofwise.net/
+Virginia,Shenandoah County,Woodstock,https://townofwoodstockva.gov/
+Virginia,Wythe County,Wytheville,http://www.wytheville.org/
+Washington,Grays Harbor County,Aberdeen,http://www.aberdeenwa.gov
+Washington,Spokane County,Airway Heights,http://cawh.org/
+Washington,King County,Algona,http://www.algonawa.gov/
+Washington,Skagit County,Anacortes,http://www.cityofanacortes.org/
+Washington,Snohomish County,Arlington,http://www.arlingtonwa.gov
+Washington,Asotin County,Asotin,http://cityofasotin.org/
+Washington,King County,Auburn,https://www.auburnwa.gov/
+Washington,Kitsap County,Bainbridge Island,https://www.bainbridgewa.gov/
+Washington,Clark County,Battle Ground,http://www.cityofbg.org/
+Washington,King County,Bellevue,http://www.bellevuewa.gov
+Washington,Whatcom County,Bellingham,https://cob.org/
+Washington,Benton County,Benton City,http://ci.benton-city.wa.us
+Washington,Klickitat County,Bingen,http://www.bingenwashington.org/
+Washington,King County,Black Diamond,https://www.blackdiamondwa.gov
+Washington,Whatcom County,Blaine,http://www.cityofblaine.com/
+Washington,Pierce County,Bonney Lake,http://www.ci.bonney-lake.wa.us/
+Washington,King County,Bothell,http://www.bothellwa.gov/
+Washington,Kitsap County,Bremerton,http://www.ci.bremerton.wa.us
+Washington,Okanogan County,Brewster,http://www.cityofbrewsterwashington.org/
+Washington,Douglas County,Bridgeport,http://www.bridgeportwashington.net/
+Washington,Snohomish County,Brier,http://www.ci.brier.wa.us/
+Washington,Pierce County,Buckley,http://www.cityofbuckley.com/
+Washington,King County,Burien,http://www.burienwa.gov/
+Washington,Skagit County,Burlington,http://burlingtonwa.gov
+Washington,Clark County,Camas,https://www.cityofcamas.us/
+Washington,King County,Carnation,http://www.carnationwa.gov/
+Washington,Chelan County,Cashmere,http://www.cityofcashmere.org/
+Washington,Cowlitz County,Castle Rock,http://ci.castle-rock.wa.us/
+Washington,Lewis County,Centralia,http://www.cityofcentralia.com/
+Washington,Lewis County,Chehalis,http://www.ci.chehalis.wa.us/
+Washington,Chelan County,Chelan,http://www.cityofchelan.com/
+Washington,Spokane County,Cheney,http://www.cityofcheney.org/
+Washington,Stevens County,Chewelah,http://www.cityofchewelah.org/
+Washington,Asotin County,Clarkston,http://www.clarkston-wa.com/
+Washington,Kittitas County,Cle Elum,http://www.cityofcleelum.com
+Washington,King County,Clyde Hill,http://www.clydehill.org/
+Washington,Whitman County,Colfax,http://www.colfaxwa.org/
+Washington,Walla Walla County,College Place,http://www.cpwa.us/
+Washington,Stevens County,Colville,http://www.colville.wa.us/
+Washington,Franklin County,Connell,http://www.cityofconnell.com/
+Washington,Grays Harbor County,Cosmopolis,http://cosmopoliswa.gov/
+Washington,King County,Covington,http://www.covingtonwa.gov/
+Washington,Lincoln County,Davenport,http://www.davenportwa.us
+Washington,Columbia County,Dayton,http://www.daytonwa.com/
+Washington,Spokane County,Deer Park,http://www.cityofdeerparkwa.com/
+Washington,King County,Des Moines,https://www.desmoineswa.gov/
+Washington,Pierce County,DuPont,http://dupontwa.gov
+Washington,King County,Duvall,http://www.duvallwa.gov/
+Washington,Douglas County,East Wenatchee,http://www.east-wenatchee.com
+Washington,Pierce County,Edgewood,http://www.cityofedgewood.org/
+Washington,Snohomish County,Edmonds,http://edmondswa.gov
+Washington,Grant County,Electric City,http://www.electriccity.us/
+Washington,Kittitas County,Ellensburg,http://www.ci.ellensburg.wa.us/
+Washington,Grays Harbor County,Elma,http://www.cityofelma.com/
+Washington,Chelan County,Entiat,https://www.entiatwa.us/
+Washington,King County,Enumclaw,http://www.cityofenumclaw.net/
+Washington,Grant County,Ephrata,http://www.ephrata.org/
+Washington,Snohomish County,Everett,http://everettwa.gov
+Washington,Whatcom County,Everson,http://www.ci.everson.wa.us/
+Washington,King County,Federal Way,https://www.cityoffederalway.com/
+Washington,Whatcom County,Ferndale,https://www.cityofferndale.org/
+Washington,Pierce County,Fife,https://www.cityoffife.org/
+Washington,Pierce County,Fircrest,http://www.cityoffircrest.net/
+Washington,Clallam County,Forks,https://forkswashington.org/
+Washington,Grant County,George,http://www.cityofgeorge.org/
+Washington,Pierce County,Gig Harbor,http://www.cityofgigharbor.net/
+Washington,Snohomish County,Gold Bar,https://cityofgoldbar.us/
+Washington,Klickitat County,Goldendale,http://www.cityofgoldendale.com/
+Washington,Yakima County,Grandview,https://grandview.wa.us/
+Washington,Yakima County,Granger,https://www.grangerwashington.org/
+Washington,Snohomish County,Granite Falls,http://granitefallswa.gov
+Washington,Lincoln County,Harrington,http://www.harringtonbiz.com
+Washington,Grays Harbor County,Hoquiam,http://www.cityofhoquiam.com/
+Washington,Pacific County,Ilwaco,http://www.ilwaco-wa.gov/
+Washington,King County,Issaquah,https://www.issaquahwa.gov/
+Washington,Cowlitz County,Kalama,https://www.cityofkalama.com/
+Washington,Cowlitz County,Kelso,http://www.kelso.gov/
+Washington,King County,Kenmore,http://www.kenmorewa.gov
+Washington,Benton County,Kennewick,https://www.go2kennewick.com/
+Washington,King County,Kent,https://www.kentwa.gov/
+Washington,Stevens County,Kettle Falls,http://www.kettle-falls.com/
+Washington,King County,Kirkland,http://www.kirklandwa.gov
+Washington,Kittitas County,Kittitas,http://www.cityofkittitas.com
+Washington,Clark County,La Center,https://ci.lacenter.wa.us/
+Washington,Thurston County,Lacey,https://cityoflacey.org/
+Washington,King County,Lake Forest Park,https://www.cityoflfp.gov/
+Washington,Snohomish County,Lake Stevens,http://lakestevenswa.gov
+Washington,Pierce County,Lakewood,https://www.cityoflakewood.us/
+Washington,Island County,Langley,http://www.langleywa.org
+Washington,Chelan County,Leavenworth,http://www.cityofleavenworth.com
+Washington,Spokane County,Liberty Lake,https://www.libertylakewa.gov/
+Washington,Pacific County,Long Beach,http://www.longbeachwa.gov/
+Washington,Cowlitz County,Longview,http://www.mylongview.com
+Washington,Whatcom County,Lynden,https://www.lyndenwa.org/
+Washington,Snohomish County,Lynnwood,http://www.lynnwoodwa.gov/
+Washington,Yakima County,Mabton,https://www.cityofmabton.com/
+Washington,King County,Maple Valley,http://www.maplevalleywa.gov/
+Washington,Snohomish County,Marysville,http://www.marysvillewa.gov/
+Washington,Grant County,Mattawa,http://www.cityofmattawa.com/
+Washington,Grays Harbor County,McCleary,http://www.cityofmccleary.com/
+Washington,Spokane County,Medical Lake,https://medical-lake.org/
+Washington,King County,Medina,http://www.medina-wa.gov/
+Washington,King County,Mercer Island,https://www.mercerisland.gov
+Washington,Snohomish County,Mill Creek,https://www.cityofmillcreek.com/
+Washington,Spokane County,Millwood,http://millwoodwa.us/
+Washington,Pierce County,Milton,http://www.cityofmilton.net/
+Washington,Snohomish County,Monroe,http://www.ci.monroe.wa.us/
+Washington,Grays Harbor County,Montesano,http://www.cityofmontesano.com
+Washington,Lewis County,Morton,http://www.visitmorton.com/
+Washington,Grant County,Moses Lake,http://www.cityofml.com/
+Washington,Lewis County,Mossyrock,http://www.cityofmossyrock.com/
+Washington,Skagit County,Mount Vernon,http://www.mountvernonwa.gov/
+Washington,Snohomish County,Mountlake Terrace,http://cityofmlt.com
+Washington,Yakima County,Moxee,https://cityofmoxee.us/
+Washington,Snohomish County,Mukilteo,http://mukilteowa.gov
+Washington,Lewis County,Napavine,http://www.cityofnapavine.com/
+Washington,King County,Newcastle,http://www.newcastlewa.gov
+Washington,Pend Oreille County,Newport,http://www.newport-wa.org/
+Washington,Whatcom County,Nooksack,http://www.cityofnooksack.com/
+Washington,King County,Normandy Park,https://normandyparkwa.gov/
+Washington,King County,North Bend,https://northbendwa.gov/
+Washington,Skamania County,North Bonneville,http://www.northbonneville.net/
+Washington,Island County,Oak Harbor,http://www.oakharbor.org/
+Washington,Grays Harbor County,Oakville,http://www.oakvillecityhall.com/
+Washington,Grays Harbor County,Ocean Shores,http://www.osgov.com/
+Washington,Okanogan County,Okanogan,http://www.okanogancity.com
+Washington,Thurston County,Olympia,http://www.olympiawa.gov
+Washington,Okanogan County,Omak,http://www.omakcity.com
+Washington,Okanogan County,Oroville,http://www.oroville-wa.com
+Washington,Pierce County,Orting,http://www.cityoforting.org
+Washington,Adams County,Othello,https://www.othellowa.gov/
+Washington,King County,Pacific,http://www.pacificwa.gov/
+Washington,Whitman County,Palouse,http://www.visitpalouse.com/
+Washington,Franklin County,Pasco,http://www.pasco-wa.gov/
+Washington,Okanogan County,Pateros,http://www.pateros.com/
+Washington,Garfield County,Pomeroy,https://www.cityofpomeroy1.com/
+Washington,Clallam County,Port Angeles,https://www.cityofpa.us/
+Washington,Kitsap County,Port Orchard,http://www.cityofportorchard.us
+Washington,Jefferson County,Port Townsend,http://www.cityofpt.us
+Washington,Kitsap County,Poulsbo,http://www.cityofpoulsbo.com
+Washington,Walla Walla County,Prescott,http://www.prescottwa.com/
+Washington,Benton County,Prosser,http://cityofprosser.com/
+Washington,Whitman County,Pullman,http://www.pullman-wa.gov/
+Washington,Whitman County,Puyallup,https://www.cityofpuyallup.org/
+Washington,Grant County,Quincy,http://quincywashington.us/
+Washington,Thurston County,Rainier,http://cityofrainierwa.org/
+Washington,Pacific County,Raymond,http://cityofraymond.com/
+Washington,King County,Redmond,http://redmond.gov
+Washington,King County,Renton,https://www.rentonwa.gov/
+Washington,Ferry County,Republic,http://www.republicwa.org/
+Washington,Benton County,Richland,http://www.ci.richland.wa.us/
+Washington,Clark County,Ridgefield,https://ridgefieldwa.us/
+Washington,Adams County,Ritzville,http://www.cityofritzville.com/
+Washington,Douglas County,Rock Island,http://rockislandwa.org/
+Washington,Kittitas County,Roslyn,http://www.ci.roslyn.wa.us/
+Washington,Pierce County,Roy,http://www.cityofroywa.us/
+Washington,Grant County,Royal City,http://www.royalcitywa.org/
+Washington,Pierce County,Ruston,http://www.rustonwa.org/
+Washington,King County,Sammamish,http://www.sammamish.us
+Washington,King County,SeaTac,https://www.seatacwa.gov
+Washington,Skagit County,Sedro-Woolley,https://www.ci.sedro-woolley.wa.us
+Washington,Yakima County,Selah,https://selahwa.gov/
+Washington,Clallam County,Sequim,http://www.sequimwa.gov/
+Washington,Mason County,Shelton,http://www.ci.shelton.wa.us/
+Washington,King County,Shoreline,http://www.shorelinewa.gov/
+Washington,Snohomish County,Snohomish,https://www.snohomishwa.gov/
+Washington,King County,Snoqualmie,http://www.snoqualmiewa.gov
+Washington,Grant County,Soap Lake,https://www.soaplakewa.gov/
+Washington,Pacific County,South Bend,http://www.southbend-wa.gov/
+Washington,Spokane County,Spokane,https://my.spokanecity.org/
+Washington,Spokane County,Spokane Valley,https://www.spokanevalley.org/
+Washington,Lincoln County,Sprague,https://sprague-wa.us/
+Washington,Snohomish County,Stanwood,https://stanwoodwa.org/
+Washington,Skamania County,Stevenson,http://www.cityofstevenson.com/
+Washington,Snohomish County,Sultan,http://ci.sultan.wa.us
+Washington,Whatcom County,Sumas,http://cityofsumas.com/
+Washington,Pierce County,Sumner,https://sumnerwa.gov/
+Washington,Yakima County,Sunnyside,http://sunnyside-wa.gov/
+Washington,Yakima County,Tacoma,https://www.cityoftacoma.org/
+Washington,Whitman County,Tekoa,http://www.tekoawa.com/
+Washington,Thurston County,Tenino,https://cityoftenino.us/
+Washington,Yakima County,Tieton,http://cityoftieton.com/
+Washington,Lewis County,Toledo,http://www.toledowa.us/
+Washington,Okanogan County,Tonasket,http://www.tonasketcity.org/
+Washington,Yakima County,Toppenish,http://www.cityoftoppenish.us/
+Washington,King County,Tukwila,http://www.tukwilawa.gov
+Washington,Thurston County,Tumwater,http://www.ci.tumwater.wa.us/
+Washington,Yakima County,Union Gap,https://uniongapwa.gov/
+Washington,Pierce County,University Place,http://cityofup.com/
+Washington,Lewis County,Vader,http://www.vaderwa.org/
+Washington,Clark County,Vancouver,https://www.cityofvancouver.us/
+Washington,Walla Walla County,Waitsburg,http://www.cityofwaitsburg.com/
+Washington,Walla Walla County,Walla Walla,https://www.wallawallawa.gov/
+Washington,Yakima County,Wapato,https://wapato-city.org/
+Washington,Grant County,Warden,http://www.cityofwarden.org/
+Washington,Clark County,Washougal,http://www.cityofwashougal.us/
+Washington,Chelan County,Wenatchee,http://www.wenatcheewa.gov
+Washington,Benton County,West Richland,http://www.westrichland.org/
+Washington,Grays Harbor County,Westport,https://www.ci.westport.wa.us/
+Washington,Klickitat County,White Salmon,http://white-salmon.net/
+Washington,Lewis County,Winlock,https://cityofwinlock.com/
+Washington,King County,Woodinville,http://www.ci.woodinville.wa.us/
+Washington,Cowlitz County,Woodland,http://www.ci.woodland.wa.us/
+Washington,Snohomish County,Woodway,https://www.townofwoodway.com/
+Washington,Yakima County,Yakima,https://www.yakimawa.gov/
+Washington,Thurston County,Yelm,https://ci.yelm.wa.us/
+Washington,Yakima County,Zillah,https://www.cityofzillah.us/
+West Virginia,Greenbrier County,Alderson,http://aldersonwv.org
+West Virginia,Fayette County,Ansted,http://www.anstedwv.com/
+West Virginia,Mercer County,Athens,http://www.townofathens.com
+West Virginia,Putnam County,Bancroft,http://www.local.wv.gov/bancroft/Pages/default.aspx
+West Virginia,Cabell County,Barboursville,http://www.barboursville.org/
+West Virginia,Marion County,Barrackville,https://local.wv.gov/barrackville/Pages/default.aspx
+West Virginia,Raleigh County,Beckley,http://www.beckley.org/
+West Virginia,Kanawha County,Belle,http://townofbelle.com/
+West Virginia,Fayette County,Benwood,https://www.benwoodwv.com/
+West Virginia,Morgan County,Berkeley Springs,http://www.berkeleysprings.com/
+West Virginia,Brooke County,Bethany,https://www.bethanywv.org/
+West Virginia,Mercer County,Bluefield,http://www.cityofbluefield.com
+West Virginia,Jefferson County,Bolivar,http://www.bolivarwv.org/
+West Virginia,Harrison County,Bridgeport,http://www.bridgeportwv.com/
+West Virginia,Upshur County,Buckhannon,http://www.buckhannonwv.org/
+West Virginia,Putnam County,Buffalo,https://buffalo.wv.gov/
+West Virginia,Hampshire County,Capon Bridge,http://townofcaponbridge.wv.gov/Pages/default.aspx
+West Virginia,Logan County,Chapmanville,https://townofchapmanville.com
+West Virginia,Jefferson County,Charles Town,http://www.charlestownwv.us/
+West Virginia,Kanawha County,Charleston,https://charlestonwv.gov/
+West Virginia,Hancock County,Chester,http://chesterwv.org/
+West Virginia,Harrison County,Clarksburg,http://www.cityofclarksburgwv.com/
+West Virginia,Kanawha County,Clendenin,http://www.clendeninwv.org/
+West Virginia,Boone County,Danville,https://local.wv.gov/danville/
+West Virginia,Mingo County,Delbarton,http://delbartonwv.us
+West Virginia,Kanawha County,Dunbar,http://www.cityofdunbarwv.gov
+West Virginia,Putnam County,Eleanor,http://eleanorwv.com/
+West Virginia,Mineral County,Elk Garden,http://www.mineralcountywv.com/elkgarden/index.asp
+West Virginia,Randolph County,Elkins,http://www.CityOfElkinsWV.com/
+West Virginia,Ritchie County,Ellenboro,https://local.wv.gov/Ellenboro/Pages/default.aspx
+West Virginia,Marion County,Fairmont,http://fairmontwv.gov/
+West Virginia,Fayette County,Fayetteville,https://fayettevillewv.gov/
+West Virginia,Brooke County,Follansbee,https://thecityoffollansbee.com/
+West Virginia,Pendleton County,Franklin,http://www.local.wv.gov/Franklin
+West Virginia,Jefferson County,Glen Dale,http://www.cityofglendalewv.com/
+West Virginia,Gilmer County,Glenville,http://cityofglenvillewv.com/
+West Virginia,Taylor County,Grafton,http://www.graftonwv.org/
+West Virginia,Lincoln County,Hamlin,https://local.wv.gov/hamlin/Pages/default.aspx
+West Virginia,Jefferson County,Harpers Ferry,http://www.harpersferrywv.us/
+West Virginia,Summers County,Hinton,http://www.hintonwva.com
+West Virginia,Cabell County,Huntington,http://www.cityofhuntington.com
+West Virginia,Putnam County,Hurricane,http://www.hurricanewv.com/
+West Virginia,Lewis County,Jane Lew,http://townofjanelew.com
+West Virginia,Wayne County,Kenova,https://kenovawv.com/
+West Virginia,Mineral County,Keyser,https://www.cityofkeyser.com/
+West Virginia,McDowell County,Keystone,http://www.coalcampusa.com/sowv/flattop/keystone/keystone.htm
+West Virginia,Preston County,Kingwood,https://www.kingwoodwv.org
+West Virginia,Greenbrier County,Lewisburg,http://www.lewisburg-wv.org/
+West Virginia,Raleigh County,Mabscott,https://local.wv.gov/Mabscott/Pages/default.aspx
+West Virginia,Boone County,Madison,http://local.wv.gov/madison
+West Virginia,Marion County,Mannington,https://www.cityofmannington.com/
+West Virginia,Kanawha County,Marmet,http://townofmarmetwv.us/
+West Virginia,Berkeley County,Martinsburg,http://www.cityofmartinsburg.org/
+West Virginia,Mason County,Mason,https://local.wv.gov/Mason/Pages/default.aspx
+West Virginia,Hampshire County,McMechen,http://www.local.wv.gov/mcmechen/Pages/default.aspx
+West Virginia,Cabell County,Milton,https://www.cityofmiltonwv.com/
+West Virginia,Marion County,Monongah,http://www.local.wv.gov/monongah/Pages/default.aspx
+West Virginia,Hardy County,Moorefield,https://www.townofmoorefield.com/
+West Virginia,Wood County,Morgantown,http://www.morgantownwv.gov/
+West Virginia,Fayette County,Moundsville,http://www.cityofmoundsville.com/
+West Virginia,Fayette County,Mount Hope,http://mthopewv.org/
+West Virginia,Hancock County,New Cumberland,https://www.cityofnewcumberland.net/
+West Virginia,Mason County,New Haven,https://www.townofnewhavenwv.com/
+West Virginia,Wetzel County,New Martinsville,http://www.cityofnewmartinsvillewv.com/
+West Virginia,Kanawha County,Nitro,http://www.cityofnitro.org/
+West Virginia,Wood County,North Hills,https://northhillswv.com
+West Virginia,Harrison County,Nutter Fort,http://townofnutterfort.com/
+West Virginia,Fayette County,Oak Hill,https://oakhillwv.gov
+West Virginia,Wetzel County,Paden City,https://padencity.org/
+West Virginia,Wood County,Parkersburg,https://parkersburgcity.com
+West Virginia,Tucker County,Parsons,https://cityofparsonswv.com/
+West Virginia,Ritchie County,Pennsboro,https://local.wv.gov/Pennsboro
+West Virginia,Grant County,Petersburg,https://local.wv.gov/Petersburg
+West Virginia,Mingo County,Philippi,http://www.philippi.org/
+West Virginia,Mineral County,Piedmont,https://local.wv.gov/Piedmont/Pages/default.aspx
+West Virginia,Marion County,Pleasant Valley,http://www.cityofpleasantvalley.com
+West Virginia,Mason County,Point Pleasant,http://www.ptpleasantwv.org/
+West Virginia,Kanawha County,Pratt,http://townofpratt.com/
+West Virginia,Mercer County,Princeton,http://www.cityofprinceton.org/
+West Virginia,Greenbrier County,Rainelle,http://www.rainelle-wv.com
+West Virginia,Jefferson County,Ranson,http://www.cityofransonwv.net/
+West Virginia,Jackson County,Ravenswood,https://cityofravenswood.com
+West Virginia,Nicholas County,Richwood,https://www.cityofrichwoodwv.com/
+West Virginia,Jackson County,Ripley,http://www.cityofripley.org/
+West Virginia,Hampshire County,Romney,http://townofromney.com
+West Virginia,Greenbrier County,Ronceverte,https://www.cityofronceverte.com/
+West Virginia,Harrison County,Salem,https://local.wv.gov/Salem/Pages/default.aspx
+West Virginia,Jefferson County,Shepherdstown,https://shepherdstown.info/
+West Virginia,Harrison County,Shinnston,http://www.shinnstonwv.com/
+West Virginia,Tyler County,Sistersville,https://www.cityofsistersville.com/
+West Virginia,Raleigh County,Sophia,https://local.wv.gov/Sophia/Pages/default.aspx
+West Virginia,Kanawha County,South Charleston,http://cityofsouthcharleston.com/
+West Virginia,Roane County,Spencer,http://www.cityofspencer.com/
+West Virginia,Kanawha County,St. Albans,http://www.stalbanswv.com/
+West Virginia,Pleasants County,St. Marys,https://stmarys.wv.gov/Pages/default.aspx
+West Virginia,Pleasants County,Star City,http://www.starcitywv.com
+West Virginia,Harrison County,Stonewood,https://www.cityofstonewood.com
+West Virginia,Nicholas County,Summersville,https://www.summersvillewv.org/
+West Virginia,Braxton County,Sutton,http://suttonwv.com/home.aspx
+West Virginia,Boone County,Sylvester,https://local.wv.gov/Sylvester/
+West Virginia,Monroe County,Union,https://local.wv.gov/union/Pages/default.aspx
+West Virginia,Wood County,Vienna,https://vienna-wv.com/
+West Virginia,McDowell County,War,http://www.warwestvirginia.com/
+West Virginia,Webster County,Webster Springs,https://local.wv.gov/Addison/Pages/default.aspx
+West Virginia,Hancock County,Weirton,https://www.cityofweirton.com/
+West Virginia,McDowell County,Welch,https://local.wv.gov/welch/Pages/default.aspx
+West Virginia,Brooke County,Wellsburg,https://www.cityofwellsburg.us/
+West Virginia,Lincoln County,West Hamlin,http://local.wv.gov/westhamlin
+West Virginia,Lewis County,Weston,http://www.cityofwestonwv.com
+West Virginia,Cabell County,Westover,https://www.westoverwv.org
+West Virginia,Ohio County,Wheeling,http://www.wheelingwv.gov/
+West Virginia,Greenbrier County,White Sulphur Springs,https://www.whitesulphurspringswv.org/
+West Virginia,Boone County,Whitesville,http://whitesvillewv.com/
+West Virginia,Mingo County,Williamson,http://cityofwilliamson.org
+West Virginia,Wood County,Williamstown,https://williamstownwv.org/
+West Virginia,Putnam County,Winfield,http://www.cityofwinfield.net/
+Wisconsin,Clark County,Abbotsford,http://www.ci.abbotsford.wi.us
+Wisconsin,Adams County,Adams,http://www.cityofadams-wi.gov/
+Wisconsin,Kewaunee County,Algoma,http://www.algomacity.org
+Wisconsin,Buffalo County,Alma,http://cityofalmawi.com
+Wisconsin,Eau Claire County,Altoona,http://www.ci.altoona.wi.us
+Wisconsin,Polk County,Amery,http://www.amerywisconsin.org
+Wisconsin,Langlade County,Antigo,http://www.antigo-city.org
+Wisconsin,Outagamie County,Appleton,http://www.appleton.org
+Wisconsin,Trempealeau County,Arcadia,http://cityofarcadiawi.com/
+Wisconsin,Ashland County,Ashland,http://www.coawi.org
+Wisconsin,Eau Claire County,Augusta,http://cityofaugusta.org
+Wisconsin,Sauk County,Baraboo,http://www.cityofbaraboo.com/
+Wisconsin,Barron County,Barron,http://cityofbarron.com
+Wisconsin,Bayfield County,Bayfield,http://cityofbayfield.com
+Wisconsin,Dodge County,Beaver Dam,http://www.cityofbeaverdam.com
+Wisconsin,Rock County,Beloit,http://www.beloitwi.gov/
+Wisconsin,Green Lake County,Berlin,http://cityofberlin.net
+Wisconsin,Jackson County,Black River Falls,http://blackriverfalls.us
+Wisconsin,Trempealeau County,Blair,http://cityofblair.org
+Wisconsin,Chippewa County,Bloomer,http://ci.bloomer.wi.us
+Wisconsin,Grant County,Boscobel,http://www.boscobelwisconsin.com/
+Wisconsin,Calumet County,Brillion,http://www.ci.brillion.wi.us
+Wisconsin,Green County,Brodhead,http://cityofbrodheadwi.us
+Wisconsin,Waukesha County,Brookfield,http://ci.brookfield.wi.us
+Wisconsin,Buffalo County,Buffalo City,http://www.buffalocitywisconsin.com
+Wisconsin,Racine County,Burlington,http://www.burlington-wi.gov
+Wisconsin,Ozaukee County,Cedarburg,http://www.ci.cedarburg.wi.us/
+Wisconsin,Barron County,Chetek,http://cityofchetek-wi.gov
+Wisconsin,Calumet County,Chilton,http://chilton.govoffice.com
+Wisconsin,Chippewa County,Chippewa Falls,http://www.ci.chippewa-falls.wi.us
+Wisconsin,Waupaca County,Clintonville,http://clintonvillewi.org
+Wisconsin,Clark County,Colby,http://www.ci.colby.wi.us
+Wisconsin,Columbia County,Columbus,http://www.cityofcolumbuswi.com/
+Wisconsin,Chippewa County,Cornell,http://cityofcornell.com
+Wisconsin,Forest County,Crandon,http://www.cityofcrandon.info/
+Wisconsin,Grant County,Cuba City,http://cubacity.org
+Wisconsin,Milwaukee County,Cudahy,http://www.cudahy-wi.gov
+Wisconsin,Barron County,Cumberland,http://www.cityofcumberland.net
+Wisconsin,Lafayette County,Darlington,http://darlingtonwi.org
+Wisconsin,Brown County,De Pere,https://www.deperewi.gov/
+Wisconsin,Waukesha County,Delafield,http://www.cityofdelafield.com
+Wisconsin,Waukesha County Airport,Delavan,http://www.ci.delavan.wi.us/
+Wisconsin,Iowa County,Dodgeville,http://cityofdodgeville.com
+Wisconsin,Pepin County,Durand,http://durand-wi.com/
+Wisconsin,Vilas County,Eagle River,http://eagleriver.govoffice2.com
+Wisconsin,Eau Claire County,Eau Claire,http://www.eauclairewi.gov
+Wisconsin,Rock County,Edgerton,http://www.cityofedgerton.com/
+Wisconsin,Walworth County,Elkhorn,http://www.cityofelkhorn.org
+Wisconsin,Juneau County,Elroy,http://elroywi.com
+Wisconsin,Rock County,Evansville,http://www.ci.evansville.wi.gov
+Wisconsin,Grant County,Fennimore,http://www.fennimore.com/
+Wisconsin,Dane County,Fitchburg,http://fitchburgwi.gov
+Wisconsin,Fond du Lac County,Fond du Lac,http://www.fdl.wi.gov
+Wisconsin,Jefferson County,Fort Atkinson,http://www.fortatkinsonwi.net
+Wisconsin,Buffalo County,Fountain City,http://www.fountaincitywisconsin.com
+Wisconsin,Dodge County,Fox Lake,http://cityoffoxlake.org
+Wisconsin,Milwaukee County,Franklin,http://www.franklinwi.gov
+Wisconsin,Trempealeau County,Galesville,http://cityofgalesville.com
+Wisconsin,Oconto County,Gillett,http://cityofgillett.com
+Wisconsin,Milwaukee County,Glendale,http://glendalewi.gov
+Wisconsin,St. Croix County,Glenwood City,http://glenwoodcitywi.com
+Wisconsin,Brown County,Green Bay,http://greenbaywi.gov
+Wisconsin,Green Lake County,Green Lake,http://cityofgreenlake.com
+Wisconsin,Milwaukee County,Greenfield,http://www.ci.greenfield.wi.us
+Wisconsin,Clark County,Greenwood,http://greenwoodwi.com
+Wisconsin,Washington County,Hartford,http://www.ci.hartford.wi.us
+Wisconsin,Sawyer County,Hayward,http://www.cityofhaywardwi.gov/
+Wisconsin,Vernon County,Hillsboro,http://www.hillsborowi.com
+Wisconsin,Dodge County,Horicon,http://cityhoriconwi.us
+Wisconsin,St. Croix County,Hudson,http://www.ci.hudson.wi.us
+Wisconsin,Trempealeau County,Independence,http://www.independencewi.org
+Wisconsin,Rock County,Janesville,https://www.janesvillewi.gov
+Wisconsin,Jefferson County,Jefferson,http://www.jeffersonwis.com
+Wisconsin,Dodge County,Juneau,http://www.cityofjuneau.net/
+Wisconsin,Outagamie County,Kaukauna,http://www.cityofkaukauna.com/
+Wisconsin,Kenosha County,Kenosha,http://www.kenosha.org/
+Wisconsin,Kewaunee County,Kewaunee,http://cityofkewaunee.org
+Wisconsin,Manitowoc County,Kiel,https://kielwi.gov
+Wisconsin,La Crosse County,La Crosse,https://www.cityoflacrosse.org/
+Wisconsin,Rusk County,Ladysmith,http://www.cityofladysmithwi.com
+Wisconsin,Walworth County,Lake Geneva,http://www.cityoflakegeneva.com/
+Wisconsin,Jefferson County,Lake Mills,http://www.ci.lake-mills.wi.us
+Wisconsin,Grant County,Lancaster,http://www.lancasterwisconsin.com/
+Wisconsin,Columbia County,Lodi,http://www.cityoflodi.us
+Wisconsin,Clark County,Loyal,http://loyalwi.com
+Wisconsin,Dane County,Madison,http://cityofmadison.com
+Wisconsin,Waupaca County,Manawa,http://cityofmanawa.org
+Wisconsin,Manitowoc County,Manitowoc,http://www.manitowoc.org
+Wisconsin,Marinette County,Marinette,http://marinette.wi.us
+Wisconsin,Waupaca County,Marion,http://cityofmarionwi.gov
+Wisconsin,Green Lake County,Markesan,http://www.markesanwi.gov/
+Wisconsin,Wood County,Marshfield,http://ci.marshfield.wi.us
+Wisconsin,Juneau County,Mauston,http://www.mauston.com
+Wisconsin,Dodge County,Mayville,http://mayvillecity.com
+Wisconsin,Taylor County,Medford,http://citymedfordwi.com
+Wisconsin,Ashland County,Mellen,http://www.mellenwi.com/
+Wisconsin,Winnebago County,Menasha,http://www.cityofmenasha-wi.gov
+Wisconsin,Dunn County,Menomonie,http://www.menomonie-wi.gov
+Wisconsin,Ozaukee County,Mequon,http://www.ci.mequon.wi.us
+Wisconsin,Lincoln County,Merrill,http://www.ci.merrill.wi.us
+Wisconsin,Dane County,Middleton,https://cityofmiddleton.us
+Wisconsin,Rock County,Milton,http://www.ci.milton.wi.us/
+Wisconsin,Iowa County,Mineral Point,http://www.mineralpoint.net/
+Wisconsin,Buffalo County,Mondovi,http://www.mondovi.com
+Wisconsin,Dane County,Monona,http://www.mymonona.com/
+Wisconsin,Green County,Monroe,http://www.cityofmonroe.org
+Wisconsin,Marquette County,Montello,http://montellowi.com
+Wisconsin,Iron County,Montreal,http://montrealwis.com
+Wisconsin,Marathon County,Mosinee,http://mosinee.wi.us
+Wisconsin,Waukesha County,Muskego,http://www.cityofmuskego.org
+Wisconsin,Winnebago County,Neenah,http://www.ci.neenah.wi.us
+Wisconsin,Clark County,Neillsville,http://www.neillsville-wi.com/
+Wisconsin,Wood County,Nekoosa,http://www.cityofnekoosa.org/index.php
+Wisconsin,Waukesha County,New Berlin,http://www.newberlin.org/
+Wisconsin,Calumet County,New Holstein,http://cityofnewholstein.org
+Wisconsin,Juneau County,New Lisbon,http://www.newlisbon.net/
+Wisconsin,Waupaca County,New London,http://www.newlondonwi.org
+Wisconsin,St. Croix County,New Richmond,http://www.newrichmondwi.gov/
+Wisconsin,Marinette County,Niagara,http://www.cityofniagara.org/
+Wisconsin,Milwaukee County,Oak Creek,https://www.oakcreekwi.gov
+Wisconsin,Waukesha County,Oconomowoc,http://www.oconomowoc-wi.gov
+Wisconsin,Oconto County,Oconto,http://cityofoconto.com
+Wisconsin,Oconto County,Oconto Falls,http://www.ci.ocontofalls.wi.us
+Wisconsin,Winnebago County,Omro,http://omro-wi.com
+Wisconsin,La Crosse County,Onalaska,http://www.cityofonalaska.com/
+Wisconsin,Winnebago County,Oshkosh,http://www.ci.oshkosh.wi.us
+Wisconsin,Trempealeau County,Osseo,http://www.cityofosseo.us/
+Wisconsin,Clark County,Owen,http://cityofowen.com
+Wisconsin,Price County,Park Falls,http://www.cityofparkfalls.com/
+Wisconsin,Marinette County,Peshtigo,http://ci.peshtigo.wi.us
+Wisconsin,Waukesha County,Pewaukee,https://www.cityofpewaukee.us/
+Wisconsin,Price County,Phillips,http://cityofphillips.com
+Wisconsin,Wood County,Pittsville,http://pittsvillewi.com
+Wisconsin,Grant County,Platteville,http://www.platteville.org/
+Wisconsin,Sheboygan County,Plymouth,http://www.plymouthgov.com
+Wisconsin,Ozaukee County,Port Washington,https://portwashingtonwi.gov
+Wisconsin,Columbia County,Portage,https://www.portagewi.gov/
+Wisconsin,Columbia County,Prairie du Chien,http://www.prairieduchien.info
+Wisconsin,Pierce County,Prescott,http://prescottwi.org
+Wisconsin,Green Lake County,Princeton,http://cityofprincetonwi.com
+Wisconsin,Racine County,Racine,http://cityofracine.org
+Wisconsin,Sauk County,Reedsburg,http://www.reedsburgwi.gov
+Wisconsin,Oneida County,Rhinelander,http://www.rhinelandercityhall.org
+Wisconsin,Barron County,Rice Lake,http://www.ci.rice-lake.wi.us
+Wisconsin,Richland County,Richland Center,http://ci.richland-center.wi.us
+Wisconsin,Richland County,Ripon,http://www.cityofripon.com
+Wisconsin,Pierce County,River Falls,http://www.rfcity.org
+Wisconsin,Marathon County,Schofield,http://cityofschofield.org
+Wisconsin,Outagamie County,Seymour,http://cityofseymourwi.org
+Wisconsin,Shawano County,Shawano,http://www.cityofshawano.com/
+Wisconsin,Sheboygan County,Sheboygan,http://sheboyganwi.gov
+Wisconsin,Sheboygan County,Sheboygan Falls,https://sheboyganfallswi.gov
+Wisconsin,Washburn County,Shell Lake,http://shelllake.org
+Wisconsin,Lafayette County,Shullsburg,http://www.shullsburgwisconsin.org
+Wisconsin,Milwaukee County,South Milwaukee,https://southmilwaukee.gov
+Wisconsin,Monroe County,Sparta,http://www.spartawisconsin.org
+Wisconsin,Washburn County,Spooner,http://www.cityofspooner.org/cms/
+Wisconsin,Polk County,St. Croix Falls,http://www.cityofstcroixfalls.com/
+Wisconsin,Milwaukee County,St. Francis,http://www.stfranciswi.org
+Wisconsin,Chippewa County,Stanley,http://stanleywisconsin.us
+Wisconsin,Portage County,Stevens Point,http://www.stevenspoint.com
+Wisconsin,Dane County,Stoughton,http://ci.stoughton.wi.us
+Wisconsin,Door County,Sturgeon Bay,http://www.sturgeonbaywi.org/
+Wisconsin,Dane County,Sun Prairie,https://cityofsunprairie.com/
+Wisconsin,Douglas County,Superior,http://www.ci.superior.wi.us
+Wisconsin,Clark County,Thorp,http://www.cityofthorp.com
+Wisconsin,Monroe County,Tomah,http://www.tomahonline.com
+Wisconsin,Lincoln County,Tomahawk,http://www.cityoftomahawkwi.com
+Wisconsin,Manitowoc County,Two Rivers,http://www.two-rivers.org
+Wisconsin,Dane County,Verona,http://www.ci.verona.wi.us
+Wisconsin,Vernon County,Viroqua,https://viroqua-wisconsin.com
+Wisconsin,Bayfield County,Washburn,http://www.cityofwashburn.org
+Wisconsin,Jefferson County,Waterloo,http://www.waterloowi.us
+Wisconsin,Jefferson County,Watertown,http://www.ci.watertown.wi.us
+Wisconsin,Waukesha County,Waukesha,http://waukesha-wi.gov
+Wisconsin,Waupaca County,Waupaca,http://www.cityofwaupaca.org
+Wisconsin,Dodge County,Waupun,http://www.cityofwaupun.org
+Wisconsin,Marathon County,Wausau,http://www.ci.wausau.wi.us
+Wisconsin,Waushara County,Wautoma,http://www.cityofwautoma.com/
+Wisconsin,Milwaukee County,Wauwatosa,http://www.wauwatosa.net
+Wisconsin,Milwaukee County,West Allis,http://www.westalliswi.gov
+Wisconsin,Washington County,West Bend,http://www.ci.west-bend.wi.us
+Wisconsin,La Crosse County,West Salem,http://www.westsalemwi.com
+Wisconsin,Vernon County,Westby,https://www.cityofwestby.org
+Wisconsin,Waupaca County,Weyauwega,http://www.cityofweyauwega-wi.gov/
+Wisconsin,Trempealeau County,Whitehall,https://sites.google.com/site/cityofwhitehallwi/
+Wisconsin,Walworth County,Whitewater,http://www.whitewater-wi.gov
+Wisconsin,Columbia County,Wisconsin Dells,http://www.citywd.org/
+Wisconsin,Wood County,Wisconsin Rapids,http://www.wirapids.org
+Wyoming,Lincoln County,Afton,http://www.aftonwyoming.gov
+Wyoming,Lincoln County,Alpine,http://www.alpinewyoming.org
+Wyoming,Carbon County,Baggs,http://www.townofbaggs.com
+Wyoming,Natrona County,Bar Nunn,http://www.townofbarnunn.com/
+Wyoming,Big Horn County,Basin,http://www.thetownofbasin.com
+Wyoming,Uinta County,Bear River,http://www.townofbearriver.com/
+Wyoming,Sublette County,Big Piney,http://www.townofbigpiney.com/
+Wyoming,Johnson County,Buffalo,https://cityofbuffalowy.com/
+Wyoming,Laramie County,Burns,http://www.burnswy.com/
+Wyoming,Big Horn County,Byron,https://byronwyoming.org/index.html
+Wyoming,Natrona County,Casper,http://www.casperwy.gov/
+Wyoming,Laramie County,Cheyenne,http://www.cheyennecity.org
+Wyoming,Platte County,Chugwater,http://www.chugwater.com/
+Wyoming,Park County,Cody,https://codywy.gov
+Wyoming,Big Horn County,Cowley,http://cowleywyoming.com/
+Wyoming,Sheridan County,Dayton,http://www.daytonwyoming.org
+Wyoming,Lincoln County,Diamondville,http://www.diamondvillewyo.com
+Wyoming,Converse County,Douglas,https://cityofdouglas.org
+Wyoming,Fremont County,Dubois,https://townofdubois.org/
+Wyoming,Carbon County,Evanston,https://www.evanstonwy.org
+Wyoming,Natrona County,Evansville,http://www.townofevansville.org
+Wyoming,Big Horn County,Frannie,https://franniewy.govoffice2.com/
+Wyoming,Campbell County,Gillette,https://www.gillettewy.gov
+Wyoming,Platte County,Glendo,http://www.glendowy.com
+Wyoming,Converse County,Glenrock,https://glenrock.org/
+Wyoming,Sweetwater County,Green River,https://www.cityofgreenriver.org/
+Wyoming,Big Horn County,Greybull,http://townofgreybull.com/Home.html
+Wyoming,Platte County,Guernsey,http://townofguernseywy.us/
+Wyoming,Platte County,Hartville,http://www.hartvillewyoming.com
+Wyoming,Crook County,Hulett,http://townofhulettwy.com/
+Wyoming,Teton County,Jackson,https://www.jacksonwy.gov/
+Wyoming,Johnson County,Kaycee,http://www.kayceewyoming.org/
+Wyoming,Lincoln County,Kemmerer,http://www.kemmerer.org
+Wyoming,Lincoln County,La Barge,http://www.townoflabarge.org
+Wyoming,Fremont County,Lander,https://www.landerwyoming.org
+Wyoming,Albany County,Laramie,https://www.cityoflaramie.org/
+Wyoming,Big Horn County,Lovell,http://www.townoflovell.com
+Wyoming,Niobrara County,Lusk,http://www.townoflusk.org
+Wyoming,Uinta County,Lyman,https://www.lymanwy.com/
+Wyoming,Carbon County,Medicine Bow,http://www.medicinebow.org/
+Wyoming,Park County,Meeteetse,http://www.townofmeeteetse.org/
+Wyoming,Natrona County,Mills,https://millswy.gov//
+Wyoming,Crook County,Moorcroft,http://townofmoorcroft.com/
+Wyoming,Uinta County,Mountain View,https://www.mtvwy.com/
+Wyoming,Uinta County,Newcastle,http://www.newcastlewyoming.org/
+Wyoming,Laramie County,Pine Bluffs,http://pinebluffswy.gov/
+Wyoming,Crook County,Pine Haven,http://www.pinehavenwy.govoffice2.com/
+Wyoming,Sublette County,Pinedale,http://www.townofpinedale.us/
+Wyoming,Park County,Powell,http://www.cityofpowell.com/
+Wyoming,Sheridan County,Ranchester,https://ranchesterwyoming.com/
+Wyoming,Sheridan County,Rawlins,https://www.rawlins-wyoming.com
+Wyoming,Fremont County,Riverton,http://www.rivertonwy.gov
+Wyoming,Fremont County,Rock River,http://www.town.rock-river.wy.us/home.aspx
+Wyoming,Sweetwater County,Rock Springs,https://www.rswy.net
+Wyoming,Carbon County,Saratoga,http://www.saratoga.govoffice2.com/
+Wyoming,Carbon County,Sheridan,https://www.sheridanwy.gov
+Wyoming,Fremont County,Shoshoni,http://www.shoshoniwyoming.org
+Wyoming,Lincoln County,Star Valley Ranch,http://www.starvalleyranchwy.org
+Wyoming,Crook County,Sundance,http://www.cityofsundancewy.com/
+Wyoming,Washakie County,Ten Sleep,http://www.townoftensleep.com/
+Wyoming,Lincoln County,Thayne,http://www.thayne-wy.com/
+Wyoming,Hot Springs County,Thermopolis,http://www.townofthermopolis.com
+Wyoming,Hot Springs County,Torrington,https://www.torringtonwy.gov
+Wyoming,Weston County,Upton,https://www.townofupton.com/
+Wyoming,Sweetwater County,Wheatland,https://www.townofwheatlandwy.org/
+Wyoming,Washakie County,Worland,https://www.cityofworland.org
+Wyoming,Campbell County,Wright,http://www.wrightwyoming.com
diff --git a/backend/scripts/populateCountiesCities/United_States_Counties_with_URLs.csv b/backend/scripts/populateCountiesCities/United_States_Counties_with_URLs.csv
new file mode 100644
index 00000000..6dedb681
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/United_States_Counties_with_URLs.csv
@@ -0,0 +1,2891 @@
+County,State,Wikipedia_URL
+Autauga County,Alabama,http://www.autaugaco.org
+Baldwin County,Alabama,https://baldwincountyal.gov/
+Eufaula,Alabama,http://www.eufaulaalabama.com/
+Bibb County,Alabama,http://www.bibbal.com
+Blount County,Alabama,http://www.blountcountyal.gov
+Bullock County,Alabama,http://bullockcountyalrev.com/
+Butler County,Alabama,http://butlercountyal.com/
+Calhoun County,Alabama,http://www.calhouncounty.org
+Chambers County,Alabama,http://www.chamberscountyal.gov
+Cherokee County,Alabama,http://www.cherokeecounty-al.gov
+Chilton County,Alabama,http://chiltoncounty.org
+Clarke County,Alabama,http://www.clarkecountyal.com
+Clay County,Alabama,https://alabamaclaycounty.com/
+Cleburne County,Alabama,http://www.cleburnecounty.us
+Coffee County,Alabama,http://www.coffeecounty.us
+Colbert County,Alabama,http://www.colbertcounty.org/
+Coosa County,Alabama,http://www.coosacountyal.com/
+Covington County,Alabama,http://www.covcounty.com
+Crenshaw County,Alabama,http://www.crenshawcountyalonline.com
+Cullman County,Alabama,http://www.co.cullman.al.us
+Dale County,Alabama,http://www.dalecountyal.org
+Dallas County,Alabama,http://www.dallascounty-al.org/
+DeKalb County,Alabama,http://www.dekalbcountyal.us
+Elmore County,Alabama,http://www.elmoreco.org
+Escambia County,Alabama,http://www.co.escambia.al.us
+Etowah County,Alabama,http://www.etowahcounty.org
+Franklin County,Alabama,http://www.franklincountyal.org
+Geneva County,Alabama,http://www.genevacounty.us/
+Hale County,Alabama,http://www.halecountyal.com
+Henry County,Alabama,http://www.henrycountyal.com/
+Houston County,Alabama,https://houstoncountyal.gov/
+Jackson County,Alabama,http://www.jacksoncountyal.gov/
+Jefferson County,Alabama,http://jeffconline.jccal.org/
+Lamar County,Alabama,http://www.lamarcounty.us/
+Lauderdale County,Alabama,https://lauderdalecountyal.gov/
+Lawrence County,Alabama,http://www.lawrencealabama.com
+Lee County,Alabama,http://www.leeco.us
+Limestone County,Alabama,http://limestonecounty-al.gov/
+Macon County,Alabama,https://www.maconalabama.com/
+Madison County,Alabama,https://www.madisoncountyal.gov
+Marengo County,Alabama,http://marengocountyal.com/
+Marion County,Alabama,http://marioncountyalabama.org/
+Marshall County,Alabama,http://www.marshallco.org
+Mobile County,Alabama,http://MobileCountyAL.gov
+Monroe County,Alabama,http://www.monroecountyal.com
+Montgomery County,Alabama,http://www.mc-ala.org
+Morgan County,Alabama,http://www.co.morgan.al.us
+Perry County,Alabama,http://www.perrysheriff.com
+Pickens County,Alabama,http://www.pickenscountyal.com/
+Pike County,Alabama,http://www.alabamagis.com/Pike/
+Randolph County,Alabama,http://randolphcountyalabama.gov/
+Russell County,Alabama,http://www.rcala.com
+St. Clair County,Alabama,http://www.stclairco.com
+Shelby County,Alabama,http://www.shelbycountyalabama.com
+Sumter County,Alabama,http://sumtercountyal.com/
+Talladega County,Alabama,http://www.talladegacountyal.org/
+Tallapoosa County,Alabama,http://www.tallaco.com/
+Tuscaloosa County,Alabama,http://www.tuscco.com
+Walker County,Alabama,http://www.walkercounty.com
+Mobile,AL MSA,http://MobileCountyAL.gov
+Winston County,Alabama,http://www.winstoncountyalabama.org/
+Aleutians East Borough,Alaska,http://www.aleutianseast.org
+Anchorage,Alaska,https://www.muni.org/
+Bristol Bay Borough,Alaska,http://www.bristolbayboroughak.us/
+Denali Borough,Alaska,http://www.denaliborough.com
+Fairbanks North Star Borough,Alaska,http://www.co.fairbanks.ak.us
+Haines Borough,Alaska,http://www.hainesborough.us
+Juneau,Alaska,https://juneau.org/
+Kenai Peninsula Borough,Alaska,http://www.borough.kenai.ak.us
+Ketchikan Gateway Borough,Alaska,http://www.kgbak.us
+Kodiak Island Borough,Alaska,http://www.kodiakak.us
+Lake and Peninsula Borough,Alaska,http://www.lakeandpen.com
+Matanuska-Susitna Borough,Alaska,http://www.matsugov.us
+North Slope Borough,Alaska,https://www.north-slope.org/
+Northwest Arctic Borough,Alaska,http://www.nwabor.org
+Petersburg Borough,Alaska,https://www.petersburgak.gov/
+Sitka,Alaska,https://www.cityofsitka.com
+Skagway,Alaska,http://www.skagway.org
+Wrangell,Alaska,http://www.wrangell.com
+Yakutat,Alaska,http://yakutatak.govoffice2.com
+Apache County,Arizona,https://www.apachecountyaz.gov
+Cochise County,Arizona,https://www.cochise.az.gov
+Coconino County,Arizona,http://coconino.az.gov
+Gila County,Arizona,http://www.gilacountyaz.gov/
+Graham County,Arizona,http://www.graham.az.gov
+Greenlee County,Arizona,http://www.co.greenlee.az.us
+La Paz County,Arizona,http://www.co.la-paz.az.us
+Maricopa County,Arizona,http://www.maricopa.gov
+Mohave County,Arizona,https://www.mohave.gov
+Navajo County,Arizona,https://www.navajocountyaz.gov/
+Pima County,Arizona,http://www.pima.gov
+Pinal County,Arizona,http://www.pinalcountyaz.gov
+Santa Cruz County,Arizona,http://www.co.santa-cruz.az.us
+Yavapai County,Arizona,https://yavapaiaz.gov/
+Yuma County,Arizona,http://www.yumacountyaz.gov
+Ashley County,Arkansas,https://www.ashleycountyar.com
+Baxter County,Arkansas,http://www.baxtercounty.org/
+Benton County,Arkansas,http://www.bentoncountyar.gov
+Boone County,Arkansas,http://www.boonecountyar.com/
+Bradley County,Arkansas,http://www.bradleycountyarkansas.com
+Calhoun County,Arkansas,https://calhouncounty.arkansas.gov/
+Carroll County,Arkansas,http://carrollcounty.us/
+Chicot County,Arkansas,http://chicotcounty.arkansas.gov/index
+Clark County,Arkansas,https://clarkcountyar.gov/
+Clay County,Arkansas,http://claycounty.arkansas.gov
+Cleburne County,Arkansas,http://www.cleburnecountyar.com/
+Cleveland County,Arkansas,http://clevelandcounty.arkansas.gov/
+Columbia County,Arkansas,http://www.countyofcolumbia.org/
+Conway County,Arkansas,https://conwaycountyar.com/
+Craighead County,Arkansas,http://www.craigheadcounty.org/
+Crawford County,Arkansas,http://www.crawford-county.org/
+Crittenden County,Arkansas,http://crittenden.ark.org/
+Cross County,Arkansas,http://crosscountyar.org/
+Desha County,Arkansas,http://deshacounty.arkansas.gov
+Drew County,Arkansas,http://drewcounty.arkansas.gov/
+Faulkner County,Arkansas,http://www.faulknercounty.org
+Fulton County,Arkansas,http://fulton.ark.org/
+Grant County,Arkansas,http://www.grantcountyar.com
+Greene County,Arkansas,http://county.arkansas.gov/greene/
+Hempstead County,Arkansas,https://hempsteadcountyar.com/
+Hot Spring County,Arkansas,http://www.hotspringcounty.org
+Independence County,Arkansas,http://www.independencecounty.com/
+Izard County,Arkansas,http://www.izardcountyar.org/
+Jackson County,Arkansas,http://www.jacksoncountyar.org/
+Jefferson County,Arkansas,http://jeffersoncounty.arkansas.gov
+Johnson County,Arkansas,http://johnsoncounty.arkansas.gov/
+Lafayette County,Arkansas,http://www.lafayettecounty.arkansas.gov
+Lawrence County,Arkansas,http://www.lawrencecountyarkansas.com/
+Lee County,Arkansas,http://leecounty.arkansas.gov
+Lincoln County,Arkansas,http://lincolncounty.arkansas.gov/
+Madison County,Arkansas,http://madisoncogov.com/
+Marion County,Arkansas,http://marioncounty.arkansas.gov/
+Miller County,Arkansas,http://www.millercountyar.com/
+Mississippi County,Arkansas,https://www.mississippicountyar.org
+Montgomery County,Arkansas,https://montgomerycounty.arkansas.gov/
+Nevada County,Arkansas,http://nevadacounty.arkansas.gov/
+Perry County,Arkansas,http://perrycoarkansas.org/
+Phillips County,Arkansas,http://phillipscounty.arkansas.gov/
+Poinsett County,Arkansas,http://www.poinsettcounty.us
+Pope County,Arkansas,http://www.popecountyar.com
+Pulaski County,Arkansas,http://pulaskicounty.net/
+Sebastian County,Arkansas,http://www.sebastiancountyar.gov/
+Sharp County,Arkansas,http://sharpcounty.arkansas.gov/
+Union County,Arkansas,http://www.unioncountyar.com
+Van Buren County,Arkansas,http://www.vanburencountyark.com/
+Washington County,Arkansas,http://www.co.washington.ar.us
+White County,Arkansas,http://www.whitecountyar.org/
+Woodruff County,Arkansas,https://woodruffcounty.arkansas.gov/
+Yell County,Arkansas,http://yellcountyar.gov
+Alameda County,California,http://www.acgov.org
+Alpine County,California,http://www.alpinecountyca.gov
+Amador County,California,http://www.co.amador.ca.us
+Butte County,California,http://www.buttecounty.net
+Calaveras County,California,http://calaverasgov.us
+Colusa County,California,http://www.countyofcolusa.org
+Contra Costa County,California,http://www.contracosta.ca.gov
+Del Norte County,California,http://www.co.del-norte.ca.us
+El Dorado County,California,http://www.edcgov.us
+Fresno County,California,http://www.co.fresno.ca.us
+Glenn County,California,http://www.countyofglenn.net/
+Humboldt County,California,http://humboldtgov.org
+Imperial County,California,http://www.co.imperial.ca.us
+Inyo County,California,http://www.inyocounty.us
+Kern County,California,http://www.co.kern.ca.us
+Kings County,California,http://countyofkings.com
+Lake County,California,https://www.lakecountyca.gov/
+Lassen County,California,http://www.co.lassen.ca.us
+Los Angeles County,California,https://lacounty.gov/
+Madera County,California,http://www.maderacounty.com
+Marin County,California,http://www.co.marin.ca.us
+Mariposa County,California,http://www.mariposacounty.org
+Mendocino County,California,https://www.mendocinocounty.org/
+Merced County,California,http://www.co.merced.ca.us
+Modoc County,California,http://www.co.modoc.ca.us
+Mono County,California,http://www.monocounty.ca.gov
+Monterey County,California,http://www.co.monterey.ca.us/
+Napa County,California,http://www.countyofnapa.org
+Nevada County,California,http://www.mynevadacounty.com
+Orange County,California,http://OCGov.com
+Placer County,California,http://www.Placer.CA.gov
+Plumas County,California,http://www.countyofplumas.com
+Riverside County,California,http://www.countyofriverside.us/
+Sacramento County,California,http://www.saccounty.net
+San Benito County,California,http://www.cosb.us
+San Bernardino County,California,http://www.SBCounty.gov
+San Diego County,California,http://www.sandiegocounty.gov
+San Joaquin County,California,http://www.sjgov.org
+San Luis Obispo County,California,http://www.co.slo.ca.us
+San Mateo County,California,http://www.smcgov.org
+Santa Barbara County,California,https://www.countyofsb.org
+Santa Clara County,California,http://www.sccgov.org
+Santa Cruz County,California,http://www.co.santa-cruz.ca.us
+Shasta County,California,https://www.shastacounty.gov
+Sierra County,California,http://www.sierracounty.ca.gov
+Siskiyou County,California,http://www.co.siskiyou.ca.us
+Solano County,California,http://www.solanocounty.com
+Sonoma County,California,https://sonomacounty.ca.gov
+Stanislaus County,California,http://www.stancounty.com
+Sutter County,California,http://www.co.sutter.ca.us
+Tehama County,California,http://www.co.tehama.ca.us
+Trinity County,California,http://www.trinitycounty.org
+Tulare County,California,http://tularecounty.ca.gov
+Tuolumne County,California,http://www.co.tuolumne.ca.us
+Ventura County,California,http://www.countyofventura.org
+Yolo County,California,http://www.yolocounty.org
+Yuba County,California,http://www.co.yuba.ca.us
+Adams County,Colorado,http://www.adcogov.org
+Alamosa County,Colorado,https://alamosacounty.colorado.gov/
+Arapahoe County,Colorado,http://www.arapahoegov.com/
+Archuleta County,Colorado,http://www.archuletacounty.org
+Baca County,Colorado,http://bacacountyco.gov
+Bent County,Colorado,http://www.bentcounty.net
+Boulder County,Colorado,http://www.bouldercounty.org
+Broomfield,Colorado,http://www.broomfield.org
+Chaffee County,Colorado,http://www.chaffeecounty.org/
+Cheyenne County,Colorado,http://www.co.cheyenne.co.us
+Clear Creek County,Colorado,http://www.clearcreekcounty.us
+Conejos County,Colorado,http://www.conejoscounty.org
+Costilla County,Colorado,http://costillacounty.colorado.gov
+Crowley County,Colorado,http://crowleycounty.colorado.gov
+Custer County,Colorado,http://custercountygov.com
+Delta County,Colorado,http://www.deltacounty.com
+Dolores County,Colorado,http://dolocnty.colorado.gov
+Douglas County,Colorado,http://www.douglas.co.us
+Eagle County,Colorado,http://www.eaglecounty.us
+Elbert County,Colorado,http://www.elbertcounty-co.gov
+El Paso County,Colorado,http://www.elpasoco.com
+Fremont County,Colorado,http://www.fremontco.com
+Garfield County,Colorado,http://www.garfield-county.com
+Gilpin County,Colorado,http://www.co.gilpin.co.us
+Grand County,Colorado,http://co.grand.co.us
+Gunnison County,Colorado,http://www.gunnisoncounty.org
+Hinsdale County,Colorado,http://hinsdalecounty.colorado.gov
+Huerfano County,Colorado,http://www.huerfano.us/
+Jackson County,Colorado,http://jacksoncountycogov.com/
+Jefferson County,Colorado,http://www.jeffco.us
+Kiowa County,Colorado,http://www.kiowacounty-colorado.com
+Kit Carson County,Colorado,http://kitcarsoncounty.colorado.gov
+Lake County,Colorado,http://www.lakecountyco.com
+La Plata County,Colorado,http://co.laplata.co.us
+Larimer County,Colorado,http://www.larimer.org/
+Las Animas County,Colorado,https://lasanimascounty.colorado.gov/
+Lincoln County,Colorado,http://lincolncounty.colorado.gov/
+Logan County,Colorado,http://logancounty.colorado.gov/
+Mesa County,Colorado,http://www.mesacounty.us
+Mineral County,Colorado,http://mineralcounty.colorado.gov/
+Moffat County,Colorado,http://moffatcounty.colorado.gov/
+Montezuma County,Colorado,https://montezumacounty.org
+Montrose County,Colorado,http://www.montrosecounty.net
+Morgan County,Colorado,http://morgancounty.colorado.gov/
+Otero County,Colorado,https://oterocounty.colorado.gov
+Ouray County,Colorado,http://www.ouraycountyco.gov
+Park County,Colorado,http://www.parkco.us
+Phillips County,Colorado,http://phillipscounty.colorado.gov/
+Pitkin County,Colorado,http://www.pitkincounty.com/
+Prowers County,Colorado,http://www.prowerscounty.net
+Pueblo County,Colorado,http://county.pueblo.org/
+Rio Blanco County,Colorado,http://www.rbc.us
+Rio Grande County,Colorado,http://www.riograndecounty.org
+Routt County,Colorado,http://www.co.routt.co.us/
+Saguache County,Colorado,http://saguachecounty.colorado.gov/
+San Juan County,Colorado,http://sanjuancounty.colorado.gov/
+San Miguel County,Colorado,https://www.sanmiguelcountyco.gov/
+Sedgwick County,Colorado,http://sedgwickcounty.colorado.gov/
+Summit County,Colorado,http://www.summitcountyco.gov/
+Teller County,Colorado,http://www.co.teller.co.us
+Washington County,Colorado,http://washingtoncounty.colorado.gov/
+Weld County,Colorado,http://www.weldgov.com
+Yuma County,Colorado,http://www.yumacounty.net
+Kent County,Delaware,http://www.co.kent.de.us
+New Castle County,Delaware,http://www.nccde.org
+Sussex County,Delaware,http://www.sussexcountyde.gov
+Washington,D.C.,https://dc.gov/
+Alachua County,Florida,http://www.alachuacounty.us/
+Baker County,Florida,http://www.bakercountyfl.org
+Bay County,Florida,http://www.co.bay.fl.us/
+Bradford County,Florida,http://www.bradfordcountyfl.gov/
+Brevard County,Florida,https://www.brevardfl.gov/
+Broward County,Florida,http://www.broward.org
+Calhoun County,Florida,https://calhouncountygov.com/
+Charlotte County,Florida,http://www.CharlotteCountyfl.gov
+Citrus County,Florida,https://www.citrusbocc.com/
+Clay County,Florida,http://www.claycountygov.com/
+Collier County,Florida,http://www.colliergov.net
+Columbia County,Florida,http://www.columbiacountyfla.com
+DeSoto County,Florida,http://www.desotobocc.com
+Dixie County,Florida,http://dixie.fl.gov
+Duval County,Florida,http://coj.net
+Escambia County,Florida,http://myescambia.com
+Flagler County,Florida,http://www.flaglercounty.org
+Franklin County,Florida,http://www.franklincountyflorida.com
+Gadsden County,Florida,http://www.gadsdengov.net
+Gilchrist County,Florida,http://gilchrist.fl.us
+Glades County,Florida,http://www.myglades.com
+Gulf County,Florida,http://www.gulfcounty-fl.gov/
+Hamilton County,Florida,http://www.hamiltoncountyfl.com
+Hardee County,Florida,http://www.hardeecounty.net
+Hendry County,Florida,http://www.hendryfla.net
+Hernando County,Florida,http://www.hernandocounty.us
+Highlands County,Florida,http://www.hcbcc.net
+Hillsborough County,Florida,http://www.hillsboroughcounty.org/
+Holmes County,Florida,https://holmescountyonline.com/
+Indian River County,Florida,http://www.ircgov.com/
+Jackson County,Florida,http://www.jacksoncountyfl.net/
+Jefferson County,Florida,http://www.jeffersoncountyfl.gov
+Lafayette County,Florida,http://www.lafayettecountyfl.net
+Lake County,Florida,http://www.lakecountyfl.gov
+Lee County,Florida,http://www.leegov.com
+Leon County,Florida,http://www.leoncountyfl.gov/
+Levy County,Florida,http://www.levycounty.org
+Liberty County,Florida,https://libertyclerk.com/
+Madison County,Florida,http://www.madisoncountyfl.com
+Manatee County,Florida,http://www.mymanatee.org
+Marion County,Florida,http://www.marioncountyfl.org
+Martin County,Florida,http://www.martin.fl.us
+Miami-Dade County,Florida,http://www.miamidade.gov
+Monroe County,Florida,http://www.monroecounty-fl.gov
+Nassau County,Florida,http://www.nassaucountyfl.com
+Okaloosa County,Florida,http://www.co.okaloosa.fl.us/
+Okeechobee County,Florida,http://www.co.okeechobee.fl.us
+Orange County,Florida,http://www.orangecountyfl.net/
+Osceola County,Florida,http://www.osceola.org/
+Palm Beach County,Florida,http://www.co.palm-beach.fl.us
+Pasco County,Florida,http://www.pascocountyfl.net
+Pinellas County,Florida,http://www.pinellascounty.org/
+Polk County,Florida,http://www.polk-county.net
+Putnam County,Florida,https://main.putnam-fl.com/
+St. Johns County,Florida,http://www.sjcfl.us
+St. Lucie County,Florida,http://www.stlucieco.gov/
+Santa Rosa County,Florida,http://www.santarosa.fl.gov/
+Sarasota County,Florida,http://www.scgov.net
+Seminole County,Florida,http://www.seminolecountyfl.gov
+Sumter County,Florida,http://www.sumtercountyfl.gov/
+Suwannee County,Florida,https://suwanneecountyfl.gov/
+Taylor County,Florida,http://www.taylorcountygov.com
+Union County,Florida,http://www.unioncounty-fl.gov/
+Volusia County,Florida,http://www.volusia.org
+Wakulla County,Florida,http://www.mywakulla.com
+Walton County,Florida,http://www.co.walton.fl.us
+Appling County,Georgia,http://www.baxley.org/
+Atkinson County,Georgia,https://atkinsoncounty.org/
+Baldwin County,Georgia,http://www.baldwincountyga.com
+Banks County,Georgia,http://www.bankscountyga.org
+Barrow County,Georgia,http://www.barrowga.org
+Bartow County,Georgia,http://www.bartowga.org/
+Ben Hill County,Georgia,http://www.benhillcounty.com
+Berrien County,Georgia,http://www.berriencountygeorgia.com/
+Bibb County,Georgia,http://www.co.bibb.ga.us
+Bleckley County,Georgia,http://www.bleckley.org/index.asp
+Brantley County,Georgia,https://brantleycountyga.com/
+Brooks County,Georgia,https://www.brookscountyga.gov/
+Bryan County,Georgia,http://www.bryancountyga.org/
+Bulloch County,Georgia,http://www.bullochcounty.net/
+Burke County,Georgia,http://www.burkecounty-ga.gov/
+Butts County,Georgia,http://buttscountyga.com/
+Calhoun County,Georgia,http://calhouncountyga.com
+Camden County,Georgia,http://www.co.camden.ga.us/
+Candler County,Georgia,http://metter-candler.com/
+Carroll County,Georgia,http://www.carrollcountyga.com
+Catoosa County,Georgia,http://www.catoosa.com
+Charlton County,Georgia,https://www.charltoncountyga.us/
+Chatham County,Georgia,http://www.chathamcountyga.gov
+Chattahoochee County,Georgia,https://www.ugoccc.com/
+Cherokee County,Georgia,http://www.cherokeega.com
+Clarke County,Georgia,http://www.athensclarkecounty.com
+Clay County,Georgia,http://www.claycountyga.net/
+Clayton County,Georgia,http://www.claytoncountyga.gov/
+Clinch County,Georgia,https://clinchcountyga.gov
+Cobb County,Georgia,http://www.cobbcounty.org
+Coffee County,Georgia,http://coffeecountygov.com/
+Colquitt County,Georgia,http://www.ccboc.com/
+Columbia County,Georgia,http://www.columbiacountyga.gov/
+Cook County,Georgia,http://www.cookcountyga.us
+Crisp County,Georgia,http://www.crispcounty.com
+Dade County,Georgia,http://www.dadecounty-ga.gov/
+Dawson County,Georgia,http://www.dawsoncounty.org/
+Decatur County,Georgia,http://www.decaturcountyga.gov
+DeKalb County,Georgia,http://www.dekalbcountyga.gov
+Dodge County,Georgia,http://www.dodgecountyga.com
+Dooly County,Georgia,http://doolycountyga.com/
+Dougherty County,Georgia,http://www.albany.ga.us/content/1800
+Douglas County,Georgia,http://www.celebratedouglascounty.com/
+Early County,Georgia,http://earlycounty.georgia.gov/
+Echols County,Georgia,http://echolscountyga.com/
+Effingham County,Georgia,http://www.effinghamcounty.org
+Elbert County,Georgia,http://www.elbertga.us/
+Emanuel County,Georgia,http://www.emanuelco-ga.gov/
+Evans County,Georgia,http://www.evanscounty.org
+Fannin County,Georgia,http://fannincountyga.org/
+Fayette County,Georgia,http://www.fayettecountyga.gov
+Floyd County,Georgia,https://www.floydcountyga.gov
+Forsyth County,Georgia,https://www.forsythco.com
+Franklin County,Georgia,http://www.franklincountyga.gov
+Fulton County,Georgia,http://www.fultoncountyga.gov/
+Gilmer County,Georgia,http://www.gilmercounty-ga.gov
+Glascock County,Georgia,http://www.glascockcountyga.com
+Glynn County,Georgia,http://www.glynncounty.org
+Gordon County,Georgia,http://gordoncounty.org/
+Grady County,Georgia,http://www.gradycountyga.gov
+Greene County,Georgia,http://www.greenecountyga.gov/
+Gwinnett County,Georgia,http://www.gwinnettcounty.com
+Habersham County,Georgia,http://www.co.habersham.ga.us/
+Hall County,Georgia,http://www.hallcounty.org
+Hancock County,Georgia,http://www.hancockcountyga.gov/
+Harris County,Georgia,http://www.harriscountyga.gov
+Hart County,Georgia,http://www.hartcountyga.gov/
+Heard County,Georgia,http://HeardCountyGA.com
+Henry County,Georgia,http://www.co.henry.ga.us
+Houston County,Georgia,http://www.houstoncountyga.com
+Irwin County,Georgia,http://www.ocillachamber.net/
+Jackson County,Georgia,http://www.jacksoncountygov.com
+Jeff Davis County,Georgia,http://www.hazlehurst-jeffdavis.com/
+Jefferson County,Georgia,https://www.jeffersoncountyga.gov/
+Jenkins County,Georgia,http://www.jenkinscountyga.com/
+Johnson County,Georgia,http://www.johnsonco.org/
+Jones County,Georgia,http://www.jonescountyga.org/
+Lamar County,Georgia,http://www.lamarcountyga.com
+Lanier County,Georgia,http://laniercountyboc.com/
+Laurens County,Georgia,http://www.laurenscoga.org/
+Lee County,Georgia,http://www.lee.ga.us/
+Liberty County,Georgia,http://www.libertycountyga.com/
+Lincoln County,Georgia,http://www.lincolncountyga.com
+Long County,Georgia,http://www.longcountyboc.com/
+Lowndes County,Georgia,http://www.lowndescounty.com
+Lumpkin County,Georgia,http://www.lumpkincounty.gov/
+McDuffie County,Georgia,http://www.thomson-mcduffie.com/
+McIntosh County,Georgia,http://www.mcintoshcountyga.com/
+Macon County,Georgia,http://www.maconcountyga.gov
+Madison County,Georgia,http://www.madisoncountyga.us/
+Marion County,Georgia,http://www.marioncountyga.org
+Meriwether County,Georgia,http://meriwethercountyga.us
+Miller County,Georgia,https://www.millercountyga.gov/
+Mitchell County,Georgia,http://www.mitchellcountyga.net/
+Monroe County,Georgia,http://www.monroecountygeorgia.com/
+Montgomery County,Georgia,http://montgomerycountyga.gov
+Murray County,Georgia,http://www.murraycountyga.org/
+Muscogee County,Georgia,http://www.columbusga.org/
+Newton County,Georgia,http://www.co.newton.ga.us
+Oconee County,Georgia,http://www.oconeecounty.com
+Paulding County,Georgia,http://www.paulding.gov
+Peach County,Georgia,http://www.peachcounty.net
+Pickens County,Georgia,http://pickenscountyga.gov/
+Pierce County,Georgia,https://piercecountyga.gov/
+Pike County,Georgia,http://www.pikecoga.com/
+Polk County,Georgia,http://www.polkgeorgia.org/
+Pulaski County,Georgia,http://hawkinsville-pulaski.org
+Putnam County,Georgia,http://www.putnamcountyga.us
+Rabun County,Georgia,http://www.rabuncounty.ga.gov
+Randolph County,Georgia,http://www.randolphcountyga.com/government
+Richmond County,Georgia,http://www.augustaga.gov
+Rockdale County,Georgia,http://www.rockdalecountyga.gov
+Seminole County,Georgia,http://www.seminolecountyga.com
+Spalding County,Georgia,http://www.spaldingcounty.com
+Stewart County,Georgia,http://www.stewartcountyga.gov
+Sumter County,Georgia,http://www.sumtercountyga.us/
+Talbot County,Georgia,http://talbotcountyga.org/
+Taliaferro County,Georgia,http://taliaferrocountyga.org/
+Tattnall County,Georgia,http://www.tattnall.com
+Telfair County,Georgia,http://telfaircounty.georgia.gov/
+Terrell County,Georgia,http://www.terrellcounty-ga.com/
+Thomas County,Georgia,http://www.thomascountyboc.org
+Tift County,Georgia,http://www.tiftcounty.org
+Toombs County,Georgia,http://www.toombscountyga.gov/
+Towns County,Georgia,http://www.townscountyga.com/
+Treutlen County,Georgia,http://www.soperton-treutlen.org/county.html
+Troup County,Georgia,http://www.troupcountyga.org
+Turner County,Georgia,http://www.turnercountygeorgia.com
+Twiggs County,Georgia,http://www.twiggscounty.us
+Union County,Georgia,http://www.unioncountyga.gov/
+Upson County,Georgia,http://www.upsoncountyga.org/
+Walker County,Georgia,http://www.walkercountyga.gov/
+Walton County,Georgia,http://www.waltoncountyga.gov/
+Ware County,Georgia,http://www.warecounty.com
+Warren County,Georgia,http://www.warrencountyga.com
+Washington County,Georgia,http://washingtoncountyga.gov/
+Wayne County,Georgia,https://www.waynecountyga.us/
+Webster County,Georgia,http://www.webstercountyga.org
+Wheeler County,Georgia,http://wheelercounty.georgia.gov/
+White County,Georgia,http://www.whitecountyga.gov
+Whitfield County,Georgia,http://www.whitfieldcountyga.com/
+Wilcox County,Georgia,https://www.wilcoxcountygeorgia.com/
+Wilkes County,Georgia,http://www.washingtonwilkes.org/
+Wilkinson County,Georgia,http://www.wilkinsoncounty.net/
+Worth County,Georgia,http://worthcountyboc.com/
+Hawaii County,Hawaii,http://www.hawaiicounty.gov
+Honolulu County,Hawaii,http://www.honolulu.gov/
+Kauai County,Hawaii,https://www.kauai.gov/
+Maui County,Hawaii,http://www.mauicounty.gov
+Ada County,Idaho,http://www.adaweb.net
+Adams County,Idaho,http://www.co.adams.id.us
+Bannock County,Idaho,http://www.bannockcounty.us
+Bear Lake County,Idaho,http://bearlakecounty.info
+Bingham County,Idaho,http://www.co.bingham.id.us
+Blaine County,Idaho,http://www.co.blaine.id.us
+Boise County,Idaho,http://www.boisecounty.us
+Bonner County,Idaho,http://bonnercounty.us/
+Bonneville County,Idaho,https://www.bonnevillecountyidaho.gov
+Boundary County,Idaho,http://boundarycountyid.org
+Camas County,Idaho,http://camascounty.id.gov/
+Canyon County,Idaho,http://www.canyoncounty.org
+Caribou County,Idaho,http://www.cariboucounty.us/
+Cassia County,Idaho,http://www.cassiacounty.org
+Clark County,Idaho,http://www.clark-co.id.gov
+Clearwater County,Idaho,http://www.clearwatercounty.org
+Custer County,Idaho,http://www.co.custer.id.us
+Elmore County,Idaho,http://elmorecounty.org
+Franklin County,Idaho,http://franklincountyidaho.org
+Fremont County,Idaho,http://www.co.fremont.id.us
+Gem County,Idaho,http://www.co.gem.id.us
+Gooding County,Idaho,http://www.goodingcounty.org/
+Idaho County,Idaho,http://idahocounty.org
+Jefferson County,Idaho,http://www.co.jefferson.id.us
+Jerome County,Idaho,http://www.jeromecountyid.us
+Kootenai County,Idaho,http://www.kcgov.us
+Latah County,Idaho,http://latah.id.us
+Lemhi County,Idaho,http://www.lemhicountyidaho.org
+Lewis County,Idaho,http://lewiscountyid.us
+Lincoln County,Idaho,http://www.lincolncountyid.us/
+Madison County,Idaho,http://www.co.madison.id.us
+Minidoka County,Idaho,http://www.minidoka.id.us
+Nez Perce County,Idaho,http://www.co.nezperce.id.us
+Oneida County,Idaho,http://oneidacountyid.com
+Owyhee County,Idaho,http://owyheecounty.net
+Payette County,Idaho,http://www.payettecounty.org
+Power County,Idaho,http://www.co.power.id.us
+Shoshone County,Idaho,http://shoshonecounty.id.gov
+Teton County,Idaho,http://tetoncountyidaho.gov
+Twin Falls County,Idaho,http://www.twinfallscounty.org
+Valley County,Idaho,http://co.valley.id.us
+Washington County,Idaho,http://www.co.washington.id.us
+Adams County,Illinois,http://www.co.adams.il.us
+Alexander County,Illinois,https://www.alexandercountyil.com
+Bond County,Illinois,https://www.bondcountyil.com/
+Boone County,Illinois,http://www.boonecountyil.org
+Brown County,Illinois,https://www.browncoil.org
+Bureau County,Illinois,http://bureaucounty-il.gov
+Cass County,Illinois,https://co.cass.il.us/
+Champaign County,Illinois,https://www.co.champaign.il.us/HeaderMenu/Home.php
+Christian County,Illinois,https://christiancountyil.com/
+Clark County,Illinois,http://www.clarkcountyil.org
+Clay County,Illinois,http://claycountyillinois.org
+Clinton County,Illinois,http://www.clintonco.illinois.gov
+Coles County,Illinois,http://www.colesco.illinois.gov
+Cook County,Illinois,http://www.cookcountyil.gov
+Crawford County,Illinois,https://crawfordcountyil.org
+Cumberland County,Illinois,https://cumberlandcoil.gov/
+DeKalb County,Illinois,http://www.dekalbcounty.org
+DeWitt County,Illinois,http://www.dewittcountyill.com
+Douglas County,Illinois,http://www.douglascountyil.com/
+DuPage County,Illinois,http://www.dupageco.org
+Edgar County,Illinois,http://www.edgarcountyillinois.com
+Effingham County,Illinois,http://www.co.effingham.il.us
+Fayette County,Illinois,http://www.fayettecountyillinois.org
+Ford County,Illinois,http://www.fordcountycourthouse.com
+Franklin County,Illinois,http://www.franklincountyil.gov
+Fulton County,Illinois,http://www.fultonco.org
+Grundy County,Illinois,https://www.grundyco.org/
+Hamilton County,Illinois,https://www.hamiltoncountyillinois.com/
+Hancock County,Illinois,https://www.hancockcounty-il.gov/
+Hardin County,Illinois,https://www.hardincountyil.org/
+Henderson County,Illinois,http://www.hendersoncountyedc.com
+Henry County,Illinois,http://www.henrycty.com
+Iroquois County,Illinois,http://www.co.iroquois.il.us
+Jackson County,Illinois,http://www.jacksoncounty-il.gov/
+Jefferson County,Illinois,http://www.jeffersoncountyillinois.com/
+Jersey County,Illinois,http://www.jerseycounty-il.us
+Jo Daviess County,Illinois,https://www.jodaviesscountyil.gov
+Kane County,Illinois,http://countyofkane.org
+Kankakee County,Illinois,http://www.co.kankakee.il.us
+Kendall County,Illinois,http://www.co.kendall.il.us
+Knox County,Illinois,http://www.knoxcountyil.com
+Lake County,Illinois,http://www.lakecountyil.gov
+LaSalle County,Illinois,https://lasallecountyil.gov/
+Lawrence County,Illinois,http://www.lawrencecountyillinois.com
+Lee County,Illinois,http://www.leecountyil.com/
+Livingston County,Illinois,http://www.livingstoncounty-il.org/wordpress/
+Logan County,Illinois,https://logancountyil.gov/index.php?lang=en
+McDonough County,Illinois,http://mcg.mcdonough.il.us/
+McHenry County,Illinois,http://www.co.mchenry.il.us
+McLean County,Illinois,http://www.mcleancountyil.gov/
+Macon County,Illinois,http://www.co.macon.il.us/
+Macoupin County,Illinois,http://www.macoupincountyil.gov/
+Madison County,Illinois,https://www.madisoncountyil.gov
+Marshall County,Illinois,http://www.marshallcountyillinois.com
+Mason County,Illinois,http://www.masoncountyil.org
+Menard County,Illinois,http://www.menardcountyil.com
+Mercer County,Illinois,http://www.mercercountyil.org
+Monroe County,Illinois,https://monroecountyil.gov/
+Montgomery County,Illinois,http://www.montgomeryco.com
+Moultrie County,Illinois,http://www.moultriecountyil.com/
+Ogle County,Illinois,http://www.oglecounty.org
+Peoria County,Illinois,https://www.peoriacounty.org
+Perry County,Illinois,https://perryil.com
+Piatt County,Illinois,http://www.piattcounty.org
+Pike County,Illinois,http://www.pikecountyil.org/
+Pope County,Illinois,http://www.popeco.net
+Pulaski County,Illinois,https://www.pulaskicountyil.net
+Putnam County,Illinois,http://www.co.putnam.il.us/
+Randolph County,Illinois,http://am.randolphco.org/
+Rock Island County,Illinois,https://rockislandcountyil.gov/
+St. Clair County,Illinois,http://www.co.st-clair.il.us
+Saline County,Illinois,http://www.salinecounty.illinois.gov/
+Sangamon County,Illinois,http://www.co.sangamon.il.us
+Schuyler County,Illinois,http://www.schuylercountyillinois.com
+Shelby County,Illinois,http://www.shelbycounty-il.com
+Stark County,Illinois,http://www.starkcountyillinois.com/
+Stephenson County,Illinois,http://www.co.stephenson.il.us
+Tazewell County,Illinois,http://www.tazewell.com
+Union County,Illinois,http://www.unioncountyil.gov/
+Warren County,Illinois,http://www.warrencountyil.com
+Washington County,Illinois,http://www.washingtonco.illinois.gov/
+Wayne County,Illinois,http://www.fairfield-il.com/county/
+White County,Illinois,http://www.whitecounty-il.gov
+Whiteside County,Illinois,http://www.whiteside.org
+Will County,Illinois,http://www.willcountyillinois.com
+Williamson County,Illinois,http://www.williamsoncountyil.gov/
+Winnebago County,Illinois,http://www.wincoil.us
+Woodford County,Illinois,http://www.woodford-county.org/
+Adams County,Indiana,http://www.co.adams.in.us
+Allen County,Indiana,http://www.co.allen.in.us
+Bartholomew County,Indiana,http://www.bartholomew.in.gov
+Benton County,Indiana,http://www.bentoncounty.in.gov/
+Boone County,Indiana,http://boonecounty.in.gov/
+Brown County,Indiana,http://browncounty-in.gov/Home.aspx
+Carroll County,Indiana,http://www.carrollcountyindiana.com
+Cass County,Indiana,http://www.co.cass.in.us
+Clark County,Indiana,http://www.co.clark.in.us
+Clinton County,Indiana,http://www.clintonco.com/
+Crawford County,Indiana,http://www.crawfordcounty.in.gov/
+Daviess County,Indiana,http://www.daviess.org/
+Dearborn County,Indiana,http://www.dearborncounty.org/
+Decatur County,Indiana,http://www.decaturcounty.in.gov
+DeKalb County,Indiana,http://www.co.dekalb.in.us
+Delaware County,Indiana,http://www.co.delaware.in.us
+Elkhart County,Indiana,http://www.elkhartcountyindiana.com
+Fayette County,Indiana,http://connersvillecommunity.com/fayette_county
+Floyd County,Indiana,http://www.floydcounty.in.gov
+Franklin County,Indiana,http://www.franklincountyin.com
+Fulton County,Indiana,http://www.co.fulton.in.us
+Gibson County,Indiana,http://gibsoncounty-in.gov/
+Grant County,Indiana,http://www.grantcounty.net
+Greene County,Indiana,http://www.co.greene.in.us/
+Hamilton County,Indiana,http://www.hamiltoncounty.in.gov
+Hancock County,Indiana,http://www.hancockcoingov.org
+Hendricks County,Indiana,http://www.co.hendricks.in.us
+Henry County,Indiana,http://www.henryco.net/
+Howard County,Indiana,http://www.co.howard.in.us
+Huntington County,Indiana,http://www.huntington.in.us/county/
+Jackson County,Indiana,http://www.jacksoncounty.in.gov
+Jasper County,Indiana,http://www.jaspercountyin.gov
+Jay County,Indiana,http://www.co.jay.in.us
+Jefferson County,Indiana,http://jeffersoncounty.in.gov/index.php
+Johnson County,Indiana,http://www.co.johnson.in.us
+Knox County,Indiana,http://www.knoxcounty.in.gov
+Kosciusko County,Indiana,http://www.kcgov.com
+LaGrange County,Indiana,http://www.lagrangecounty.org
+Lake County,Indiana,http://www.lakecountyin.org/
+LaPorte County,Indiana,http://www.laportecounty.org
+Madison County,Indiana,http://www.madisoncty.com
+Marion County,Indiana,http://www.indy.gov/eGov/County
+Marshall County,Indiana,http://www.co.marshall.in.us
+Martin County,Indiana,http://www.loogootee.com/government/martincountygovernment.html
+Miami County,Indiana,http://www.MiamiCountyIN.gov
+Monroe County,Indiana,http://www.co.monroe.in.us
+Montgomery County,Indiana,http://www.montgomerycounty.in.gov
+Morgan County,Indiana,http://www.morgancounty.in.gov/
+Newton County,Indiana,http://www.newtoncounty.in.gov/
+Noble County,Indiana,http://nobleco.squarespace.com/
+Owen County,Indiana,http://owencounty.in.gov/
+Parke County,Indiana,http://www.parkecounty.org
+Perry County,Indiana,http://www.perrycounty.in.gov/
+Pike County,Indiana,https://www.pikecounty.in.gov
+Porter County,Indiana,http://www.porterco.org
+Posey County,Indiana,http://www.poseycountyin.gov/
+Pulaski County,Indiana,http://www.pulaskionline.org
+Putnam County,Indiana,http://co.putnam.in.us
+Randolph County,Indiana,http://randolphcounty.us/
+Ripley County,Indiana,http://www.ripleycounty.com/
+Rush County,Indiana,http://rushcounty.in.gov/
+St. Joseph County,Indiana,http://www.sjcindiana.com
+Shelby County,Indiana,http://www.co.shelby.in.us
+Spencer County,Indiana,http://spencercounty.in.gov/
+Starke County,Indiana,http://www.co.starke.in.us
+Steuben County,Indiana,http://www.steubencounty.com/
+Sullivan County,Indiana,http://www.sullivancounty.in.gov
+Switzerland County,Indiana,http://www.switzerland-county.com/
+Tippecanoe County,Indiana,https://www.tippecanoe.in.gov/
+Union County,Indiana,http://www.unioncountyin.gov
+Vanderburgh County,Indiana,http://www.vanderburghgov.org
+Vermillion County,Indiana,http://www.vermilliongov.us
+Vigo County,Indiana,http://www.vigocounty.in.gov/
+Wabash County,Indiana,http://www.wabashcounty.in.gov/
+Warren County,Indiana,http://www.warrencounty.in.gov/
+Warrick County,Indiana,http://www.warrickcounty.gov/
+Washington County,Indiana,http://www.washingtoncounty.in.gov
+Wayne County,Indiana,http://co.wayne.in.us
+Wells County,Indiana,http://www.wellscounty.org
+White County,Indiana,http://www.whitecountyin.us/
+Whitley County,Indiana,https://whitleygov.com/
+Adair County,Iowa,http://www.adaircountyiowa.org
+Adams County,Iowa,https://adamscounty.iowa.gov/
+Allamakee County,Iowa,https://allamakeecounty.iowa.gov/
+Appanoose County,Iowa,https://appanoosecounty.iowa.gov/
+Audubon County,Iowa,https://www.auduboncountyia.gov/
+Benton County,Iowa,https://www.bentoncountyia.gov/
+Boone County,Iowa,https://www.boonecounty.iowa.gov/
+Bremer County,Iowa,https://www.bremercounty.iowa.gov/
+Buchanan County,Iowa,http://www.buchanancountyiowa.org
+Buena Vista County,Iowa,https://buenavistacounty.iowa.gov/
+Butler County,Iowa,https://butlercounty.iowa.gov/
+Calhoun County,Iowa,https://www.calhouncounty.iowa.gov/
+Carroll County,Iowa,https://www.carrollcountyiowa.gov/
+Cass County,Iowa,https://www.casscountyia.gov/
+Cedar County,Iowa,https://cedarcounty.iowa.gov/
+Cherokee County,Iowa,https://www.cherokeecounty.iowa.gov/
+Chickasaw County,Iowa,https://chickasawcounty.iowa.gov/
+Clarke County,Iowa,https://clarkecounty.iowa.gov/
+Clay County,Iowa,https://claycounty.iowa.gov/
+Clayton County,Iowa,http://www.claytoncountyia.gov
+Clinton County,Iowa,http://www.clintoncounty-ia.gov
+Crawford County,Iowa,https://www.crawfordcounty.iowa.gov/
+Dallas County,Iowa,https://www.dallascountyiowa.gov/
+Davis County,Iowa,http://www.daviscountyiowa.org
+Decatur County,Iowa,http://www.decaturcountyiowa.org/
+Delaware County,Iowa,https://delawarecounty.iowa.gov/
+Des Moines County,Iowa,https://www.desmoinescounty.iowa.gov/
+Dickinson County,Iowa,https://dickinsoncountyiowa.gov/
+Dubuque County,Iowa,https://www.dubuquecountyiowa.gov/
+Emmet County,Iowa,https://emmetcounty.iowa.gov/
+Fayette County,Iowa,https://fayettecounty.iowa.gov/
+Floyd County,Iowa,https://www.floydco.iowa.gov/
+Franklin County,Iowa,https://www.franklincountyia.gov/
+Fremont County,Iowa,https://www.fremontcountyia.gov/
+Greene County,Iowa,http://www.co.greene.ia.us
+Grundy County,Iowa,https://www.grundycountyiowa.gov/
+Guthrie County,Iowa,http://www.guthriecounty.org
+Hamilton County,Iowa,https://www.hamiltoncounty.iowa.gov/
+Hancock County,Iowa,https://hancockcountyia.gov/
+Hardin County,Iowa,https://www.hardincountyia.gov/
+Harrison County,Iowa,http://www.harrisoncountyia.org
+Henry County,Iowa,https://henrycounty.iowa.gov/
+Howard County,Iowa,https://howardcounty.iowa.gov/
+Humboldt County,Iowa,https://www.humboldtcounty.iowa.gov/
+Ida County,Iowa,https://idacounty.iowa.gov/
+Iowa County,Iowa,https://iowacounty.iowa.gov/
+Jackson County,Iowa,https://jacksoncounty.iowa.gov/
+Jasper County,Iowa,http://www.co.jasper.ia.us
+Des Moines,Iowa,http://www.dmgov.org/
+Jefferson County,Iowa,https://jeffersoncounty.iowa.gov/
+Johnson County,Iowa,https://www.johnsoncountyiowa.gov/
+Jones County,Iowa,https://www.jonescountyiowa.gov/
+Keokuk County,Iowa,https://www.keokukcountyia.com/
+Kossuth County,Iowa,https://kossuthcounty.iowa.gov/
+Lee County,Iowa,http://www.leecounty.org
+Linn County,Iowa,https://www.linncountyiowa.gov/
+Louisa County,Iowa,https://louisacountyia.gov/
+Lyon County,Iowa,https://lyoncounty.iowa.gov/
+Madison County,Iowa,https://madisoncounty.iowa.gov/
+Mahaska County,Iowa,https://www.mahaskacountyia.gov/
+Marion County,Iowa,https://www.marioncountyiowa.gov/
+Marshall County,Iowa,http://www.marshallcountyia.gov
+Mills County,Iowa,https://www.millscountyiowa.gov/
+Mitchell County,Iowa,https://mitchellcounty.iowa.gov/
+Monona County,Iowa,https://www.mononacounty.org/
+Monroe County,Iowa,https://monroecounty.iowa.gov/
+Montgomery County,Iowa,https://montgomerycountyia.gov/
+Muscatine County,Iowa,https://www.muscatinecountyiowa.gov/
+O'Brien County,Iowa,https://obriencounty.iowa.gov/
+Osceola County,Iowa,https://osceolacountyia.gov/
+Page County,Iowa,https://pagecounty.iowa.gov/
+Palo Alto County,Iowa,https://paloaltocounty.iowa.gov/
+Plymouth County,Iowa,http://www.co.plymouth.ia.us
+Pocahontas County,Iowa,https://pocahontascounty.iowa.gov/
+Polk County,Iowa,https://www.polkcountyiowa.gov/
+Pottawattamie County,Iowa,https://www.pottcounty-ia.gov/
+Poweshiek County,Iowa,https://poweshiekcounty.org/
+Ringgold County,Iowa,https://www.ringgoldcounty.iowa.gov/
+Sac County,Iowa,https://www.saccountyiowa.gov/
+Scott County,Iowa,https://www.scottcountyiowa.gov/
+Shelby County,Iowa,https://shelbycounty.iowa.gov/
+Sioux County,Iowa,https://siouxcountyia.gov/
+Story County,Iowa,https://www.storycountyiowa.gov/
+Tama County,Iowa,http://www.tamacounty.iowa.gov
+Taylor County,Iowa,https://taylorcounty.iowa.gov/
+Union County,Iowa,https://unioncountyiowa.gov/
+Van Buren County,Iowa,https://www.vanburencounty.iowa.gov/
+Wapello County,Iowa,http://www.wapellocounty.org
+Warren County,Iowa,http://www.warrencountyia.org
+Washington County,Iowa,https://washingtoncounty.iowa.gov/
+Wayne County,Iowa,https://www.waynecountyia.com/
+Webster County,Iowa,https://www.webstercountyia.gov/
+Winnebago County,Iowa,https://www.winnebagocountyiowa.gov
+Winneshiek County,Iowa,https://winneshiekcounty.iowa.gov/
+Woodbury County,Iowa,http://www.woodburycountyiowa.gov
+Worth County,Iowa,https://worthcountyiowa.gov/
+Wright County,Iowa,https://wrightcounty.iowa.gov/
+Allen County,Kansas,https://www.allencounty.org/
+Anderson County,Kansas,http://www.andersoncountyks.org/
+Atchison County,Kansas,https://www.atchisoncountyks.org/
+Barber County,Kansas,http://barber.ks.gov/
+Barton County,Kansas,https://www.bartoncounty.org/
+Bourbon County,Kansas,https://www.bourboncountyks.org/
+Brown County,Kansas,https://www.brcoks.org/
+Butler County,Kansas,https://www.bucoks.com/
+Chase County,Kansas,https://chasecountyks.com/
+Chautauqua County,Kansas,https://www.chautauquacountyks.com/
+Cherokee County,Kansas,http://cherokeecountyks.gov/
+Cheyenne County,Kansas,https://cncoks.us/
+Clark County,Kansas,http://www.clarkcountyks.com/
+Clay County,Kansas,https://www.claycountykansas.org/
+Cloud County,Kansas,http://www.cloudcountyks.org/
+Coffey County,Kansas,https://www.coffeycountyks.org/
+Comanche County,Kansas,http://www.comanchecoks.org/
+Cowley County,Kansas,https://www.cowleycounty.org/
+Crawford County,Kansas,https://www.crawfordcountykansas.org/
+Decatur County,Kansas,http://oberlinks.com/
+Dickinson County,Kansas,http://www.dkcoks.org/
+Doniphan County,Kansas,https://dpcountyks.com/
+Douglas County,Kansas,https://www.douglascountyks.org/
+Edwards County,Kansas,http://www.edwardscounty.org/
+Elk County,Kansas,https://www.elkcountyks.org/
+Ellis County,Kansas,https://www.ellisco.net/
+Ellsworth County,Kansas,http://www.ellsworthcounty.org/
+Finney County,Kansas,https://www.finneycounty.org/
+Ford County,Kansas,http://www.fordcounty.net/
+Franklin County,Kansas,http://www.franklincoks.org/
+Geary County,Kansas,https://www.gearycounty.org/
+Gove County,Kansas,https://govecountyks.org/
+Graham County,Kansas,https://www.grahamcountyks.com/
+Grant County,Kansas,http://www.grantcoks.org/
+Gray County,Kansas,http://www.grayco.org/
+Greeley County,Kansas,http://greeleycounty.org/
+Greenwood County,Kansas,http://www.greenwoodcounty.org/
+Hamilton County,Kansas,https://syracuseks.gov/county-boards-and-commissions
+Harper County,Kansas,http://www.harpercountyks.gov/
+Harvey County,Kansas,https://www.harveycounty.com/
+Haskell County,Kansas,https://www.haskellcounty.org/
+Hodgeman County,Kansas,https://hodgemancountyks.com/
+Jackson County,Kansas,https://jacksoncountyks.com/
+Jefferson County,Kansas,https://www.jfcountyks.com/
+Jewell County,Kansas,https://jewellcountykansas.net/
+Johnson County,Kansas,https://www.jocogov.org/
+Kearny County,Kansas,https://www.kearnycountykansas.com/
+Kingman County,Kansas,https://www.kingmancoks.org/
+Kiowa County,Kansas,https://kiowacountyks.org/
+Labette County,Kansas,https://www.labettecounty.com/
+Lane County,Kansas,http://www.lanecountyks.org/
+Leavenworth County,Kansas,https://www.leavenworthcounty.gov/
+Lincoln County,Kansas,http://www.lincolncoks.com/
+Linn County,Kansas,https://www.linncountyks.com/
+Logan County,Kansas,https://www.discoveroakley.com/
+Lyon County,Kansas,https://lyoncounty.org/
+McPherson County,Kansas,https://www.mcphersoncountyks.us/
+Marion County,Kansas,https://www.marioncoks.net/
+Marshall County,Kansas,http://ks-marshall.manatron.com/
+Meade County,Kansas,http://ks-meade.manatron.com/
+Miami County,Kansas,https://www.miamicountyks.org//
+Mitchell County,Kansas,https://www.mitchellcountykansas.com/
+Montgomery County,Kansas,https://www.mgcountyks.org/
+Morris County,Kansas,https://www.morriscountyks.org/
+Morton County,Kansas,https://mtcoks.com/
+Nemaha County,Kansas,https://www.nmcoks.us/
+Neosho County,Kansas,https://www.neoshocountyks.org/
+Ness County,Kansas,http://www.nesscountyks.com/
+Norton County,Kansas,https://nortoncounty.org/
+Osage County,Kansas,http://osageco.org/
+Osborne County,Kansas,http://www.osbornecounty.org/
+Ottawa County,Kansas,http://www.ottawacounty.org/
+Pawnee County,Kansas,http://www.pawneecountykansas.com/
+Phillips County,Kansas,https://www.phillipscountyks.org/
+Pottawatomie County,Kansas,https://www.pottcounty.org/
+Pratt County,Kansas,http://www.prattcounty.org/
+Rawlins County,Kansas,https://sites.google.com/a/rawlinscounty.org/rawlins-county-courthouse/
+Reno County,Kansas,https://www.renogov.org/
+Republic County,Kansas,http://republiccounty.org/
+Rice County,Kansas,https://www.ricecounty.us/
+Riley County,Kansas,https://www.rileycountyks.gov/
+Rooks County,Kansas,https://rookscounty.net/
+Rush County,Kansas,http://www.rushcountykansas.org/
+Russell County,Kansas,http://ks-russellco.manatron.com/
+Saline County,Kansas,https://www.saline.org/
+Scott County,Kansas,http://ks-scott.manatron.com
+Sedgwick County,Kansas,https://www.sedgwickcounty.org/
+Seward County,Kansas,http://www.sewardcountyks.org/
+Shawnee County,Kansas,http://www.snco.us/
+Sheridan County,Kansas,https://www.sheridancountyks.gov/
+Sherman County,Kansas,https://www.shermancountyks.gov/
+Smith County,Kansas,http://www.smithcoks.com/
+Stafford County,Kansas,https://www.staffordcounty.org/
+Stanton County,Kansas,http://stantoncountyks.com/
+Stevens County,Kansas,http://stevenscoks.org/
+Sumner County,Kansas,https://ks-sumner.publicaccessnow.com/
+Thomas County,Kansas,http://thomascountyks.gov/
+Trego County,Kansas,https://www.tregocountyks.com/
+Wabaunsee County,Kansas,https://www.wbcounty.org/
+Wallace County,Kansas,http://www.WallaceCounty.net
+Washington County,Kansas,http://www.washingtoncountyks.gov/
+Wichita County,Kansas,http://www.wichitacounty.org/
+Wilson County,Kansas,http://www.wilsoncountykansas.org/
+Woodson County,Kansas,http://woodsoncounty.net/
+Wyandotte County,Kansas,https://www.wycokck.org/
+Adair County,Kentucky,http://www.columbia-adaircounty.com
+Allen County,Kentucky,http://www.allencountykentucky.com
+Anderson County,Kentucky,http://andersoncounty.ky.gov
+Ballard County,Kentucky,http://www.ballardcounty.ky.gov/
+Barren County,Kentucky,https://barrencounty.ky.gov/
+Bath County,Kentucky,http://bathcounty.ky.gov
+Bell County,Kentucky,http://bellcounty.ky.gov/default.htm
+Boone County,Kentucky,http://www.boonecountyky.org/
+Bourbon County,Kentucky,http://www.bourbonky.com/
+Boyd County,Kentucky,http://boydcountyky.gov/
+Boyle County,Kentucky,http://www.boyleky.com/
+Bracken County,Kentucky,http://www.brackencounty.ky.gov
+Breathitt County,Kentucky,http://breathittcounty.ky.gov
+Breckinridge County,Kentucky,http://www.breckinridgecounty.net
+Bullitt County,Kentucky,http://bullittky.com
+Butler County,Kentucky,http://www.butlercounty.ky.gov/
+Caldwell County,Kentucky,http://www.caldwellcounty.ky.gov/
+Calloway County,Kentucky,http://www.callowaycounty-ky.gov
+Campbell County,Kentucky,http://www.campbellcountyky.gov/
+Carlisle County,Kentucky,http://carlislecounty.ky.gov
+Carroll County,Kentucky,http://www.carrollcountygov.us
+Carter County,Kentucky,http://cartercounty.ky.gov/Pages/default.aspx
+Casey County,Kentucky,http://www.libertykentucky.org
+Christian County,Kentucky,http://www.christiancountyky.gov
+Clark County,Kentucky,http://www.clarkcoky.com
+Clay County,Kentucky,https://claycounty.ky.gov
+Clinton County,Kentucky,http://clintoncounty.ky.gov
+Crittenden County,Kentucky,http://www.marionky.gov/index.shtml
+Cumberland County,Kentucky,http://www.cumberlandcounty.com
+Daviess County,Kentucky,http://www.daviessky.org
+Edmonson County,Kentucky,http://www.edmonsoncounty.ky.gov
+Elliott County,Kentucky,http://elliottcounty.ky.gov/Pages/default.aspx
+Estill County,Kentucky,http://www.estillky.com/
+Richmond,Kentucky,http://www.richmond.ky.us
+Fayette County,Kentucky,http://www.lexingtonky.gov
+Fleming County,Kentucky,http://www.flemingkychamber.com
+Floyd County,Kentucky,http://www.floydcountykentucky.com
+Franklin County,Kentucky,http://franklincounty.ky.gov
+Fulton County,Kentucky,http://www.fultoncounty.ky.gov/
+Gallatin County,Kentucky,http://gallatincounty.ky.gov
+Garrard County,Kentucky,https://garrardcounty.us/
+Grant County,Kentucky,http://grantcounty.ky.gov
+Graves County,Kentucky,http://www.gravescountyky.com
+Grayson County,Kentucky,http://graysoncountyky.gov
+Green County,Kentucky,http://www.greencounty.ky.gov/
+Greenup County,Kentucky,http://greenupcounty.ky.gov/Pages/default.aspx
+Hancock County,Kentucky,http://www.hancockky.us
+Hardin County,Kentucky,http://www.hcky.org
+Harlan County,Kentucky,http://judge-executive.harlanonline.net/
+Harrison County,Kentucky,http://www.harrisoncountyfiscalcourt.com
+Hart County,Kentucky,http://www.hartcountyky.org
+Henderson County,Kentucky,http://hendersonky.us/
+Henry County,Kentucky,http://www.henrycountygov.com
+Hickman County,Kentucky,http://hickmancounty.ky.gov
+Hopkins County,Kentucky,http://hopkinscounty.ky.gov/
+Jefferson County,Kentucky,http://www.louisvilleky.gov
+Jessamine County,Kentucky,http://www.jessamineco.com
+Johnson County,Kentucky,http://www.johnsoncoky.com
+Kenton County,Kentucky,http://www.kentoncounty.org
+Knott County,Kentucky,http://www.knottky.com
+Knox County,Kentucky,https://knoxfiscalcourt.com/
+LaRue County,Kentucky,http://www.laruecounty.org
+Laurel County,Kentucky,https://londonky.gov/
+Lawrence County,Kentucky,http://www.lawrencecounty.ky.gov/
+Lee County,Kentucky,http://www.leecounty.ky.gov/
+Leslie County,Kentucky,http://www.lesliecounty.ky.gov
+Letcher County,Kentucky,http://letchercounty.ky.gov
+Lewis County,Kentucky,http://lewiscounty.ky.gov
+Lincoln County,Kentucky,http://www.lincolnky.com
+Livingston County,Kentucky,http://livingstoncountyky.com/
+Logan County,Kentucky,https://logancounty.ky.gov
+Lyon County,Kentucky,http://www.lyoncountyky.com/
+McCracken County,Kentucky,http://mccrackencountyky.gov
+McCreary County,Kentucky,http://www.mccrearycounty.com
+McLean County,Kentucky,http://www.mcleancounty.ky.gov/
+Madison County,Kentucky,http://www.madisoncountyky.us
+Magoffin County,Kentucky,http://magoffincounty.ky.gov/
+Marion County,Kentucky,http://www.marioncounty.ky.gov/
+Marshall County,Kentucky,http://www.marshallcountyky.gov
+Martin County,Kentucky,http://www.martincountykentucky.com
+Mason County,Kentucky,http://masoncountykentucky.us/
+Meade County,Kentucky,http://www.meadeky.gov/
+Menifee County,Kentucky,http://www.menifeecounty.ky.gov
+Mercer County,Kentucky,http://www.mercercounty.ky.gov
+Metcalfe County,Kentucky,http://www.metcalfecounty.com/
+Monroe County,Kentucky,http://www.monroecounty.ky.gov
+Montgomery County,Kentucky,http://montgomerycounty.ky.gov/Pages/default.aspx
+Morgan County,Kentucky,http://morgancounty.ky.gov/Pages/default.aspx
+Muhlenberg County,Kentucky,http://www.muhlenbergcountyky.org/
+Nelson County,Kentucky,http://www.nelsoncountyky.com
+Nicholas County,Kentucky,http://nicholascounty.ky.gov
+Ohio County,Kentucky,http://ohiocounty.ky.gov
+Oldham County,Kentucky,http://www.oldhamcounty.net
+Owen County,Kentucky,http://www.owencountyky.us
+Pendleton County,Kentucky,http://pendletoncounty.ky.gov
+Perry County,Kentucky,http://www.perrycounty.ky.gov
+Pike County,Kentucky,http://www.pikecountyky.gov/
+Powell County,Kentucky,http://powellcountyky.us/
+Pulaski County,Kentucky,http://pcgovt.com
+Robertson County,Kentucky,http://www.robertsoncounty.ky.gov
+Rockcastle County,Kentucky,https://rockcastlecountyky.com/
+Rowan County,Kentucky,http://www.moreheadrowan.org/rowancounty
+Russell County,Kentucky,http://www.russellcountyky.com
+Scott County,Kentucky,http://www.scottky.gov
+Shelby County,Kentucky,http://www.shelbycountykentucky.com
+Simpson County,Kentucky,https://simpsoncountyky.gov/
+Spencer County,Kentucky,http://www.spencercountyky.gov
+Taylor County,Kentucky,http://www.taylorcounty.us/
+Todd County,Kentucky,http://www.toddcounty.ky.gov/
+Trigg County,Kentucky,http://www.triggcounty.ky.gov/
+Trimble County,Kentucky,http://www.trimblecounty.ky.gov
+Union County,Kentucky,http://www.unioncountyky.org
+Warren County,Kentucky,http://www.warrencountyky.gov
+Washington County,Kentucky,http://www.washingtoncountyky.com/
+Wayne County,Kentucky,http://waynecounty.ky.gov/Pages/default.aspx
+Webster County,Kentucky,http://www.webstercountyky.com
+Whitley County,Kentucky,http://www.whitleycountyfiscalcourt.com
+Woodford County,Kentucky,http://woodfordcounty.ky.gov
+Acadia Parish,Louisiana,http://www.appj.org/index.html
+Allen Parish,Louisiana,https://www.allenparish.com
+Ascension Parish,Louisiana,http://www.ascensionparish.net
+Assumption Parish,Louisiana,https://www.assumptionla.com/
+Avoyelles Parish,Louisiana,http://www.avoypj.org/
+Beauregard Parish,Louisiana,http://www.beauparish.org
+Bienville Parish,Louisiana,http://www.bienvilleparish.org
+Bossier Parish,Louisiana,http://www.bossierparishla.gov/
+Caddo Parish,Louisiana,http://www.caddo.org
+Calcasieu Parish,Louisiana,http://www.cppj.net/
+Caldwell Parish,Louisiana,http://www.caldwellparish.org
+Catahoula Parish,Louisiana,http://www.discovercatahoula.com/
+Claiborne Parish,Louisiana,http://claiborneparish.org/
+Concordia Parish,Louisiana,http://www.conppj.org/
+De Soto Parish,Louisiana,http://www.desotoppj.com
+East Baton Rouge Parish,Louisiana,https://www.brla.gov/
+East Feliciana Parish,Louisiana,https://www.eastfelicianaclerk.org/
+Iberia Parish,Louisiana,http://iberiaparishgovernment.com
+Iberville Parish,Louisiana,http://www.ibervilleparish.com
+Jackson Parish,Louisiana,http://www.jacksonparishpolicejury.org/Default.aspx
+Jefferson Parish,Louisiana,http://www.jeffparish.net
+Lafayette Parish,Louisiana,http://www.lafayettetravel.com
+Lafourche Parish,Louisiana,http://www.lafourchegov.org
+Lincoln Parish,Louisiana,http://www.lincolnparish.org/
+Livingston Parish,Louisiana,http://www.livingstonparishla.gov/
+Madison Parish,Louisiana,http://madisonparish.org
+Natchitoches Parish,Louisiana,https://www.npgov.org/
+Ouachita Parish,Louisiana,http://oppj.org/
+Plaquemines Parish,Louisiana,http://plaqueminesparish.com/
+Pointe Coupee Parish,Louisiana,http://www.pcpolicejury.org/
+Rapides Parish,Louisiana,http://www.rppj.com
+Red River Parish,Louisiana,http://rrppj.org/
+Sabine Parish,Louisiana,http://www.sabineparishpolicejury.com/
+St. Bernard Parish,Louisiana,http://www.sbpg.net
+St. Charles Parish,Louisiana,https://www.stcharlesparish.gov
+St. Helena Parish,Louisiana,http://sthelenaparish.la.gov/
+St. James Parish,Louisiana,http://www.stjamesla.com
+St. John the Baptist Parish,Louisiana,http://www.sjbparish.com
+St. Landry Parish,Louisiana,https://stlandrypg.org/
+St. Martin Parish,Louisiana,https://www.stmartinparish.net/
+St. Mary Parish,Louisiana,http://www.stmaryparishla.gov/
+St. Tammany Parish,Louisiana,http://www.stpgov.org
+Tangipahoa Parish,Louisiana,http://www.tangipahoa.org
+Tensas Parish,Louisiana,http://louisiana.gov/Government/Parish_Tensas/
+Terrebonne Parish,Louisiana,http://www.tpcg.org
+Vermilion Parish,Louisiana,http://vermilionparishpolicejury.com
+Vernon Parish,Louisiana,http://www.vppjla.com/
+Washington Parish,Louisiana,http://www.washingtonparishalerts.org/
+Webster Parish,Louisiana,http://www.websterparishla.org/index.html
+West Baton Rouge Parish,Louisiana,http://www.wbrcouncil.org/Default.asp
+West Feliciana Parish,Louisiana,http://wfparish.org/
+Androscoggin County,Maine,http://www.androscoggincountymaine.gov
+Aroostook County,Maine,http://www.aroostook.me.us
+Cumberland County,Maine,http://www.cumberlandcounty.org
+Franklin County,Maine,https://franklincountymaine.gov/
+Hancock County,Maine,http://www.co.hancock.me.us
+Kennebec County,Maine,http://www.kennebeccounty.org
+Knox County,Maine,http://www.knoxcountymaine.gov/
+Lincoln County,Maine,http://www.lincolncountymaine.me
+Oxford County,Maine,http://www.oxfordcounty.org
+Penobscot County,Maine,https://www.penobscot-county.net
+Piscataquis County,Maine,https://www.piscataquis.us/
+Sagadahoc County,Maine,http://www.sagcounty.com
+Somerset County,Maine,http://somersetcounty-me.org/
+Waldo County,Maine,http://waldocountyme.gov/
+Washington County,Maine,http://washingtoncountymaine.com/
+York County,Maine,http://www.yorkcountymaine.gov/
+Allegany County,Maryland,http://gov.allconet.org
+Anne Arundel County,Maryland,http://www.aacounty.org/
+Baltimore County,Maryland,http://www.baltimorecountymd.gov/
+Calvert County,Maryland,http://www.calvertcountymd.gov
+Caroline County,Maryland,http://www.carolinemd.org/
+Carroll County,Maryland,https://carrollcountymd.gov
+Cecil County,Maryland,http://www.ccgov.org
+Charles County,Maryland,http://www.charlescountymd.gov
+Dorchester County,Maryland,http://www.dorchestercountymd.com
+Frederick County,Maryland,http://www.FrederickCountyMD.gov/
+Garrett County,Maryland,http://www.garrettcounty.org/
+Harford County,Maryland,http://www.harfordcountymd.gov
+Howard County,Maryland,https://www.howardcountymd.gov/
+Kent County,Maryland,http://www.kentcounty.com
+Montgomery County,Maryland,https://www.montgomerycountymd.gov/
+Prince George's County,Maryland,http://www.princegeorgescountymd.gov
+Queen Anne's County,Maryland,http://www.qac.org
+St. Mary's County,Maryland,http://www.stmarysmd.com
+Somerset County,Maryland,http://www.somersetmd.us
+Talbot County,Maryland,http://www.talbotcountymd.gov
+Washington County,Maryland,http://www.washco-md.net/
+Wicomico County,Maryland,http://www.wicomicocounty.org
+Worcester County,Maryland,http://www.co.worcester.md.us
+Barnstable County,Massachusetts,http://www.barnstablecounty.org
+Bristol County,Massachusetts,http://www.countyofbristol.net
+Dukes County,Massachusetts,http://www.dukescounty.org
+Nantucket,Massachusetts,http://www.nantucket-ma.gov/
+Norfolk County,Massachusetts,http://www.norfolkcounty.org
+Plymouth County,Massachusetts,http://www.plymouthcountyma.gov/
+Alcona County,Michigan,https://alconacountymi.com/
+Alger County,Michigan,https://www.algercounty.gov/
+Allegan County,Michigan,http://www.allegancounty.org
+Alpena County,Michigan,http://www.alpenacounty.org
+Bay County,Michigan,http://www.baycounty-mi.gov
+Benzie County,Michigan,http://www.benzieco.net
+Branch County,Michigan,https://www.countyofbranch.com/
+Calhoun County,Michigan,https://www.calhouncountymi.gov/
+Cass County,Michigan,http://www.casscountymi.org
+Charlevoix County,Michigan,http://www.charlevoixcounty.org
+Chippewa County,Michigan,http://www.chippewacountymi.gov
+Clinton County,Michigan,http://www.clinton-county.org
+Crawford County,Michigan,http://www.crawfordco.org
+Dickinson County,Michigan,http://www.dickinsoncountymi.gov
+Emmet County,Michigan,https://www.emmetcounty.org/
+Genesee County,Michigan,https://www.geneseecountymi.gov/
+Gladwin County,Michigan,http://www.gladwinco.com
+Grand Traverse County,Michigan,https://www.gtcountymi.gov/
+Gratiot County,Michigan,https://www.gratiotmi.com/
+Ingham County,Michigan,http://www.ingham.org
+Isabella County,Michigan,http://www.isabellacounty.org
+Jackson County,Michigan,http://www.co.jackson.mi.us
+Kalamazoo County,Michigan,http://www.kalcounty.com
+Kent County,Michigan,http://www.accesskent.com
+Keweenaw County,Michigan,http://www.keweenawcountyonline.org/
+Lake County,Michigan,http://www.lakecounty-michigan.com/
+Lapeer County,Michigan,http://lapeercountyweb.org
+Leelanau County,Michigan,https://www.leelanau.gov
+Lenawee County,Michigan,http://www.lenawee.mi.us
+Luce County,Michigan,http://www.lucecountymi.com/
+Mackinac County,Michigan,http://www.mackinaccounty.net
+Macomb County,Michigan,http://macombgov.org
+Manistee County,Michigan,http://www.manisteecountymi.gov
+Marquette County,Michigan,http://www.co.marquette.mi.us
+Mason County,Michigan,http://www.masoncounty.net
+Mecosta County,Michigan,http://www.co.mecosta.mi.us
+Midland County,Michigan,http://www.co.midland.mi.us
+Missaukee County,Michigan,http://www.missaukee.org
+Monroe County,Michigan,http://www.co.monroe.mi.us
+Montcalm County,Michigan,http://www.montcalm.org
+Muskegon County,Michigan,http://www.co.muskegon.mi.us
+Oakland County,Michigan,http://www.oakgov.com
+Ontonagon County,Michigan,http://ontonagoncounty.org/
+Osceola County,Michigan,http://www.osceola-county.org
+Saginaw County,Michigan,http://www.saginawcounty.com
+St. Clair County,Michigan,http://www.stclaircounty.org
+Tuscola County,Michigan,http://www.tuscolacounty.org
+Van Buren County,Michigan,http://www.vanburencountymi.gov
+Wayne County,Michigan,http://www.waynecounty.com
+Wexford County,Michigan,http://www.wexfordcounty.org
+Aitkin County,Minnesota,http://www.co.aitkin.mn.us
+Anoka County,Minnesota,http://www.co.anoka.mn.us
+Becker County,Minnesota,http://www.co.becker.mn.us
+Beltrami County,Minnesota,http://www.co.beltrami.mn.us
+Benton County,Minnesota,http://www.co.benton.mn.us
+Big Stone County,Minnesota,http://www.bigstonecounty.org
+Blue Earth County,Minnesota,http://www.co.blue-earth.mn.us
+Brown County,Minnesota,http://www.co.brown.mn.us
+Carlton County,Minnesota,http://www.co.carlton.mn.us
+Carver County,Minnesota,https://www.co.carver.mn.us
+Cass County,Minnesota,http://www.co.cass.mn.us
+Chippewa County,Minnesota,http://www.co.chippewa.mn.us
+Chisago County,Minnesota,https://www.chisagocountymn.gov/
+Clay County,Minnesota,http://www.claycountymn.gov
+Clearwater County,Minnesota,http://www.co.clearwater.mn.us
+Cook County,Minnesota,http://www.co.cook.mn.us
+Cottonwood County,Minnesota,http://www.co.cottonwood.mn.us
+Crow Wing County,Minnesota,https://crowwing.us
+Dakota County,Minnesota,http://www.dakotacounty.us
+Dodge County,Minnesota,http://www.co.dodge.mn.us
+Douglas County,Minnesota,http://www.co.douglas.mn.us/
+Faribault County,Minnesota,http://www.co.faribault.mn.us
+Fillmore County,Minnesota,http://www.co.fillmore.mn.us
+Freeborn County,Minnesota,http://www.co.freeborn.mn.us
+Goodhue County,Minnesota,http://www.co.goodhue.mn.us/
+Grant County,Minnesota,http://www.co.grant.mn.us
+Hennepin County,Minnesota,http://www.hennepin.us/
+Houston County,Minnesota,http://co.houston.mn.us
+Hubbard County,Minnesota,http://www.co.hubbard.mn.us
+Isanti County,Minnesota,http://www.co.isanti.mn.us
+Itasca County,Minnesota,http://www.co.itasca.mn.us
+Jackson County,Minnesota,http://www.co.jackson.mn.us
+Kanabec County,Minnesota,http://www.kanabeccounty.org
+Kandiyohi County,Minnesota,http://www.co.kandiyohi.mn.us
+Kittson County,Minnesota,http://www.co.kittson.mn.us
+Koochiching County,Minnesota,http://www.co.koochiching.mn.us
+Lac qui Parle County,Minnesota,http://lqpco.com/
+Lake County,Minnesota,http://www.co.lake.mn.us
+Lake of the Woods County,Minnesota,https://www.co.lake-of-the-woods.mn.us/
+Le Sueur County,Minnesota,http://www.co.le-sueur.mn.us
+Lincoln County,Minnesota,http://www.co.lincoln.mn.us
+Lyon County,Minnesota,http://www.lyonco.org/
+McLeod County,Minnesota,http://www.co.mcleod.mn.us
+Mahnomen County,Minnesota,http://www.co.mahnomen.mn.us/
+Marshall County,Minnesota,http://www.co.marshall.mn.us
+Martin County,Minnesota,http://www.co.martin.mn.us
+Meeker County,Minnesota,http://www.co.meeker.mn.us
+Mille Lacs County,Minnesota,http://www.co.mille-lacs.mn.us
+Morrison County,Minnesota,http://www.co.morrison.mn.us
+Mower County,Minnesota,http://www.co.mower.mn.us
+Murray County,Minnesota,http://www.murray-countymn.com
+Nicollet County,Minnesota,http://www.co.nicollet.mn.us
+Nobles County,Minnesota,http://www.co.nobles.mn.us
+Norman County,Minnesota,http://www.co.norman.mn.us
+Olmsted County,Minnesota,https://www.olmstedcounty.gov
+Otter Tail County,Minnesota,https://ottertailcountymn.us/
+Pennington County,Minnesota,http://co.pennington.mn.us
+Pine County,Minnesota,http://www.co.pine.mn.us
+Pipestone County,Minnesota,http://www.pipestone-county.com/
+Polk County,Minnesota,http://www.co.polk.mn.us/
+Pope County,Minnesota,http://www.co.pope.mn.us/
+Ramsey County,Minnesota,http://www.ramseycounty.us
+Red Lake County,Minnesota,https://www.co.red-lake.mn.us/
+Redwood County,Minnesota,http://www.co.redwood.mn.us
+Renville County,Minnesota,http://www.renvillecountymn.com
+Rice County,Minnesota,http://www.co.rice.mn.us
+Rock County,Minnesota,http://www.co.rock.mn.us
+Roseau County,Minnesota,http://www.co.roseau.mn.us
+St. Louis County,Minnesota,http://www.stlouiscountymn.gov
+Scott County,Minnesota,http://www.scottcountymn.gov/
+Sherburne County,Minnesota,http://www.co.sherburne.mn.us
+Sibley County,Minnesota,http://www.co.sibley.mn.us
+Stearns County,Minnesota,http://www.co.stearns.mn.us
+Steele County,Minnesota,http://www.co.steele.mn.us
+Stevens County,Minnesota,http://www.co.stevens.mn.us
+Swift County,Minnesota,http://www.swiftcounty.com
+Todd County,Minnesota,http://www.co.todd.mn.us
+Traverse County,Minnesota,http://www.co.traverse.mn.us/
+Wabasha County,Minnesota,http://www.co.wabasha.mn.us
+Wadena County,Minnesota,http://www.co.wadena.mn.us
+Waseca County,Minnesota,http://www.co.waseca.mn.us
+Washington County,Minnesota,https://www.co.washington.mn.us
+Watonwan County,Minnesota,http://www.co.watonwan.mn.us
+Wilkin County,Minnesota,http://www.co.wilkin.mn.us
+Winona County,Minnesota,http://www.co.winona.mn.us
+Wright County,Minnesota,http://www.co.wright.mn.us
+Yellow Medicine County,Minnesota,http://www.co.ym.mn.gov
+Adams County,Mississippi,https://www.adamscountyms.net/
+Alcorn County,Mississippi,http://www.alcorncounty.org
+Amite County,Mississippi,http://www.amitecounty.ms
+Attala County,Mississippi,http://www.attalacounty.net/
+Benton County,Mississippi,http://bentoncountyms.gov/
+Bolivar County,Mississippi,http://www.co.bolivar.ms.us
+Calhoun County,Mississippi,http://calhouncoms.com/
+Carroll County,Mississippi,https://carrollcountyms.org
+Chickasaw County,Mississippi,http://www.chickasawcoms.com
+Choctaw County,Mississippi,http://choctawcountyms.com/
+Claiborne County,Mississippi,https://www.ccmsgov.us
+Clarke County,Mississippi,http://www.visitclarkecounty.com/
+Clay County,Mississippi,http://www.claycountyms.com/index.php/
+Coahoma County,Mississippi,http://www.coahomacounty.net/
+Copiah County,Mississippi,http://www.copiahcounty.org
+Covington County,Mississippi,http://www.covingtoncountyms.gov
+DeSoto County,Mississippi,http://www.desotocountyms.gov
+Forrest County,Mississippi,http://forrestcountyms.us/
+Franklin County,Mississippi,http://www.franklincountyms.com
+George County,Mississippi,http://www.georgecountyms.com/index.html
+Greene County,Mississippi,http://www.greenecountyms.gov
+Hancock County,Mississippi,https://hancockcounty.ms.gov/
+Harrison County,Mississippi,https://harrisoncountyms.gov/
+Hinds County,Mississippi,http://www.hindscountyms.com
+Holmes County,Mississippi,http://holmescountyms.org/
+Humphreys County,Mississippi,https://humphreyscounty.ms/
+Itawamba County,Mississippi,http://itawambacoms.com/
+Jackson County,Mississippi,http://www.co.jackson.ms.us
+Jasper County,Mississippi,http://www.co.jasper.ms.us/
+Jefferson County,Mississippi,http://www.jeffersoncountyms.com/
+Jefferson Davis County,Mississippi,http://www.jeffersondaviscountyms.com
+Jones County,Mississippi,https://jonescounty.com/
+Kemper County,Mississippi,http://www.kempercounty.ms
+Lafayette County,Mississippi,http://lafayettems.com/
+Lamar County,Mississippi,http://www.lamarcountyms.gov/11/index.php
+Lauderdale County,Mississippi,http://www.lauderdalecounty.org
+Lawrence County,Mississippi,http://lawrencecountyms.com/
+Leake County,Mississippi,http://www.leakecountyms.org/
+Lee County,Mississippi,http://leecoms.com
+Leflore County,Mississippi,http://www.leflorecounty.net/
+Lincoln County,Mississippi,http://www.golincolnms.com
+Lowndes County,Mississippi,http://lowndescountyms.com/
+Madison County,Mississippi,http://www.madison-co.com
+Marion County,Mississippi,http://www.marioncountyms.com
+Marshall County,Mississippi,http://www.marshall-county.com
+Monroe County,Mississippi,http://www.monroems.com
+Montgomery County,Mississippi,http://www.montgomerycountyms.com
+Neshoba County,Mississippi,http://www.neshobacounty.net
+Newton County,Mississippi,http://www.newtoncountyms.net/
+Oktibbeha County,Mississippi,http://www.oktibbehacountyms.org
+Panola County,Mississippi,http://www.panolacoms.com
+Pearl River County,Mississippi,http://www.pearlrivercounty.net
+Pike County,Mississippi,http://www.co.pike.ms.us
+Pontotoc County,Mississippi,http://pontotoccoms.com/
+Prentiss County,Mississippi,http://www.prentisscounty.org
+Quitman County,Mississippi,http://quitmancountyms.org/
+Rankin County,Mississippi,http://www.rankincounty.org
+Scott County,Mississippi,http://www.scottcountyms.gov
+Sharkey County,Mississippi,http://www.sharkeycounty.net
+Smith County,Mississippi,https://www.smithcountyms.gov/
+Stone County,Mississippi,http://www.stonecountyms.gov
+Sunflower County,Mississippi,http://www.sunflowercounty.ms.gov/Pages/Default.aspx
+Tate County,Mississippi,https://www.tatecountygov.com/
+Tippah County,Mississippi,http://www.co.tippah.ms.us
+Tishomingo County,Mississippi,http://co.tishomingo.ms.us
+Tunica County,Mississippi,http://www.tunicacountymississippi.com/
+Union County,Mississippi,http://unioncoms.com/
+Walthall County,Mississippi,http://www.co.walthall.ms.us/
+Warren County,Mississippi,http://www.co.warren.ms.us
+Washington County,Mississippi,http://www.washingtoncounty.ms
+Wayne County,Mississippi,http://www.waynecounty.ms
+Wilkinson County,Mississippi,http://www.wilkinson.co.ms.gov
+Winston County,Mississippi,http://www.winstonms.com/
+Yalobusha County,Mississippi,http://www.yalobushaonline.org/
+Yazoo County,Mississippi,http://yazoocounty.net
+Adair County,Missouri,http://adaircountymissouri.com
+Andrew County,Missouri,http://www.andrewcounty.org
+Atchison County,Missouri,http://www.atchisoncounty.org
+Audrain County,Missouri,http://www.audraincounty.org
+Barton County,Missouri,http://www.bartoncounty.com/
+Bates County,Missouri,http://www.batescounty.net
+Benton County,Missouri,http://www.bentoncomo.com/
+Boone County,Missouri,http://www.showmeboone.com
+Buchanan County,Missouri,http://www.co.buchanan.mo.us/
+Butler County,Missouri,https://butlercountymo.com/
+Caldwell County,Missouri,http://www.caldwellco.missouri.org
+Callaway County,Missouri,https://callawaycounty.org
+Camden County,Missouri,http://www.camdenmo.org
+Cape Girardeau County,Missouri,http://www.capecounty.us/
+Carroll County,Missouri,http://www.carrollcomo.org/
+Cass County,Missouri,http://www.casscounty.com/
+Cedar County,Missouri,http://cedarcountymo.gov
+Christian County,Missouri,http://christiancountymo.gov
+Clay County,Missouri,https://www.claycountymo.gov/
+Clinton County,Missouri,http://www.clintoncomo.org
+Cole County,Missouri,http://www.colecounty.org
+Cooper County,Missouri,http://www.coopercountymo.gov/
+Crawford County,Missouri,http://crawfordcountymo.net
+Daviess County,Missouri,https://www.daviesscountymo.gov
+DeKalb County,Missouri,https://www.dekalbcountymo.com/
+Dent County,Missouri,https://www.salemmo.com/dent/
+Dunklin County,Missouri,https://dunklincounty.org
+Franklin County,Missouri,http://www.franklinmo.org
+Gasconade County,Missouri,https://gasconadecounty.org/
+Gentry County,Missouri,http://gentrycounty.net/
+Greene County,Missouri,http://www.greenecountymo.org
+Grundy County,Missouri,http://www.grundycountymo.com
+Henry County,Missouri,http://www.henrycomo.com/
+Hickory County,Missouri,http://hickorycomo.com/
+Holt County,Missouri,http://holtcounty.org/
+Howell County,Missouri,http://www.howellcounty.net
+Jackson County,Missouri,http://www.jacksongov.org
+Jasper County,Missouri,http://www.jaspercounty.org
+Jefferson County,Missouri,http://www.jeffcomo.org
+Johnson County,Missouri,http://www.jococourthouse.com
+Knox County,Missouri,http://www.knoxcountymo.org
+Laclede County,Missouri,http://lacledecountymissouri.org/
+Lafayette County,Missouri,http://www.lafayettecountymo.com
+Lawrence County,Missouri,https://www.lawrencecountymo.org/
+Lewis County,Missouri,http://lewiscountymo.org
+Lincoln County,Missouri,http://www.lcmo.us
+Livingston County,Missouri,http://www.livingstoncountymo.com
+McDonald County,Missouri,http://www.mcdonaldcountygov.com/
+Macon County,Missouri,http://www.maconcountymo.com/
+Madison County,Missouri,http://madisoncountymo.us
+Maries County,Missouri,https://www.mariescountymo.gov
+Marion County,Missouri,http://marioncountymo.com/
+Miller County,Missouri,http://www.millercountymissouri.org
+Mississippi County,Missouri,http://www.misscomo.net/
+Monroe County,Missouri,http://www.monroecountymo.org
+Montgomery County,Missouri,http://mcmo.us/
+Morgan County,Missouri,https://www.morgancountymo.gov
+Newton County,Missouri,http://www.newtoncountymo.com/
+Nodaway County,Missouri,http://www.nodawaycountymo.com/
+Osage County,Missouri,http://osagecountygov.com
+Ozark County,Missouri,http://www.mogenweb.org/ozark/
+Pemiscot County,Missouri,http://www.pemiscotcounty.org/
+Perry County,Missouri,http://perrycountymo.us/
+Pettis County,Missouri,http://www.pettiscomo.com
+Phelps County,Missouri,http://www.phelpscounty.org
+Pike County,Missouri,http://www.pikecountymo.net/
+Platte County,Missouri,http://www.co.platte.mo.us
+Pulaski County,Missouri,http://www.pulaskicountymo.org/home.html
+Putnam County,Missouri,http://nemr.net/~putco/
+Ralls County,Missouri,http://www.rallscounty.org/
+Randolph County,Missouri,http://www.randolphcounty-mo.com/
+Ray County,Missouri,http://www.raycountymo.com/
+Ripley County,Missouri,http://www.ripleycountymissouri.org/
+St. Charles County,Missouri,http://www.sccmo.org
+St. Clair County,Missouri,http://www.stclaircomo.com
+Ste. Genevieve County,Missouri,http://stegencounty.org
+St. Francois County,Missouri,http://www.sfcgov.org/
+St. Louis County,Missouri,http://stlouiscountymo.gov/
+Saline County,Missouri,http://www.salinecountymo.org/
+Scotland County,Missouri,http://www.scotlandcountymo.org/
+Scott County,Missouri,http://www.scottcountymo.com/
+Shannon County,Missouri,http://www.shannon-county.com/
+Stone County,Missouri,http://www.stoneco-mo.us/
+Taney County,Missouri,http://www.taneycounty.org/
+Texas County,Missouri,http://www.texascountymissouri.gov/
+Vernon County,Missouri,http://www.vernoncountymo.org/
+Warren County,Missouri,http://www.warrencountymo.org
+Washington County,Missouri,http://www.washingtoncountymo.us/
+Webster County,Missouri,http://www.webstercountymo.gov/
+Worth County,Missouri,http://www.worthcounty.us/
+Wright County,Missouri,http://www.wrightcountymo.com/
+Beaverhead County,Montana,http://www.beaverheadcounty.org
+Big Horn County,Montana,http://www.bighorncountymt.gov/
+Blaine County,Montana,http://www.blainecounty-mt.gov
+Broadwater County,Montana,http://www.co.broadwater.mt.us
+Carbon County,Montana,http://co.carbon.mt.us/
+Carter County,Montana,http://www.cartercountymt.info
+Cascade County,Montana,https://www.cascadecountymt.gov/
+Chouteau County,Montana,http://www.co.chouteau.mt.us
+Custer County,Montana,https://custercountymt.com/
+Dawson County,Montana,http://www.dawsoncountymontana.org
+Deer Lodge County,Montana,http://www.anacondadeerlodge.mt.gov/
+Fallon County,Montana,http://www.falloncounty.net
+Fergus County,Montana,http://www.co.fergus.mt.us
+Flathead County,Montana,http://flathead.mt.gov
+Gallatin County,Montana,http://www.gallatin.mt.gov
+Garfield County,Montana,http://www.garfieldco.us/index.html
+Glacier County,Montana,http://www.glaciercountymt.org
+Granite County,Montana,http://www.co.granite.mt.us
+Hill County,Montana,http://hillcounty.us/
+Jefferson County,Montana,http://www.jeffersoncounty-mt.gov/
+Judith Basin County,Montana,http://www.co.judith-basin.mt.us
+Lake County,Montana,http://www.lakemt.gov/
+Lewis and Clark County,Montana,https://www.lccountymt.gov/home.html
+Liberty County,Montana,http://www.co.liberty.mt.us
+Lincoln County,Montana,http://www.lincolncountymt.us
+McCone County,Montana,http://mcconecountymt.com/
+Madison County,Montana,http://www.madison.mt.gov
+Meagher County,Montana,http://www.meagherco.com
+Mineral County,Montana,http://www.co.mineral.mt.us
+Missoula County,Montana,http://www.missoulacounty.us
+Musselshell County,Montana,https://musselshellcounty.org/
+Park County,Montana,http://www.parkcounty.org
+Petroleum County,Montana,http://petroleumcountymt.org/
+Pondera County,Montana,http://www.ponderacountymontana.org
+Powder River County,Montana,http://www.prco.mt.gov
+Powell County,Montana,http://www.powellcountymt.gov/ez/index.php
+Prairie County,Montana,http://visitterrymt.com/
+Ravalli County,Montana,http://www.rc.mt.gov
+Richland County,Montana,http://www.richland.org
+Roosevelt County,Montana,http://www.rooseveltcounty.org/
+Rosebud County,Montana,http://rosebudcountymt.gov
+Sanders County,Montana,http://www.co.sanders.mt.us
+Sheridan County,Montana,http://www.co.sheridan.mt.us
+Silver Bow County,Montana,http://co.silverbow.mt.us
+Stillwater County,Montana,http://www.stillwater.mt.gov
+Sweet Grass County,Montana,http://sweetgrasscountygov.com
+Teton County,Montana,http://www.tetoncomt.org
+Toole County,Montana,http://www.toolecountymt.gov
+Valley County,Montana,http://valleycountymt.net
+Wheatland County,Montana,http://www.harlowtonchamber.com/
+Yellowstone County,Montana,http://www.co.yellowstone.mt.gov
+Adams County,Nebraska,http://www.adamscounty.org
+Antelope County,Nebraska,http://www.co.antelope.ne.us
+Arthur County,Nebraska,https://arthurcounty.nebraska.gov/
+Banner County,Nebraska,https://bannercountyne.gov/
+Blaine County,Nebraska,http://blainecounty.nebraska.gov
+Boone County,Nebraska,http://www.co.boone.ne.us/
+Box Butte County,Nebraska,http://boxbuttecounty.us/
+Boyd County,Nebraska,http://www.boydcounty.ne.gov/
+Brown County,Nebraska,https://www.browncounty.ne.gov/
+Buffalo County,Nebraska,http://www.buffalogov.org
+Burt County,Nebraska,http://www.burtcounty.ne.gov
+Butler County,Nebraska,https://co.butler.ne.us/
+Cass County,Nebraska,http://www.cassne.org
+Cedar County,Nebraska,http://www.co.cedar.ne.us
+Chase County,Nebraska,http://www.co.chase.ne.us
+Cherry County,Nebraska,http://www.co.cherry.ne.us
+Cheyenne County,Nebraska,http://www.cheyennecountyne.net/
+Clay County,Nebraska,http://www.claycounty.ne.gov
+Colfax County,Nebraska,http://www.colfaxne.com
+Cuming County,Nebraska,http://www.cumingcounty.ne.gov
+Custer County,Nebraska,http://www.co.custer.ne.us/
+Dakota County,Nebraska,http://www.dakotacountyne.org
+Dawes County,Nebraska,http://www.dawes-county.com
+Dawson County,Nebraska,http://www.dawsoncountyne.org/
+Deuel County,Nebraska,http://www.co.deuel.ne.us
+Dixon County,Nebraska,http://www.co.dixon.ne.us
+Dodge County,Nebraska,http://www.dodgecounty.ne.gov
+Douglas County,Nebraska,https://www.douglascounty-ne.gov/
+Dundy County,Nebraska,http://www.co.dundy.ne.us
+Fillmore County,Nebraska,http://www.fillmorecounty.org/
+Franklin County,Nebraska,http://www.co.franklin.ne.us/
+Frontier County,Nebraska,http://www.co.frontier.ne.us/
+Furnas County,Nebraska,http://www.furnascounty.ne.gov/
+Gage County,Nebraska,http://www.gagecountynebraska.us/
+Garden County,Nebraska,https://gardencounty.ne.gov/
+Garfield County,Nebraska,http://www.garfieldcounty.ne.gov
+Gosper County,Nebraska,http://www.co.gosper.ne.us
+Greeley County,Nebraska,http://www.greeleycounty.ne.gov/
+Hall County,Nebraska,http://www.hallcountyne.gov
+Hamilton County,Nebraska,http://www.co.hamilton.ne.us
+Harlan County,Nebraska,http://www.harlancounty.ne.gov/
+Hayes County,Nebraska,http://www.hayescounty.ne.gov/
+Hitchcock County,Nebraska,http://www.hitchcockcounty.ne.gov/
+Holt County,Nebraska,http://www.co.holt.ne.us
+Hooker County,Nebraska,http://www.co.hooker.ne.us
+Howard County,Nebraska,http://www.howardcounty.ne.gov
+Jefferson County,Nebraska,http://www.co.jefferson.ne.us
+Johnson County,Nebraska,https://johnsoncounty.ne.gov/
+Kearney County,Nebraska,http://www.kearneycounty.ne.gov/
+Keith County,Nebraska,http://www.keithcountyne.gov/
+Keya Paha County,Nebraska,http://www.co.keya-paha.ne.us/
+Kimball County,Nebraska,http://www.co.kimball.ne.us
+Knox County,Nebraska,http://www.co.knox.ne.us
+Lancaster County,Nebraska,http://lancaster.ne.gov
+Lincoln County,Nebraska,http://www.co.lincoln.ne.us
+Logan County,Nebraska,http://logancounty.ne.gov/
+Loup County,Nebraska,http://www.co.loup.ne.us/
+McPherson County,Nebraska,http://www.mcphersoncounty.ne.gov/
+Madison County,Nebraska,http://www.madisoncountyne.com/
+Merrick County,Nebraska,http://www.merrickcounty.ne.gov/
+Morrill County,Nebraska,http://www.morrillcountyne.gov/
+Nance County,Nebraska,http://www.co.nance.ne.us
+Nemaha County,Nebraska,http://nemahacounty.ne.gov/
+Nuckolls County,Nebraska,http://www.NuckollsCounty.NE.gov
+Otoe County,Nebraska,http://www.co.otoe.ne.us/
+Perkins County,Nebraska,http://www.co.perkins.ne.us/
+Phelps County,Nebraska,http://www.phelpsgov.org/
+Pierce County,Nebraska,http://www.co.pierce.ne.us
+Platte County,Nebraska,http://www.plattecounty.net/
+Polk County,Nebraska,http://www.polkcounty.ne.gov/
+Red Willow County,Nebraska,http://www.co.red-willow.ne.us/
+Richardson County,Nebraska,http://www.co.richardson.ne.us
+Rock County,Nebraska,http://www.rockcountynebraska.org/
+Saline County,Nebraska,http://www.co.saline.ne.us/
+Sarpy County,Nebraska,http://www.sarpy.gov
+Saunders County,Nebraska,https://www.saunderscounty.ne.gov/
+Scotts Bluff County,Nebraska,http://www.scottsbluffcounty.org/
+Seward County,Nebraska,http://www.countyofsewardne.com/
+Thayer County,Nebraska,http://thayercountyne.gov/
+Thurston County,Nebraska,https://thurstoncountynebraska.us
+Washington County,Nebraska,http://www.co.washington.ne.us
+Wayne County,Nebraska,http://www.waynecountyne.org
+Webster County,Nebraska,http://www.co.webster.ne.us
+Wheeler County,Nebraska,http://www.wheelercounty.ne.gov/
+York County,Nebraska,http://www.yorkcounty.ne.gov/
+Churchill County,Nevada,http://churchillcounty.org/
+Clark County,Nevada,https://www.clarkcountynv.gov/
+Douglas County,Nevada,https://www.douglascountynv.gov/
+Elko County,Nevada,http://elkocountynv.net/
+Esmeralda County,Nevada,https://www.accessesmeralda.com/
+Eureka County,Nevada,http://co.eureka.nv.us/
+Humboldt County,Nevada,http://hcnv.us/
+Lander County,Nevada,http://landercountynv.org/
+Lincoln County,Nevada,http://lincolncountynv.org/
+Lyon County,Nevada,http://lyon-county.org/
+Mineral County,Nevada,http://mineralcountynv.us/
+Nye County,Nevada,http://nyecounty.net/
+Pershing County,Nevada,http://pershingcounty.net/
+Storey County,Nevada,http://storeycounty.org/
+Washoe County,Nevada,https://washoecounty.us/
+White Pine County,Nevada,http://whitepinecounty.net/
+Carson City,Nevada,http://www.carson.org/home
+Belknap County,New Hampshire,http://www.belknapcounty.org
+Carroll County,New Hampshire,http://www.carrollcountynh.net
+Cheshire County,New Hampshire,http://co.cheshire.nh.us
+Coos County,New Hampshire,http://www.cooscountynh.us
+Grafton County,New Hampshire,http://www.co.grafton.nh.us
+Hillsborough County,New Hampshire,http://hcnh.org/
+Merrimack County,New Hampshire,http://www.merrimackcounty.net/
+Rockingham County,New Hampshire,http://www.rockinghamcountynh.org
+Strafford County,New Hampshire,http://www.co.strafford.nh.us
+Sullivan County,New Hampshire,http://www.sullivancountynh.gov
+Atlantic County,New Jersey,https://www.atlantic-county.org
+Bergen County,New Jersey,http://www.co.bergen.nj.us
+Burlington County,New Jersey,http://www.co.burlington.nj.us
+Camden County,New Jersey,http://www.camdencounty.com
+Cape May County,New Jersey,http://capemaycountynj.gov/
+Cumberland County,New Jersey,http://co.cumberland.nj.us
+Essex County,New Jersey,http://www.essex-countynj.org
+Gloucester County,New Jersey,http://www.co.gloucester.nj.us
+Hudson County,New Jersey,http://www.hudsoncountynj.org
+Hunterdon County,New Jersey,https://www.co.hunterdon.nj.us
+Mercer County,New Jersey,http://www.mercercounty.org
+Middlesex County,New Jersey,http://www.co.middlesex.nj.us
+Monmouth County,New Jersey,https://www.co.monmouth.nj.us/
+Morris County,New Jersey,http://www.co.morris.nj.us
+Ocean County,New Jersey,http://www.co.ocean.nj.us
+Passaic County,New Jersey,http://www.PassaicCountyNJ.org
+Salem County,New Jersey,http://www.salemcountynj.gov
+Somerset County,New Jersey,http://www.co.somerset.nj.us
+Sussex County,New Jersey,http://www.sussex.nj.us
+Union County,New Jersey,http://www.ucnj.org
+Warren County,New Jersey,https://www.warrencountynj.gov/
+Bernalillo County,New Mexico,http://www.bernco.gov
+Catron County,New Mexico,http://www.catroncounty.us
+Chaves County,New Mexico,http://co.chaves.nm.us
+Cibola County,New Mexico,http://www.co.cibola.nm.us/
+Colfax County,New Mexico,http://www.co.colfax.nm.us/
+Curry County,New Mexico,http://www.currycounty.org
+De Baca County,New Mexico,http://debaca.nmgenweb.us/
+Doña Ana County,New Mexico,http://www.donaanacounty.org
+Eddy County,New Mexico,http://www.co.eddy.nm.us/
+Grant County,New Mexico,http://www.grantcountynm.gov
+Harding County,New Mexico,http://www.hardingcounty.org
+Hidalgo County,New Mexico,http://www.hidalgocounty.org
+Lea County,New Mexico,http://www.leacounty.net
+Lincoln County,New Mexico,http://www.lincolncountynm.gov/
+Los Alamos County,New Mexico,http://www.losalamosnm.us
+Luna County,New Mexico,http://lunacountynm.us
+McKinley County,New Mexico,http://www.co.mckinley.nm.us
+Mora County,New Mexico,http://CountyOfMora.com
+Otero County,New Mexico,http://co.otero.nm.us
+Quay County,New Mexico,http://quaycounty-nm.gov
+Rio Arriba County,New Mexico,http://www.rio-arriba.org
+Roosevelt County,New Mexico,http://www.rooseveltcounty.com
+Sandoval County,New Mexico,http://www.sandovalcountyNM.gov
+San Juan County,New Mexico,http://www.sjcounty.net
+San Miguel County,New Mexico,http://co.sanmiguel.nm.us/
+Santa Fe County,New Mexico,http://www.santafecountynm.gov
+Sierra County,New Mexico,http://www.sierracountynm.gov/
+Socorro County,New Mexico,http://www.socorrocounty.net
+Taos County,New Mexico,http://www.taoscounty.org
+Torrance County,New Mexico,http://www.torrancecountynm.org
+Union County,New Mexico,https://unionnm.us/
+Valencia County,New Mexico,http://www.co.valencia.nm.us
+Albany County,New York,http://www.albanycounty.com
+Allegany County,New York,https://www.alleganyco.gov/
+Broome County,New York,http://www.gobroomecounty.com
+Cattaraugus County,New York,https://www.cattco.org/
+Cayuga County,New York,http://www.cayugacounty.us
+Chautauqua County,New York,http://chqgov.com
+Chemung County,New York,https://www.chemungcountyny.gov/
+Chenango County,New York,http://www.co.chenango.ny.us
+Clinton County,New York,http://www.clintoncountygov.com
+Columbia County,New York,http://www.columbiacountyny.com/
+Cortland County,New York,http://www.cortland-co.org
+Delaware County,New York,http://delcony.us
+Dutchess County,New York,http://www.co.dutchess.ny.us
+Erie County,New York,http://www.erie.gov
+Essex County,New York,http://essexcountyny.gov
+Franklin County,New York,https://www.franklincountyny.gov/
+Fulton County,New York,http://www.fultoncountyny.gov/
+Genesee County,New York,http://www.co.genesee.ny.us
+Greene County,New York,http://www.greenegovernment.com
+Hamilton County,New York,http://www.hamiltoncounty.com
+Herkimer County,New York,http://www.herkimercounty.org
+Jefferson County,New York,http://www.co.jefferson.ny.us
+Lewis County,New York,http://www.lewiscounty.org
+Livingston County,New York,https://www.livingstoncounty.us/
+Madison County,New York,http://www.madisoncounty.ny.gov
+Monroe County,New York,http://www.monroecounty.gov
+Montgomery County,New York,http://www.co.montgomery.ny.us
+Nassau County,New York,http://www.nassaucountyny.gov
+New York County,New York,https://manhattanbp.nyc.gov/
+Niagara County,New York,http://www.niagaracounty.com
+Oneida County,New York,http://ocgov.net/
+Onondaga County,New York,http://www.ongov.net
+Ontario County,New York,https://www.ontariocountyny.gov
+Orange County,New York,http://www.orangecountygov.com
+Orleans County,New York,https://orleanscountyny.com/
+Oswego County,New York,http://www.oswegocounty.com
+Otsego County,New York,http://www.otsegocounty.com
+Putnam County,New York,http://www.putnamcountyny.com
+Rensselaer County,New York,http://www.rensco.com
+Rockland County,New York,http://www.rocklandgov.com
+St. Lawrence County,New York,http://www.stlawco.org
+Saratoga County,New York,http://www.saratogacountyny.gov
+Schenectady County,New York,http://www.schenectadycounty.com
+Schoharie County,New York,http://www.schohariecounty-ny.gov
+Schuyler County,New York,https://www.schuylercounty.us/
+Seneca County,New York,http://www.co.seneca.ny.us
+Steuben County,New York,https://www.steubencountyny.gov/
+Suffolk County,New York,http://www.suffolkcountyny.gov
+Sullivan County,New York,https://sullivanny.us/
+Tioga County,New York,http://www.tiogacountyny.com
+Tompkins County,New York,http://tompkinscountyny.gov
+Ulster County,New York,https://ulstercountyny.gov/
+Warren County,New York,http://warrencountyny.gov
+Washington County,New York,http://www.washingtoncountyny.gov/
+Wayne County,New York,https://web.co.wayne.ny.us
+Westchester County,New York,http://westchestergov.com
+Wyoming County,New York,https://www.wyomingco.net/
+Yates County,New York,http://www.yatescounty.org
+Alamance County,North Carolina,http://www.alamance-nc.com
+Alexander County,North Carolina,http://alexandercountync.gov
+Alleghany County,North Carolina,http://www.alleghanycounty-nc.gov
+Anson County,North Carolina,http://www.co.anson.nc.us
+Ashe County,North Carolina,http://www.ashecountygov.com
+Avery County,North Carolina,http://www.averycountync.gov
+Beaufort County,North Carolina,http://www.co.beaufort.nc.us
+Bertie County,North Carolina,http://www.co.bertie.nc.us
+Bladen County,North Carolina,http://bladennc.govoffice3.com
+Brunswick County,North Carolina,http://www.brunswickcountync.gov
+Buncombe County,North Carolina,https://www.buncombecounty.org
+Burke County,North Carolina,http://www.burkenc.org
+Cabarrus County,North Carolina,http://www.cabarruscounty.us
+Caldwell County,North Carolina,http://www.caldwellcountync.org
+Camden County,North Carolina,http://www.camdencountync.gov
+Carteret County,North Carolina,http://www.carteretcountync.gov
+Caswell County,North Carolina,http://www.caswellcountync.gov
+Catawba County,North Carolina,http://www.catawbacountync.gov
+Chatham County,North Carolina,http://www.chathamnc.org
+Cherokee County,North Carolina,http://www.cherokeecounty-nc.gov
+Chowan County,North Carolina,http://www.chowancounty-nc.gov
+Clay County,North Carolina,http://www.clayconc.com
+Cleveland County,North Carolina,http://www.clevelandcounty.com
+Columbus County,North Carolina,http://www.columbusco.org
+Craven County,North Carolina,http://www.cravencounty.com
+Cumberland County,North Carolina,http://www.co.cumberland.nc.us
+Currituck County,North Carolina,http://www.co.currituck.nc.us
+Dare County,North Carolina,http://www.darenc.com
+Davidson County,North Carolina,http://www.co.davidson.nc.us
+Davie County,North Carolina,http://www.co.davie.nc.us
+Duplin County,North Carolina,http://www.duplincountync.com
+Durham County,North Carolina,http://www.dconc.gov
+Edgecombe County,North Carolina,http://www.edgecombecountync.gov
+Forsyth County,North Carolina,http://www.co.forsyth.nc.us
+Franklin County,North Carolina,https://www.franklincountync.gov
+Gaston County,North Carolina,http://www.gastongov.com
+Gates County,North Carolina,https://gatescountync.gov/
+Graham County,North Carolina,http://www.grahamcounty.org
+Granville County,North Carolina,http://www.granvillecounty.org
+Greene County,North Carolina,https://greenecountync.gov/
+Guilford County,North Carolina,http://www.guilfordcountync.gov
+Halifax County,North Carolina,http://www.halifaxnc.com
+Harnett County,North Carolina,http://www.harnett.org
+Haywood County,North Carolina,http://www.haywoodcountync.gov
+Henderson County,North Carolina,http://www.hendersoncountync.gov
+Hertford County,North Carolina,http://www.hertfordcountync.gov
+Hoke County,North Carolina,http://www.hokecounty.net
+Hyde County,North Carolina,http://www.hydecountync.gov
+Iredell County,North Carolina,https://www.iredellcountync.gov
+Jackson County,North Carolina,http://www.jacksonnc.org
+Johnston County,North Carolina,http://www.johnstonnc.com
+Jones County,North Carolina,http://jonescountync.gov
+Lee County,North Carolina,https://www.leecountync.gov
+Lenoir County,North Carolina,http://www.lenoircountync.gov
+Lincoln County,North Carolina,http://www.lincolncounty.org
+McDowell County,North Carolina,http://www.mcdowellgov.com
+Macon County,North Carolina,http://www.maconnc.org
+Madison County,North Carolina,http://www.madisoncountync.gov
+Martin County,North Carolina,http://www.martincountyncgov.com
+Mecklenburg County,North Carolina,https://www.mecknc.gov/Pages/Home.aspx
+Mitchell County,North Carolina,http://www.mitchellcounty.org
+Montgomery County,North Carolina,http://www.montgomerycountync.com
+Moore County,North Carolina,http://www.moorecountync.gov
+Nash County,North Carolina,https://nashcountync.gov
+New Hanover County,North Carolina,http://www.nhcgov.com
+Northampton County,North Carolina,http://www.northamptonnc.com
+Onslow County,North Carolina,http://www.onslowcountync.gov
+Orange County,North Carolina,http://orangecountync.gov
+Pamlico County,North Carolina,http://www.pamlicocounty.org
+Pasquotank County,North Carolina,http://www.co.pasquotank.nc.us
+Pender County,North Carolina,http://www.pendercountync.gov
+Person County,North Carolina,http://www.personcountync.gov
+Pitt County,North Carolina,http://www.pittcountync.gov
+Polk County,North Carolina,https://www.polknc.gov
+Randolph County,North Carolina,http://www.randolphcountync.gov
+Richmond County,North Carolina,http://www.richmondnc.com
+Robeson County,North Carolina,http://www.co.robeson.nc.us
+Rockingham County,North Carolina,http://www.rockinghamcountync.gov
+Rowan County,North Carolina,https://www.rowancountync.gov
+Rutherford County,North Carolina,http://rutherfordcountync.gov
+Sampson County,North Carolina,http://www.sampsonnc.com
+Scotland County,North Carolina,http://www.scotlandcounty.org
+Stanly County,North Carolina,http://www.stanlycountync.gov
+Stokes County,North Carolina,http://www.co.stokes.nc.us
+Surry County,North Carolina,http://www.co.surry.nc.us
+Swain County,North Carolina,http://www.swaincountync.gov
+Transylvania County,North Carolina,http://www.transylvaniacounty.org
+Tyrrell County,North Carolina,http://tyrrellcounty.org/index.php/en/
+Union County,North Carolina,http://www.unioncountync.gov
+Vance County,North Carolina,http://www.vancecounty.org
+Wake County,North Carolina,https://www.wake.gov
+Warren County,North Carolina,http://www.warrencountync.com
+Washington County,North Carolina,http://www.washconc.org
+Watauga County,North Carolina,http://www.wataugacounty.org
+Wayne County,North Carolina,http://www.waynegov.com
+Wilkes County,North Carolina,http://www.wilkescounty.net
+Wilson County,North Carolina,https://www.wilsoncountync.gov
+Yadkin County,North Carolina,http://www.yadkincountync.gov
+Yancey County,North Carolina,http://www.yanceycountync.gov
+Adams County,North Dakota,https://www.adamscountynd.com/
+Barnes County,North Dakota,http://www.barnescounty.us
+Benson County,North Dakota,https://www.bensoncountynd.com/
+Billings County,North Dakota,http://www.billingscountynd.gov/
+Bottineau County,North Dakota,https://www.bottineauco.com/
+Bowman County,North Dakota,https://bowmannd.com/
+Burke County,North Dakota,http://www.burkecountynd.com
+Burleigh County,North Dakota,https://www.burleighco.com/
+Cass County,North Dakota,https://www.casscountynd.gov
+Cavalier County,North Dakota,https://cavaliercounty.us/
+Dickey County,North Dakota,http://www.dickeynd.com/
+Divide County,North Dakota,http://www.dividecountynd.org/
+Dunn County,North Dakota,http://www.dunncountynd.org/
+Eddy County,North Dakota,http://www.cityofnewrockford.com/index.asp?SEC=0E991439-92D7-460E-84F1-BDEFE48CC237&Type=B_BASIC
+Foster County,North Dakota,http://www.fostercounty.com/
+Golden Valley County,North Dakota,http://www.goldenvalleycounty.org/
+Grand Forks County,North Dakota,https://www.gfcounty.nd.gov/
+Grant County,North Dakota,https://www.grantcountynd.com/
+Griggs County,North Dakota,http://www.griggscountynd.gov/
+Hettinger County,North Dakota,http://www.hettingercounty.net/
+LaMoure County,North Dakota,https://www.lamourecountynd.com/
+Logan County,North Dakota,http://logancountynd.com/
+McHenry County,North Dakota,http://www.mchenrycountynd.com
+McKenzie County,North Dakota,https://county.mckenziecounty.net/
+McLean County,North Dakota,http://www.mcleancountynd.gov
+Mercer County,North Dakota,http://www.mercercountynd.com
+Morton County,North Dakota,https://www.mortonnd.org/
+Mountrail County,North Dakota,http://www.co.mountrail.nd.us/
+Nelson County,North Dakota,https://www.nelsonco.org/
+Oliver County,North Dakota,https://olivercountynd.org/
+Pembina County,North Dakota,https://www.pembinacountynd.gov/
+Pierce County,North Dakota,https://www.piercecountynd.gov/
+Ramsey County,North Dakota,https://www.co.ramsey.nd.us/
+Ransom County,North Dakota,https://ransomcountynd.net/
+Renville County,North Dakota,http://www.renvillecountynd.org/
+Richland County,North Dakota,http://www.co.richland.nd.us/
+Rolette County,North Dakota,http://www.rolettecounty.com
+Sargent County,North Dakota,http://www.sargentnd.com/
+Sheridan County,North Dakota,http://www.co.sheridan.nd.us/
+Slope County,North Dakota,http://www.slopecountynd.com/
+Stark County,North Dakota,https://www.starkcountynd.gov/
+Steele County,North Dakota,http://www.co.steele.nd.us/
+Stutsman County,North Dakota,https://www.stutsmancounty.gov/
+Towner County,North Dakota,http://townercountynd.com/
+Traill County,North Dakota,http://www.co.traill.nd.us
+Walsh County,North Dakota,http://www.co.walsh.nd.us
+Ward County,North Dakota,https://www.co.ward.nd.us/
+Wells County,North Dakota,http://www.wellscountynd.com
+Williams County,North Dakota,https://www.williamsnd.com/
+Adams County,Ohio,https://www.adamscountyoh.gov/
+Allen County,Ohio,http://www.co.allen.oh.us
+Ashland County,Ohio,http://www.ashlandcounty.org
+Ashtabula County,Ohio,http://www.co.ashtabula.oh.us
+Athens County,Ohio,http://www.co.athensoh.org/
+Auglaize County,Ohio,http://www.auglaizecounty.org
+Belmont County,Ohio,http://www.belmontcountyohio.org
+Brown County,Ohio,http://www.browncountyohio.gov
+Butler County,Ohio,http://www.butlercountyohio.org
+Carroll County,Ohio,http://www.carrollcountyohio.us
+Champaign County,Ohio,http://www.co.champaign.oh.us
+Clark County,Ohio,http://www.clarkcountyohio.gov
+Clermont County,Ohio,http://www.clermontcountyohio.gov/
+Clinton County,Ohio,http://co.clinton.oh.us
+Columbiana County,Ohio,http://www.columbianacounty.org
+Coshocton County,Ohio,http://www.coshoctoncounty.net/
+Crawford County,Ohio,http://www.crawford-co.org
+Cuyahoga County,Ohio,http://www.cuyahogacounty.us
+Darke County,Ohio,https://www.mydarkecounty.com/
+Defiance County,Ohio,http://www.defiance-county.com
+Delaware County,Ohio,http://www.co.delaware.oh.us
+Erie County,Ohio,http://www.eriecounty.oh.gov
+Fairfield County,Ohio,http://www.co.fairfield.oh.us
+Fayette County,Ohio,http://www.fayette-co-oh.com/
+Franklin County,Ohio,http://franklincountyohio.gov
+Fulton County,Ohio,http://www.FultonCountyOH.com
+Gallia County,Ohio,http://www.gallianet.net
+Geauga County,Ohio,http://www.co.geauga.oh.us
+Greene County,Ohio,https://www.greenecountyohio.gov
+Guernsey County,Ohio,http://www.guernseycounty.org
+Hamilton County,Ohio,http://www.hamilton-co.org
+Hancock County,Ohio,http://www.co.hancock.oh.us
+Hardin County,Ohio,http://www.co.hardin.oh.us
+Harrison County,Ohio,http://www.harrisoncountyohio.org
+Henry County,Ohio,https://www.henrycountyohio.gov
+Highland County,Ohio,http://co.highland.oh.us/
+Hocking County,Ohio,http://www.co.hocking.oh.us
+Holmes County,Ohio,http://www.co.holmes.oh.us/
+Huron County,Ohio,http://www.huroncounty-oh.gov/
+Jackson County,Ohio,http://www.jacksoncountyohio.us/
+Jefferson County,Ohio,http://www.jeffersoncountyoh.com
+Knox County,Ohio,http://www.co.knox.oh.us/
+Lake County,Ohio,http://www.lakecountyohio.gov
+Lawrence County,Ohio,http://www.lawrencecountyohio.org
+Licking County,Ohio,http://www.lcounty.com
+Logan County,Ohio,http://www.co.logan.oh.us
+Lorain County,Ohio,http://www.loraincounty.us
+Lucas County,Ohio,http://www.co.lucas.oh.us
+Madison County,Ohio,http://www.co.madison.oh.us
+Mahoning County,Ohio,http://www.mahoningcountyoh.gov
+Marion County,Ohio,http://www.co.marion.oh.us
+Medina County,Ohio,http://www.co.medina.oh.us
+Meigs County,Ohio,https://www.meigscountyohio.com/
+Mercer County,Ohio,http://www.mercercountyohio.org
+Miami County,Ohio,http://www.MiamiCountyOhio.gov
+Monroe County,Ohio,http://www.monroecountyohio.net/
+Montgomery County,Ohio,http://www.mcohio.org
+Morgan County,Ohio,http://www.morgancounty-oh.gov
+Morrow County,Ohio,http://www.morrowcountyohio.gov
+Muskingum County,Ohio,http://www.muskingumcounty.org
+Noble County,Ohio,https://noblecountyohio.gov/
+Ottawa County,Ohio,http://www.co.ottawa.oh.us
+Paulding County,Ohio,http://www.pauldingcountyoh.com
+Perry County,Ohio,http://www.perrycountyohio.net/
+Pickaway County,Ohio,http://www.pickaway.org
+Portage County,Ohio,http://www.co.portage.oh.us
+Preble County,Ohio,http://www.prebco.org
+Putnam County,Ohio,http://www.putnamcountyohio.gov
+Richland County,Ohio,http://www.richlandcountyoh.us
+Ross County,Ohio,http://www.co.ross.oh.us
+Sandusky County,Ohio,http://www.sandusky-county.com/
+Scioto County,Ohio,http://www.sciotocountyohio.com
+Seneca County,Ohio,https://senecacountyohio.gov/
+Shelby County,Ohio,http://co.shelby.oh.us
+Stark County,Ohio,http://www.starkcountyohio.gov/
+Summit County,Ohio,http://co.summitoh.net
+Trumbull County,Ohio,http://www.co.trumbull.oh.us
+Tuscarawas County,Ohio,http://www.co.tuscarawas.oh.us
+Union County,Ohio,http://www.co.union.oh.us/
+Van Wert County,Ohio,https://www.vanwertcountyohio.gov
+Vinton County,Ohio,http://www.vintoncounty.com/
+Warren County,Ohio,http://www.co.warren.oh.us
+Washington County,Ohio,http://www.washingtongov.org/
+Wayne County,Ohio,http://www.wayneohio.org
+Williams County,Ohio,http://www.co.williams.oh.us
+Wood County,Ohio,http://www.woodcountyohio.gov
+Wyandot County,Ohio,http://www.co.wyandot.oh.us
+Beaver County,Oklahoma,http://beaver.okcounties.org/
+Beckham County,Oklahoma,http://beckham.okcounties.org
+Blaine County,Oklahoma,http://blaine.okcounties.org/
+Canadian County,Oklahoma,http://www.canadiancounty.org
+Carter County,Oklahoma,http://cartercountyok.us
+Cleveland County,Oklahoma,http://www.clevelandcountyok.com/
+Comanche County,Oklahoma,http://www.comanchecounty.us
+Creek County,Oklahoma,http://www.creekcountyonline.com
+Custer County,Oklahoma,http://custer.okcounties.org/
+Delaware County,Oklahoma,https://delaware.okcounties.org/
+Garfield County,Oklahoma,http://www.garfieldok.com
+Grady County,Oklahoma,http://www.gradycountyok.com
+Grant County,Oklahoma,http://www.grantcountyok.com
+Greer County,Oklahoma,http://greer.okcounties.org
+Jackson County,Oklahoma,http://jackson.okcounties.org
+Jefferson County,Oklahoma,http://www.jeffcoinfo.org
+Johnston County,Oklahoma,http://www.johnstoncountyok.org
+Kay County,Oklahoma,http://www.courthouse.kay.ok.us/home.html
+Lincoln County,Oklahoma,https://lincoln.okcounties.org/
+Logan County,Oklahoma,http://www.logancountyok.com
+Love County,Oklahoma,http://love.okcounties.org
+McClain County,Oklahoma,http://mcclain-co-ok.us
+Marshall County,Oklahoma,http://marshall.okcounties.org
+Mayes County,Oklahoma,http://mayes.okcounties.org
+Murray County,Oklahoma,http://www.visitmurraycountyok.com
+Noble County,Oklahoma,http://www.noblecountyok.com/
+Nowata County,Oklahoma,http://nowata.com/
+Oklahoma County,Oklahoma,http://www.oklahomacounty.org
+Ottawa County,Oklahoma,http://ottawa.okcounties.org/
+Pawnee County,Oklahoma,http://www.cityofpawnee.com/county-of-pawnee
+Payne County,Oklahoma,http://www.paynecounty.org
+Pittsburg County,Oklahoma,http://pittsburg.okcounties.org
+Pottawatomie County,Oklahoma,http://pottawatomiecountyok.com/
+Roger Mills County,Oklahoma,http://www.rogermills.org/
+Rogers County,Oklahoma,http://www.rogerscounty.org
+Stephens County,Oklahoma,http://www.stephenscountyok.com
+Texas County,Oklahoma,https://texas.okcounties.org
+Tillman County,Oklahoma,http://www.tillmancounty.org
+Tulsa County,Oklahoma,http://www.tulsacounty.org
+Wagoner County,Oklahoma,http://www.ok.gov/wagonercounty
+Washington County,Oklahoma,http://www.countycourthouse.org/
+Woodward County,Oklahoma,http://woodwardcounty.org/401.html
+Baker County,Oregon,http://www.bakercounty.org
+Benton County,Oregon,http://www.co.benton.or.us
+Clackamas County,Oregon,http://www.clackamas.us
+Clatsop County,Oregon,http://www.co.clatsop.or.us
+Columbia County,Oregon,https://www.columbiacountyor.gov
+Coos County,Oregon,http://www.co.coos.or.us
+Crook County,Oregon,http://co.crook.or.us
+Curry County,Oregon,http://www.co.curry.or.us
+Deschutes County,Oregon,http://www.deschutes.org
+Douglas County,Oregon,http://www.co.douglas.or.us
+Gilliam County,Oregon,http://www.co.gilliam.or.us
+Grant County,Oregon,http://www.gcoregonlive2.com
+Harney County,Oregon,http://www.co.harney.or.us
+Hood River County,Oregon,https://hoodrivercounty.gov
+Jackson County,Oregon,http://jacksoncountyor.org
+Jefferson County,Oregon,http://www.co.jefferson.or.us
+Josephine County,Oregon,http://www.co.josephine.or.us
+Klamath County,Oregon,http://www.co.klamath.or.us
+Lake County,Oregon,http://www.lakecountyor.org
+Lane County,Oregon,https://www.lanecounty.org
+Lincoln County,Oregon,http://www.co.lincoln.or.us
+Linn County,Oregon,http://www.co.linn.or.us
+Malheur County,Oregon,http://www.malheurco.org
+Marion County,Oregon,http://www.co.marion.or.us
+Morrow County,Oregon,http://www.co.morrow.or.us/
+Multnomah County,Oregon,http://www.multco.us
+Polk County,Oregon,http://www.co.polk.or.us
+Sherman County,Oregon,http://co.sherman.or.us
+Tillamook County,Oregon,http://www.co.tillamook.or.us
+Umatilla County,Oregon,http://www.co.umatilla.or.us
+Union County,Oregon,http://www.union-county.org
+Wallowa County,Oregon,http://co.wallowa.or.us
+Wasco County,Oregon,http://co.wasco.or.us
+Washington County,Oregon,https://www.washingtoncountyor.gov/
+Wheeler County,Oregon,http://www.wheelercountyoregon.com
+Yamhill County,Oregon,http://www.co.yamhill.or.us
+Adams County,Pennsylvania,http://www.adamscounty.us
+Allegheny County,Pennsylvania,http://www.alleghenycounty.us
+Armstrong County,Pennsylvania,http://www.co.armstrong.pa.us
+Beaver County,Pennsylvania,http://www.beavercountypa.gov
+Bedford County,Pennsylvania,http://bedfordcountypa.org
+Berks County,Pennsylvania,http://www.co.berks.pa.us
+Blair County,Pennsylvania,http://www.blairco.org
+Bradford County,Pennsylvania,http://www.bradfordcountypa.org
+Bucks County,Pennsylvania,https://www.buckscounty.gov
+Butler County,Pennsylvania,http://www.co.butler.pa.us
+Cambria County,Pennsylvania,http://www.co.cambria.pa.us
+Cameron County,Pennsylvania,http://www.cameroncountypa.com
+Carbon County,Pennsylvania,http://carboncounty.com
+Centre County,Pennsylvania,http://www.centrecountypa.gov
+Chester County,Pennsylvania,http://www.chesco.org
+Clarion County,Pennsylvania,http://www.co.clarion.pa.us/
+Clearfield County,Pennsylvania,http://www.clearfieldco.org
+Clinton County,Pennsylvania,http://www.clintoncountypa.com
+Columbia County,Pennsylvania,http://www.columbiapa.org
+Crawford County,Pennsylvania,http://www.crawfordcountypa.net
+Cumberland County,Pennsylvania,https://www.cumberlandcountypa.gov
+Dauphin County,Pennsylvania,http://www.dauphincounty.org
+Delaware County,Pennsylvania,https://delcopa.gov
+Elk County,Pennsylvania,http://www.co.elk.pa.us
+Erie County,Pennsylvania,http://www.eriecountypa.gov
+Fayette County,Pennsylvania,http://www.co.fayette.pa.us
+Forest County,Pennsylvania,http://www.co.forest.pa.us
+Franklin County,Pennsylvania,https://www.franklincountypa.gov/
+Fulton County,Pennsylvania,http://www.co.fulton.pa.us
+Greene County,Pennsylvania,https://www.co.greene.pa.us/
+Huntingdon County,Pennsylvania,http://www.huntingdoncounty.net/Pages/default.aspx
+Indiana County,Pennsylvania,https://www.indianacountypa.gov/
+Jefferson County,Pennsylvania,https://www.jeffersoncountypa.com/
+Juniata County,Pennsylvania,http://www.co.juniata.pa.us
+Lackawanna County,Pennsylvania,http://www.lackawannacounty.org/
+Lancaster County,Pennsylvania,http://www.co.lancaster.pa.us
+Lawrence County,Pennsylvania,http://www.co.lawrence.pa.us
+Lebanon County,Pennsylvania,http://www.lebcounty.org
+Lehigh County,Pennsylvania,http://www.lehighcounty.org
+Luzerne County,Pennsylvania,http://www.luzernecounty.org
+Lycoming County,Pennsylvania,http://www.lyco.org
+McKean County,Pennsylvania,http://www.mckeancountypa.org
+Mercer County,Pennsylvania,http://www.mcc.co.mercer.pa.us
+Mifflin County,Pennsylvania,http://www.co.mifflin.pa.us
+Monroe County,Pennsylvania,http://www.monroecountypa.gov
+Montgomery County,Pennsylvania,http://www.montcopa.org/
+Montour County,Pennsylvania,http://www.montourco.org
+Northampton County,Pennsylvania,http://www.northamptoncounty.org
+Northumberland County,Pennsylvania,http://www.northumberlandco.org
+Perry County,Pennsylvania,http://www.perryco.org
+Philadelphia County,Pennsylvania,http://www.phila.gov/
+Pike County,Pennsylvania,http://www.pikepa.org
+Potter County,Pennsylvania,https://visitpottertioga.com/
+Schuylkill County,Pennsylvania,http://www.co.schuylkill.pa.us
+Snyder County,Pennsylvania,http://www.snydercounty.org
+Somerset County,Pennsylvania,http://www.co.somerset.pa.us
+Sullivan County,Pennsylvania,http://www.sullivancounty-pa.us
+Susquehanna County,Pennsylvania,http://www.susqco.com
+Tioga County,Pennsylvania,http://www.tiogacountypa.us
+Union County,Pennsylvania,http://www.unionco.org
+Venango County,Pennsylvania,http://www.co.venango.pa.us
+Warren County,Pennsylvania,http://www.warrencountypa.net
+Washington County,Pennsylvania,http://www.co.washington.pa.us
+Wayne County,Pennsylvania,http://WayneCountyPA.gov
+Westmoreland County,Pennsylvania,http://www.co.westmoreland.pa.us
+Wyoming County,Pennsylvania,http://www.wycopa.org
+York County,Pennsylvania,https://yorkcountypa.gov/
+Adjuntas,Puerto Rico,http://adjuntaspr.com
+Aguada,Puerto Rico,http://aguada.gov.pr
+Aguadilla,Puerto Rico,https://web.archive.org/web/20090301125733/http://www.aguadilla.gobierno.pr/
+Aguas Buenas,Puerto Rico,http://legislaturaaguasbuenas.com/
+Aibonito,Puerto Rico,http://www.aibonitopr.net/
+Añasco,Puerto Rico,http://www.anascopr.net
+Arroyo,Puerto Rico,https://www.municipiodearroyo.com/
+Barranquitas,Puerto Rico,http://barranquitaspr.net/pueblo/
+Bayamón,Puerto Rico,http://www.municipiodebayamon.com
+Cabo Rojo,Puerto Rico,http://www.caborojopr.net/
+Caguas,Puerto Rico,http://www.Caguas.gov.pr
+Carolina,Puerto Rico,https://www.municipiocarolina.com/
+Cayey,Puerto Rico,http://www.agencias.pr.gov/municipio/cayey
+Coamo,Puerto Rico,http://www.coamo.puertorico.pr
+Comerío,Puerto Rico,http://www.comerio.gobierno.pr
+Dorado,Puerto Rico,https://www.doradoparaiso.com
+Fajardo,Puerto Rico,http://fajardopr.org
+Guayama,Puerto Rico,http://www.viveelencanto.com
+Guaynabo,Puerto Rico,http://www.guaynabocity.gov.pr
+Gurabo,Puerto Rico,https://web.archive.org/web/20060614140404/http://www.gurabopr.com/
+Hormigueros,Puerto Rico,http://www.municipiohormiguerospr.com/
+Isabela,Puerto Rico,https://venaisabela.com/
+Maunabo,Puerto Rico,http://maunabomunicipio.com/
+Mayagüez,Puerto Rico,http://www.mayaguezpr.gov
+Naranjito,Puerto Rico,https://municipiodenaranjito.com/
+Orocovis,Puerto Rico,https://www.orocovispr.org/
+Peñuelas,Puerto Rico,https://www.municipiodepenuelas.com
+Ponce,Puerto Rico,http://visitponce.com/
+Quebradillas,Puerto Rico,http://www.quebradillas.pr.gov/
+Rincón,Puerto Rico,http://www.rincon.org/
+San Juan,Puerto Rico,http://sanjuanciudadpatria.com/en
+San Sebastián,Puerto Rico,http://ssdelpepino.com/
+Toa Baja,Puerto Rico,http://www.toabaja.com
+Trujillo Alto,Puerto Rico,http://www.trujilloalto.pr/
+Vega Baja,Puerto Rico,http://www.vegabaja.gov.pr/
+Yauco,Puerto Rico,http://www.yaucoatuservicio.com
+Abbeville County,South Carolina,http://www.abbevillecountysc.com
+Aiken County,South Carolina,http://www.aikencountysc.gov
+Allendale County,South Carolina,http://www.allendalecounty.com
+Anderson County,South Carolina,http://www.andersoncountysc.org
+Bamberg County,South Carolina,http://www.bambergcountysc.gov
+Barnwell County,South Carolina,http://sc-barnwell.civicplus.com
+Beaufort County,South Carolina,http://www.beaufortcountysc.gov
+Berkeley County,South Carolina,http://www.berkeleycountysc.gov
+Calhoun County,South Carolina,http://calhouncounty.sc.gov
+Charleston County,South Carolina,http://www.charlestoncounty.org
+Cherokee County,South Carolina,http://www.cherokeecountysc.com
+Chester County,South Carolina,http://www.chestercounty.org
+Chesterfield County,South Carolina,http://www.chesterfieldcountysc.com
+Clarendon County,South Carolina,http://www.clarendoncountygov.org
+Colleton County,South Carolina,http://www.colletoncounty.org
+Darlington County,South Carolina,http://www.darcosc.com
+Dillon County,South Carolina,http://www.dilloncountysc.org
+Dorchester County,South Carolina,http://www.dorchestercountysc.gov
+Edgefield County,South Carolina,http://edgefieldcounty.sc.gov
+Fairfield County,South Carolina,http://www.fairfieldsc.com
+Florence County,South Carolina,http://www.florenceco.org
+Georgetown County,South Carolina,http://www.georgetowncountysc.org
+Greenville County,South Carolina,http://www.greenvillecounty.org
+Greenwood County,South Carolina,http://www.greenwoodcounty-sc.gov
+Hampton County,South Carolina,http://www.hamptoncountysc.org
+Horry County,South Carolina,https://www.horrycountysc.gov
+Jasper County,South Carolina,http://www.jaspercountysc.gov
+Kershaw County,South Carolina,http://www.kershaw.sc.gov
+Lancaster County,South Carolina,http://mylancastersc.org
+Laurens County,South Carolina,http://laurenscounty.us
+Lee County,South Carolina,http://www.leecountysc.org
+Lexington County,South Carolina,http://www.lex-co.sc.gov
+McCormick County,South Carolina,http://mccormickcountysc.org
+Marion County,South Carolina,http://www.marionsc.org
+Marlboro County,South Carolina,http://marlborocounty.sc.gov
+Newberry County,South Carolina,http://www.newberrycounty.net
+Oconee County,South Carolina,http://www.oconeesc.com
+Orangeburg County,South Carolina,http://www.orangeburgcounty.org
+Pickens County,South Carolina,http://www.co.pickens.sc.us
+Richland County,South Carolina,https://www.richlandcountysc.gov/
+Saluda County,South Carolina,http://saludacounty.sc.gov
+Spartanburg County,South Carolina,http://www.spartanburgcounty.org
+Sumter County,South Carolina,http://www.sumtercountysc.org
+Union County,South Carolina,http://gearupunionsc.com
+Williamsburg County,South Carolina,http://www.williamsburgcounty.sc.gov
+York County,South Carolina,http://www.yorkcountygov.com
+Beadle County,South Dakota,http://beadle.sdcounties.org/
+Bon Homme County,South Dakota,http://bonhomme.sdcounties.org
+Brookings County,South Dakota,http://www.brookingscountysd.gov
+Brown County,South Dakota,http://www.brown.sd.us/
+Brule County,South Dakota,http://www.brulecounty.org
+Butte County,South Dakota,http://butte.sdcounties.org
+Charles Mix County,South Dakota,http://charlesmix.sdcounties.org/
+Clark County,South Dakota,http://clark.sdcounties.org/
+Clay County,South Dakota,http://www.claycountysd.org/
+Codington County,South Dakota,http://www.codington.org
+Corson County,South Dakota,http://corson.sdcounties.org/
+Custer County,South Dakota,http://www.custercountysd.com/
+Davison County,South Dakota,http://www.davisoncounty.org
+Day County,South Dakota,http://day.sdcounties.org/
+Douglas County,South Dakota,http://douglas.sdcounties.org
+Edmunds County,South Dakota,http://edmunds.sdcounties.org
+Fall River County,South Dakota,http://fallriver.sdcounties.org/
+Grant County,South Dakota,http://grantcounty.sd.gov/
+Gregory County,South Dakota,http://gregory.sdcounties.org/
+Haakon County,South Dakota,http://haakon.sdcounties.org
+Hand County,South Dakota,http://hand.sdcounties.org
+Hanson County,South Dakota,http://www.hansoncounty.net
+Harding County,South Dakota,http://www.hardingcountysd.com/
+Hughes County,South Dakota,http://www.hughescounty.org
+Hyde County,South Dakota,http://hydeco.org
+Kingsbury County,South Dakota,http://kingsbury.sdcounties.org
+Lake County,South Dakota,http://www.lake.sd.gov/default.aspx
+Lawrence County,South Dakota,http://www.lawrence.sd.us/
+Lincoln County,South Dakota,http://lincolncountysd.org/
+Lyman County,South Dakota,http://www.lymancounty.org
+McCook County,South Dakota,http://www.mccookcountysd.com
+McPherson County,South Dakota,http://mcpherson.sdcounties.org/
+Marshall County,South Dakota,http://marshall.sdcounties.org/
+Meade County,South Dakota,http://www.meadecounty.org
+Miner County,South Dakota,http://www.minercountysd.org
+Minnehaha County,South Dakota,http://www.minnehahacounty.org
+Moody County,South Dakota,http://www.moodycounty.net
+Oglala Lakota County,South Dakota,http://oglalalakota.sdcounties.org
+Pennington County,South Dakota,http://www.co.pennington.sd.us
+Perkins County,South Dakota,http://www.perkinscounty.org
+Roberts County,South Dakota,http://roberts.sdcounties.org/
+Spink County,South Dakota,http://www.spinkcounty-sd.org
+Stanley County,South Dakota,http://www.stanleycounty.org/
+Sully County,South Dakota,http://www.sullycounty.net/
+Tripp County,South Dakota,http://trippcounty.us/
+Turner County,South Dakota,http://turner.sdcounties.org
+Union County,South Dakota,http://unioncountysd.org/
+Walworth County,South Dakota,http://walworthco.org
+Yankton County,South Dakota,http://www.co.yankton.sd.us
+Anderson County,Tennessee,http://www.andersontn.org
+Bedford County,Tennessee,http://www.bedfordcountytn.org/
+Benton County,Tennessee,http://www.bentoncountytn.gov
+Blount County,Tennessee,http://www.blounttn.org
+Bradley County,Tennessee,http://www.bradleycountytn.gov
+Campbell County,Tennessee,http://www.campbellcountytn.gov
+Cannon County,Tennessee,https://www.cannoncountytn.gov
+Carroll County,Tennessee,https://carrollcountytn.gov
+Carter County,Tennessee,http://www.cartercountytn.gov
+Cheatham County,Tennessee,http://www.cheathamcountytn.gov
+Chester County,Tennessee,http://chestercountytn.org
+Claiborne County,Tennessee,https://www.claibornecountytn.gov
+Clay County,Tennessee,https://dalehollowlake.org/
+Cocke County,Tennessee,http://www.cockecountytn.gov/
+Coffee County,Tennessee,http://coffeecountytn.org
+Cumberland County,Tennessee,http://cumberlandcountytn.gov
+Davidson County,Tennessee,http://www.nashville.gov/
+Decatur County,Tennessee,http://decaturcountytn.org
+DeKalb County,Tennessee,http://dekalbtennessee.com
+Dickson County,Tennessee,http://dicksoncountytn.gov
+Dyer County,Tennessee,http://dyercounty.com/
+Fayette County,Tennessee,http://fayettetn.us
+Fentress County,Tennessee,http://www.fentresscountytn.gov
+Franklin County,Tennessee,http://franklincotn.us
+Giles County,Tennessee,https://gilescountytn.gov/
+Grainger County,Tennessee,http://www.graingercountytn.com
+Greene County,Tennessee,http://greenecountytngov.com
+Grundy County,Tennessee,http://grundycountytn.net
+Hamblen County,Tennessee,http://www.hamblencountytn.gov
+Hamilton County,Tennessee,http://www.hamiltontn.gov
+Hancock County,Tennessee,http://www.hancockcountytn.com
+Hawkins County,Tennessee,http://www.hawkinscountytn.gov/
+Haywood County,Tennessee,http://haywoodcountybrownsville.com/haywood-county/
+Henderson County,Tennessee,http://hendersoncountytn.gov
+Henry County,Tennessee,http://henryco.com
+Hickman County,Tennessee,http://hickmanco.com
+Houston County,Tennessee,http://www.houstoncochamber.com
+Humphreys County,Tennessee,http://www.humphreystn.com
+Jackson County,Tennessee,http://www.jacksoncotn.com
+Jefferson County,Tennessee,https://jeffersoncountytn.gov/
+Knox County,Tennessee,http://knoxcounty.org
+Lake County,Tennessee,http://www.lakecountytn.com
+Lauderdale County,Tennessee,https://lauderdalecountytn.org/
+Lawrence County,Tennessee,http://www.lawrencecountytn.gov/
+Lewis County,Tennessee,http://www.lewiscountytn.com
+Lincoln County,Tennessee,https://www.lincolncountytn.gov
+Loudon County,Tennessee,http://www.loudoncounty-tn.gov
+McMinn County,Tennessee,http://mcminncountytn.gov
+McNairy County,Tennessee,http://www.mcnairycountytn.com
+Macon County,Tennessee,http://maconcountytn.gov
+Madison County,Tennessee,https://www.madisoncountytn.gov
+Marion County,Tennessee,http://www.marioncountytn.net/
+Marshall County,Tennessee,http://marshallcountytn.com
+Maury County,Tennessee,http://www.maurycounty-tn.gov
+Meigs County,Tennessee,https://www.meigscounty.org/
+Monroe County,Tennessee,http://www.monroetn.com
+Montgomery County,Tennessee,https://mcgtn.org
+Moore County,Tennessee,http://www.lynchburgtn.com/government---education-services.html
+Morgan County,Tennessee,http://www.morgancountytn.gov
+Obion County,Tennessee,https://www.obioncountytn.gov/
+Overton County,Tennessee,http://www.overtoncountytn.com
+Perry County,Tennessee,http://www.perrycountygov.com
+Polk County,Tennessee,http://www.polkgovernment.com
+Putnam County,Tennessee,http://putnamcountytn.gov
+Rhea County,Tennessee,http://www.rheacountytn.com
+Roane County,Tennessee,http://roanecountytn.gov/
+Robertson County,Tennessee,https://robertsoncountytn.gov
+Rutherford County,Tennessee,http://rutherfordcountytn.gov
+Scott County,Tennessee,http://www.scottcounty.com
+Sequatchie County,Tennessee,https://sequatchiecounty-tn.gov
+Sevier County,Tennessee,http://www.seviercountytn.gov
+Shelby County,Tennessee,http://www.shelbycountytn.gov
+Stewart County,Tennessee,http://www.stewartcogov.com
+Sullivan County,Tennessee,https://sullivancountytn.gov/
+Sumner County,Tennessee,http://www.sumnertn.org
+Tipton County,Tennessee,http://www.tiptonco.com
+Trousdale County,Tennessee,http://www.trousdalecountytn.gov/
+Unicoi County,Tennessee,http://www.unicoicountytn.gov
+Union County,Tennessee,http://www.unioncountytn.com
+Van Buren County,Tennessee,https://vanburencountytn.com/
+Warren County,Tennessee,http://www.warrencountytn.gov
+Washington County,Tennessee,http://www.washingtoncountytn.org
+Wayne County,Tennessee,http://www.waynecountytn.org
+Weakley County,Tennessee,http://www.weakleycountytn.gov
+White County,Tennessee,http://whitecountytn.gov/
+Williamson County,Tennessee,http://williamsoncounty-tn.gov
+Wilson County,Tennessee,http://www.wilsoncountytn.gov
+Anderson County,Texas,http://www.co.anderson.tx.us/
+Andrews County,Texas,http://www.co.andrews.tx.us
+Angelina County,Texas,http://www.angelinacounty.net/
+Aransas County,Texas,http://www.aransascountytx.gov/main/
+Archer County,Texas,http://www.co.archer.tx.us/
+Armstrong County,Texas,http://www.co.armstrong.tx.us/
+Atascosa County,Texas,http://atascosacounty.texas.gov
+Austin County,Texas,http://www.austincounty.com
+Bailey County,Texas,http://www.co.bailey.tx.us
+Bandera County,Texas,https://www.banderacounty.org/
+Bastrop County,Texas,http://www.co.bastrop.tx.us
+Baylor County,Texas,http://www.co.baylor.tx.us/
+Bee County,Texas,http://co.bee.tx.us
+Bell County,Texas,http://www.bellcountytx.com
+Bexar County,Texas,http://www.bexar.org/
+Blanco County,Texas,http://www.co.blanco.tx.us/
+Borden County,Texas,http://www.co.borden.tx.us
+Bosque County,Texas,http://www.bosquecounty.us
+Bowie County,Texas,http://www.co.bowie.tx.us
+Brazoria County,Texas,https://brazoriacountytx.gov/
+Brazos County,Texas,http://www.brazoscountytx.gov
+Brewster County,Texas,http://www.brewstercountytx.com/
+Briscoe County,Texas,http://www.co.briscoe.tx.us/
+Brooks County,Texas,http://www.co.brooks.tx.us
+Brown County,Texas,http://www.browncountytx.org/
+Burleson County,Texas,http://www.co.burleson.tx.us
+Burnet County,Texas,http://www.burnetcountytexas.org/
+Caldwell County,Texas,http://www.co.caldwell.tx.us
+Calhoun County,Texas,http://www.calhouncotx.org
+Callahan County,Texas,http://www.co.callahan.tx.us
+Cameron County,Texas,http://www.co.cameron.tx.us/
+Camp County,Texas,http://www.co.camp.tx.us
+Carson County,Texas,http://www.co.carson.tx.us
+Cass County,Texas,http://www.co.cass.tx.us
+Castro County,Texas,http://www.co.castro.tx.us
+Chambers County,Texas,http://www.co.chambers.tx.us
+Cherokee County,Texas,http://www.co.cherokee.tx.us
+Childress County,Texas,http://www.childresscountytexas.us/
+Clay County,Texas,http://www.co.clay.tx.us
+Cochran County,Texas,http://www.co.cochran.tx.us
+Coke County,Texas,http://www.co.coke.tx.us
+Coleman County,Texas,http://www.co.coleman.tx.us
+Collin County,Texas,https://www.collincountytx.gov/
+Collingsworth County,Texas,http://www.co.collingsworth.tx.us
+Colorado County,Texas,http://www.co.colorado.tx.us
+Comal County,Texas,http://www.co.comal.tx.us
+Concho County,Texas,http://www.co.concho.tx.us
+Cooke County,Texas,http://www.co.cooke.tx.us
+Coryell County,Texas,http://www.coryellcounty.org
+Cottle County,Texas,http://www.co.cottle.tx.us
+Crane County,Texas,http://www.co.crane.tx.us
+Crockett County,Texas,http://www.co.crockett.tx.us
+Crosby County,Texas,http://www.co.crosby.tx.us
+Culberson County,Texas,http://www.co.culberson.tx.us
+Dallam County,Texas,http://www.dallam.org
+Dallas County,Texas,https://www.dallascounty.org
+Dawson County,Texas,http://www.co.dawson.tx.us
+Deaf Smith County,Texas,http://www.co.deaf-smith.tx.us
+Delta County,Texas,http://www.deltacountytx.com
+Denton County,Texas,https://dentoncounty.gov/
+DeWitt County,Texas,http://www.co.dewitt.tx.us
+Dickens County,Texas,http://www.co.dickens.tx.us
+Dimmit County,Texas,http://www.dimmitcounty.org
+Donley County,Texas,http://www.co.donley.tx.us
+Duval County,Texas,https://www.co.duval.tx.us/
+Eastland County,Texas,https://www.eastlandcountytexas.com/
+Ector County,Texas,http://www.co.ector.tx.us
+Edwards County,Texas,http://co.edwards.tx.us
+Ellis County,Texas,https://www.co.ellis.tx.us
+El Paso County,Texas,http://www.epcounty.com
+Erath County,Texas,http://www.co.erath.tx.us
+Falls County,Texas,http://www.co.falls.tx.us/
+Fannin County,Texas,http://www.co.fannin.tx.us
+Fayette County,Texas,http://www.co.fayette.tx.us
+Fisher County,Texas,http://www.co.fisher.tx.us
+Floyd County,Texas,http://www.co.floyd.tx.us
+Fort Bend County,Texas,https://www.fortbendcountytx.gov/
+Franklin County,Texas,http://www.co.franklin.tx.us
+Freestone County,Texas,http://www.co.freestone.tx.us/
+Frio County,Texas,http://www.co.frio.tx.us
+Gaines County,Texas,http://www.co.gaines.tx.us
+Galveston County,Texas,https://www.galvestoncountytx.gov
+Garza County,Texas,http://www.garzacounty.net/index.html
+Gillespie County,Texas,http://www.gillespiecounty.org
+Glasscock County,Texas,http://www.co.glasscock.tx.us
+Goliad County,Texas,http://www.co.goliad.tx.us
+Gonzales County,Texas,http://www.co.gonzales.tx.us
+Gray County,Texas,http://www.co.gray.tx.us
+Grayson County,Texas,http://www.co.grayson.tx.us
+Gregg County,Texas,https://www.co.gregg.tx.us/
+Grimes County,Texas,http://www.co.grimes.tx.us
+Guadalupe County,Texas,http://www.co.guadalupe.tx.us
+Hale County,Texas,http://www.halecounty.org
+Hamilton County,Texas,http://www.hamiltoncountytx.org/
+Hansford County,Texas,http://www.co.hansford.tx.us
+Hardin County,Texas,http://www.co.hardin.tx.us
+Harris County,Texas,http://www.co.harris.tx.us
+Harrison County,Texas,http://harrisoncountytexas.org
+Hartley County,Texas,http://www.co.hartley.tx.us
+Haskell County,Texas,http://www.co.haskell.tx.us
+Hays County,Texas,https://hayscountytx.com/
+Hemphill County,Texas,http://www.co.hemphill.tx.us
+Henderson County,Texas,http://www.co.henderson.tx.us
+Hidalgo County,Texas,https://www.hidalgocounty.us/
+Hill County,Texas,http://www.co.hill.tx.us
+Hockley County,Texas,http://www.co.hockley.tx.us
+Hood County,Texas,https://www.co.hood.tx.us
+Hopkins County,Texas,http://www.hopkinscountytx.org
+Houston County,Texas,http://www.co.houston.tx.us
+Howard County,Texas,http://www.co.howard.tx.us
+Hudspeth County,Texas,http://www.co.hudspeth.tx.us
+Hunt County,Texas,http://www.huntcounty.net
+Hutchinson County,Texas,http://www.co.hutchinson.tx.us
+Irion County,Texas,http://www.co.irion.tx.us
+Jack County,Texas,http://www.jackcounty.org
+Jackson County,Texas,http://www.co.jackson.tx.us
+Jasper County,Texas,http://www.co.jasper.tx.us
+Jeff Davis County,Texas,http://www.co.jeff-davis.tx.us
+Jefferson County,Texas,http://www.co.jefferson.tx.us
+Jim Hogg County,Texas,http://www.co.jim-hogg.tx.us/
+Jim Wells County,Texas,http://www.co.jim-wells.tx.us
+Johnson County,Texas,http://www.johnsoncountytx.org
+Jones County,Texas,http://www.co.jones.tx.us
+Karnes County,Texas,http://www.co.karnes.tx.us
+Kaufman County,Texas,http://www.kaufmancounty.net/
+Kendall County,Texas,http://www.co.kendall.tx.us
+Kenedy County,Texas,http://www.co.kenedy.tx.us
+Kent County,Texas,http://www.co.kent.tx.us
+Kerr County,Texas,https://www.kerrcountytx.gov
+Kimble County,Texas,http://www.co.kimble.tx.us
+King County,Texas,http://www.kingcountytexas.us
+Kinney County,Texas,http://www.co.kinney.tx.us
+Kleberg County,Texas,http://www.co.kleberg.tx.us
+Knox County,Texas,http://www.knoxcountytexas.org
+Lamar County,Texas,http://www.co.lamar.tx.us
+Lamb County,Texas,http://co.lamb.tx.us
+Lampasas County,Texas,http://www.co.lampasas.tx.us
+La Salle County,Texas,http://lasallecountytx.org
+Lavaca County,Texas,http://www.co.lavaca.tx.us/
+Lee County,Texas,http://www.co.lee.tx.us/
+Leon County,Texas,http://www.co.leon.tx.us
+Liberty County,Texas,http://www.co.liberty.tx.us
+Limestone County,Texas,http://www.co.limestone.tx.us
+Lipscomb County,Texas,http://www.co.lipscomb.tx.us
+Live Oak County,Texas,http://www.co.live-oak.tx.us
+Llano County,Texas,http://www.co.llano.tx.us
+Loving County,Texas,http://www.co.loving.tx.us
+Lynn County,Texas,http://www.co.lynn.tx.us
+McCulloch County,Texas,http://www.co.mcculloch.tx.us
+McLennan County,Texas,http://www.co.mclennan.tx.us
+McMullen County,Texas,http://www.co.mcmullen.tx.us
+Madison County,Texas,http://www.co.madison.tx.us
+Marion County,Texas,http://www.co.marion.tx.us
+Mason County,Texas,http://www.co.mason.tx.us
+Matagorda County,Texas,http://www.co.matagorda.tx.us
+Maverick County,Texas,http://www.co.maverick.tx.us
+Medina County,Texas,http://www.medinacountytexas.org
+Menard County,Texas,http://co.menard.tx.us
+Midland County,Texas,http://www.co.midland.tx.us
+Milam County,Texas,http://www.milamcounty.net/
+Mills County,Texas,https://www.co.mills.tx.us
+Montague County,Texas,http://www.co.montague.tx.us
+Montgomery County,Texas,http://www.mctx.org/
+Moore County,Texas,http://www.co.moore.tx.us
+Morris County,Texas,http://www.co.morris.tx.us/
+Motley County,Texas,http://www.co.motley.tx.us
+Nacogdoches County,Texas,http://www.co.nacogdoches.tx.us
+Navarro County,Texas,http://www.co.navarro.tx.us
+Newton County,Texas,http://www.co.newton.tx.us
+Nolan County,Texas,http://www.co.nolan.tx.us
+Nueces County,Texas,http://www.co.nueces.tx.us
+Ochiltree County,Texas,http://www.co.ochiltree.tx.us
+Oldham County,Texas,http://www.co.oldham.tx.us
+Orange County,Texas,http://www.co.orange.tx.us
+Palo Pinto County,Texas,http://www.co.palo-pinto.tx.us
+Panola County,Texas,http://www.co.panola.tx.us
+Parker County,Texas,http://www.parkercountytx.com
+Parmer County,Texas,http://parmercounty.org/
+Pecos County,Texas,http://www.co.pecos.tx.us
+Polk County,Texas,http://www.co.polk.tx.us
+Potter County,Texas,http://www.mypottercounty.com
+Presidio County,Texas,http://www.co.presidio.tx.us
+Rains County,Texas,http://www.co.rains.tx.us
+Randall County,Texas,http://www.randallcounty.com
+Reagan County,Texas,http://www.reagancountytexas.us/
+Real County,Texas,http://www.co.real.tx.us
+Red River County,Texas,http://www.co.red-river.tx.us
+Reeves County,Texas,http://www.reevescounty.org
+Refugio County,Texas,http://www.co.refugio.tx.us
+Roberts County,Texas,http://www.co.roberts.tx.us
+Robertson County,Texas,http://www.co.robertson.tx.us
+Rockwall County,Texas,https://www.rockwallcountytexas.com
+Runnels County,Texas,http://www.co.runnels.tx.us
+Rusk County,Texas,http://www.co.rusk.tx.us
+Sabine County,Texas,http://www.co.sabine.tx.us/
+San Augustine County,Texas,http://www.co.san-augustine.tx.us
+San Jacinto County,Texas,http://www.co.san-jacinto.tx.us
+San Patricio County,Texas,http://www.co.san-patricio.tx.us/
+San Saba County,Texas,http://www.co.san-saba.tx.us
+Schleicher County,Texas,http://www.co.schleicher.tx.us
+Scurry County,Texas,http://www.co.scurry.tx.us
+Shelby County,Texas,http://www.co.shelby.tx.us
+Sherman County,Texas,http://www.co.sherman.tx.us
+Smith County,Texas,http://www.smith-county.com
+Somervell County,Texas,http://www.somervell.co/
+Starr County,Texas,http://www.co.starr.tx.us
+Stephens County,Texas,http://www.co.stephens.tx.us
+Sterling County,Texas,http://www.co.sterling.tx.us
+Sutton County,Texas,http://www.co.sutton.tx.us
+Swisher County,Texas,http://www.co.swisher.tx.us
+Tarrant County,Texas,http://tarrantcounty.com
+Taylor County,Texas,http://www.taylorcountytexas.org
+Terrell County,Texas,http://www.co.terrell.tx.us
+Terry County,Texas,http://www.co.terry.tx.us
+Throckmorton County,Texas,http://www.co.throckmorton.tx.us
+Titus County,Texas,http://www.co.titus.tx.us
+Tom Green County,Texas,http://www.co.tom-green.tx.us
+Travis County,Texas,http://traviscountytx.gov
+Trinity County,Texas,http://www.co.trinity.tx.us
+Tyler County,Texas,http://www.co.tyler.tx.us
+Upshur County,Texas,http://www.countyofupshur.com/
+Upton County,Texas,http://www.co.upton.tx.us
+Uvalde County,Texas,http://www.uvaldecounty.com
+Val Verde County,Texas,http://www.valverdecounty.texas.gov
+Van Zandt County,Texas,http://www.vanzandtcounty.org
+Victoria County,Texas,http://www.victoriacountytx.org
+Walker County,Texas,http://www.co.walker.tx.us/
+Waller County,Texas,http://www.co.waller.tx.us
+Ward County,Texas,http://www.co.ward.tx.us
+Washington County,Texas,http://www.co.washington.tx.us
+Webb County,Texas,https://www.webbcountytx.gov
+Wharton County,Texas,http://www.co.wharton.tx.us
+Wheeler County,Texas,http://www.co.wheeler.tx.us
+Wichita County,Texas,https://wichitacountytx.com/
+Wilbarger County,Texas,http://www.co.wilbarger.tx.us
+Willacy County,Texas,http://www.co.willacy.tx.us/
+Williamson County,Texas,http://wilco.org
+Wilson County,Texas,http://www.co.wilson.tx.us
+Winkler County,Texas,http://www.co.winkler.tx.us
+Wise County,Texas,http://www.co.wise.tx.us
+Wood County,Texas,http://www.mywoodcounty.com/
+Yoakum County,Texas,http://www.co.yoakum.tx.us
+Young County,Texas,http://www.co.young.tx.us
+Zapata County,Texas,http://www.co.zapata.tx.us
+Zavala County,Texas,http://www.co.zavala.tx.us
+Beaver County,Utah,http://beaver.utah.gov
+Box Elder County,Utah,http://www.boxeldercounty.org
+Cache County,Utah,http://www.cachecounty.org
+Carbon County,Utah,http://www.carbon.utah.gov
+Daggett County,Utah,http://www.daggettcounty.org/
+Davis County,Utah,http://www.daviscountyutah.gov
+Duchesne County,Utah,http://duchesne.utah.gov/
+Emery County,Utah,http://www.emerycounty.com
+Garfield County,Utah,http://garfield.utah.gov
+Grand County,Utah,http://www.grandcountyutah.net
+Iron County,Utah,http://www.ironcounty.net
+Juab County,Utah,http://www.co.juab.ut.us
+Kane County,Utah,http://kane.utah.gov
+Millard County,Utah,https://www.millardcounty.org
+Morgan County,Utah,http://www.morgan-county.net
+Piute County,Utah,https://www.piuteutah.com/
+Rich County,Utah,http://www.richcountyut.org
+Salt Lake County,Utah,http://slco.org
+San Juan County,Utah,http://sanjuancounty.org
+Sanpete County,Utah,http://sanpete.com
+Sevier County,Utah,http://www.sevierutah.net
+Summit County,Utah,http://www.co.summit.ut.us
+Tooele County,Utah,http://www.co.tooele.ut.us
+Uintah County,Utah,http://www.co.uintah.ut.us
+Utah County,Utah,http://www.utahcounty.gov
+Wasatch County,Utah,https://www.wasatch.utah.gov
+Washington County,Utah,http://www.washco.state.ut.us
+Wayne County,Utah,http://www.waynecountyutah.org
+Weber County,Utah,http://www.co.weber.ut.us/
+Addison County,Vermont,http://www.addisoncounty.com/
+Bennington County,Vermont,http://www.rpc.bennington.vt.us
+Lamoille County,Vermont,http://www.lcpcvt.org
+Windsor County,Vermont,http://www.swcrpc.org/
+Accomack County,Virginia,http://www.co.accomack.va.us
+Albemarle County,Virginia,http://www.albemarle.org
+Alleghany County,Virginia,http://www.co.alleghany.va.us/
+Amelia County,Virginia,https://va-ameliacounty.civicplus.com
+Amherst County,Virginia,http://www.countyofamherst.com
+Appomattox County,Virginia,http://www.appomattoxcountyva.gov
+Arlington County,Virginia,http://www.arlingtonva.us/
+Augusta County,Virginia,http://www.co.augusta.va.us/
+Bath County,Virginia,http://www.bathcountyva.org
+Bedford County,Virginia,http://www.bedfordcountyva.gov
+Bland County,Virginia,http://www.blandcountyva.gov
+Botetourt County,Virginia,https://botetourtva.gov/
+Brunswick County,Virginia,http://www.brunswickco.com
+Buchanan County,Virginia,http://www.buchanancountyonline.com/
+Buckingham County,Virginia,http://www.buckinghamcountyva.org
+Campbell County,Virginia,http://www.co.campbell.va.us
+Caroline County,Virginia,http://www.co.caroline.va.us
+Carroll County,Virginia,http://www.carrollcountyva.org
+Charles City County,Virginia,http://www.co.charles-city.va.us
+Charlotte County,Virginia,http://www.charlotteva.com/
+Chesterfield County,Virginia,http://www.chesterfield.gov
+Clarke County,Virginia,http://clarkecounty.gov
+Craig County,Virginia,http://www.craigcountyva.gov
+Culpeper County,Virginia,http://www.culpepercounty.gov
+Cumberland County,Virginia,http://www.cumberlandcounty.virginia.gov
+Dickenson County,Virginia,http://www.dickensonva.org
+Dinwiddie County,Virginia,http://www.dinwiddieva.us
+Essex County,Virginia,http://www.essex-virginia.org
+Fairfax County,Virginia,http://www.fairfaxcounty.gov/
+Fauquier County,Virginia,http://www.fauquiercounty.gov
+Floyd County,Virginia,http://www.floydcova.org
+Fluvanna County,Virginia,http://fluvannacounty.org/
+Franklin County,Virginia,http://www.franklincountyva.gov/
+Frederick County,Virginia,http://www.fcva.us
+Giles County,Virginia,http://www.VirginiasMtnPlayground.com
+Gloucester County,Virginia,http://gloucesterva.info/
+Goochland County,Virginia,http://www.co.goochland.va.us
+Grayson County,Virginia,http://www.graysongovernment.com
+Greene County,Virginia,http://www.gcva.us
+Greensville County,Virginia,http://www.greensvillecountyva.gov
+Halifax County,Virginia,https://www.halifaxcountyva.gov
+Hanover County,Virginia,http://www.co.hanover.va.us
+Henrico County,Virginia,http://henrico.us
+Henry County,Virginia,http://www.co.henry.va.us
+Highland County,Virginia,http://www.highlandcova.org
+Isle of Wight County,Virginia,http://www.co.isle-of-wight.va.us
+James City County,Virginia,http://www.jamescitycountyva.gov
+King and Queen County,Virginia,http://www.kingandqueenco.net
+King George County,Virginia,http://www.kinggeorgecountyva.gov
+King William County,Virginia,http://www.kingwilliamcounty.us/
+Lancaster County,Virginia,http://www.lancova.com
+Lee County,Virginia,http://www.LeeCoVA.org
+Loudoun County,Virginia,http://www.loudoun.gov/
+Louisa County,Virginia,http://www.louisacounty.com
+Lunenburg County,Virginia,http://www.lunenburgva.org
+Madison County,Virginia,http://www.madisonco.virginia.gov
+Mathews County,Virginia,http://www.co.mathews.va.us
+Mecklenburg County,Virginia,http://www.mecklenburgva.com
+Middlesex County,Virginia,http://www.co.middlesex.va.us
+Montgomery County,Virginia,http://www.montva.com
+Nelson County,Virginia,http://www.nelsoncounty-va.gov
+New Kent County,Virginia,http://www.co.new-kent.va.us
+Northampton County,Virginia,https://www.co.northampton.va.us/
+Northumberland County,Virginia,http://www.co.northumberland.va.us
+Nottoway County,Virginia,http://www.nottoway.org
+Orange County,Virginia,http://orangecountyva.gov
+Page County,Virginia,http://www.pagecounty.virginia.gov/
+Patrick County,Virginia,http://www.co.patrick.va.us
+Pittsylvania County,Virginia,http://www.pittsylvaniacountyva.gov
+Powhatan County,Virginia,http://www.powhatanva.gov
+Prince Edward County,Virginia,http://www.co.prince-edward.va.us
+Prince George County,Virginia,http://www.princegeorgeva.org
+Prince William County,Virginia,http://www.pwcgov.org/
+Pulaski County,Virginia,http://www.pulaskicounty.org
+Rappahannock County,Virginia,http://rappahannockcountyva.gov
+Richmond County,Virginia,http://www.co.richmond.va.us
+Roanoke County,Virginia,http://www.roanokecountyva.gov
+Rockbridge County,Virginia,http://www.co.rockbridge.va.us
+Rockingham County,Virginia,http://www.rockinghamcountyva.gov/
+Russell County,Virginia,http://www.russellcountyva.us/
+Scott County,Virginia,http://www.scottcountyva.com
+Shenandoah County,Virginia,http://www.shenandoahcountyva.us/
+Smyth County,Virginia,http://www.smythcounty.org
+Southampton County,Virginia,http://www.southamptoncounty.org
+Spotsylvania County,Virginia,http://www.spotsylvania.va.us/
+Stafford County,Virginia,http://staffordcountyva.gov
+Surry County,Virginia,http://www.surrycountyva.gov
+Sussex County,Virginia,http://www.sussexcountyva.gov
+Tazewell County,Virginia,http://tazewellcountyva.org/
+Warren County,Virginia,http://www.warrencountyva.net
+Washington County,Virginia,http://www.washcova.com
+Westmoreland County,Virginia,http://www.westmoreland-county.org/
+Wise County,Virginia,http://www.wisecounty.org
+Wythe County,Virginia,http://www.wytheco.org
+York County,Virginia,http://www.yorkcounty.gov
+Alexandria,Virginia,http://www.alexandriava.gov
+Bristol,Virginia,http://www.bristolva.org
+Buena Vista,Virginia,http://www.buenavistavirginia.org
+Charlottesville,Virginia,http://www.charlottesville.gov/
+Chesapeake,Virginia,http://www.cityofchesapeake.net/
+Colonial Heights,Virginia,http://www.colonialheightsva.gov
+Covington,Virginia,https://covington.va.us/
+Danville,Virginia,http://www.danville-va.gov
+Emporia,Virginia,http://www.ci.emporia.va.us/
+Fairfax,Virginia,http://www.fairfaxva.gov
+Falls Church,Virginia,http://fallschurchva.gov
+Franklin,Virginia,http://www.franklinva.com
+Fredericksburg,Virginia,http://www.fredericksburgva.gov
+Galax,Virginia,http://www.galaxva.com
+Hampton,Virginia,http://www.hampton.gov
+Harrisonburg,Virginia,https://www.harrisonburgva.gov/
+Hopewell,Virginia,http://www.hopewellva.gov
+Lexington,Virginia,http://lexingtonva.gov/
+Lynchburg,Virginia,http://lynchburgva.gov
+Manassas,Virginia,http://www.manassasva.gov
+Manassas Park,Virginia,http://www.cityofmanassaspark.us/
+Martinsville,Virginia,http://www.martinsville-va.gov
+Newport News,Virginia,http://www.nnva.gov
+Norfolk,Virginia,http://www.norfolk.gov/
+Norton,Virginia,http://www.nortonva.org/
+Petersburg,Virginia,http://www.petersburgva.gov
+Poquoson,Virginia,http://www.poquoson-va.gov
+Portsmouth,Virginia,http://www.portsmouthva.gov/
+Radford,Virginia,http://www.radfordva.gov
+Richmond,Virginia,https://rva.gov
+Roanoke,Virginia,http://www.roanokeva.gov
+Salem,Virginia,http://www.salemva.gov/
+Staunton,Virginia,http://www.staunton.va.us/
+Suffolk,Virginia,http://www.suffolkva.us/
+Virginia Beach,Virginia,http://www.vbgov.com/
+Waynesboro,Virginia,http://www.waynesboro.va.us/
+Williamsburg,Virginia,http://www.williamsburgva.gov/
+Winchester,Virginia,http://www.winchesterva.gov/
+Adams County,Washington,http://www.co.adams.wa.us
+Asotin County,Washington,http://www.co.asotin.wa.us
+Benton County,Washington,https://www.co.benton.wa.us/
+Chelan County,Washington,http://www.co.chelan.wa.us
+Clallam County,Washington,http://www.clallam.net
+Clark County,Washington,https://clark.wa.gov/
+Columbia County,Washington,http://www.columbiaco.com
+Cowlitz County,Washington,http://www.co.cowlitz.wa.us
+Douglas County,Washington,http://www.douglascountywa.net
+Ferry County,Washington,http://www.ferry-county.com/
+Franklin County,Washington,http://www.co.franklin.wa.us
+Garfield County,Washington,http://www.co.garfield.wa.us
+Grant County,Washington,http://www.grantcountywa.gov
+Grays Harbor County,Washington,http://www.co.grays-harbor.wa.us
+Island County,Washington,http://www.islandcountywa.gov
+Jefferson County,Washington,http://www.co.jefferson.wa.us
+King County,Washington,http://www.kingcounty.gov/
+Kitsap County,Washington,http://www.kitsapgov.com
+Kittitas County,Washington,http://www.co.kittitas.wa.us
+Klickitat County,Washington,http://www.klickitatcounty.org
+Lewis County,Washington,http://www.lewiscountywa.gov
+Lincoln County,Washington,http://www.co.lincoln.wa.us
+Mason County,Washington,https://www.masoncountywa.gov
+Okanogan County,Washington,http://okanogancounty.org
+Pacific County,Washington,http://www.co.pacific.wa.us
+Pend Oreille County,Washington,http://www.pendoreilleco.org
+Pierce County,Washington,https://www.piercecountywa.gov/
+San Juan County,Washington,http://www.sanjuanco.com
+Skagit County,Washington,http://www.skagitcounty.net
+Skamania County,Washington,http://www.skamaniacounty.org
+Snohomish County,Washington,http://snohomishcountywa.gov
+Spokane County,Washington,https://www.spokanecounty.org/
+Stevens County,Washington,http://www.stevenscountywa.gov
+Thurston County,Washington,http://www.co.thurston.wa.us
+Wahkiakum County,Washington,http://www.co.wahkiakum.wa.us
+Walla Walla County,Washington,http://www.co.walla-walla.wa.us
+Whatcom County,Washington,https://www.whatcomcounty.us/
+Whitman County,Washington,http://www.whitmancounty.org
+Yakima County,Washington,http://www.yakimacounty.us
+Barbour County,West Virginia,https://barbourcountywv.org/
+Berkeley County,West Virginia,http://www.berkeleywv.org/
+Boone County,West Virginia,http://www.boonecountywv.org
+Braxton County,West Virginia,http://www.braxtoncounty.wv.gov/Pages/default.aspx
+Brooke County,West Virginia,http://www.brookewv.org
+Cabell County,West Virginia,http://www.cabellcounty.org
+Calhoun County,West Virginia,http://www.calhouncounty.wv.gov/
+Clay County,West Virginia,http://www.claycounty.wv.gov/
+Doddridge County,West Virginia,https://www.doddridgecountywv.gov/
+Fayette County,West Virginia,http://www.fayettecounty.wv.gov/
+Gilmer County,West Virginia,http://www.gilmercounty.wv.gov
+Grant County,West Virginia,http://www.grantcountywv.org
+Greenbrier County,West Virginia,http://www.greenbriercounty.net
+Hampshire County,West Virginia,http://www.hampshirecounty.wv.gov
+Hancock County,West Virginia,http://www.hancockcountywv.org
+Hardy County,West Virginia,http://www.hardycounty.com
+Harrison County,West Virginia,http://www.harrisoncountywv.com
+Jackson County,West Virginia,http://www.jacksoncounty.wv.gov/
+Jefferson County,West Virginia,http://www.jeffersoncountywv.org
+Kanawha County,West Virginia,http://www.kanawha.us
+Lewis County,West Virginia,http://www.lewiscounty.wv.gov
+Lincoln County,West Virginia,http://www.lincolncountywv.org
+Logan County,West Virginia,http://www.logancounty.wv.gov
+McDowell County,West Virginia,http://www.mcdowellcounty.wv.gov
+Marion County,West Virginia,http://www.marioncountywv.com
+Marshall County,West Virginia,http://www.marshallcountywv.org/
+Mason County,West Virginia,http://www.masoncounty.wv.gov
+Mercer County,West Virginia,http://www.mercercounty.wv.gov/
+Mineral County,West Virginia,https://www.mineralwv.org/
+Mingo County,West Virginia,http://www.mingocountywv.com/
+Monongalia County,West Virginia,http://www.co.monongalia.wv.us
+Monroe County,West Virginia,http://www.monroecountywv.net/
+Morgan County,West Virginia,http://www.morgancountywv.gov/
+Nicholas County,West Virginia,http://www.nicholascountywv.org/
+Ohio County,West Virginia,http://www.ohiocountywv.gov
+Pendleton County,West Virginia,http://www.pendletoncounty.wv.gov/
+Pleasants County,West Virginia,http://pleasantscountywv.org/
+Pocahontas County,West Virginia,http://www.pocahontascounty.wv.gov
+Preston County,West Virginia,http://www.prestoncountywv.org/
+Putnam County,West Virginia,http://www.putnamcounty.org/
+Raleigh County,West Virginia,http://www.raleighcounty.com
+Randolph County,West Virginia,http://elkinsrandolphwv.com
+Ritchie County,West Virginia,http://www.ritchiecounty.wv.gov/
+Roane County,West Virginia,http://www.roanewv.com
+Summers County,West Virginia,http://summerscountywv.org/
+Taylor County,West Virginia,http://www.taylorcounty.wv.gov/
+Tucker County,West Virginia,http://www.tuckerwv.com
+Tyler County,West Virginia,http://www.tylercountywv.com/
+Upshur County,West Virginia,http://www.upshurcounty.org
+Wayne County,West Virginia,http://www.waynecountywv.org/
+Webster County,West Virginia,http://www.webstercounty.wv.gov/
+Wetzel County,West Virginia,http://www.wetzelcounty.wv.gov/
+Wirt County,West Virginia,http://www.wirtcounty.wv.gov/
+Wood County,West Virginia,http://www.woodcountywv.com
+Wyoming County,West Virginia,http://www.wyomingcounty.com/
+Adams County,Wisconsin,https://www.co.adams.wi.us/
+Ashland County,Wisconsin,http://www.co.ashland.wi.us/
+Barron County,Wisconsin,http://www.barroncountywi.gov
+Bayfield County,Wisconsin,http://www.bayfieldcounty.wi.gov
+Brown County,Wisconsin,http://www.browncountywi.gov
+Buffalo County,Wisconsin,https://www.buffalocountywi.gov
+Burnett County,Wisconsin,http://BurnettCounty.com
+Calumet County,Wisconsin,http://www.co.calumet.wi.us/
+Appleton,Wisconsin metropolitan area,http://www.appleton.org
+Chippewa County,Wisconsin,http://www.co.chippewa.wi.us
+Clark County,Wisconsin,https://www.clarkcountywi.gov
+Columbia County,Wisconsin,http://www.co.columbia.wi.us
+Crawford County,Wisconsin,http://www.crawfordcountywi.org/
+Dane County,Wisconsin,http://www.countyofdane.com
+Dodge County,Wisconsin,http://www.co.dodge.wi.gov
+Door County,Wisconsin,http://www.co.door.wi.gov
+Douglas County,Wisconsin,http://www.douglascountywi.org
+Dunn County,Wisconsin,http://www.co.dunn.wi.us/
+Eau Claire County,Wisconsin,https://www.eauclairecounty.gov
+Florence County,Wisconsin,http://www.florencecountywi.com
+Forest County,Wisconsin,http://www.co.forest.wi.gov
+Grant County,Wisconsin,http://www.co.grant.wi.gov/
+Green County,Wisconsin,http://www.co.green.wi.gov
+Green Lake County,Wisconsin,http://www.co.green-lake.wi.us
+Iowa County,Wisconsin,http://www.iowacounty.org
+Iron County,Wisconsin,http://www.co.iron.wi.gov
+Jackson County,Wisconsin,http://www.co.jackson.wi.us
+Jefferson County,Wisconsin,http://www.jeffersoncountywi.gov
+Juneau County,Wisconsin,http://www.co.juneau.wi.gov
+Kenosha County,Wisconsin,https://www.kenoshacounty.org/
+Kewaunee County,Wisconsin,http://www.kewauneeco.org
+La Crosse County,Wisconsin,http://www.lacrossecounty.org
+Lafayette County,Wisconsin,http://www.co.lafayette.wi.gov
+Langlade County,Wisconsin,http://www.co.langlade.wi.us
+Lincoln County,Wisconsin,http://www.co.lincoln.wi.us
+Manitowoc County,Wisconsin,https://manitowoccountywi.gov
+Marathon County,Wisconsin,http://www.co.marathon.wi.us
+Marinette County,Wisconsin,http://www.marinettecounty.com
+Marquette County,Wisconsin,http://www.co.marquette.wi.us
+Menominee County,Wisconsin,http://www.co.menominee.wi.us/
+Milwaukee County,Wisconsin,http://county.milwaukee.gov
+Monroe County,Wisconsin,http://www.co.monroe.wi.us
+Oconto County,Wisconsin,http://www.co.oconto.wi.us
+Oneida County,Wisconsin,http://www.co.oneida.wi.gov
+Outagamie County,Wisconsin,http://www.outagamie.org/
+Ozaukee County,Wisconsin,https://ozaukeecounty.gov
+Pepin County,Wisconsin,http://www.co.pepin.wi.us
+Pierce County,Wisconsin,http://www.co.pierce.wi.us
+Polk County,Wisconsin,http://www.co.polk.wi.us
+Portage County,Wisconsin,http://www.co.portage.wi.us
+Price County,Wisconsin,http://www.co.price.wi.us
+Racine County,Wisconsin,http://www.racinecounty.com
+Richland County,Wisconsin,http://co.richland.wi.us/index.shtml
+Rock County,Wisconsin,http://www.co.rock.wi.us
+Rusk County,Wisconsin,http://www.ruskcounty.org
+St. Croix County,Wisconsin,https://www.sccwi.gov
+Sauk County,Wisconsin,http://www.co.sauk.wi.us
+Sawyer County,Wisconsin,http://www.sawyercountygov.org
+Shawano County,Wisconsin,http://www.co.shawano.wi.us
+Sheboygan County,Wisconsin,https://sheboygancountywi.gov
+Taylor County,Wisconsin,http://www.co.taylor.wi.us
+Trempealeau County,Wisconsin,http://www.tremplocounty.com
+Vernon County,Wisconsin,http://www.vernoncounty.org/
+Vilas County,Wisconsin,http://www.vilascountywi.gov
+Walworth County,Wisconsin,http://www.co.walworth.wi.us
+Washburn County,Wisconsin,http://www.co.washburn.wi.us
+Washington County,Wisconsin,http://www.co.washington.wi.us
+Waukesha County,Wisconsin,http://www.waukeshacounty.gov
+Waupaca County,Wisconsin,http://www.co.waupaca.wi.us
+Waushara County,Wisconsin,http://www.co.waushara.wi.us/
+Winnebago County,Wisconsin,http://www.co.winnebago.wi.us
+Wood County,Wisconsin,http://www.co.wood.wi.us
+Albany County,Wyoming,http://www.co.albany.wy.us
+Big Horn County,Wyoming,http://www.bighorncountywy.gov
+Campbell County,Wyoming,https://www.ccgov.net/
+Carbon County,Wyoming,http://www.carbonwy.com
+Converse County,Wyoming,http://conversecounty.org
+Crook County,Wyoming,http://www.crookcounty.wy.gov
+Fremont County,Wyoming,http://www.fremontcountywy.org
+Goshen County,Wyoming,https://goshencounty.org/
+Hot Springs County,Wyoming,http://www.hscounty.com
+Johnson County,Wyoming,http://www.johnsoncountywyoming.org
+Laramie County,Wyoming,http://laramiecounty.com
+Lincoln County,Wyoming,http://www.lcwy.org
+Natrona County,Wyoming,http://www.natronacounty-wy.gov
+Niobrara County,Wyoming,http://www.niobraracounty.org
+Park County,Wyoming,https://parkcounty-wy.gov
+Platte County,Wyoming,http://plattecountywyoming.com
+Sheridan County,Wyoming,http://www.sheridancounty.com
+Sublette County,Wyoming,http://www.sublettewyo.com
+Sweetwater County,Wyoming,https://www.sweetwatercountywy.gov
+Teton County,Wyoming,http://www.tetonwyo.org
+Uinta County,Wyoming,http://www.uintacounty.com
+Washakie County,Wyoming,http://www.washakiecounty.net
+Weston County,Wyoming,http://westongov.com
diff --git a/backend/scripts/populateCountiesCities/cities.py b/backend/scripts/populateCountiesCities/cities.py
new file mode 100644
index 00000000..cd720f42
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/cities.py
@@ -0,0 +1,107 @@
+import pandas as pd
+import requests
+from bs4 import BeautifulSoup
+import time
+import re
+import json
+from urllib.parse import unquote
+
+
+def title_parse(title):
+ title = unquote(title)
+ return title
+
+
+def pull_cities():
+ print("Processing Cities...")
+ with open("wikipedia_US_cities.json") as f:
+ wikipedia_us_city_data = json.load(f)
+
+ holding_pen = []
+
+ for entry in wikipedia_us_city_data:
+ print(entry["name"])
+ # get the response in the form of html
+ wikiurl = "https://en.wikipedia.org/wiki/" + entry["url"]
+ response = requests.get(wikiurl)
+
+ # parse data from the html into a beautifulsoup object
+ soup = BeautifulSoup(response.text, "html.parser")
+
+ # DEAL WITH VERMONT'S NON-COMPLIANT WIKIPEDIA PAGE
+ if entry["name"] == "Vermont":
+ countytable = soup.find_all(
+ "table",
+ {"class": entry["table_type"]},
+ )
+ vermont_special = ""
+ for thing in countytable:
+ vermont_special = vermont_special + "\n" + str(thing)
+ soup_special = BeautifulSoup(vermont_special, "html.parser")
+ countytable = soup_special
+ else:
+ countytable = soup.find(
+ "table",
+ {"class": entry["table_type"]},
+ )
+
+ links = countytable.select("a")
+ for link in links:
+ if "County" or "Parish" not in link.get("title"):
+ try:
+ if "," in link.get("title"):
+ county_pieces = link.get("title").split(",")
+ # OPEN WIKIPEDIA PAGE UP
+ x = requests.get("https://en.wikipedia.org/" + link.get("href"))
+
+ # PULL COUNTY OR PARISH FROM WIKIPEDIA PAGE
+ county_parish_matches = re.findall(
+ r"Website.+",
+ x.text,
+ )
+ # PULL URL OUT OF FOUND TEXT
+ url = re.search(r"href=\"(.+?)\"", w[0])
+ url = url.group()
+ url = url.replace("href=", "").replace('"', "")
+
+ holding_pen.append(
+ {
+ "City": county_pieces[0],
+ "State": entry["name"],
+ "URL": url,
+ "County": county_value,
+ }
+ )
+ time.sleep(1)
+ except:
+ pass
+
+ df = pd.DataFrame(holding_pen, columns=["State", "County", "City", "URL"])
+
+ df.drop_duplicates(inplace=True)
+
+ # DROP COUNTIES FROM CITY ENTRIES
+ df = df[~df.City.str.contains(" County", na=False)]
+
+ # REMOVE HTML ENTITIES (LIKE %27)
+ df["State"] = df.State.apply(title_parse)
+ df["City"] = df.City.apply(title_parse)
+ df["County"] = df.County.apply(title_parse)
+
+ df.to_csv("United_States_Cities_with_URLs.csv", index=False, encoding="utf-8")
+
+
+if __name__ == "__main__":
+ pull_cities()
diff --git a/backend/scripts/populateCountiesCities/counties.py b/backend/scripts/populateCountiesCities/counties.py
new file mode 100644
index 00000000..64df0f38
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/counties.py
@@ -0,0 +1,61 @@
+import pandas as pd
+import requests
+from bs4 import BeautifulSoup
+import time
+import re
+
+
+def pull_counties():
+ print("Processing Counties...")
+ # get the response in the form of html
+ wikiurl = "https://en.wikipedia.org/wiki/List_of_United_States_counties_and_county_equivalents"
+ table_class = "wikitable sortable jquery-tablesorter"
+ response = requests.get(wikiurl)
+
+ # parse data from the html into a beautifulsoup object
+ soup = BeautifulSoup(response.text, "html.parser")
+ countytable = soup.find("table", {"class": "wikitable"})
+
+ links = countytable.select("a")
+
+ holding_pen = []
+
+ for link in links:
+ try:
+ county_pieces = link.get("title").split(", ")
+ # OPEN WIKIPEDIA PAGE UP
+ x = requests.get("https://en.wikipedia.org/" + link.get("href"))
+
+ # PULL WEBSITE FROM WIKIPEDIA PAGE
+ w = re.findall(
+ r" | Website | .+", x.text
+ )
+ # PULL URL OUT OF FOUND TEXT
+ url = re.search(r"href=\"(.+?)\"", w[0])
+ url = url.group()
+ url = url.replace("href=", "")
+
+ holding_pen.append(
+ {
+ "County": county_pieces[0],
+ "State": county_pieces[1],
+ "URL": url,
+ }
+ )
+ except Exception as e:
+ pass
+
+ time.sleep(1)
+
+ df = pd.DataFrame(holding_pen, columns=["County", "State", "URL"])
+
+ df.drop_duplicates(inplace=True)
+
+ # Drop the Statistical Area Entries
+ df[~df.State.str.contains("Statistical Area")]
+
+ df.to_csv("United_States_Counties_with_URLs.csv", index=False)
+
+
+if __name__ == "__main__":
+ pull_counties()
diff --git a/backend/scripts/populateCountiesCities/main.py b/backend/scripts/populateCountiesCities/main.py
new file mode 100644
index 00000000..dc86edb1
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/main.py
@@ -0,0 +1,25 @@
+import typer
+import cities
+import counties
+
+app = typer.Typer()
+
+
+@app.command()
+def process_cities():
+ cities.pull_cities()
+
+
+@app.command()
+def process_counties():
+ counties.pull_counties()
+
+
+@app.command()
+def process_both():
+ counties.pull_counties()
+ cities.pull_cities()
+
+
+if __name__ == "__main__":
+ app()
diff --git a/backend/scripts/populateCountiesCities/requirements.txt b/backend/scripts/populateCountiesCities/requirements.txt
new file mode 100644
index 00000000..b3e808d7
--- /dev/null
+++ b/backend/scripts/populateCountiesCities/requirements.txt
@@ -0,0 +1,4 @@
+pandas==1.5.1
+requests==2.28.2
+beautifulsoup4==4.11.2
+typer==0.7.0
diff --git a/backend/sendMessage.js b/backend/sendMessage.js
new file mode 100644
index 00000000..6e875286
--- /dev/null
+++ b/backend/sendMessage.js
@@ -0,0 +1,28 @@
+// sendMessage.js
+const amqp = require('amqplib');
+
+async function sendMessageToControlQueue(message) {
+ const connection = await amqp.connect('amqp://localhost');
+ const channel = await connection.createChannel();
+ const controlQueue = 'ControlQueue';
+
+ await channel.assertQueue(controlQueue, { durable: true });
+
+ // Simulate sending a message to the ControlQueue
+ channel.sendToQueue(controlQueue, Buffer.from(JSON.stringify(message)), {
+ persistent: true
+ });
+
+ console.log('Message sent to ControlQueue:', message);
+
+ setTimeout(() => {
+ connection.close();
+ }, 500);
+}
+
+// Simulate sending a message
+const message = {
+ scriptType: 'shodan',
+ org: 'DHS'
+};
+sendMessageToControlQueue(message);
diff --git a/backend/serverless.yml b/backend/serverless.yml
new file mode 100644
index 00000000..bcc6005c
--- /dev/null
+++ b/backend/serverless.yml
@@ -0,0 +1,160 @@
+service: crossfeed
+
+frameworkVersion: '3'
+useDotenv: true
+configValidationMode: error
+
+custom:
+ webpack:
+ webpackConfig: 'webpack.backend.config.js'
+ customDomain:
+ domainName: ${file(env.yml):${self:provider.stage}.DOMAIN, ''}
+ basePath: ''
+ certificateName: ${file(env.yml):${self:provider.stage}.DOMAIN, ''}
+ stage: ${self:provider.stage}
+ createRoute53Record: false
+
+provider:
+ name: aws
+ region: us-east-1
+ endpointType: REGIONAL
+ runtime: nodejs16.x
+ timeout: 30
+ stage: ${opt:stage, 'dev'}
+ environment: ${file(env.yml):${self:provider.stage}, ''}
+ vpc: ${file(env.yml):${self:provider.stage}-vpc, ''}
+ apiGateway:
+ binaryMediaTypes:
+ - 'image/*'
+ - 'font/*'
+ resourcePolicy:
+ - Effect: Allow
+ Principal: '*'
+ Action: 'execute-api:Invoke'
+ Resource: 'execute-api:/${self:provider.stage}/*/*'
+ logs:
+ restApi: true
+ deploymentBucket:
+ serverSideEncryption: AES256
+ iam:
+ role:
+ statements:
+ # TODO: make the resources more specific. See Resource: '*' was
+ - Effect: Allow
+ Action:
+ - lambda:InvokeAsync
+ - lambda:InvokeFunction
+ - cognito-idp:AdminDisableUser
+ - cognito-idp:ListUsers
+ - cognito-idp:AdminSetUserPassword
+ Resource: "*"
+ - Effect: Allow
+ Action:
+ - ecs:RunTask
+ - ecs:ListTasks
+ - ecs:DescribeTasks
+ - ecs:DescribeServices
+ - ecs:UpdateService
+ - iam:PassRole
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - ses:SendRawEmail
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - s3:GetObject
+ - s3:GetObjectAcl
+ - s3:PutObject
+ - s3:PutObjectAcl
+ - s3:PutBucketAcl
+ - s3:GetBucketAcl
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - sts:AssumeRole
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - sqs:ReceiveMessage
+ - sqs:DeleteMessage
+ - sqs:SendMessage
+ - sqs:GetQueueAttributes
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - logs:CreateExportTask
+ - logs:CreateLogStream
+ - logs:Describe*
+ - logs:Get*
+ - logs:List*
+ - logs:PutLogEvents
+ - logs:StartQuery
+ - logs:StopQuery
+ - logs:TestMetricFilter
+ - logs:FilterLogEvents
+ - logs:StartLiveTail
+ - logs:StopLiveTail
+ Resource: '*'
+ - Effect: Allow
+ Action:
+ - ssm:DescribeParameters
+ - ssm:GetParameter
+ - ssm:GetParameters
+ - ssm:GetParametersByPath
+ - ssm:PutParameter
+ Resource: '*'
+
+resources:
+ Resources:
+ WorkerControlQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-worker-control-queue
+ VisibilityTimeout: 300 # Should match or exceed function timeout
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+ ShodanQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-shodan-queue
+ VisibilityTimeout: 300
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+ DnstwistQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-dnstwist-queue
+ VisibilityTimeout: 300
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+ HibpQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-hibp-queue
+ VisibilityTimeout: 300
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+ IntelxQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-intelx-queue
+ VisibilityTimeout: 300
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+ CybersixgillQueue:
+ Type: AWS::SQS::Queue
+ Properties:
+ QueueName: ${self:provider.stage}-cybersixgill-queue
+ VisibilityTimeout: 300
+ MaximumMessageSize: 262144 # 256 KB
+ MessageRetentionPeriod: 604800 # 7 days
+
+functions:
+ - ${file(./src/tasks/functions.yml)}
+ - ${file(./src/api/functions.yml)}
+
+plugins:
+ - serverless-domain-manager
+ - serverless-webpack
+ - serverless-dotenv-plugin
diff --git a/backend/src/api-dev.ts b/backend/src/api-dev.ts
new file mode 100644
index 00000000..9c721fd7
--- /dev/null
+++ b/backend/src/api-dev.ts
@@ -0,0 +1,10 @@
+// Main entrypoint for dev server.
+
+import app from './api/app';
+
+process.env.IS_OFFLINE = 'true';
+
+const port = 3000;
+app.listen(port, () => {
+ console.log('App listening on port ' + port);
+});
diff --git a/backend/src/api.ts b/backend/src/api.ts
new file mode 100644
index 00000000..6ea6ebae
--- /dev/null
+++ b/backend/src/api.ts
@@ -0,0 +1,8 @@
+// Main entrypoint for serverless API code.
+
+import * as serverless from 'serverless-http';
+import app from './api/app';
+
+module.exports.handler = serverless(app, {
+ binary: ['image/*', 'font/*']
+});
diff --git a/backend/src/api/__mocks__/login-gov.ts b/backend/src/api/__mocks__/login-gov.ts
new file mode 100644
index 00000000..8ae01955
--- /dev/null
+++ b/backend/src/api/__mocks__/login-gov.ts
@@ -0,0 +1,24 @@
+const loginGov: any = {};
+
+loginGov.login = async function (): Promise<{
+ url: string;
+ state: string;
+ nonce: string;
+}> {
+ return {
+ url: 'https://idp.int.identitysandbox.gov/openid_connect/authorize?client_id=urn%3Agov%3Agsa%3Aopenidconnect.profiles%3Asp%3Asso%3Acisa%3Acrossfeed&scope=openid%20email&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%2F&acr_values=http%3A%2F%2Fidmanagement.gov%2Fns%2Fassurance%2Fial%2F1&nonce=3ac04a92b121fce3fc5ca95251e70205d764147731&state=258165a7dc37ce6034e74815e991606d49fd52240e469f&prompt=select_account',
+ state: '258165a7dc37ce6034e74815e991606d49fd52240e469f',
+ nonce: '3ac04a92b121fce3fc5ca95251e70205d764147731'
+ };
+};
+
+loginGov.callback = async function (body) {
+ return {
+ sub: 'eaf059e8-bde2-4647-8c74-4aedbe0a2091',
+ iss: 'https://idp.int.identitysandbox.gov/',
+ email: 'test@crossfeed.cisa.gov',
+ email_verified: true
+ };
+};
+
+export default loginGov;
diff --git a/backend/src/api/api-keys.ts b/backend/src/api/api-keys.ts
new file mode 100644
index 00000000..c72981ad
--- /dev/null
+++ b/backend/src/api/api-keys.ts
@@ -0,0 +1,44 @@
+import { isUUID } from 'class-validator';
+import { connectToDatabase, ApiKey } from '../models';
+import { wrapHandler, NotFound } from './helpers';
+import { getUserId } from './auth';
+import { randomBytes, createHash } from 'crypto';
+
+export const del = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const id = event.pathParameters?.keyId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const key = await ApiKey.findOne({
+ id,
+ user: { id: getUserId(event) }
+ });
+ if (key) {
+ const result = await ApiKey.delete({
+ id,
+ user: { id: getUserId(event) }
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+export const generate = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const key = randomBytes(16).toString('hex');
+ // Store a hash of the API key instead of the key itself
+ let apiKey = await ApiKey.create({
+ hashedKey: createHash('sha256').update(key).digest('hex'),
+ lastFour: key.substr(-4),
+ user: { id: getUserId(event) }
+ });
+ apiKey = await apiKey.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ ...apiKey, key: key })
+ };
+});
diff --git a/backend/src/api/app.ts b/backend/src/api/app.ts
new file mode 100644
index 00000000..16f13526
--- /dev/null
+++ b/backend/src/api/app.ts
@@ -0,0 +1,465 @@
+import * as express from 'express';
+import * as cookieParser from 'cookie-parser';
+import * as cookie from 'cookie';
+import * as cors from 'cors';
+import * as helmet from 'helmet';
+import { handler as healthcheck } from './healthcheck';
+import * as auth from './auth';
+import * as cpes from './cpes';
+import * as cves from './cves';
+import * as domains from './domains';
+import * as search from './search';
+import * as vulnerabilities from './vulnerabilities';
+import * as organizations from './organizations';
+import * as scans from './scans';
+import * as users from './users';
+import * as scanTasks from './scan-tasks';
+import * as stats from './stats';
+import * as apiKeys from './api-keys';
+import * as reports from './reports';
+import * as savedSearches from './saved-searches';
+import { createProxyMiddleware } from 'http-proxy-middleware';
+import { UserType } from '../models';
+
+if (
+ (process.env.IS_OFFLINE || process.env.IS_LOCAL) &&
+ typeof jest === 'undefined'
+) {
+ // Run scheduler during local development. When deployed on AWS,
+ // the scheduler runs on a separate lambda function.
+ const { handler: scheduler } = require('../tasks/scheduler');
+ const { listenForDockerEvents } = require('./docker-events');
+ listenForDockerEvents();
+ setInterval(() => scheduler({}, {} as any, () => null), 30000);
+}
+
+const handlerToExpress = (handler) => async (req, res) => {
+ const { statusCode, body } = await handler(
+ {
+ pathParameters: req.params,
+ query: req.query,
+ requestContext: req.requestContext,
+ body: JSON.stringify(req.body || '{}'),
+ headers: req.headers,
+ path: req.originalUrl
+ },
+ {}
+ );
+ try {
+ const parsedBody = JSON.parse(body);
+ res.status(statusCode).json(parsedBody);
+ } catch (e) {
+ // Not a JSON body
+ res.setHeader('content-type', 'text/plain');
+ res.status(statusCode).send(body);
+ }
+};
+
+const app = express();
+
+app.use(express.json({ strict: false }));
+
+app.use(
+ cors({
+ origin: '*',
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']
+ })
+);
+
+app.use(
+ helmet({
+ contentSecurityPolicy: {
+ directives: {
+ defaultSrc: [
+ "'self'",
+ 'https://cognito-idp.us-east-1.amazonaws.com',
+ 'https://api.staging-cd.crossfeed.cyber.dhs.gov'
+ ],
+ objectSrc: ["'none'"],
+ scriptSrc: [
+ "'self'",
+ 'https://api.staging-cd.crossfeed.cyber.dhs.gov'
+ // Add any other allowed script sources here
+ ],
+ frameAncestors: ["'none'"]
+ // Add other directives as needed
+ }
+ },
+ hsts: {
+ maxAge: 31536000,
+ includeSubDomains: true,
+ preload: true
+ }
+ })
+);
+
+app.use((req, res, next) => {
+ res.setHeader('X-XSS-Protection', '0');
+ next();
+});
+
+app.use(cookieParser());
+
+app.get('/', handlerToExpress(healthcheck));
+app.post('/auth/login', handlerToExpress(auth.login));
+app.post('/auth/callback', handlerToExpress(auth.callback));
+app.post('/users/register', handlerToExpress(users.register));
+
+const checkUserLoggedIn = async (req, res, next) => {
+ req.requestContext = {
+ authorizer: await auth.authorize({
+ authorizationToken: req.headers.authorization
+ })
+ };
+ if (
+ !req.requestContext.authorizer.id ||
+ req.requestContext.authorizer.id === 'cisa:crossfeed:anonymous'
+ ) {
+ return res.status(401).send('Not logged in');
+ }
+ return next();
+};
+
+const checkUserSignedTerms = (req, res, next) => {
+ // Bypass ToU for CISA emails
+ const approvedEmailAddresses = ['@cisa.dhs.gov', '@associates.cisa.dhs.gov'];
+ if (process.env.NODE_ENV === 'test')
+ approvedEmailAddresses.push('@crossfeed.cisa.gov');
+ for (const email of approvedEmailAddresses) {
+ if (
+ req.requestContext.authorizer.email &&
+ req.requestContext.authorizer.email.endsWith(email)
+ )
+ return next();
+ }
+ if (
+ !req.requestContext.authorizer.dateAcceptedTerms ||
+ (req.requestContext.authorizer.acceptedTermsVersion &&
+ req.requestContext.authorizer.acceptedTermsVersion !==
+ getToUVersion(req.requestContext.authorizer))
+ ) {
+ return res.status(403).send('User must accept terms of use');
+ }
+ return next();
+};
+
+const getMaximumRole = (user) => {
+ if (user?.userType === UserType.GLOBAL_VIEW) return 'user';
+ return user && user.roles && user.roles.find((role) => role.role === 'admin')
+ ? 'admin'
+ : 'user';
+};
+
+const getToUVersion = (user) => {
+ return `v${process.env.REACT_APP_TERMS_VERSION}-${getMaximumRole(user)}`;
+};
+
+// Rewrite the URL for some Matomo admin dashboard URLs, due to a bug in
+// how Matomo handles relative URLs when hosted on a subpath.
+app.get('/plugins/Morpheus/images/logo.svg', (req, res) =>
+ res.redirect('/matomo/plugins/Morpheus/images/logo.svg?matomo')
+);
+app.get('/index.php', (req, res) => res.redirect('/matomo/index.php'));
+
+/**
+ * @swagger
+ *
+ * /matomo:
+ * get:
+ * description: All paths under /matomo proxy to a Matomo instance, which is used to handle and process user analytics. A global admin user can access this page from the "My Account" page.
+ * tags:
+ * - Analytics
+ */
+const matomoProxy = createProxyMiddleware({
+ target: process.env.MATOMO_URL,
+ headers: { HTTP_X_FORWARDED_URI: '/matomo' },
+ pathRewrite: function (path) {
+ return path.replace(/^\/matomo/, '');
+ },
+ onProxyReq: function (proxyReq) {
+ // Only pass the MATOMO_SESSID cookie to Matomo.
+ if (!proxyReq.getHeader('Cookie')) return;
+ const cookies = cookie.parse(proxyReq.getHeader('Cookie'));
+ const newCookies = cookie.serialize(
+ 'MATOMO_SESSID',
+ String(cookies['MATOMO_SESSID'])
+ );
+ proxyReq.setHeader('Cookie', newCookies);
+ },
+ onProxyRes: function (proxyRes) {
+ // Remove transfer-encoding: chunked responses, because API Gateway doesn't
+ // support chunked encoding.
+ if (proxyRes.headers['transfer-encoding'] === 'chunked') {
+ proxyRes.headers['transfer-encoding'] = '';
+ }
+ }
+});
+
+/**
+ * @swagger
+ *
+ * /pe:
+ * get:
+ * description: All paths under /pe proxy to the P&E django application and API. Only a global admin can access.
+ */
+const peProxy = createProxyMiddleware({
+ target: process.env.PE_API_URL,
+ pathRewrite: function (path) {
+ return path.replace(/^\/pe/, '');
+ }
+});
+
+app.use(
+ '/matomo',
+ async (req, res, next) => {
+ // Public paths -- see https://matomo.org/docs/security-how-to/
+ const ALLOWED_PATHS = ['/matomo.php', '/matomo.js'];
+ if (ALLOWED_PATHS.indexOf(req.path) > -1) {
+ return next();
+ }
+ // API Gateway isn't able to proxy fonts properly -- so we're using a CDN instead.
+ if (req.path === '/plugins/Morpheus/fonts/matomo.woff2') {
+ return res.redirect(
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.woff2'
+ );
+ }
+ if (req.path === '/plugins/Morpheus/fonts/matomo.woff') {
+ return res.redirect(
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.woff'
+ );
+ }
+ if (req.path === '/plugins/Morpheus/fonts/matomo.ttf') {
+ return res.redirect(
+ 'https://cdn.jsdelivr.net/gh/matomo-org/matomo@3.14.1/plugins/Morpheus/fonts/matomo.ttf'
+ );
+ }
+ // Only allow global admins to access all other paths.
+ const user = (await auth.authorize({
+ authorizationToken: req.cookies['crossfeed-token']
+ })) as auth.UserToken;
+ if (user.userType !== UserType.GLOBAL_ADMIN) {
+ return res.status(401).send('Unauthorized');
+ }
+ return next();
+ },
+ matomoProxy
+);
+
+app.use(
+ '/pe',
+ async (req, res, next) => {
+ // Only allow specific users to access
+ const user = (await auth.authorize({
+ authorizationToken: req.headers.authorization
+ })) as auth.UserToken;
+ if (
+ user.userType !== UserType.GLOBAL_VIEW &&
+ user.userType !== UserType.GLOBAL_ADMIN
+ ) {
+ return res.status(401).send('Unauthorized');
+ }
+ return next();
+ },
+ peProxy
+);
+
+// Routes that require an authenticated user, without
+// needing to sign the terms of service yet
+const authenticatedNoTermsRoute = express.Router();
+authenticatedNoTermsRoute.use(checkUserLoggedIn);
+authenticatedNoTermsRoute.get('/users/me', handlerToExpress(users.me));
+// authenticatedNoTermsRoute.post('/users/register', handlerToExpress(users.register));
+authenticatedNoTermsRoute.post(
+ '/users/me/acceptTerms',
+ handlerToExpress(users.acceptTerms)
+);
+authenticatedNoTermsRoute.put('/users/:userId', handlerToExpress(users.update));
+
+app.use(authenticatedNoTermsRoute);
+
+// Routes that require an authenticated user that has
+// signed the terms of service
+const authenticatedRoute = express.Router();
+
+authenticatedRoute.use(checkUserLoggedIn);
+authenticatedRoute.use(checkUserSignedTerms);
+
+authenticatedRoute.post('/api-keys', handlerToExpress(apiKeys.generate));
+authenticatedRoute.delete('/api-keys/:keyId', handlerToExpress(apiKeys.del));
+
+authenticatedRoute.post('/search', handlerToExpress(search.search));
+authenticatedRoute.post('/search/export', handlerToExpress(search.export_));
+authenticatedRoute.get('/cpes/:id', handlerToExpress(cpes.get));
+authenticatedRoute.get('/cves/:id', handlerToExpress(cves.get));
+authenticatedRoute.get('/cves/name/:name', handlerToExpress(cves.getByName));
+authenticatedRoute.post('/domain/search', handlerToExpress(domains.list));
+authenticatedRoute.post('/domain/export', handlerToExpress(domains.export_));
+authenticatedRoute.get('/domain/:domainId', handlerToExpress(domains.get));
+authenticatedRoute.post(
+ '/vulnerabilities/search',
+ handlerToExpress(vulnerabilities.list)
+);
+authenticatedRoute.post(
+ '/vulnerabilities/export',
+ handlerToExpress(vulnerabilities.export_)
+);
+authenticatedRoute.get(
+ '/vulnerabilities/:vulnerabilityId',
+ handlerToExpress(vulnerabilities.get)
+);
+authenticatedRoute.put(
+ '/vulnerabilities/:vulnerabilityId',
+ handlerToExpress(vulnerabilities.update)
+);
+authenticatedRoute.get('/saved-searches', handlerToExpress(savedSearches.list));
+authenticatedRoute.post(
+ '/saved-searches',
+ handlerToExpress(savedSearches.create)
+);
+authenticatedRoute.get(
+ '/saved-searches/:searchId',
+ handlerToExpress(savedSearches.get)
+);
+authenticatedRoute.put(
+ '/saved-searches/:searchId',
+ handlerToExpress(savedSearches.update)
+);
+authenticatedRoute.delete(
+ '/saved-searches/:searchId',
+ handlerToExpress(savedSearches.del)
+);
+authenticatedRoute.get('/scans', handlerToExpress(scans.list));
+authenticatedRoute.get('/granularScans', handlerToExpress(scans.listGranular));
+authenticatedRoute.post('/scans', handlerToExpress(scans.create));
+authenticatedRoute.get('/scans/:scanId', handlerToExpress(scans.get));
+authenticatedRoute.put('/scans/:scanId', handlerToExpress(scans.update));
+authenticatedRoute.delete('/scans/:scanId', handlerToExpress(scans.del));
+authenticatedRoute.post('/scans/:scanId/run', handlerToExpress(scans.runScan));
+authenticatedRoute.post(
+ '/scheduler/invoke',
+ handlerToExpress(scans.invokeScheduler)
+);
+authenticatedRoute.post('/scan-tasks/search', handlerToExpress(scanTasks.list));
+authenticatedRoute.post(
+ '/scan-tasks/:scanTaskId/kill',
+ handlerToExpress(scanTasks.kill)
+);
+authenticatedRoute.get(
+ '/scan-tasks/:scanTaskId/logs',
+ handlerToExpress(scanTasks.logs)
+);
+
+authenticatedRoute.get('/organizations', handlerToExpress(organizations.list));
+authenticatedRoute.get(
+ '/organizations/tags',
+ handlerToExpress(organizations.getTags)
+);
+authenticatedRoute.get(
+ '/organizations/:organizationId',
+ handlerToExpress(organizations.get)
+);
+authenticatedRoute.get(
+ '/organizations/state/:state',
+ handlerToExpress(organizations.getByState)
+);
+authenticatedRoute.get(
+ '/organizations/regionId/:regionId',
+ handlerToExpress(organizations.getByRegionId)
+);
+authenticatedRoute.post(
+ '/organizations',
+ handlerToExpress(organizations.create)
+);
+authenticatedRoute.post(
+ '/organizations_upsert',
+ handlerToExpress(organizations.upsert_org)
+);
+
+authenticatedRoute.put(
+ '/organizations/:organizationId',
+ handlerToExpress(organizations.update)
+);
+authenticatedRoute.delete(
+ '/organizations/:organizationId',
+ handlerToExpress(organizations.del)
+);
+authenticatedRoute.post(
+ '/v2/organizations/:organizationId/users',
+ handlerToExpress(organizations.addUserV2)
+);
+authenticatedRoute.post(
+ '/organizations/:organizationId/roles/:roleId/approve',
+ handlerToExpress(organizations.approveRole)
+);
+authenticatedRoute.post(
+ '/organizations/:organizationId/roles/:roleId/remove',
+ handlerToExpress(organizations.removeRole)
+);
+authenticatedRoute.post(
+ '/organizations/:organizationId/granularScans/:scanId/update',
+ handlerToExpress(organizations.updateScan)
+);
+authenticatedRoute.post(
+ '/organizations/:organizationId/initiateDomainVerification',
+ handlerToExpress(organizations.initiateDomainVerification)
+);
+authenticatedRoute.post(
+ '/organizations/:organizationId/checkDomainVerification',
+ handlerToExpress(organizations.checkDomainVerification)
+);
+authenticatedRoute.post('/stats', handlerToExpress(stats.get));
+authenticatedRoute.post('/users', handlerToExpress(users.invite));
+authenticatedRoute.get('/users', handlerToExpress(users.list));
+authenticatedRoute.delete('/users/:userId', handlerToExpress(users.del));
+authenticatedRoute.get(
+ '/users/state/:state',
+ handlerToExpress(users.getByState)
+);
+authenticatedRoute.get(
+ '/users/regionId/:regionId',
+ handlerToExpress(users.getByRegionId)
+);
+authenticatedRoute.post('/users/search', handlerToExpress(users.search));
+
+authenticatedRoute.post(
+ '/reports/export',
+ handlerToExpress(reports.export_report)
+);
+
+authenticatedRoute.post(
+ '/reports/list',
+ handlerToExpress(reports.list_reports)
+);
+
+//Authenticated Registration Routes
+authenticatedRoute.put(
+ '/users/:userId/register/approve',
+ handlerToExpress(users.registrationApproval)
+);
+
+authenticatedRoute.put(
+ '/users/:userId/register/deny',
+ handlerToExpress(users.registrationDenial)
+);
+
+//************* */
+// V2 Routes //
+//************* */
+
+// Users
+authenticatedRoute.put('/v2/users/:userId', handlerToExpress(users.updateV2));
+authenticatedRoute.get('/v2/users', handlerToExpress(users.getAllV2));
+
+// Organizations
+authenticatedRoute.put(
+ '/v2/organizations/:organizationId',
+ handlerToExpress(organizations.updateV2)
+);
+authenticatedRoute.get(
+ '/v2/organizations',
+ handlerToExpress(organizations.getAllV2)
+);
+
+app.use(authenticatedRoute);
+
+export default app;
diff --git a/backend/src/api/auth.ts b/backend/src/api/auth.ts
new file mode 100644
index 00000000..c4b280eb
--- /dev/null
+++ b/backend/src/api/auth.ts
@@ -0,0 +1,309 @@
+import loginGov from './login-gov';
+import {
+ User,
+ connectToDatabase,
+ ApiKey,
+ OrganizationTag,
+ UserType
+} from '../models';
+import * as jwt from 'jsonwebtoken';
+import { APIGatewayProxyEvent } from 'aws-lambda';
+import * as jwksClient from 'jwks-rsa';
+import { createHash } from 'crypto';
+
+export interface UserToken {
+ email: string;
+ id: string;
+ userType: UserType;
+ roles: {
+ org: string;
+ role: 'user' | 'admin';
+ }[];
+ dateAcceptedTerms: Date | undefined;
+ acceptedTermsVersion: string | undefined;
+ lastLoggedIn: Date | undefined;
+}
+
+interface CognitoUserToken {
+ sub: string;
+ aud: string;
+ email_verified: boolean;
+ event_id: string;
+ token_us: string;
+ auth_time: number;
+ iss: string;
+ 'cognito:username': string;
+ exp: number;
+ iat: number;
+ email: string;
+}
+
+interface UserInfo {
+ sub: string;
+ email: string;
+ email_verified: boolean;
+}
+
+const client = jwksClient({
+ jwksUri: `https://cognito-idp.us-east-1.amazonaws.com/${process.env.REACT_APP_USER_POOL_ID}/.well-known/jwks.json`
+});
+
+function getKey(header, callback) {
+ client.getSigningKey(header.kid, function (err, key) {
+ const signingKey = key?.getPublicKey();
+ callback(null, signingKey);
+ });
+}
+
+/**
+ * @swagger
+ *
+ * /auth/login:
+ * post:
+ * description: Returns redirect url to initiate login.gov OIDC flow
+ * tags:
+ * - Auth
+ */
+export const login = async (event, context) => {
+ const { url, state, nonce } = await loginGov.login();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ redirectUrl: url,
+ state: state,
+ nonce: nonce
+ })
+ };
+};
+
+export const userTokenBody = (user): UserToken => ({
+ id: user.id,
+ email: user.email,
+ userType: user.userType,
+ dateAcceptedTerms: user.dateAcceptedTerms,
+ acceptedTermsVersion: user.acceptedTermsVersion,
+ lastLoggedIn: user.lastLoggedIn,
+ roles: user.roles
+ .filter((role) => role.approved)
+ .map((role) => ({
+ org: role.organization.id,
+ role: role.role
+ }))
+});
+
+/**
+ * @swagger
+ *
+ * /auth/callback:
+ * post:
+ * description: Processes Cognito JWT auth token (or login.gov OIDC callback, if enabled). Returns a user authorization token that can be used for subsequent requests to the API.
+ * tags:
+ * - Auth
+ */
+export const callback = async (event, context) => {
+ let userInfo: UserInfo;
+ try {
+ if (process.env.USE_COGNITO) {
+ userInfo = await new Promise((resolve, reject) =>
+ jwt.verify(
+ JSON.parse(event.body).token,
+ getKey,
+ (err, data: CognitoUserToken) => (err ? reject(err) : resolve(data))
+ )
+ );
+ } else {
+ userInfo = (await loginGov.callback(JSON.parse(event.body))) as UserInfo;
+ }
+ } catch (e) {
+ return {
+ statusCode: 500,
+ body: ''
+ };
+ }
+
+ if (!userInfo.email_verified) {
+ return {
+ statusCode: 403,
+ body: ''
+ };
+ }
+
+ userInfo.email = userInfo.email.toLowerCase();
+
+ // Look up user by email
+ await connectToDatabase();
+ let user = await User.findOne(
+ {
+ email: userInfo.email
+ },
+ {
+ relations: ['roles', 'roles.organization']
+ }
+ );
+
+ const idKey = `${process.env.USE_COGNITO ? 'cognitoId' : 'loginGovId'}`;
+
+ // If user does not exist, create it
+ if (!user) {
+ user = User.create({
+ email: userInfo.email,
+ [idKey]: userInfo.sub,
+ firstName: '',
+ lastName: '',
+ userType: process.env.IS_OFFLINE
+ ? UserType.GLOBAL_ADMIN
+ : UserType.STANDARD,
+ roles: []
+ });
+ await user.save();
+ }
+
+ if (user[idKey] !== userInfo.sub) {
+ user[idKey] = userInfo.sub;
+ await user.save();
+ }
+
+ user.lastLoggedIn = new Date(Date.now());
+ await user.save();
+
+ // Update user status if accepting invite
+ if (user.invitePending) {
+ user.invitePending = false;
+ await user.save();
+ }
+
+ const token = jwt.sign(userTokenBody(user), process.env.JWT_SECRET!, {
+ expiresIn: '1 days'
+ });
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ token: token,
+ user: user
+ })
+ };
+};
+
+/** Confirms that a user is authorized */
+export const authorize = async (event) => {
+ try {
+ await connectToDatabase();
+ let parsed: Partial;
+ // Test if API key, e.g. a 32 digit hex string
+ if (/^[A-Fa-f0-9]{32}$/.test(event.authorizationToken)) {
+ const apiKey = await ApiKey.findOne(
+ {
+ hashedKey: createHash('sha256')
+ .update(event.authorizationToken)
+ .digest('hex')
+ },
+ { relations: ['user'] }
+ );
+ if (!apiKey) throw 'Invalid API key';
+ parsed = { id: apiKey.user.id };
+ apiKey.lastUsed = new Date();
+ apiKey.save();
+ } else {
+ parsed = jwt.verify(
+ event.authorizationToken,
+ process.env.JWT_SECRET!
+ ) as UserToken;
+ }
+ const user = await User.findOne(
+ {
+ id: parsed.id
+ },
+ {
+ relations: ['roles', 'roles.organization']
+ }
+ );
+ // For running tests, ignore the database results if user doesn't exist or is the dummy user
+ if (
+ process.env.NODE_ENV === 'test' &&
+ (!user || user.id === 'c1afb49c-2216-4e3c-ac52-aa9480956ce9')
+ ) {
+ return parsed;
+ }
+ if (!user) throw Error('User does not exist');
+ return userTokenBody(user);
+ } catch (e) {
+ if (e.name === 'JsonWebTokenError') {
+ // Handle this error without logging or displaying the error message
+ const parsed = { id: 'cisa:crossfeed:anonymous' };
+ return parsed;
+ } else {
+ console.error(e);
+ const parsed = { id: 'cisa:crossfeed:anonymous' };
+ return parsed;
+ }
+ }
+};
+
+/** Check if a user has global write admin permissions */
+export const isGlobalWriteAdmin = (event: APIGatewayProxyEvent) => {
+ return event.requestContext.authorizer &&
+ event.requestContext.authorizer.userType === UserType.GLOBAL_ADMIN
+ ? true
+ : false;
+};
+
+/** Check if a user has global view permissions */
+export const isGlobalViewAdmin = (event: APIGatewayProxyEvent) => {
+ return event.requestContext.authorizer &&
+ (event.requestContext.authorizer.userType === UserType.GLOBAL_VIEW ||
+ event.requestContext.authorizer.userType === UserType.GLOBAL_ADMIN)
+ ? true
+ : false;
+};
+
+/** Check if a user has regionalAdmin view permissions */
+export const isRegionalAdmin = (event: APIGatewayProxyEvent) => {
+ return event.requestContext.authorizer &&
+ (event.requestContext.authorizer.userType === UserType.REGIONAL_ADMIN ||
+ event.requestContext.authorizer.userType === UserType.GLOBAL_ADMIN)
+ ? true
+ : false;
+};
+
+/** Checks if the current user is allowed to access (modify) a user with id userId */
+export const canAccessUser = (event: APIGatewayProxyEvent, userId?: string) => {
+ return userId && (userId === getUserId(event) || isGlobalWriteAdmin(event));
+};
+
+/** Checks if a user is an admin of the given organization */
+export const isOrgAdmin = (
+ event: APIGatewayProxyEvent,
+ organizationId?: string
+) => {
+ if (!organizationId || !event.requestContext.authorizer) return false;
+ for (const role of event.requestContext.authorizer.roles) {
+ if (role.org === organizationId && role.role === 'admin') return true;
+ }
+ return isGlobalWriteAdmin(event);
+};
+
+/** Returns the organizations a user is a member of */
+export const getOrgMemberships = (event: APIGatewayProxyEvent): string[] => {
+ if (!event.requestContext.authorizer) return [];
+ return event.requestContext.authorizer.roles.map((role) => role.org);
+};
+
+/** Returns the organizations belonging to a tag, if the user can access the tag */
+export const getTagOrganizations = async (
+ event: APIGatewayProxyEvent,
+ id: string
+): Promise => {
+ if (!isGlobalViewAdmin(event)) return [];
+ const tag = await OrganizationTag.findOne(
+ { id },
+ { relations: ['organizations'] }
+ );
+ if (tag) return tag?.organizations.map((org) => org.id);
+ return [];
+};
+
+/** Returns a user's id */
+export const getUserId = (event: APIGatewayProxyEvent): string => {
+ return event.requestContext.authorizer!.id;
+};
diff --git a/backend/src/api/cpes.ts b/backend/src/api/cpes.ts
new file mode 100644
index 00000000..dd7a825a
--- /dev/null
+++ b/backend/src/api/cpes.ts
@@ -0,0 +1,38 @@
+import { Cpe, connectToDatabase } from '../models';
+import { wrapHandler, NotFound } from './helpers';
+
+// TODO: Join cves to cpe get method
+// TODO: Create CpeFilters and CpeSearch classes to handle filtering and pagination of additional fields
+
+/**
+ * @swagger
+ * /cpes/{id}:
+ * get:
+ * description: Retrieve a CPE by ID
+ * tags:
+ * - CPEs
+ * parameters:
+ * - in: path
+ * name: id
+ * required: true
+ * schema:
+ * type: string
+ */
+export const get = wrapHandler(async (event) => {
+ const connection = await connectToDatabase();
+ const id = event.pathParameters?.id;
+
+ const cpe = await Cpe.createQueryBuilder('cpe')
+ .leftJoinAndSelect('cpe.cves', 'cve')
+ .where('cpe.id = :id', { id: id })
+ .getOne();
+
+ if (!cpe) {
+ return NotFound;
+ }
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(cpe)
+ };
+});
diff --git a/backend/src/api/cves.ts b/backend/src/api/cves.ts
new file mode 100644
index 00000000..f6bcef6a
--- /dev/null
+++ b/backend/src/api/cves.ts
@@ -0,0 +1,73 @@
+import { Cve, connectToDatabase } from '../models';
+import { NotFound, wrapHandler } from './helpers';
+
+// TODO: Add test for joining cpe table
+// TODO: Create CveFilters and CveSearch classes to handle filtering and pagination of additional fields
+
+/**
+ * @swagger
+ * /cves/{id}:
+ * get:
+ * description: Retrieve a CVE by ID.
+ * tags:
+ * - CVEs
+ * parameters:
+ * - in: path
+ * name: id
+ * required: true
+ * schema:
+ * type: string
+ */
+export const get = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const id = event.pathParameters?.id;
+
+ const cve = await Cve.createQueryBuilder('cve')
+ .leftJoinAndSelect('cve.cpes', 'cpe')
+ .where('cve.id = :id', { id: id })
+ .getOne();
+
+ if (!cve) {
+ return NotFound;
+ }
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(cve)
+ };
+});
+
+//TODO: Remove getByName endpoint once a one-to-one relationship is established between vulnerability.cve and cve.cve_id
+/**
+ * @swagger
+ *
+ * /cves/name/{name}:
+ * get:
+ * description: Retrieve a single CVE record by its name.
+ * tags:
+ * - CVE
+ * parameters:
+ * - name: name
+ * in: path
+ * required: true
+ * schema:
+ * type: string
+ */
+export const getByName = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const name = event.pathParameters?.name;
+
+ const cve = await Cve.createQueryBuilder('cve')
+ .leftJoinAndSelect('cve.cpes', 'cpe')
+ .where('cve.name = :name', { name: name })
+ .getOne();
+
+ if (!cve) {
+ return NotFound;
+ }
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(cve)
+ };
+});
diff --git a/backend/src/api/docker-events.ts b/backend/src/api/docker-events.ts
new file mode 100644
index 00000000..7990c0ac
--- /dev/null
+++ b/backend/src/api/docker-events.ts
@@ -0,0 +1,54 @@
+import {
+ handler as updateScanTaskStatus,
+ EventBridgeEvent
+} from '../tasks/updateScanTaskStatus';
+
+/**
+ * Listens for Docker events and converts start / stop events to corresponding Fargate EventBridge events,
+ * so that they can be handled by the updateScanTaskStatus lambda function.
+ *
+ * This function is only used for runs during local development in order to simulate EventBridge events.
+ */
+export const listenForDockerEvents = async () => {
+ const Docker = require('dockerode');
+ const docker: any = new Docker();
+ const stream = await docker.getEvents();
+ stream.on('data', async (chunk: any) => {
+ const message = JSON.parse(Buffer.from(chunk).toString('utf-8'));
+ if (message.from !== 'crossfeed-worker') {
+ return;
+ }
+ let payload: EventBridgeEvent;
+ if (message.status === 'start') {
+ payload = {
+ detail: {
+ stopCode: '',
+ stoppedReason: '',
+ taskArn: message.Actor.Attributes.name,
+ lastStatus: 'RUNNING',
+ containers: [{}]
+ }
+ };
+ } else if (message.status === 'die') {
+ payload = {
+ detail: {
+ stopCode: 'EssentialContainerExited',
+ stoppedReason: 'Essential container in task exited',
+ taskArn: message.Actor.Attributes.name,
+ lastStatus: 'STOPPED',
+ containers: [
+ {
+ exitCode: Number(message.Actor.Attributes.exitCode)
+ }
+ ]
+ }
+ };
+ } else {
+ return;
+ }
+ await setTimeout(
+ () => updateScanTaskStatus(payload, {} as any, () => null),
+ 1000
+ );
+ });
+};
diff --git a/backend/src/api/domains.ts b/backend/src/api/domains.ts
new file mode 100644
index 00000000..92a49cc7
--- /dev/null
+++ b/backend/src/api/domains.ts
@@ -0,0 +1,283 @@
+import {
+ IsInt,
+ IsPositive,
+ IsString,
+ IsIn,
+ ValidateNested,
+ isUUID,
+ IsOptional,
+ IsObject,
+ IsUUID
+} from 'class-validator';
+import { Type } from 'class-transformer';
+import { Domain, connectToDatabase } from '../models';
+import { validateBody, wrapHandler, NotFound } from './helpers';
+import { SelectQueryBuilder, In } from 'typeorm';
+import {
+ isGlobalViewAdmin,
+ getOrgMemberships,
+ getTagOrganizations
+} from './auth';
+import S3Client from '../tasks/s3-client';
+import * as Papa from 'papaparse';
+
+const PAGE_SIZE = parseInt(process.env.PAGE_SIZE ?? '') || 25;
+
+class DomainFilters {
+ @IsString()
+ @IsOptional()
+ port?: string;
+
+ @IsString()
+ @IsOptional()
+ service?: string;
+
+ @IsString()
+ @IsOptional()
+ reverseName?: string;
+
+ @IsString()
+ @IsOptional()
+ ip?: string;
+
+ @IsUUID()
+ @IsOptional()
+ organization?: string;
+
+ @IsString()
+ @IsOptional()
+ organizationName?: string;
+
+ @IsString()
+ @IsOptional()
+ vulnerability?: string;
+
+ @IsUUID()
+ @IsOptional()
+ tag?: string;
+}
+
+class DomainSearch {
+ @IsInt()
+ @IsPositive()
+ page: number = 1;
+
+ @IsString()
+ @IsIn(['name', 'reverseName', 'ip', 'createdAt', 'updatedAt', 'id'])
+ sort: string = 'name';
+
+ @IsString()
+ @IsIn(['ASC', 'DESC'])
+ order: 'ASC' | 'DESC' = 'DESC';
+
+ @Type(() => DomainFilters)
+ @ValidateNested()
+ @IsObject()
+ @IsOptional()
+ filters?: DomainFilters;
+
+ @IsInt()
+ @IsOptional()
+ // If set to -1, returns all results.
+ pageSize?: number;
+
+ async filterResultQueryset(qs: SelectQueryBuilder, event) {
+ if (this.filters?.reverseName) {
+ qs.andWhere('domain.name ILIKE :name', {
+ name: `%${this.filters?.reverseName}%`
+ });
+ }
+ if (this.filters?.ip) {
+ qs.andWhere('domain.ip LIKE :ip', { ip: `%${this.filters?.ip}%` });
+ }
+ if (this.filters?.port) {
+ qs.andWhere('services.port::text LIKE :port', {
+ port: this.filters?.port
+ });
+ }
+ if (this.filters?.service) {
+ qs.andWhere('services.products->>0 ILIKE :service', {
+ service: `%${this.filters?.service}%`
+ });
+ }
+ if (this.filters?.organization) {
+ qs.andWhere('organization.id = :org', {
+ org: this.filters.organization
+ });
+ }
+ if (this.filters?.organizationName) {
+ qs.andWhere('organization.name ILIKE :name', {
+ name: `%${this.filters?.organizationName}%`
+ });
+ }
+ if (this.filters?.tag) {
+ qs.andWhere('organization.id IN (:...orgs)', {
+ orgs: await getTagOrganizations(event, this.filters.tag)
+ });
+ }
+ if (this.filters?.vulnerability) {
+ qs.andWhere('vulnerabilities.title ILIKE :title', {
+ title: `%${this.filters?.vulnerability}%`
+ });
+ }
+ return qs;
+ }
+
+ async getResults(event) {
+ const pageSize = this.pageSize || PAGE_SIZE;
+ let qs = Domain.createQueryBuilder('domain')
+ .leftJoinAndSelect('domain.services', 'services')
+ .leftJoinAndSelect(
+ 'domain.vulnerabilities',
+ 'vulnerabilities',
+ "state = 'open'"
+ )
+ .leftJoinAndSelect('domain.organization', 'organization')
+ .orderBy(`domain.${this.sort}`, this.order);
+ if (pageSize !== -1) {
+ qs = qs.skip(pageSize * (this.page - 1)).take(pageSize);
+ }
+
+ if (!isGlobalViewAdmin(event)) {
+ qs.andWhere('organization.id IN (:...orgs)', {
+ orgs: getOrgMemberships(event)
+ });
+ }
+
+ await this.filterResultQueryset(qs, event);
+ return qs.getManyAndCount();
+ }
+}
+
+/**
+ * @swagger
+ *
+ * /domain/search:
+ * post:
+ * description: List domains by specifying a filter.
+ * tags:
+ * - Domains
+ */
+export const list = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event) && getOrgMemberships(event).length === 0) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result: [],
+ count: 0
+ })
+ };
+ }
+ await connectToDatabase();
+ const search = await validateBody(DomainSearch, event.body);
+ const [result, count] = await search.getResults(event);
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result,
+ count
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /domain/export:
+ * post:
+ * description: Export domains to a CSV file by specifying a filter.
+ * tags:
+ * - Domains
+ */
+export const export_ = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event) && getOrgMemberships(event).length === 0) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result: [],
+ count: 0
+ })
+ };
+ }
+ await connectToDatabase();
+ const search = await validateBody(DomainSearch, event.body);
+ let [result] = await search.getResults(event);
+ const client = new S3Client();
+ result = result.map((res: any) => {
+ res.organization = res.organization.name;
+ res.ports = res.services.map((service) => service.port).join(', ');
+ const products: { [key: string]: string } = {};
+ for (const service of res.services) {
+ for (const product of service.products) {
+ if (product.name)
+ products[product.name.toLowerCase()] =
+ product.name + (product.version ? ` ${product.version}` : '');
+ }
+ }
+ res.products = Object.values(products).join(', ');
+ return res;
+ });
+ const url = await client.saveCSV(
+ Papa.unparse({
+ fields: [
+ 'name',
+ 'ip',
+ 'id',
+ 'ports',
+ 'products',
+ 'createdAt',
+ 'updatedAt',
+ 'organization'
+ ],
+ data: result
+ }),
+ 'domains'
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ url
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /domain/{id}:
+ * get:
+ * description: Get information about a particular domain.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Domain id
+ * tags:
+ * - Domains
+ */
+export const get = wrapHandler(async (event) => {
+ let where = {};
+ if (isGlobalViewAdmin(event)) {
+ where = {};
+ } else {
+ where = { organization: In(getOrgMemberships(event)) };
+ }
+ await connectToDatabase();
+ const id = event.pathParameters?.domainId;
+ if (!isUUID(id)) {
+ return NotFound;
+ }
+
+ const result = await Domain.findOne(
+ { id, ...where },
+ {
+ relations: ['services', 'organization', 'vulnerabilities']
+ }
+ );
+
+ return {
+ statusCode: result ? 200 : 404,
+ body: result ? JSON.stringify(result) : ''
+ };
+});
diff --git a/backend/src/api/functions.yml b/backend/src/api/functions.yml
new file mode 100644
index 00000000..32a73fed
--- /dev/null
+++ b/backend/src/api/functions.yml
@@ -0,0 +1,12 @@
+api:
+ handler: src/api.handler
+ events:
+ - http:
+ path: / # this matches the base path
+ method: ANY
+ cors: true
+ - http:
+ path: /{any+} # this matches any path, the token 'any' doesn't mean anything special
+ method: ANY
+ cors: true
+ # provisionedConcurrency: 1
diff --git a/backend/src/api/healthcheck.ts b/backend/src/api/healthcheck.ts
new file mode 100644
index 00000000..59f2c176
--- /dev/null
+++ b/backend/src/api/healthcheck.ts
@@ -0,0 +1,8 @@
+import { wrapHandler } from './helpers';
+
+export const handler = wrapHandler(async () => {
+ return {
+ statusCode: 200,
+ body: ''
+ };
+});
diff --git a/backend/src/api/helpers.ts b/backend/src/api/helpers.ts
new file mode 100644
index 00000000..acc6627f
--- /dev/null
+++ b/backend/src/api/helpers.ts
@@ -0,0 +1,244 @@
+import {
+ APIGatewayProxyHandler,
+ APIGatewayProxyEvent,
+ APIGatewayProxyResult,
+ Handler
+} from 'aws-lambda';
+import { ValidationOptions, validateOrReject } from 'class-validator';
+import { ClassType } from 'class-transformer/ClassTransformer';
+import { plainToClass } from 'class-transformer';
+import S3Client from '../tasks/s3-client';
+import { SES } from 'aws-sdk';
+import * as nodemailer from 'nodemailer';
+import * as handlebars from 'handlebars';
+
+export const validateBody = async (
+ obj: ClassType,
+ body: string | null,
+ validateOptions?: ValidationOptions
+): Promise => {
+ const raw: any = plainToClass(obj, JSON.parse(body ?? '{}'));
+ await validateOrReject(raw, {
+ ...validateOptions,
+ whitelist: true,
+ forbidUnknownValues: true
+ });
+ return raw;
+};
+
+export const makeResponse = (
+ event: APIGatewayProxyEvent,
+ opts: Partial
+): APIGatewayProxyResult => {
+ const origin = event.headers?.origin || '*';
+ const { body, statusCode = 200, ...rest } = opts;
+ return {
+ statusCode,
+ headers: {
+ 'Access-Control-Allow-Origin': origin
+ },
+ body: body ?? '',
+ ...rest
+ };
+};
+
+type WrapHandler = (
+ handler: Handler<
+ APIGatewayProxyEvent & {
+ query?: any;
+ },
+ APIGatewayProxyResult
+ >
+) => APIGatewayProxyHandler;
+export const wrapHandler: WrapHandler =
+ (handler) => async (event, context, callback) => {
+ try {
+ const result = (await handler(
+ event,
+ context,
+ callback
+ )) as APIGatewayProxyResult;
+ const resp = makeResponse(event, result);
+ if (typeof jest === 'undefined') {
+ console.log(`=> ${resp.statusCode} ${event.path} `);
+ }
+ return resp;
+ } catch (e) {
+ console.error(e);
+ return makeResponse(event, {
+ statusCode: Array.isArray(e) ? 400 : 500
+ });
+ }
+ };
+
+export const NotFound: APIGatewayProxyResult = {
+ statusCode: 404,
+ body: 'Item not found. View logs for details.'
+};
+
+export const Unauthorized: APIGatewayProxyResult = {
+ statusCode: 403,
+ body: 'Unauthorized access. View logs for details.'
+};
+
+export const sendEmail = async (
+ recipient: string,
+ subject: string,
+ body: string
+) => {
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+
+ await transporter.sendMail({
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recipient,
+ subject: subject,
+ text: body,
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ });
+};
+
+export const sendRegistrationTextEmail = async (recipient: string) => {
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+
+ const mailOptions = {
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recipient,
+ subject: 'Crossfeed Registration Pending',
+ text: 'Your registration is pending approval.',
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ };
+
+ await transporter.sendMail(mailOptions, (error, data) => {
+ console.log(data);
+ if (error) {
+ console.log(error);
+ }
+ });
+};
+
+export const sendRegistrationHtmlEmail = async (recipient: string) => {
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+
+ const mailOptions = {
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recipient,
+ subject: 'Crossfeed Registration Pending',
+ html: 'Your registration is pending approval.
',
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ };
+
+ await transporter.sendMail(mailOptions, (error, data) => {
+ console.log(data);
+ if (error) {
+ console.log(error);
+ }
+ });
+};
+
+export const sendUserRegistrationEmail = async (
+ recepient: string,
+ subject: string,
+ firstName: string,
+ lastName: string,
+ templateFileName: string
+) => {
+ try {
+ const client = new S3Client();
+ const htmlTemplate = await client.getEmailAsset(templateFileName);
+ const template = handlebars.compile(htmlTemplate);
+ const data = {
+ firstName: firstName,
+ lastName: lastName
+ };
+
+ const htmlToSend = template(data);
+ const mailOptions = {
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recepient,
+ subject: subject,
+ html: htmlToSend,
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ };
+
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+ await transporter.sendMail(mailOptions);
+ } catch (errorMessage) {
+ console.log('Email error: ', errorMessage);
+ }
+};
+
+export const sendRegistrationDeniedEmail = async (
+ recepient: string,
+ subject: string,
+ firstName: string,
+ lastName: string,
+ templateFileName: string
+) => {
+ try {
+ const client = new S3Client();
+ const htmlTemplate = await client.getEmailAsset(templateFileName);
+ const template = handlebars.compile(htmlTemplate);
+ const data = {
+ firstName: firstName,
+ lastName: lastName
+ };
+
+ const htmlToSend = template(data);
+ const mailOptions = {
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recepient,
+ subject: subject,
+ html: htmlToSend,
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ };
+
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+ await transporter.sendMail(mailOptions);
+ } catch (errorMessage) {
+ console.log('Email error: ', errorMessage);
+ }
+};
+
+export const sendRegistrationApprovedEmail = async (
+ recepient: string,
+ subject: string,
+ firstName: string,
+ lastName: string,
+ templateFileName: string
+) => {
+ try {
+ const client = new S3Client();
+ const htmlTemplate = await client.getEmailAsset(templateFileName);
+ const template = handlebars.compile(htmlTemplate);
+ const data = {
+ firstName: firstName,
+ lastName: lastName
+ };
+
+ const htmlToSend = template(data);
+ const mailOptions = {
+ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!,
+ to: recepient,
+ subject: subject,
+ html: htmlToSend,
+ replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO!
+ };
+
+ const transporter = nodemailer.createTransport({
+ SES: new SES({ region: 'us-east-1' })
+ });
+ await transporter.sendMail(mailOptions);
+ } catch (errorMessage) {
+ console.log('Email error: ', errorMessage);
+ }
+};
diff --git a/backend/src/api/login-gov.ts b/backend/src/api/login-gov.ts
new file mode 100644
index 00000000..67038570
--- /dev/null
+++ b/backend/src/api/login-gov.ts
@@ -0,0 +1,71 @@
+import * as crypto from 'crypto';
+import { Issuer, ClientMetadata } from 'openid-client';
+
+const discoveryUrl =
+ process.env.LOGIN_GOV_BASE_URL + '/.well-known/openid-configuration';
+
+let jwkSet;
+
+try {
+ jwkSet = {
+ keys: [JSON.parse(process.env.LOGIN_GOV_JWT_KEY ?? '{}')]
+ };
+} catch (e) {
+ jwkSet = {
+ keys: [{}]
+ };
+}
+
+const clientOptions: ClientMetadata = {
+ client_id: process.env.LOGIN_GOV_ISSUER!,
+ token_endpoint_auth_method: 'private_key_jwt',
+ id_token_signed_response_alg: 'RS256',
+ key: 'client_id',
+ redirect_uris: [process.env.LOGIN_GOV_REDIRECT_URI!],
+ token_endpoint: process.env.LOGIN_GOV_BASE_URL + '/api/openid_connect/token'
+};
+
+const randomString = function (length) {
+ return crypto.randomBytes(length).toString('hex');
+};
+
+export const login = async function (): Promise<{
+ url: string;
+ state: string;
+ nonce: string;
+}> {
+ const issuer = await Issuer.discover(discoveryUrl);
+ const client = new issuer.Client(clientOptions, jwkSet);
+ const nonce = randomString(32);
+ const state = randomString(32);
+ const url = client.authorizationUrl({
+ response_type: 'code',
+ acr_values: `http://idmanagement.gov/ns/assurance/ial/1`,
+ scope: 'openid email',
+ redirect_uri: process.env.LOGIN_GOV_REDIRECT_URI,
+ nonce: nonce,
+ state: state,
+ prompt: 'select_account'
+ });
+ return { url, state, nonce };
+};
+
+export const callback = async function (body) {
+ const issuer = await Issuer.discover(discoveryUrl);
+ const client = new issuer.Client(clientOptions, jwkSet);
+ const tokenSet = await client.callback(
+ process.env.LOGIN_GOV_REDIRECT_URI,
+ {
+ code: body.code,
+ state: body.state
+ },
+ {
+ state: body.origState,
+ nonce: body.nonce
+ }
+ );
+ const userInfo = await client.userinfo(tokenSet);
+ return userInfo;
+};
+
+export default { login, callback };
diff --git a/backend/src/api/organizations.ts b/backend/src/api/organizations.ts
new file mode 100644
index 00000000..371a8129
--- /dev/null
+++ b/backend/src/api/organizations.ts
@@ -0,0 +1,1110 @@
+import {
+ IsString,
+ isUUID,
+ IsArray,
+ IsBoolean,
+ IsUUID,
+ IsOptional,
+ IsNotEmpty,
+ IsNumber,
+ IsEnum
+} from 'class-validator';
+import {
+ Organization,
+ connectToDatabase,
+ Role,
+ ScanTask,
+ Scan,
+ User,
+ OrganizationTag,
+ PendingDomain
+} from '../models';
+import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers';
+import {
+ isOrgAdmin,
+ isGlobalWriteAdmin,
+ isRegionalAdmin,
+ getOrgMemberships,
+ isGlobalViewAdmin
+} from './auth';
+import { In } from 'typeorm';
+import { plainToClass } from 'class-transformer';
+import { randomBytes } from 'crypto';
+import { promises } from 'dns';
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}:
+ * delete:
+ * description: Delete a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const del = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+
+ await connectToDatabase();
+ const result = await Organization.delete(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+// Used exclusively for deleting pending domains
+class PendingDomainBody {
+ @IsArray()
+ @IsOptional()
+ pendingDomains: PendingDomain[];
+}
+
+class NewOrganizationNonGlobalAdmins {
+ @IsString()
+ name: string;
+
+ @IsString()
+ acronym: string;
+
+ @IsBoolean()
+ isPassive: boolean;
+}
+
+class NewOrganization extends NewOrganizationNonGlobalAdmins {
+ @IsArray()
+ rootDomains: string[];
+
+ @IsArray()
+ ipBlocks: string[];
+
+ @IsArray()
+ tags: OrganizationTag[];
+
+ @IsUUID()
+ @IsOptional()
+ parent?: string;
+}
+
+class NewOrUpdatedOrganization extends NewOrganizationNonGlobalAdmins {
+ @IsArray()
+ rootDomains: string[];
+
+ @IsArray()
+ ipBlocks: string[];
+
+ @IsArray()
+ tags: OrganizationTag[];
+
+ @IsUUID()
+ @IsOptional()
+ parent?: string;
+
+ @IsString()
+ @IsOptional()
+ state?: string;
+
+ @IsString()
+ @IsOptional()
+ regionId?: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ country?: string;
+
+ @IsNumber()
+ @IsOptional()
+ stateFips?: number;
+
+ @IsString()
+ @IsOptional()
+ stateName?: string;
+
+ @IsString()
+ @IsOptional()
+ county?: string;
+
+ @IsNumber()
+ @IsOptional()
+ countyFips?: number;
+}
+
+// Type Validation Options
+class UpdateOrganizationMetaV2 {
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ name: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ acronym: string;
+
+ @IsBoolean()
+ @IsOptional()
+ isPassive: boolean;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ state: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ regionId: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ country: string;
+
+ @IsNumber()
+ @IsOptional()
+ stateFips: number;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ stateName: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ county: string;
+
+ @IsNumber()
+ @IsOptional()
+ countyFips: number;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ type: string;
+}
+
+class NewDomain {
+ @IsString()
+ @IsNotEmpty()
+ domain: string;
+}
+
+class NewOrganizationRoleDB {
+ @IsEnum(User)
+ user: User;
+
+ @IsEnum(Organization)
+ organization: Organization;
+
+ @IsBoolean()
+ approved: boolean;
+
+ @IsString()
+ role: string;
+
+ @IsEnum(User)
+ approvedBy: User;
+
+ @IsEnum(User)
+ createdBy: User;
+}
+
+class NewOrganizationRoleBody {
+ @IsString()
+ userId: string;
+
+ @IsString()
+ @IsOptional()
+ role: any;
+}
+
+const findOrCreateTags = async (
+ tags: OrganizationTag[]
+): Promise => {
+ const finalTags: OrganizationTag[] = [];
+ for (const tag of tags) {
+ if (!tag.id) {
+ // If no id is supplied, first check to see if a tag with this name exists
+ const found = await OrganizationTag.findOne({
+ where: { name: tag.name }
+ });
+ if (found) {
+ finalTags.push(found);
+ } else {
+ // If not, create it
+ const created = OrganizationTag.create({ name: tag.name });
+ await created.save();
+ finalTags.push(created);
+ }
+ } else {
+ finalTags.push(tag);
+ }
+ }
+ return finalTags;
+};
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}:
+ * put:
+ * description: Update a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const update = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, id)) return Unauthorized;
+ const body = await validateBody<
+ NewOrganization | NewOrganizationNonGlobalAdmins
+ >(
+ isGlobalWriteAdmin(event)
+ ? NewOrganization
+ : NewOrganizationNonGlobalAdmins,
+ event.body
+ );
+ const pendingBody = await validateBody(
+ PendingDomainBody,
+ event.body
+ );
+
+ await connectToDatabase();
+ const org = await Organization.findOne(
+ {
+ id
+ },
+ {
+ relations: ['userRoles', 'granularScans']
+ }
+ );
+ if (org) {
+ if ('tags' in body) {
+ body.tags = await findOrCreateTags(body.tags);
+ }
+
+ let newPendingDomains: PendingDomain[] = [];
+ if (pendingBody.pendingDomains) {
+ for (const domain of org.pendingDomains) {
+ if (pendingBody.pendingDomains.find((d) => d.name === domain.name)) {
+ // Don't delete
+ newPendingDomains.push(domain);
+ }
+ }
+ } else {
+ newPendingDomains = org.pendingDomains;
+ }
+
+ Organization.merge(org, {
+ ...body,
+ pendingDomains: newPendingDomains,
+ parent: undefined
+ });
+ await Organization.save(org);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(org)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations:
+ * post:
+ * description: Create a new organization.
+ * tags:
+ * - Organizations
+ */
+export const create = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ const body = await validateBody(NewOrUpdatedOrganization, event.body);
+ await connectToDatabase();
+
+ if ('tags' in body) {
+ body.tags = await findOrCreateTags(body.tags);
+ }
+ const organization = Organization.create({
+ ...body,
+ createdBy: { id: event.requestContext.authorizer!.id },
+ parent: { id: body.parent },
+ regionId: REGION_STATE_MAP[body.stateName!] ?? null
+ });
+ const res = await organization.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations:
+ * get:
+ * description: List organizations that the user is a member of or has access to.
+ * tags:
+ * - Organizations
+ */
+export const list = wrapHandler(async (event) => {
+ console.log('list function called with event: ', event);
+
+ if (!isGlobalViewAdmin(event) && getOrgMemberships(event).length === 0) {
+ return {
+ //TODO: Should we return a 403?
+ statusCode: 200,
+ body: JSON.stringify([])
+ };
+ }
+ await connectToDatabase();
+ console.log('Database connected');
+
+ let where: any = { parent: null };
+ if (!isGlobalViewAdmin(event)) {
+ where = { id: In(getOrgMemberships(event)), parent: null };
+ }
+ const result = await Organization.find({
+ where,
+ relations: ['userRoles', 'tags'],
+ order: { name: 'ASC' }
+ });
+
+ console.log('Organization.find result: ', result);
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/tags:
+ * get:
+ * description: Fetchs all possible organization tags (must be global admin)
+ * tags:
+ * - Organizations
+ */
+export const getTags = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify([])
+ };
+ }
+ await connectToDatabase();
+ const result = await OrganizationTag.find({
+ select: ['id', 'name']
+ });
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}:
+ * get:
+ * description: Get information about a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const get = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!isOrgAdmin(event, id)) return Unauthorized;
+
+ await connectToDatabase();
+ const result = await Organization.findOne(id, {
+ relations: [
+ 'userRoles',
+ 'userRoles.user',
+ 'granularScans',
+ 'tags',
+ 'parent',
+ 'children'
+ ]
+ });
+
+ if (result) {
+ result.scanTasks = await ScanTask.find({
+ where: {
+ organization: { id }
+ },
+ take: 10,
+ order: {
+ createdAt: 'DESC'
+ },
+ relations: ['scan']
+ });
+ }
+
+ return {
+ statusCode: result ? 200 : 404,
+ body: result ? JSON.stringify(result) : ''
+ };
+});
+
+class UpdateBody {
+ @IsBoolean()
+ enabled: boolean;
+}
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/granularScans/{scanId}/update:
+ * post:
+ * description: Enable or disable a scan for a particular organization; this endpoint can be called by organization admins and only works for user-modifiable scans.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: scanId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const updateScan = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+
+ await connectToDatabase();
+ const scanId = event.pathParameters?.scanId;
+ if (!scanId || !isUUID(scanId)) {
+ return NotFound;
+ }
+ const scan = await Scan.findOne({
+ id: scanId,
+ isGranular: true,
+ isUserModifiable: true
+ });
+ const organization = await Organization.findOne(
+ {
+ id: organizationId
+ },
+ {
+ relations: ['granularScans']
+ }
+ );
+ if (!scan || !organization) {
+ return NotFound;
+ }
+ const body = await validateBody(UpdateBody, event.body);
+ if (body.enabled) {
+ organization?.granularScans.push();
+ }
+ const existing = organization?.granularScans.find((s) => s.id === scanId);
+ if (body.enabled && !existing) {
+ organization.granularScans.push(plainToClass(Scan, { id: scanId }));
+ } else if (!body.enabled && existing) {
+ organization.granularScans = organization.granularScans.filter(
+ (s) => s.id !== scanId
+ );
+ }
+ const res = await Organization.save(organization);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/initiateDomainVerification:
+ * post:
+ * description: Generates a token to verify a new domain via a DNS record
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const initiateDomainVerification = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+ const body = await validateBody(NewDomain, event.body);
+
+ await connectToDatabase();
+ const token = 'crossfeed-verification=' + randomBytes(16).toString('hex');
+
+ const organization = await Organization.findOne({
+ id: organizationId
+ });
+ if (!organization) {
+ return NotFound;
+ }
+ if (organization.rootDomains.find((domain) => domain === body.domain)) {
+ return {
+ statusCode: 422,
+ body: 'Domain already exists.'
+ };
+ }
+ if (
+ !organization.pendingDomains.find(
+ (domain) => domain['name'] === body.domain
+ )
+ ) {
+ const domain: PendingDomain = {
+ name: body.domain,
+ token: token
+ };
+ organization.pendingDomains.push(domain);
+
+ const res = await Organization.save(organization);
+ }
+ return {
+ statusCode: 200,
+ body: JSON.stringify(organization.pendingDomains)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/checkDomainVerification:
+ * post:
+ * description: Checks whether the DNS record has been created for the supplied domain
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const checkDomainVerification = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+ const body = await validateBody(NewDomain, event.body);
+
+ await connectToDatabase();
+
+ const organization = await Organization.findOne({
+ id: organizationId
+ });
+ if (!organization) {
+ return NotFound;
+ }
+ const pendingDomain = organization.pendingDomains.find(
+ (domain) => domain['name'] === body.domain
+ );
+ if (!pendingDomain) {
+ return {
+ statusCode: 422,
+ body: 'Please initiate the domain verification first.'
+ };
+ }
+ try {
+ const res = await promises.resolveTxt(pendingDomain.name);
+ for (const record of res) {
+ for (const val of record) {
+ if (val === pendingDomain.token) {
+ // Success!
+ organization.rootDomains.push(pendingDomain.name);
+ organization.pendingDomains = organization.pendingDomains.filter(
+ (domain) => domain.name !== pendingDomain.name
+ );
+ organization.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ success: true, organization })
+ };
+ }
+ }
+ }
+ } catch (e) {}
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ success: false })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/roles/{roleId}/approve:
+ * post:
+ * description: Approve a role within an organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: roleId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const approveRole = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+ if (!isOrgAdmin(event, organizationId)) return Unauthorized;
+
+ const id = event.pathParameters?.roleId;
+ if (!isUUID(id)) {
+ return NotFound;
+ }
+
+ await connectToDatabase();
+ const role = await Role.findOne({
+ organization: { id: organizationId },
+ id
+ });
+ if (role) {
+ role.approved = true;
+ role.approvedBy = plainToClass(User, {
+ id: event.requestContext.authorizer!.id
+ });
+ const result = await role.save();
+ return {
+ statusCode: result ? 200 : 404,
+ body: JSON.stringify({})
+ };
+ }
+
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/roles/{roleId}/remove:
+ * post:
+ * description: Remove a role within an organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: roleId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const removeRole = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+ if (!isOrgAdmin(event, organizationId)) return Unauthorized;
+
+ const id = event.pathParameters?.roleId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ await connectToDatabase();
+ const result = await Role.delete({
+ organization: { id: organizationId },
+ id
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/regionId/{regionId}:
+ * get:
+ * description: List organizations with specific regionId.
+ * parameters:
+ * - in: path
+ * name: regionId
+ * description: Organization regionId
+ * tags:
+ * - Organizations
+ */
+export const getByRegionId = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const regionId = event.pathParameters?.regionId;
+ await connectToDatabase();
+ const result = await Organization.find({
+ where: { regionId: regionId }
+ });
+
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/state/{state}:
+ * get:
+ * description: List organizations with specific state.
+ * parameters:
+ * - in: path
+ * name: state
+ * description: Organization state
+ * tags:
+ * - Organizations
+ */
+export const getByState = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const state = event.pathParameters?.state;
+ await connectToDatabase();
+ const result = await Organization.find({
+ where: { state: state }
+ });
+
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+//V2 Endpoints
+
+/**
+ * @swagger
+ *
+ * /v2/organizations:
+ * get:
+ * description: List all organizations with query parameters.
+ * tags:
+ * - Users
+ * parameters:
+ * - in: query
+ * name: state
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ * - in: query
+ * name: regionId
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ *
+ */
+export const getAllV2 = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const filterParams = {};
+
+ if (event.query && event.query.state) {
+ filterParams['state'] = event.query.state;
+ }
+ if (event.query && event.query.regionId) {
+ filterParams['regionId'] = event.query.regionId;
+ }
+
+ await connectToDatabase();
+ if (Object.entries(filterParams).length === 0) {
+ const result = await Organization.find({});
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ } else {
+ const result = await Organization.find({
+ where: filterParams
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+});
+
+/**
+ * @swagger
+ *
+ * /v2/organizations/{id}:
+ * put:
+ * description: Update a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+
+export const updateV2 = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ // Get the organization id from the path
+ const id = event.pathParameters?.organizationId;
+
+ // confirm that the id is a valid UUID
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ // TODO: check permissions
+ // if (!isOrgAdmin(event, id)) return Unauthorized;
+
+ // Validate the body
+ const validatedBody = await validateBody(
+ UpdateOrganizationMetaV2,
+ event.body
+ );
+
+ // Connect to the database
+ await connectToDatabase();
+
+ // Update the organization
+ const updateResp = await Organization.update(id, validatedBody);
+
+ // Handle response
+ if (updateResp) {
+ const updatedOrg = await Organization.findOne(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(updatedOrg)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /v2/organizations/{orgId}/users:
+ * post:
+ * description: Add a user to a particular organization.
+ * parameters:
+ * - in: path
+ * name: orgId
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+
+export const addUserV2 = wrapHandler(async (event) => {
+ // Permissions
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ // TODO: check permissions
+ // if (!isOrgAdmin(event, id)) return Unauthorized;
+
+ // Validate the body
+ const body = await validateBody(NewOrganizationRoleBody, event.body);
+
+ // Connect to the database
+ await connectToDatabase();
+
+ // Get the organization id from the path
+ const orgId = event.pathParameters?.organizationId;
+ // confirm that the orgId is a valid UUID
+ if (!orgId || !isUUID(orgId)) {
+ return NotFound;
+ }
+ // Get Organization from the database
+ const org = await Organization.findOne(orgId);
+
+ // Get the user id from the body
+ const userId = body.userId;
+ // confirm that the userId is a valid UUID
+ if (!userId || !isUUID(userId)) {
+ return NotFound;
+ }
+ // Get User from the database
+ const user = await User.findOneOrFail(userId);
+
+ const newRoleData = {
+ user: user,
+ organization: org,
+ approved: true,
+ role: body.role,
+ approvedBy: event.requestContext.authorizer!.id,
+ createdBy: event.requestContext.authorizer!.id
+ };
+
+ // Add a role to make association to user/organization
+ const newRole = Role.create(newRoleData);
+ await Role.save(newRole);
+ // const roleId = newRole.id;
+
+ // Handle response
+ if (newRole) {
+ // const roleResp = await Organization.findOne(roleId);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(newRole)
+ };
+ }
+ return NotFound;
+});
+
+export const REGION_STATE_MAP = {
+ Alabama: '4',
+ Alaska: '10',
+ 'American Samoa': '9',
+ Arizona: '9',
+ Arkansas: '6',
+ California: '9',
+ Colorado: '8',
+ 'Commonwealth Northern Mariana Islands': '9',
+ Connecticut: '1',
+ Delaware: '3',
+ 'District of Columbia': '3',
+ 'Federal States of Micronesia': '9',
+ Florida: '4',
+ Georgia: '4',
+ Guam: '9',
+ Hawaii: '9',
+ Idaho: '10',
+ Illinois: '5',
+ Indiana: '5',
+ Iowa: '7',
+ Kansas: '7',
+ Kentucky: '4',
+ Louisiana: '6',
+ Maine: '1',
+ Maryland: '3',
+ Massachusetts: '1',
+ Michigan: '5',
+ Minnesota: '5',
+ Mississippi: '4',
+ Missouri: '7',
+ Montana: '8',
+ Nebraska: '7',
+ Nevada: '9',
+ 'New Hampshire': '1',
+ 'New Jersey': '2',
+ 'New Mexico': '6',
+ 'New York': '2',
+ 'North Carolina': '4',
+ 'North Dakota': '8',
+ Ohio: '5',
+ Oklahoma: '6',
+ Oregon: '10',
+ Pennsylvania: '3',
+ 'Puerto Rico': '2',
+ 'Republic of Marshall Islands': '9',
+ 'Rhode Island': '1',
+ 'South Carolina': '4',
+ 'South Dakota': '8',
+ Tennessee: '4',
+ Texas: '6',
+ Utah: '8',
+ Vermont: '1',
+ Virginia: '3',
+ 'Virgin Islands': '2',
+ Washington: '10',
+ 'West Virginia': '3',
+ Wisconsin: '5',
+ Wyoming: '8'
+};
+
+/**
+ * @swagger
+ *
+ * /organizations_upsert:
+ * post:
+ * description: Create a new organization or update it if it already exists.
+ * tags:
+ * - Organizations
+ */
+export const upsert_org = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ const body = await validateBody(NewOrUpdatedOrganization, event.body);
+ await connectToDatabase();
+
+ if ('tags' in body) {
+ body.tags = await findOrCreateTags(body.tags);
+ }
+
+ if ('stateName' in body) {
+ body.regionId = REGION_STATE_MAP[body.stateName!] ?? null;
+ }
+
+ const organization_id = await Organization.createQueryBuilder()
+ .insert()
+ .into(Organization)
+ .values([
+ {
+ ...body,
+ createdBy: { id: event.requestContext.authorizer!.id },
+ parent: { id: body.parent }
+ }
+ ])
+ .orUpdate({
+ conflict_target: ['acronym'],
+ overwrite: [
+ 'name',
+ 'isPassive',
+ 'country',
+ 'state',
+ 'regionId',
+ 'stateFips',
+ 'stateName',
+ 'county',
+ 'countyFips'
+ ]
+ })
+ .execute();
+
+ const current_org = await Organization.findOneOrFail(
+ organization_id.identifiers[0]
+ );
+
+ current_org.tags = body.tags;
+
+ current_org.save();
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(current_org)
+ };
+});
diff --git a/backend/src/api/reports.ts b/backend/src/api/reports.ts
new file mode 100644
index 00000000..0c035b25
--- /dev/null
+++ b/backend/src/api/reports.ts
@@ -0,0 +1,62 @@
+import { wrapHandler } from './helpers';
+import S3Client from '../tasks/s3-client';
+import { getOrgMemberships } from './auth';
+
+/**
+ * @swagger
+ *
+ * /reports/export:
+ * post:
+ * description: Export CyHy report by specifying the report name returned in /reports/list and the organization id. User must be a member of the organization.
+ * tags:
+ * - Reports
+ */
+export const export_report = wrapHandler(async (event) => {
+ const reportName = JSON.parse(event.body!).reportName;
+ const orgId = JSON.parse(event.body!).currentOrganization.id;
+ if (getOrgMemberships(event).includes(orgId)) {
+ const client = new S3Client();
+ const url = await client.exportReport(reportName, orgId);
+ if (url == 'File does not exist') {
+ return {
+ statusCode: 404,
+ body: 'File does not exist'
+ };
+ }
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ url })
+ };
+ } else {
+ return {
+ statusCode: 404,
+ body: 'User is not a member of this organization.'
+ };
+ }
+});
+
+/**
+ * @swagger
+ *
+ * /reports/list:
+ * post:
+ * description: Get a list of available P&E reports by specifying organization id. User must be a member of the organization.
+ * tags:
+ * - Reports
+ */
+export const list_reports = wrapHandler(async (event) => {
+ const orgId = JSON.parse(event.body!).currentOrganization.id;
+ if (getOrgMemberships(event).includes(orgId)) {
+ const client = new S3Client();
+ const data = await client.listReports(orgId);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(data)
+ };
+ } else {
+ return {
+ statusCode: 404,
+ body: 'User is not a member of this organization.'
+ };
+ }
+});
diff --git a/backend/src/api/roles.ts b/backend/src/api/roles.ts
new file mode 100644
index 00000000..46e71d8a
--- /dev/null
+++ b/backend/src/api/roles.ts
@@ -0,0 +1,834 @@
+import {
+ IsString,
+ isUUID,
+ IsArray,
+ IsBoolean,
+ IsUUID,
+ IsOptional,
+ IsNotEmpty,
+ IsNumber
+} from 'class-validator';
+import {
+ Organization,
+ connectToDatabase,
+ Role,
+ ScanTask,
+ Scan,
+ User,
+ OrganizationTag,
+ PendingDomain
+} from '../models';
+import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers';
+import {
+ isOrgAdmin,
+ isGlobalWriteAdmin,
+ isRegionalAdmin,
+ getOrgMemberships,
+ isGlobalViewAdmin
+} from './auth';
+import { In } from 'typeorm';
+import { plainToClass } from 'class-transformer';
+import { randomBytes } from 'crypto';
+import { promises } from 'dns';
+
+/**
+ * @swagger
+ *
+ * /roless/{id}:
+ * delete:
+ * description: Delete a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const del = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+
+ await connectToDatabase();
+ const result = await Organization.delete(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+// Used exclusively for deleting pending domains
+class PendingDomainBody {
+ @IsArray()
+ @IsOptional()
+ pendingDomains: PendingDomain[];
+}
+
+class NewOrganizationNonGlobalAdmins {
+ @IsString()
+ name: string;
+
+ @IsBoolean()
+ isPassive: boolean;
+}
+
+class NewOrganization extends NewOrganizationNonGlobalAdmins {
+ @IsArray()
+ rootDomains: string[];
+
+ @IsArray()
+ ipBlocks: string[];
+
+ @IsArray()
+ tags: OrganizationTag[];
+
+ @IsUUID()
+ @IsOptional()
+ parent?: string;
+}
+
+// Type Validation Options
+class UpdateOrganizationMetaV2 {
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ name: string;
+
+ @IsBoolean()
+ @IsOptional()
+ isPassive: boolean;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ state: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ regionId: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ country: string;
+
+ @IsNumber()
+ @IsOptional()
+ stateFips: number;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ stateName: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ county: string;
+
+ @IsNumber()
+ @IsOptional()
+ countyFips: number;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ acronym: string;
+
+ @IsString()
+ @IsNotEmpty()
+ @IsOptional()
+ type: string;
+}
+
+class NewDomain {
+ @IsString()
+ @IsNotEmpty()
+ domain: string;
+}
+
+const findOrCreateTags = async (
+ tags: OrganizationTag[]
+): Promise => {
+ const finalTags: OrganizationTag[] = [];
+ for (const tag of tags) {
+ if (!tag.id) {
+ // If no id is supplied, first check to see if a tag with this name exists
+ const found = await OrganizationTag.findOne({
+ where: { name: tag.name }
+ });
+ if (found) {
+ finalTags.push(found);
+ } else {
+ // If not, create it
+ const created = OrganizationTag.create({ name: tag.name });
+ await created.save();
+ finalTags.push(created);
+ }
+ } else {
+ finalTags.push(tag);
+ }
+ }
+ return finalTags;
+};
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}:
+ * put:
+ * description: Update a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const update = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, id)) return Unauthorized;
+ const body = await validateBody<
+ NewOrganization | NewOrganizationNonGlobalAdmins
+ >(
+ isGlobalWriteAdmin(event)
+ ? NewOrganization
+ : NewOrganizationNonGlobalAdmins,
+ event.body
+ );
+ const pendingBody = await validateBody(
+ PendingDomainBody,
+ event.body
+ );
+
+ await connectToDatabase();
+ const org = await Organization.findOne(
+ {
+ id
+ },
+ {
+ relations: ['userRoles', 'granularScans']
+ }
+ );
+ if (org) {
+ if ('tags' in body) {
+ body.tags = await findOrCreateTags(body.tags);
+ }
+
+ let newPendingDomains: PendingDomain[] = [];
+ if (pendingBody.pendingDomains) {
+ for (const domain of org.pendingDomains) {
+ if (pendingBody.pendingDomains.find((d) => d.name === domain.name)) {
+ // Don't delete
+ newPendingDomains.push(domain);
+ }
+ }
+ } else {
+ newPendingDomains = org.pendingDomains;
+ }
+
+ Organization.merge(org, {
+ ...body,
+ pendingDomains: newPendingDomains,
+ parent: undefined
+ });
+ await Organization.save(org);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(org)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations:
+ * post:
+ * description: Create a new organization.
+ * tags:
+ * - Organizations
+ */
+export const create = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ const body = await validateBody(NewOrganization, event.body);
+ await connectToDatabase();
+
+ if ('tags' in body) {
+ body.tags = await findOrCreateTags(body.tags);
+ }
+ const organization = await Organization.create({
+ ...body,
+ createdBy: { id: event.requestContext.authorizer!.id },
+ parent: { id: body.parent }
+ });
+ const res = await organization.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations:
+ * get:
+ * description: List organizations that the user is a member of or has access to.
+ * tags:
+ * - Organizations
+ */
+export const list = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event) && getOrgMemberships(event).length === 0) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify([])
+ };
+ }
+ await connectToDatabase();
+ let where: any = { parent: null };
+ if (!isGlobalViewAdmin(event)) {
+ where = { id: In(getOrgMemberships(event)), parent: null };
+ }
+ const result = await Organization.find({
+ where,
+ relations: ['userRoles', 'tags'],
+ order: { name: 'ASC' }
+ });
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/tags:
+ * get:
+ * description: Fetchs all possible organization tags (must be global admin)
+ * tags:
+ * - Organizations
+ */
+export const getTags = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify([])
+ };
+ }
+ await connectToDatabase();
+ const result = await OrganizationTag.find({
+ select: ['id', 'name']
+ });
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}:
+ * get:
+ * description: Get information about a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const get = wrapHandler(async (event) => {
+ const id = event.pathParameters?.organizationId;
+
+ if (!isOrgAdmin(event, id)) return Unauthorized;
+
+ await connectToDatabase();
+ const result = await Organization.findOne(id, {
+ relations: [
+ 'userRoles',
+ 'userRoles.user',
+ 'granularScans',
+ 'tags',
+ 'parent',
+ 'children'
+ ]
+ });
+
+ if (result) {
+ result.scanTasks = await ScanTask.find({
+ where: {
+ organization: { id }
+ },
+ take: 10,
+ order: {
+ createdAt: 'DESC'
+ },
+ relations: ['scan']
+ });
+ }
+
+ return {
+ statusCode: result ? 200 : 404,
+ body: result ? JSON.stringify(result) : ''
+ };
+});
+
+class UpdateBody {
+ @IsBoolean()
+ enabled: boolean;
+}
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/granularScans/{scanId}/update:
+ * post:
+ * description: Enable or disable a scan for a particular organization; this endpoint can be called by organization admins and only works for user-modifiable scans.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: scanId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const updateScan = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+
+ await connectToDatabase();
+ const scanId = event.pathParameters?.scanId;
+ if (!scanId || !isUUID(scanId)) {
+ return NotFound;
+ }
+ const scan = await Scan.findOne({
+ id: scanId,
+ isGranular: true,
+ isUserModifiable: true
+ });
+ const organization = await Organization.findOne(
+ {
+ id: organizationId
+ },
+ {
+ relations: ['granularScans']
+ }
+ );
+ if (!scan || !organization) {
+ return NotFound;
+ }
+ const body = await validateBody(UpdateBody, event.body);
+ if (body.enabled) {
+ organization?.granularScans.push();
+ }
+ const existing = organization?.granularScans.find((s) => s.id === scanId);
+ if (body.enabled && !existing) {
+ organization.granularScans.push(plainToClass(Scan, { id: scanId }));
+ } else if (!body.enabled && existing) {
+ organization.granularScans = organization.granularScans.filter(
+ (s) => s.id !== scanId
+ );
+ }
+ const res = await Organization.save(organization);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/initiateDomainVerification:
+ * post:
+ * description: Generates a token to verify a new domain via a DNS record
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const initiateDomainVerification = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+ const body = await validateBody(NewDomain, event.body);
+
+ await connectToDatabase();
+ const token = 'crossfeed-verification=' + randomBytes(16).toString('hex');
+
+ const organization = await Organization.findOne({
+ id: organizationId
+ });
+ if (!organization) {
+ return NotFound;
+ }
+ if (organization.rootDomains.find((domain) => domain === body.domain)) {
+ return {
+ statusCode: 422,
+ body: 'Domain already exists.'
+ };
+ }
+ if (
+ !organization.pendingDomains.find(
+ (domain) => domain['name'] === body.domain
+ )
+ ) {
+ const domain: PendingDomain = {
+ name: body.domain,
+ token: token
+ };
+ organization.pendingDomains.push(domain);
+
+ const res = await Organization.save(organization);
+ }
+ return {
+ statusCode: 200,
+ body: JSON.stringify(organization.pendingDomains)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/checkDomainVerification:
+ * post:
+ * description: Checks whether the DNS record has been created for the supplied domain
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+export const checkDomainVerification = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+
+ if (!organizationId || !isUUID(organizationId)) {
+ return NotFound;
+ }
+
+ if (!isOrgAdmin(event, organizationId) && !isGlobalWriteAdmin(event))
+ return Unauthorized;
+ const body = await validateBody(NewDomain, event.body);
+
+ await connectToDatabase();
+
+ const organization = await Organization.findOne({
+ id: organizationId
+ });
+ if (!organization) {
+ return NotFound;
+ }
+ const pendingDomain = organization.pendingDomains.find(
+ (domain) => domain['name'] === body.domain
+ );
+ if (!pendingDomain) {
+ return {
+ statusCode: 422,
+ body: 'Please initiate the domain verification first.'
+ };
+ }
+ try {
+ const res = await promises.resolveTxt(pendingDomain.name);
+ for (const record of res) {
+ for (const val of record) {
+ if (val === pendingDomain.token) {
+ // Success!
+ organization.rootDomains.push(pendingDomain.name);
+ organization.pendingDomains = organization.pendingDomains.filter(
+ (domain) => domain.name !== pendingDomain.name
+ );
+ organization.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ success: true, organization })
+ };
+ }
+ }
+ }
+ } catch (e) {}
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ success: false })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/roles/{roleId}/approve:
+ * post:
+ * description: Approve a role within an organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: roleId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const approveRole = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+ if (!isOrgAdmin(event, organizationId)) return Unauthorized;
+
+ const id = event.pathParameters?.roleId;
+ if (!isUUID(id)) {
+ return NotFound;
+ }
+
+ await connectToDatabase();
+ const role = await Role.findOne({
+ organization: { id: organizationId },
+ id
+ });
+ if (role) {
+ role.approved = true;
+ role.approvedBy = plainToClass(User, {
+ id: event.requestContext.authorizer!.id
+ });
+ const result = await role.save();
+ return {
+ statusCode: result ? 200 : 404,
+ body: JSON.stringify({})
+ };
+ }
+
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/{id}/roles/{roleId}/remove:
+ * post:
+ * description: Remove a role within an organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * - in: path
+ * name: roleId
+ * description: Role id
+ * tags:
+ * - Organizations
+ */
+export const removeRole = wrapHandler(async (event) => {
+ const organizationId = event.pathParameters?.organizationId;
+ if (!isOrgAdmin(event, organizationId)) return Unauthorized;
+
+ const id = event.pathParameters?.roleId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ await connectToDatabase();
+ const result = await Role.delete({
+ organization: { id: organizationId },
+ id
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/regionId/{regionId}:
+ * get:
+ * description: List organizations with specific regionId.
+ * parameters:
+ * - in: path
+ * name: regionId
+ * description: Organization regionId
+ * tags:
+ * - Organizations
+ */
+export const getByRegionId = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const regionId = event.pathParameters?.regionId;
+ await connectToDatabase();
+ const result = await Organization.find({
+ where: { regionId: regionId }
+ });
+
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /organizations/state/{state}:
+ * get:
+ * description: List organizations with specific state.
+ * parameters:
+ * - in: path
+ * name: state
+ * description: Organization state
+ * tags:
+ * - Organizations
+ */
+export const getByState = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const state = event.pathParameters?.state;
+ await connectToDatabase();
+ const result = await Organization.find({
+ where: { state: state }
+ });
+
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+// V2 Endpoints
+
+/**
+ * @swagger
+ *
+ * /v2/organizations:
+ * get:
+ * description: List all organizations with query parameters.
+ * tags:
+ * - Users
+ * parameters:
+ * - in: query
+ * name: state
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ * - in: query
+ * name: regionId
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ *
+ */
+export const getAllV2 = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+
+ const filterParams = {};
+
+ if (event.query && event.query.state) {
+ filterParams['state'] = event.query.state;
+ }
+ if (event.query && event.query.regionId) {
+ filterParams['regionId'] = event.query.regionId;
+ }
+
+ await connectToDatabase();
+ if (Object.entries(filterParams).length === 0) {
+ const result = await Organization.find({});
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ } else {
+ const result = await Organization.find({
+ where: filterParams
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+});
+
+/**
+ * @swagger
+ *
+ * /v2/organizations/{id}:
+ * put:
+ * description: Update a particular organization.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Organization id
+ * tags:
+ * - Organizations
+ */
+
+export const updateV2 = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ // Get the organization id from the path
+ const id = event.pathParameters?.organizationId;
+
+ // confirm that the id is a valid UUID
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ // TODO: check permissions
+ // if (!isOrgAdmin(event, id)) return Unauthorized;
+
+ // Validate the body
+ const validatedBody = await validateBody(
+ UpdateOrganizationMetaV2,
+ event.body
+ );
+
+ // Connect to the database
+ await connectToDatabase();
+
+ // Update the organization
+ const updateResp = await Organization.update(id, validatedBody);
+
+ // Handle response
+ if (updateResp) {
+ const updatedOrg = await Organization.findOne(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(updatedOrg)
+ };
+ }
+ return NotFound;
+});
diff --git a/backend/src/api/saved-searches.ts b/backend/src/api/saved-searches.ts
new file mode 100644
index 00000000..1497e429
--- /dev/null
+++ b/backend/src/api/saved-searches.ts
@@ -0,0 +1,159 @@
+import {
+ IsString,
+ isUUID,
+ IsObject,
+ IsArray,
+ IsNumber,
+ IsBoolean,
+ IsOptional
+} from 'class-validator';
+import { connectToDatabase, SavedSearch, Vulnerability } from '../models';
+import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers';
+import { FindManyOptions } from 'typeorm';
+
+export const del = wrapHandler(async (event) => {
+ const id = event.pathParameters?.searchId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+
+ const where = { createdBy: { id: event.requestContext.authorizer!.id } };
+
+ await connectToDatabase();
+ const search = await SavedSearch.findOne(
+ {
+ id,
+ ...where
+ },
+ {
+ relations: []
+ }
+ );
+ if (search) {
+ const result = await SavedSearch.delete({ ...where, id });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+class NewSavedSearch {
+ @IsString()
+ name: string;
+
+ @IsNumber()
+ count: number;
+
+ @IsString()
+ sortDirection: string;
+
+ @IsString()
+ sortField: string;
+
+ @IsString()
+ searchTerm: string;
+
+ @IsString()
+ searchPath: string;
+
+ @IsArray()
+ filters: { field: string; values: any[]; type: string }[];
+
+ @IsBoolean()
+ createVulnerabilities: boolean;
+
+ @IsObject()
+ @IsOptional()
+ vulnerabilityTemplate: Partial;
+}
+
+const PAGE_SIZE = 20;
+
+export const update = wrapHandler(async (event) => {
+ const id = event.pathParameters?.searchId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const where = { createdBy: { id: event.requestContext.authorizer!.id } };
+
+ const body = await validateBody(NewSavedSearch, event.body);
+ await connectToDatabase();
+ const search = await SavedSearch.findOne(
+ {
+ id,
+ ...where
+ },
+ {
+ relations: []
+ }
+ );
+ if (search) {
+ SavedSearch.merge(search, body);
+ await SavedSearch.save(search);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(search)
+ };
+ }
+ return NotFound;
+});
+
+export const create = wrapHandler(async (event) => {
+ const body = await validateBody(NewSavedSearch, event.body);
+ await connectToDatabase();
+ const search = await SavedSearch.create({
+ ...body,
+ createdBy: { id: event.requestContext.authorizer!.id }
+ });
+ const res = await SavedSearch.save(search);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+export const list = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const where = { createdBy: { id: event.requestContext.authorizer!.id } };
+
+ const pageSize = event.query?.pageSize
+ ? parseInt(event.query.pageSize)
+ : PAGE_SIZE;
+ const page = event.query?.page ? parseInt(event.query?.page) : 1;
+
+ console.log(event.query);
+ const result = await SavedSearch.findAndCount({
+ where,
+ take: pageSize,
+ skip: pageSize * (page - 1)
+ } as FindManyOptions);
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result: result[0],
+ count: result[1]
+ })
+ };
+});
+
+export const get = wrapHandler(async (event) => {
+ const id = event.pathParameters?.searchId;
+ const where = { createdBy: { id: event.requestContext.authorizer!.id } };
+
+ await connectToDatabase();
+ const result = await SavedSearch.findOne(
+ { ...where, id },
+ {
+ relations: []
+ }
+ );
+
+ return {
+ statusCode: result ? 200 : 404,
+ body: result ? JSON.stringify(result) : ''
+ };
+});
diff --git a/backend/src/api/scan-tasks.ts b/backend/src/api/scan-tasks.ts
new file mode 100644
index 00000000..ba4cb340
--- /dev/null
+++ b/backend/src/api/scan-tasks.ts
@@ -0,0 +1,202 @@
+import {
+ IsInt,
+ IsPositive,
+ IsString,
+ IsIn,
+ ValidateNested,
+ isUUID,
+ IsUUID,
+ IsOptional,
+ IsObject
+} from 'class-validator';
+import { Type } from 'class-transformer';
+import { ScanTask, connectToDatabase } from '../models';
+import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers';
+import { SelectQueryBuilder } from 'typeorm';
+import {
+ getTagOrganizations,
+ isGlobalViewAdmin,
+ isGlobalWriteAdmin
+} from './auth';
+import ECSClient from '../tasks/ecs-client';
+
+const PAGE_SIZE = parseInt(process.env.PAGE_SIZE ?? '') || 25;
+
+class ScanTaskFilters {
+ @IsString()
+ @IsOptional()
+ name?: string;
+
+ @IsString()
+ @IsOptional()
+ status?: string;
+
+ @IsUUID()
+ @IsOptional()
+ organization?: string;
+
+ @IsUUID()
+ @IsOptional()
+ tag?: string;
+}
+
+class ScanTaskSearch {
+ @IsInt()
+ @IsPositive()
+ page: number = 1;
+
+ @IsString()
+ @IsIn(['createdAt', 'finishedAt'])
+ sort: string = 'createdAt';
+
+ @IsString()
+ @IsIn(['ASC', 'DESC'])
+ order: 'ASC' | 'DESC' = 'DESC';
+
+ @Type(() => ScanTaskFilters)
+ @ValidateNested()
+ @IsObject()
+ @IsOptional()
+ filters?: ScanTaskFilters;
+
+ async filterResultQueryset(qs: SelectQueryBuilder, event) {
+ if (this.filters?.name) {
+ qs.andWhere('scan.name ILIKE :name', {
+ name: `${this.filters?.name}`
+ });
+ }
+ if (this.filters?.status) {
+ qs.andWhere('scan_task.status ILIKE :status', {
+ status: `${this.filters?.status}`
+ });
+ }
+ if (this.filters?.organization) {
+ qs.andWhere('organization.id = :org', {
+ org: this.filters.organization
+ });
+ }
+ if (this.filters?.tag) {
+ qs.andWhere('organization.id IN (:...orgs)', {
+ orgs: await getTagOrganizations(event, this.filters.tag)
+ });
+ }
+ return qs;
+ }
+
+ async getResults(event) {
+ const qs = ScanTask.createQueryBuilder('scan_task')
+ .leftJoinAndSelect('scan_task.scan', 'scan')
+ .leftJoinAndSelect('scan_task.organizations', 'organization')
+ .orderBy(`scan_task.${this.sort}`, this.order)
+ .skip(PAGE_SIZE * (this.page - 1))
+ .take(PAGE_SIZE);
+
+ await this.filterResultQueryset(qs, event);
+ return qs.getManyAndCount();
+ }
+}
+
+/**
+ * @swagger
+ *
+ * /scan-tasks/search:
+ * post:
+ * description: List scantasks by specifying a filter.
+ * tags:
+ * - Scan Tasks
+ */
+export const list = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) {
+ return Unauthorized;
+ }
+ await connectToDatabase();
+ const search = await validateBody(ScanTaskSearch, event.body);
+ const [result, count] = await search.getResults(event);
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result,
+ count
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scan-tasks/{id}/kill:
+ * delete:
+ * description: Kill a particular scantask. Calling this endpoint does not kill the actual Fargate task, but just marks the task as "failed" in the database.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scantask id
+ * tags:
+ * - Scan Tasks
+ */
+export const kill = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) {
+ return Unauthorized;
+ }
+ const id = event.pathParameters?.scanTaskId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ await connectToDatabase();
+ const scanTask = await ScanTask.findOne(id);
+ if (!scanTask) {
+ return NotFound;
+ }
+ if (scanTask.status === 'failed' || scanTask.status === 'finished') {
+ return {
+ statusCode: 400,
+ body: 'ScanTask has already finished.'
+ };
+ }
+ if (scanTask) {
+ scanTask.status = 'failed';
+ scanTask.finishedAt = new Date();
+ scanTask.output = 'Manually stopped at ' + new Date().toISOString();
+ await ScanTask.save(scanTask);
+ }
+ return {
+ statusCode: 200,
+ body: JSON.stringify({})
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scan-tasks/{id}/logs:
+ * get:
+ * description: Retrieve logs from a particular scantask.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scantask id
+ * tags:
+ * - Scan Tasks
+ */
+export const logs = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) {
+ return Unauthorized;
+ }
+ const id = event.pathParameters?.scanTaskId;
+
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ await connectToDatabase();
+ const scanTask = await ScanTask.findOne(id);
+ if (!scanTask || !scanTask.fargateTaskArn) {
+ return NotFound;
+ }
+ const ecsClient = await new ECSClient();
+ const logs = await ecsClient.getLogs(scanTask.fargateTaskArn);
+ return {
+ statusCode: 200,
+ body: logs || ''
+ };
+});
diff --git a/backend/src/api/scans.ts b/backend/src/api/scans.ts
new file mode 100644
index 00000000..33423b2d
--- /dev/null
+++ b/backend/src/api/scans.ts
@@ -0,0 +1,522 @@
+import {
+ IsInt,
+ IsPositive,
+ IsString,
+ IsIn,
+ isUUID,
+ IsObject,
+ IsBoolean,
+ IsUUID,
+ IsArray
+} from 'class-validator';
+import {
+ Scan,
+ connectToDatabase,
+ Organization,
+ ScanTask,
+ OrganizationTag
+} from '../models';
+import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers';
+import { isGlobalWriteAdmin, isGlobalViewAdmin } from './auth';
+import LambdaClient from '../tasks/lambda-client';
+
+interface ScanSchema {
+ [name: string]: {
+ // Scan type. Only Fargate is supported.
+ type: 'fargate';
+
+ description: string;
+
+ // Whether scan is passive (not allowed to hit the domain).
+ isPassive: boolean;
+
+ // Whether scan is global. Global scans run once for all organizations, as opposed
+ // to non-global scans, which are run for each organization.
+ global: boolean;
+
+ // CPU and memory for the scan. See this page for more information:
+ // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
+ cpu?: string;
+ memory?: string;
+
+ // A scan is "chunked" if its work is divided and run in parallel by multiple workers.
+ // To make a scan chunked, make sure it is a global scan and specify the "numChunks" variable,
+ // which corresponds to the number of workers that will be created to run the task.
+ // Chunked scans can only be run on scans whose implementation takes into account the
+ // chunkNumber and numChunks parameters specified in commandOptions.
+ numChunks?: number;
+ };
+}
+
+export const SCAN_SCHEMA: ScanSchema = {
+ vulnSync: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ description: 'Pull in vulnerability data from PEs Vulnerability database',
+ cpu: '1024',
+ memory: '8192'
+ },
+ cveSync: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ description:
+ "Matches detected software versions to CVEs from NIST NVD and CISA's Known Exploited Vulnerabilities Catalog.",
+ cpu: '1024',
+ memory: '8192'
+ },
+ testProxy: {
+ type: 'fargate',
+ isPassive: false,
+ global: true,
+ description: 'Not a real scan, used to test proxy'
+ },
+ test: {
+ type: 'fargate',
+ isPassive: false,
+ global: true,
+ description: 'Not a real scan, used to test'
+ },
+ censys: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description: 'Passive discovery of subdomains from public certificates'
+ },
+ amass: {
+ type: 'fargate',
+ isPassive: false,
+ global: false,
+ description:
+ 'Open source tool that integrates passive APIs and active subdomain enumeration in order to discover target subdomains'
+ },
+ findomain: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description:
+ 'Open source tool that integrates passive APIs in order to discover target subdomains'
+ },
+ portscanner: {
+ type: 'fargate',
+ isPassive: false,
+ global: false,
+ description: 'Active port scan of common ports'
+ },
+ wappalyzer: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ cpu: '1024',
+ memory: '4096',
+ description:
+ 'Open source tool that fingerprints web technologies based on HTTP responses'
+ },
+ shodan: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description:
+ 'Fetch passive port, banner, and vulnerability data from shodan',
+ cpu: '1024',
+ memory: '8192'
+ },
+ sslyze: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description: 'SSL certificate inspection'
+ },
+ censysIpv4: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ cpu: '2048',
+ memory: '6144',
+ numChunks: 20,
+ description: 'Fetch passive port and banner data from censys ipv4 dataset'
+ },
+ censysCertificates: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ cpu: '2048',
+ memory: '6144',
+ numChunks: 20,
+ description: 'Fetch TLS certificate data from censys certificates dataset'
+ },
+ cve: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ cpu: '1024',
+ memory: '8192',
+ description:
+ "Matches detected software versions to CVEs from NIST NVD and CISA's Known Exploited Vulnerabilities Catalog."
+ },
+ dotgov: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ description:
+ 'Create organizations based on root domains from the dotgov registrar dataset. All organizations are created with the "dotgov" tag and have a " (dotgov)" suffix added to their name.'
+ },
+ searchSync: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ cpu: '1024',
+ memory: '4096',
+ description:
+ 'Syncs records with Elasticsearch so that they appear in search results.'
+ },
+ intrigueIdent: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ cpu: '1024',
+ memory: '4096',
+ description:
+ 'Open source tool that fingerprints web technologies based on HTTP responses'
+ },
+ webscraper: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ numChunks: 3,
+ cpu: '1024',
+ memory: '4096',
+ description: 'Scrapes all webpages on a given domain, respecting robots.txt'
+ },
+ hibp: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ cpu: '2048',
+ memory: '16384',
+ description:
+ 'Finds emails that have appeared in breaches related to a given domain'
+ },
+ lookingGlass: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description: 'Finds vulnerabilities and malware from the LookingGlass API'
+ },
+ dnstwist: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ cpu: '2048',
+ memory: '16384',
+ description:
+ 'Domain name permutation engine for detecting similar registered domains.'
+ },
+ rootDomainSync: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description:
+ 'Creates domains from root domains by doing a single DNS lookup for each root domain.'
+ },
+ savedSearch: {
+ type: 'fargate',
+ isPassive: true,
+ global: true,
+ description: 'Performs saved searches to update their search results'
+ },
+ trustymail: {
+ type: 'fargate',
+ isPassive: true,
+ global: false,
+ description:
+ 'Evaluates SPF/DMARC records and checks MX records for STARTTLS support'
+ }
+};
+
+class NewScan {
+ @IsString()
+ @IsIn(Object.keys(SCAN_SCHEMA))
+ name: string = 'name';
+
+ @IsObject()
+ arguments: Object = {};
+
+ @IsInt()
+ @IsPositive()
+ frequency: number = 1;
+
+ @IsBoolean()
+ isGranular: boolean;
+
+ @IsBoolean()
+ isUserModifiable: boolean;
+
+ @IsBoolean()
+ isSingleScan: boolean;
+
+ @IsUUID('all', { each: true })
+ organizations: string[];
+
+ @IsArray()
+ tags: OrganizationTag[];
+}
+
+/**
+ * @swagger
+ *
+ * /scans/{id}:
+ * delete:
+ * description: Delete a particular scan.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scan id
+ * tags:
+ * - Scans
+ */
+export const del = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.scanId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const result = await Scan.delete(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scans/{id}:
+ * put:
+ * description: Update a particular scan.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scan id
+ * tags:
+ * - Scans
+ */
+export const update = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.scanId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const body = await validateBody(NewScan, event.body);
+ const scan = await Scan.findOne({
+ id: id
+ });
+
+ if (scan) {
+ Scan.merge(scan, {
+ ...body,
+ organizations: body.organizations.map((id) => ({ id })),
+ tags: body.tags
+ });
+ const res = await Scan.save(scan);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /scans:
+ * post:
+ * description: Create a new scan.
+ * tags:
+ * - Scans
+ */
+export const create = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const body = await validateBody(NewScan, event.body);
+ const scan = await Scan.create({
+ ...body,
+ organizations: body.organizations.map((id) => ({ id })),
+ tags: body.tags,
+ createdBy: { id: event.requestContext.authorizer!.id }
+ });
+ const res = await Scan.save(scan);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scans/{id}:
+ * get:
+ * description: Get information about a particular scan.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scan id
+ * tags:
+ * - Scans
+ */
+export const get = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.scanId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const scan = await Scan.findOne(
+ {
+ id: id
+ },
+ {
+ relations: ['organizations', 'tags']
+ }
+ );
+
+ if (scan) {
+ const schema = SCAN_SCHEMA[scan.name];
+ const organizations = await Organization.find();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ scan: scan,
+ schema: schema,
+ organizations: organizations.map((e) => ({
+ name: e.name,
+ id: e.id
+ }))
+ })
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /scans:
+ * get:
+ * description: List scans.
+ * tags:
+ * - Scans
+ */
+export const list = wrapHandler(async (event) => {
+ // if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const result = await Scan.find({ relations: ['tags'] });
+ const organizations = await Organization.find();
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ scans: result,
+ schema: SCAN_SCHEMA,
+ organizations: organizations.map((e) => ({
+ name: e.name,
+ id: e.id
+ }))
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /granularScans:
+ * get:
+ * description: List user-modifiable scans. These scans are retrieved by a standard organization admin user, who is then able to enable or disable these particular scans.
+ * tags:
+ * - Scans
+ */
+export const listGranular = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const scans = await Scan.find({
+ select: ['id', 'name', 'isUserModifiable'],
+ where: {
+ isGranular: true,
+ isUserModifiable: true,
+ isSingleScan: false
+ }
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ scans,
+ schema: SCAN_SCHEMA
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scheduler/invoke:
+ * post:
+ * description: Manually invoke scheduler to run scheduled scans.
+ * tags:
+ * - Scans
+ */
+export const invokeScheduler = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ const lambdaClient = new LambdaClient();
+ const response = await lambdaClient.runCommand({
+ name: `${process.env.SLS_LAMBDA_PREFIX!}-scheduler`
+ });
+ if (response.StatusCode !== 202) {
+ return {
+ statusCode: 500,
+ body: 'Invocation failed.'
+ };
+ }
+ return {
+ statusCode: 200,
+ body: ''
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /scans/{id}/run:
+ * post:
+ * description: Manually run a particular scan.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Scan id
+ * tags:
+ * - Scans
+ */
+export const runScan = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.scanId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const scan = await Scan.findOne({
+ id: id
+ });
+
+ if (scan) {
+ scan.manualRunPending = true;
+
+ const res = await Scan.save(scan);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(res)
+ };
+ }
+ return NotFound;
+});
diff --git a/backend/src/api/search.ts b/backend/src/api/search.ts
new file mode 100644
index 00000000..5b258763
--- /dev/null
+++ b/backend/src/api/search.ts
@@ -0,0 +1,190 @@
+import { validateBody, wrapHandler } from './helpers';
+import {
+ getOrgMemberships,
+ getTagOrganizations,
+ isGlobalViewAdmin
+} from './auth';
+import { buildRequest } from './search/buildRequest';
+import ESClient from '../tasks/es-client';
+import { IsArray, IsInt, IsOptional, IsString, IsUUID } from 'class-validator';
+import { Domain } from 'domain';
+import S3Client from '../tasks/s3-client';
+import * as Papa from 'papaparse';
+
+class SearchBody {
+ @IsInt()
+ current: number;
+
+ @IsInt()
+ resultsPerPage: number;
+
+ @IsString()
+ searchTerm: string;
+
+ @IsString()
+ sortDirection: string;
+
+ @IsString()
+ sortField: string;
+
+ @IsArray()
+ filters: { field: string; values: any[]; type: string }[];
+
+ @IsOptional()
+ @IsUUID()
+ organizationId?: string;
+
+ @IsOptional()
+ @IsUUID()
+ tagId?: string;
+}
+
+export const fetchAllResults = async (
+ filters: Partial,
+ options: {
+ organizationIds: string[];
+ matchAllOrganizations: boolean;
+ }
+): Promise => {
+ const client = new ESClient();
+ const RESULTS_PER_PAGE = 1000;
+ let results: Domain[] = [];
+ let current = 1;
+ while (true) {
+ const request = buildRequest(
+ {
+ ...filters,
+ current,
+ resultsPerPage: RESULTS_PER_PAGE
+ },
+ options
+ );
+ current += 1;
+ let searchResults;
+ try {
+ searchResults = await client.searchDomains(request);
+ } catch (e) {
+ console.error(e.meta.body.error);
+ continue;
+ }
+ if (searchResults.body.hits.hits.length === 0) break;
+ results = results.concat(
+ searchResults.body.hits.hits.map((res) => res._source as Domain)
+ );
+ }
+ return results;
+};
+
+const getOptions = async (
+ searchBody: SearchBody,
+ event
+): Promise<{
+ organizationIds: string[];
+ matchAllOrganizations: boolean;
+}> => {
+ let options;
+ if (
+ searchBody.organizationId &&
+ (getOrgMemberships(event).includes(searchBody.organizationId) ||
+ isGlobalViewAdmin(event))
+ ) {
+ // Search for a specific organization
+ options = {
+ organizationIds: [searchBody.organizationId],
+ matchAllOrganizations: false
+ };
+ } else if (searchBody.tagId) {
+ options = {
+ organizationIds: await getTagOrganizations(event, searchBody.tagId),
+ matchAllOrganizations: false
+ };
+ } else {
+ options = {
+ organizationIds: getOrgMemberships(event),
+ matchAllOrganizations: isGlobalViewAdmin(event)
+ };
+ }
+ return options;
+};
+
+/**
+ * @swagger
+ *
+ * /search/export:
+ * post:
+ * description: Export a search result to a CSV file by specifying an elasticsearch query
+ * tags:
+ * - Search
+ */
+export const export_ = wrapHandler(async (event) => {
+ const searchBody = await validateBody(SearchBody, event.body);
+ const options = await getOptions(searchBody, event);
+ let results: any = await fetchAllResults(searchBody, options);
+ results = results.map((res) => {
+ res.organization = res.organization.name;
+ res.ports = res.services.map((service) => service.port).join(', ');
+ const products: { [key: string]: string } = {};
+ for (const service of res.services) {
+ for (const product of service.products) {
+ if (product.name)
+ products[product.name.toLowerCase()] =
+ product.name + (product.version ? ` ${product.version}` : '');
+ }
+ }
+ res.products = Object.values(products).join(', ');
+ return res;
+ });
+ const client = new S3Client();
+ const url = await client.saveCSV(
+ Papa.unparse({
+ fields: [
+ 'name',
+ 'ip',
+ 'id',
+ 'ports',
+ 'products',
+ 'createdAt',
+ 'updatedAt',
+ 'organization'
+ ],
+ data: results
+ }),
+ 'domains'
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ url
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /search:
+ * post:
+ * description: Perform a search on all assets using Elasticsearch.
+ * tags:
+ * - Search
+ */
+export const search = wrapHandler(async (event) => {
+ const searchBody = await validateBody(SearchBody, event.body);
+ const options = await getOptions(searchBody, event);
+ const request = buildRequest(searchBody, options);
+
+ const client = new ESClient();
+ let searchResults;
+ try {
+ searchResults = await client.searchDomains(request);
+ } catch (e) {
+ console.error(e.meta.body.error);
+ throw e;
+ }
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(searchResults.body)
+ };
+});
diff --git a/backend/src/api/search/buildRequest.ts b/backend/src/api/search/buildRequest.ts
new file mode 100755
index 00000000..d9c72644
--- /dev/null
+++ b/backend/src/api/search/buildRequest.ts
@@ -0,0 +1,253 @@
+import buildRequestFilter from './buildRequestFilter';
+
+function buildFrom(current, resultsPerPage) {
+ if (!current || !resultsPerPage) return;
+ return (current - 1) * resultsPerPage;
+}
+
+const nonKeywordFields = new Set(['updatedAt', 'createdAt']);
+function buildSort(sortDirection, sortField) {
+ if (!sortDirection || !sortField) {
+ return;
+ }
+ if (nonKeywordFields.has(sortField)) {
+ return [{ [sortField]: sortDirection }];
+ }
+ return [{ [`${sortField}.keyword`]: sortDirection }];
+}
+
+function buildMatch(searchTerm) {
+ return searchTerm
+ ? {
+ query_string: {
+ query: searchTerm,
+ analyze_wildcard: true,
+ fields: ['*']
+ }
+ }
+ : { match_all: {} };
+}
+
+function buildChildMatch(searchTerm) {
+ return searchTerm
+ ? {
+ query_string: {
+ query: searchTerm,
+ analyze_wildcard: true,
+ fields: ['*']
+ }
+ }
+ : { match_all: {} };
+}
+
+/*
+
+ Converts current application state to an Elasticsearch request.
+
+ When implementing an onSearch Handler in Search UI, the handler needs to take the
+ current state of the application and convert it to an API request.
+
+ For instance, there is a "current" property in the application state that you receive
+ in this handler. The "current" property represents the current page in pagination. This
+ method converts our "current" property to Elasticsearch's "from" parameter.
+
+ This "current" property is a "page" offset, while Elasticsearch's "from" parameter
+ is a "item" offset. In other words, for a set of 100 results and a page size
+ of 10, if our "current" value is "4", then the equivalent Elasticsearch "from" value
+ would be "40". This method does that conversion.
+
+ We then do similar things for searchTerm, filters, sort, etc.
+*/
+export function buildRequest(
+ state,
+ options: { organizationIds: string[]; matchAllOrganizations: boolean }
+) {
+ const {
+ current,
+ filters,
+ resultsPerPage,
+ searchTerm,
+ sortDirection,
+ sortField
+ } = state;
+
+ const sort = buildSort(sortDirection, sortField);
+ const match = buildMatch(searchTerm);
+ const size = resultsPerPage;
+ const from = buildFrom(current, resultsPerPage);
+ const filter = buildRequestFilter(filters);
+
+ let query: any = {
+ bool: {
+ must: [
+ {
+ match: {
+ parent_join: 'domain'
+ }
+ },
+ {
+ bool: {
+ should: [
+ match,
+ {
+ has_child: {
+ type: 'webpage',
+ query: buildChildMatch(searchTerm),
+ inner_hits: {
+ _source: ['webpage_url'],
+ highlight: {
+ fragment_size: 50,
+ number_of_fragments: 3,
+ fields: {
+ webpage_body: {}
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ ],
+ ...(filter && { filter })
+ }
+ };
+ if (!options.matchAllOrganizations) {
+ query = {
+ bool: {
+ must: [
+ {
+ terms: {
+ 'organization.id.keyword': options.organizationIds
+ }
+ },
+ query
+ ]
+ }
+ };
+ }
+
+ const body = {
+ // Static query Configuration
+ // --------------------------
+ // https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-request-highlighting.html
+ highlight: {
+ fragment_size: 200,
+ number_of_fragments: 1,
+ fields: {
+ name: {}
+ }
+ },
+ //https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-request-source-filtering.html#search-request-source-filtering
+ // _source: ["id", "nps_link", "title", "description"],
+ aggs: {
+ name: { terms: { field: 'name.keyword' } },
+ fromRootDomain: {
+ terms: { field: 'fromRootDomain.keyword' }
+ },
+ organization: {
+ terms: { field: 'organization.name.keyword' }
+ },
+ services: {
+ nested: {
+ path: 'services'
+ },
+ aggs: {
+ port: {
+ terms: {
+ field: 'services.port'
+ }
+ },
+ name: {
+ terms: {
+ field: 'services.service.keyword'
+ }
+ },
+ // TODO: products type nested
+ products: {
+ nested: {
+ path: 'products'
+ },
+ aggs: {
+ cpe: {
+ terms: {
+ field: 'services.products.cpe.keyword'
+ }
+ }
+ }
+ }
+ }
+ },
+ vulnerabilities: {
+ nested: {
+ path: 'vulnerabilities'
+ },
+ aggs: {
+ severity: {
+ terms: {
+ field: 'vulnerabilities.severity.keyword'
+ }
+ },
+ cve: {
+ terms: {
+ field: 'vulnerabilities.cve.keyword'
+ }
+ }
+ }
+ }
+ // visitors: {
+ // range: {
+ // field: "visitors",
+ // ranges: [
+ // { from: 0.0, to: 10000.0, key: "0 - 10000" },
+ // { from: 10001.0, to: 100000.0, key: "10001 - 100000" },
+ // { from: 100001.0, to: 500000.0, key: "100001 - 500000" },
+ // { from: 500001.0, to: 1000000.0, key: "500001 - 1000000" },
+ // { from: 1000001.0, to: 5000000.0, key: "1000001 - 5000000" },
+ // { from: 5000001.0, to: 10000000.0, key: "5000001 - 10000000" },
+ // { from: 10000001.0, key: "10000001+" }
+ // ]
+ // }
+ // },
+ // acres: {
+ // range: {
+ // field: "acres",
+ // ranges: [
+ // { from: -1.0, key: "Any" },
+ // { from: 0.0, to: 1000.0, key: "Small" },
+ // { from: 1001.0, to: 100000.0, key: "Medium" },
+ // { from: 100001.0, key: "Large" }
+ // ]
+ // }
+ // }
+ },
+
+ // Dynamic values based on current Search UI state
+ // --------------------------
+ // https://www.elastic.co/guide/en/elasticsearch/reference/7.x/full-text-queries.html
+ query,
+ // https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-request-sort.html
+ ...(sort && { sort }),
+ // https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-request-from-size.html
+ ...(size && { size }),
+ ...(from && { from })
+ };
+ return body;
+}
+
+export function buildAutocompleteRequest(state) {
+ const { searchTerm } = state;
+
+ const body = {
+ suggest: {
+ 'main-suggest': {
+ prefix: searchTerm,
+ completion: {
+ field: 'suggest'
+ }
+ }
+ }
+ };
+
+ return body;
+}
diff --git a/backend/src/api/search/buildRequestFilter.ts b/backend/src/api/search/buildRequestFilter.ts
new file mode 100755
index 00000000..fec9d5e9
--- /dev/null
+++ b/backend/src/api/search/buildRequestFilter.ts
@@ -0,0 +1,103 @@
+function getTermFilterValue(field, fieldValue) {
+ // We do this because if the value is a boolean value, we need to apply
+ // our filter differently. We're also only storing the string representation
+ // of the boolean value, so we need to convert it to a Boolean.
+
+ // TODO We need better approach for boolean values
+ if (fieldValue === 'false' || fieldValue === 'true') {
+ return { [field]: fieldValue === 'true' };
+ }
+ if (typeof fieldValue === 'number') {
+ return { [field]: fieldValue };
+ }
+ if (field === 'name') {
+ // If name does not have wildcards, make it wildcard by default
+ if (fieldValue !== '' && !fieldValue.includes('*')) {
+ fieldValue = '*' + fieldValue + '*';
+ }
+ }
+ return { [`${field}.keyword`]: fieldValue };
+}
+
+function getTermFilter(filter) {
+ const fieldPath = filter.field.split('.');
+ let searchType = 'term';
+ let search = {};
+ if (['name', 'ip'].includes(filter.field)) {
+ searchType = 'wildcard';
+ }
+ if (filter.field === 'services.port') {
+ searchType = 'match';
+ }
+
+ if (filter.type === 'any') {
+ search = {
+ bool: {
+ should: filter.values.map((filterValue) => ({
+ [searchType]: getTermFilterValue(filter.field, filterValue)
+ })),
+ minimum_should_match: 1
+ }
+ };
+ } else if (filter.type === 'all') {
+ search = {
+ bool: {
+ filter: filter.values.map((filterValue) => ({
+ [searchType]: getTermFilterValue(filter.field, filterValue)
+ }))
+ }
+ };
+ }
+ if (fieldPath.length > 1) {
+ return {
+ nested: {
+ path: fieldPath[0],
+ query: search
+ }
+ };
+ } else {
+ return search;
+ }
+}
+
+// function getRangeFilter(filter) {
+// if (filter.type === 'any') {
+// return {
+// bool: {
+// should: filter.values.map(filterValue => ({
+// range: {
+// [filter.field]: {
+// ...(filterValue.to && { lt: filterValue.to }),
+// ...(filterValue.to && { gt: filterValue.from })
+// }
+// }
+// })),
+// minimum_should_match: 1
+// }
+// };
+// } else if (filter.type === 'all') {
+// return {
+// bool: {
+// filter: filter.values.map(filterValue => ({
+// range: {
+// [filter.field]: {
+// ...(filterValue.to && { lt: filterValue.to }),
+// ...(filterValue.to && { gt: filterValue.from })
+// }
+// }
+// }))
+// }
+// };
+// }
+// }
+
+export default function buildRequestFilter(filters) {
+ if (!filters) return;
+
+ filters = filters.reduce((acc, filter) => {
+ return [...acc, getTermFilter(filter)];
+ }, []);
+
+ if (filters.length < 1) return;
+ return filters;
+}
diff --git a/backend/src/api/stats.ts b/backend/src/api/stats.ts
new file mode 100644
index 00000000..6b1c1f82
--- /dev/null
+++ b/backend/src/api/stats.ts
@@ -0,0 +1,198 @@
+import { ValidateNested, IsOptional, IsObject, IsUUID } from 'class-validator';
+import { Type } from 'class-transformer';
+import { Domain, connectToDatabase, Vulnerability, Service } from '../models';
+import { validateBody, wrapHandler } from './helpers';
+import { SelectQueryBuilder } from 'typeorm';
+import {
+ isGlobalViewAdmin,
+ getOrgMemberships,
+ getTagOrganizations
+} from './auth';
+
+interface Point {
+ id: string;
+ label: string;
+ value: number;
+}
+
+interface Stats {
+ domains: {
+ services: Point[];
+ ports: Point[];
+ numVulnerabilities: Point[];
+ total: number;
+ };
+ vulnerabilities: {
+ severity: Point[];
+ byOrg: Point[];
+ latestVulnerabilities: Vulnerability[];
+ mostCommonVulnerabilities: Vulnerability[];
+ };
+}
+
+class StatsFilters {
+ @IsUUID()
+ @IsOptional()
+ organization?: string;
+
+ @IsUUID()
+ @IsOptional()
+ tag?: string;
+}
+
+class StatsSearch {
+ @Type(() => StatsFilters)
+ @ValidateNested()
+ @IsObject()
+ @IsOptional()
+ filters?: StatsFilters;
+}
+
+/**
+ * @swagger
+ *
+ * /stats:
+ * get:
+ * description: Get stats.
+ * tags:
+ * - Stats
+ */
+export const get = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const search = await validateBody(StatsSearch, event.body);
+
+ const filterQuery = async (
+ qs: SelectQueryBuilder
+ ): Promise> => {
+ if (!isGlobalViewAdmin(event)) {
+ qs.andWhere('domain."organizationId" IN (:...orgs)', {
+ orgs: getOrgMemberships(event)
+ });
+ }
+ if (search.filters?.organization) {
+ qs.andWhere('domain."organizationId" = :org', {
+ org: search.filters?.organization
+ });
+ }
+ if (search.filters?.tag) {
+ qs.andWhere('domain."organizationId" IN (:...orgs)', {
+ orgs: await getTagOrganizations(event, search.filters.tag)
+ });
+ }
+
+ return qs.cache(15 * 60 * 1000); // 15 minutes
+ };
+
+ const performQuery = async (qs: SelectQueryBuilder) => {
+ qs = await filterQuery(qs);
+ return (await qs.getRawMany()).map((e) => ({
+ id: String(e.id),
+ value: Number(e.value),
+ label: String(e.id)
+ })) as { id: string; value: number; label: string }[];
+ };
+
+ const MAX_RESULTS = 50;
+
+ const services = await performQuery(
+ Service.createQueryBuilder('service')
+ .innerJoinAndSelect('service.domain', 'domain')
+ .where('service IS NOT NULL')
+ .select('service as id, count(*) as value')
+ .groupBy('service')
+ .orderBy('value', 'DESC')
+ );
+ const ports = await performQuery(
+ Domain.createQueryBuilder('domain')
+ .innerJoinAndSelect('domain.services', 'services')
+ .select('services.port as id, count(*) as value')
+ .groupBy('services.port')
+ .orderBy('value', 'DESC')
+ );
+ const numVulnerabilities = await performQuery(
+ Domain.createQueryBuilder('domain')
+ .innerJoinAndSelect('domain.vulnerabilities', 'vulnerabilities')
+ .andWhere("vulnerabilities.state = 'open'")
+ .select(
+ "CONCAT(domain.name, '|', vulnerabilities.severity) as id, count(*) as value"
+ )
+ .groupBy('vulnerabilities.severity, domain.id')
+ .orderBy('value', 'DESC')
+ .limit(MAX_RESULTS)
+ );
+ const latestVulnerabilities = await (
+ await filterQuery(
+ Vulnerability.createQueryBuilder('vulnerability')
+ .leftJoinAndSelect('vulnerability.domain', 'domain')
+ .andWhere("vulnerability.state = 'open'")
+ .orderBy('vulnerability.createdAt', 'ASC')
+ .limit(MAX_RESULTS)
+ )
+ ).getMany();
+ const mostCommonVulnerabilities = await (
+ await filterQuery(
+ Vulnerability.createQueryBuilder('vulnerability')
+ .leftJoinAndSelect('vulnerability.domain', 'domain')
+ .andWhere("vulnerability.state = 'open'")
+ .select(
+ 'vulnerability.title, vulnerability.description, vulnerability.severity, count(*) as count'
+ )
+ .groupBy(
+ 'vulnerability.title, vulnerability.description, vulnerability.severity'
+ )
+ .orderBy('count', 'DESC')
+ .limit(MAX_RESULTS)
+ )
+ ).getRawMany();
+ const severity = await performQuery(
+ Vulnerability.createQueryBuilder('vulnerability')
+ .leftJoinAndSelect('vulnerability.domain', 'domain')
+ .andWhere("vulnerability.state = 'open'")
+ .select('vulnerability.severity as id, count(*) as value')
+ .groupBy('vulnerability.severity')
+ .orderBy('vulnerability.severity', 'ASC')
+ );
+ const total = await performQuery(
+ Domain.createQueryBuilder('domain').select('count(*) as value')
+ );
+ const byOrg = (
+ await (
+ await filterQuery(
+ Domain.createQueryBuilder('domain')
+ .innerJoinAndSelect('domain.organization', 'organization')
+ .innerJoinAndSelect('domain.vulnerabilities', 'vulnerabilities')
+ .andWhere("vulnerabilities.state = 'open'")
+ .select(
+ 'organization.name as id, organization.id as "orgId", count(*) as value'
+ )
+ .groupBy('organization.name, organization.id')
+ .orderBy('value', 'DESC')
+ )
+ ).getRawMany()
+ ).map((e) => ({
+ id: String(e.id),
+ orgId: String(e.orgId),
+ value: Number(e.value),
+ label: String(e.id)
+ }));
+ const result: Stats = {
+ domains: {
+ services,
+ ports: ports,
+ numVulnerabilities: numVulnerabilities,
+ total: total[0].value
+ },
+ vulnerabilities: {
+ severity,
+ byOrg,
+ latestVulnerabilities,
+ mostCommonVulnerabilities
+ }
+ };
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result
+ })
+ };
+});
diff --git a/backend/src/api/users.ts b/backend/src/api/users.ts
new file mode 100644
index 00000000..836b42a5
--- /dev/null
+++ b/backend/src/api/users.ts
@@ -0,0 +1,954 @@
+import {
+ IsString,
+ isUUID,
+ IsBoolean,
+ IsOptional,
+ IsEmail,
+ IsEnum,
+ IsInt,
+ IsIn,
+ IsNumber,
+ IsObject,
+ IsPositive,
+ ValidateNested,
+ IsUUID
+} from 'class-validator';
+import { User, connectToDatabase, Role, Organization } from '../models';
+import {
+ validateBody,
+ wrapHandler,
+ NotFound,
+ Unauthorized,
+ sendEmail,
+ sendUserRegistrationEmail,
+ sendRegistrationApprovedEmail,
+ sendRegistrationDeniedEmail
+} from './helpers';
+import { UserType } from '../models/user';
+import {
+ getUserId,
+ canAccessUser,
+ isGlobalViewAdmin,
+ isRegionalAdmin,
+ isOrgAdmin,
+ isGlobalWriteAdmin
+} from './auth';
+import { Type, plainToClass } from 'class-transformer';
+import { IsNull } from 'typeorm';
+import { create } from './organizations';
+
+class UserSearch {
+ @IsInt()
+ @IsPositive()
+ page: number = 1;
+
+ @IsString()
+ @IsIn([
+ 'fullName',
+ 'firstName',
+ 'lastName',
+ 'email',
+ 'name',
+ 'userType',
+ 'dateAcceptedTerms',
+ 'lastLoggedIn',
+ 'acceptedTermsVersion',
+ 'state',
+ 'regionId'
+ ])
+ @IsOptional()
+ sort: string = 'fullName';
+
+ @IsString()
+ @IsIn(['ASC', 'DESC'])
+ order: 'ASC' | 'DESC' = 'DESC';
+
+ @IsInt()
+ @IsOptional()
+ // If set to -1, returns all results.
+ pageSize?: number;
+
+ @IsString()
+ @IsOptional()
+ @IsIn(['title'])
+ groupBy?: 'title';
+
+ async getResults(event): Promise<[User[], number]> {
+ const pageSize = this.pageSize || 25;
+ const sort = this.sort === 'name' ? 'user.fullName' : 'user.' + this.sort;
+ const qs = User.createQueryBuilder('user')
+ .leftJoinAndSelect('user.roles', 'roles') // Include the roles relation
+ .leftJoinAndSelect('roles.organization', 'organization') // Include the organization relation
+ .orderBy(sort, this.order);
+ const result = await qs.getMany();
+ const count = await qs.getCount();
+ return [result, count];
+ }
+}
+
+// New User
+class NewUser {
+ @IsString()
+ firstName: string;
+
+ @IsString()
+ lastName: string;
+
+ @IsString()
+ @IsOptional()
+ state: string;
+
+ @IsString()
+ @IsOptional()
+ regionId: string;
+
+ @IsEmail()
+ @IsOptional()
+ email: string;
+
+ @IsString()
+ @IsOptional()
+ organization: string;
+
+ @IsBoolean()
+ @IsOptional()
+ organizationAdmin: string;
+
+ @IsEnum(UserType)
+ @IsOptional()
+ userType: UserType;
+}
+
+class UpdateUser {
+ @IsString()
+ @IsOptional()
+ state: string;
+
+ @IsString()
+ @IsOptional()
+ regionId: string;
+
+ @IsBoolean()
+ @IsOptional()
+ invitePending: boolean;
+
+ @IsEnum(UserType)
+ @IsOptional()
+ userType: UserType;
+
+ // @IsString()
+ @IsEnum(Organization)
+ @IsOptional()
+ organization: Organization;
+
+ @IsString()
+ @IsOptional()
+ role: string;
+}
+
+const REGION_STATE_MAP = {
+ Connecticut: '1',
+ Maine: '1',
+ Massachusetts: '1',
+ 'New Hampshire': '1',
+ 'Rhode Island': '1',
+ Vermont: '1',
+ 'New Jersey': '2',
+ 'New York': '2',
+ 'Puerto Rico': '2',
+ 'Virgin Islands': '2',
+ Delaware: '3',
+ Maryland: '3',
+ Pennsylvania: '3',
+ Virginia: '3',
+ 'District of Columbia': '3',
+ 'West Virginia': '3',
+ Alabama: '4',
+ Florida: '4',
+ Georgia: '4',
+ Kentucky: '4',
+ Mississippi: '4',
+ 'North Carolina': '4',
+ 'South Carolina': '4',
+ Tennessee: '4',
+ Illinois: '5',
+ Indiana: '5',
+ Michigan: '5',
+ Minnesota: '5',
+ Ohio: '5',
+ Wisconsin: '5',
+ Arkansas: '6',
+ Louisiana: '6',
+ 'New Mexico': '6',
+ Oklahoma: '6',
+ Texas: '6',
+ Iowa: '7',
+ Kansas: '7',
+ Missouri: '7',
+ Nebraska: '7',
+ Colorado: '8',
+ Montana: '8',
+ 'North Dakota': '8',
+ 'South Dakota': '8',
+ Utah: '8',
+ Wyoming: '8',
+ Arizona: '9',
+ California: '9',
+ Hawaii: '9',
+ Nevada: '9',
+ Guam: '9',
+ 'American Samoa': '9',
+ 'Commonwealth Northern Mariana Islands': '9',
+ 'Republic of Marshall Islands': '9',
+ 'Federal States of Micronesia': '9',
+ Alaska: '10',
+ Idaho: '10',
+ Oregon: '10',
+ Washington: '10'
+};
+
+/**
+ * @swagger
+ *
+ * /users/{id}:
+ * delete:
+ * description: Delete a particular user.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: User id
+ * tags:
+ * - Users
+ */
+export const del = wrapHandler(async (event) => {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.userId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const result = await User.delete(id);
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/{id}:
+ * put:
+ * description: Update a particular user.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: User id
+ * tags:
+ * - Users
+ */
+export const update = wrapHandler(async (event) => {
+ if (!canAccessUser(event, event.pathParameters?.userId)) return Unauthorized;
+ await connectToDatabase();
+ const id = event.pathParameters?.userId;
+ if (!id || !isUUID(id)) {
+ return NotFound;
+ }
+ const body = await validateBody(NewUser, event.body);
+ if (!isGlobalWriteAdmin(event) && body.userType) {
+ // Non-global admins can't set userType
+ return Unauthorized;
+ }
+ const user = await User.findOne(
+ {
+ id: id
+ },
+ {
+ relations: ['roles', 'roles.organization']
+ }
+ );
+ if (user) {
+ console.log(JSON.stringify({ original_user: user }));
+ user.firstName = body.firstName ?? user.firstName;
+ user.lastName = body.lastName ?? user.lastName;
+ user.fullName = user.firstName + ' ' + user.lastName;
+ user.userType = body.userType ?? user.userType;
+ await User.save(user);
+ console.log(JSON.stringify({ updated_user: user }));
+ return {
+ statusCode: 200,
+ body: JSON.stringify(user)
+ };
+ }
+ return NotFound;
+});
+
+const sendInviteEmail = async (email: string, organization?: Organization) => {
+ const staging = process.env.NODE_ENV !== 'production';
+
+ await sendEmail(
+ email,
+ 'Crossfeed Invitation',
+ `Hi there,
+
+You've been invited to join ${
+ organization?.name ? `the ${organization?.name} organization on ` : ''
+ }Crossfeed. To accept the invitation and start using Crossfeed, sign on at ${
+ process.env.FRONTEND_DOMAIN
+ }/signup.
+
+Crossfeed access instructions:
+
+1. Visit ${process.env.FRONTEND_DOMAIN}/signup.
+2. Select "Create Account."
+3. Enter your email address and a new password for Crossfeed.
+4. A confirmation code will be sent to your email. Enter this code when you receive it.
+5. You will be prompted to enable MFA. Scan the QR code with an authenticator app on your phone, such as Microsoft Authenticator. Enter the MFA code you see after scanning.
+6. After configuring your account, you will be redirected to Crossfeed.
+
+For more information on using Crossfeed, view the Crossfeed user guide at https://docs.crossfeed.cyber.dhs.gov/user-guide/quickstart/.
+
+If you encounter any difficulties, please feel free to reply to this email (or send an email to ${
+ process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO
+ }).`
+ );
+};
+
+/**
+ * @swagger
+ *
+ * /users:
+ * post:
+ * description: Invite a new user.
+ * tags:
+ * - Users
+ */
+export const invite = wrapHandler(async (event) => {
+ const body = await validateBody(NewUser, event.body);
+ // Invoker must be either an organization or global admin
+ if (body.organization) {
+ if (!isOrgAdmin(event, body.organization)) return Unauthorized;
+ } else {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ }
+ if (!isGlobalWriteAdmin(event) && body.userType) {
+ // Non-global admins can't set userType
+ return Unauthorized;
+ }
+
+ await connectToDatabase();
+
+ body.email = body.email.toLowerCase();
+
+ if (body.state) {
+ body.regionId = REGION_STATE_MAP[body.state];
+ }
+
+ // Check if user already exists
+ let user = await User.findOne({
+ email: body.email
+ });
+
+ let organization: Organization | undefined;
+
+ if (body.organization) {
+ organization = await Organization.findOne(body.organization);
+ }
+
+ if (!user) {
+ user = await User.create({
+ invitePending: true,
+ ...body
+ });
+ await User.save(user);
+ if (process.env.IS_LOCAL!) {
+ console.log('Cannot send invite email while running on local.');
+ } else {
+ await sendInviteEmail(user.email, organization);
+ }
+ } else if (!user.firstName && !user.lastName) {
+ // Only set the user first name and last name the first time the user is invited.
+ user.firstName = body.firstName;
+ user.lastName = body.lastName;
+ await User.save(user);
+ }
+ // Always update the userType, if specified in the request.
+ if (body.userType) {
+ user.userType = body.userType;
+ await User.save(user);
+ }
+
+ if (organization) {
+ // Create approved role if organization supplied
+ await Role.createQueryBuilder()
+ .insert()
+ .values({
+ user: user,
+ organization: { id: body.organization },
+ approved: true,
+ createdBy: { id: event.requestContext.authorizer!.id },
+ approvedBy: { id: event.requestContext.authorizer!.id },
+ role: body.organizationAdmin ? 'admin' : 'user'
+ })
+ .onConflict(
+ `
+ ("userId", "organizationId") DO UPDATE
+ SET "role" = excluded."role",
+ "approved" = excluded."approved",
+ "approvedById" = excluded."approvedById"
+ `
+ )
+ .execute();
+ }
+
+ const updated = await User.findOne(
+ {
+ id: user.id
+ },
+ {
+ relations: ['roles', 'roles.organization']
+ }
+ );
+ return {
+ statusCode: 200,
+ body: JSON.stringify(updated)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/me:
+ * get:
+ * description: Get information about the current user.
+ * tags:
+ * - Users
+ */
+export const me = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const result = await User.findOne(getUserId(event), {
+ relations: ['roles', 'roles.organization', 'apiKeys']
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/me/acceptTerms:
+ * post:
+ * description: Accept the latest terms of service.
+ * tags:
+ * - Users
+ */
+export const acceptTerms = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const user = await User.findOne(getUserId(event), {
+ relations: ['roles', 'roles.organization']
+ });
+ if (!user || !event.body) {
+ return NotFound;
+ }
+ user.dateAcceptedTerms = new Date();
+ user.acceptedTermsVersion = JSON.parse(event.body).version;
+ await user.save();
+ return {
+ statusCode: 200,
+ body: JSON.stringify(user)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users:
+ * get:
+ * description: List users.
+ * tags:
+ * - Users
+ *
+ */
+export const list = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) return Unauthorized;
+ await connectToDatabase();
+ const result = await User.find({
+ relations: ['roles', 'roles.organization']
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/search:
+ * post:
+ * description: List users.
+ * tags:
+ * - Users
+ */
+export const search = wrapHandler(async (event) => {
+ if (!isGlobalViewAdmin(event)) return Unauthorized;
+ await connectToDatabase(true);
+ const search = await validateBody(UserSearch, event.body);
+ const [result, count] = await search.getResults(event);
+ return {
+ statusCode: 200,
+ body: JSON.stringify({ result, count })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/regionId/{regionId}:
+ * get:
+ * description: List users with specific regionId.
+ * parameters:
+ * - in: path
+ * name: regionId
+ * description: User regionId
+ * tags:
+ * - Users
+ */
+export const getByRegionId = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const regionId = event.pathParameters?.regionId;
+ await connectToDatabase();
+ const result = await User.find({
+ where: { regionId: regionId },
+ relations: ['roles', 'roles.organization']
+ });
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /users/state/{state}:
+ * get:
+ * description: List users with specific state.
+ * parameters:
+ * - in: path
+ * name: state
+ * description: User state
+ * tags:
+ * - Users
+ */
+export const getByState = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+ const state = event.pathParameters?.state;
+ await connectToDatabase();
+ const result = await User.find({
+ where: { state: state },
+ relations: ['roles', 'roles.organization']
+ });
+ if (result) {
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+ return NotFound;
+});
+
+/**
+ * @swagger
+ *
+ * /users/register:
+ * post:
+ * description: New user registration.
+ * tags:
+ * - Users
+ */
+export const register = wrapHandler(async (event) => {
+ const body = await validateBody(NewUser, event.body);
+ const newUser = {
+ firstName: body.firstName,
+ lastName: body.lastName,
+ email: body.email.toLowerCase(),
+ userType: UserType.STANDARD,
+ state: body.state,
+ regionId: REGION_STATE_MAP[body.state],
+ invitePending: true
+ };
+ console.log(JSON.stringify(newUser));
+
+ await connectToDatabase();
+
+ // Check if user already exists
+ const userCheck = await User.findOne({
+ where: { email: newUser.email }
+ });
+
+ let id = '';
+ // Create if user does not exist
+ if (userCheck) {
+ console.log('User already exists.');
+ return {
+ statusCode: 422,
+ body: 'User email already exists. Registration failed.'
+ };
+ }
+
+ const createdUser = await User.create(newUser);
+ await User.save(createdUser);
+ id = createdUser.id;
+ const savedUser = await User.findOne(id, {
+ relations: ['roles', 'roles.organization']
+ });
+ if (!savedUser) {
+ return NotFound;
+ }
+ // Send email notification
+ await sendUserRegistrationEmail(
+ savedUser.email,
+ 'Crossfeed Registration Pending',
+ savedUser.firstName,
+ savedUser.lastName,
+ 'crossfeed_registration_notification.html'
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(savedUser)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/{id}/register/approve:
+ * put:
+ * description: Approve a particular users registration.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: User id
+ * tags:
+ * - Users
+ */
+export const registrationApproval = wrapHandler(async (event) => {
+ // Get the user id from the path
+ const userId = event.pathParameters?.userId;
+
+ // Confirm that the id is a valid UUID
+ if (!userId || !isUUID(userId)) {
+ return NotFound;
+ }
+
+ // Connect to the database
+ await connectToDatabase();
+
+ const user = await User.findOne(userId);
+ if (!user) {
+ return NotFound;
+ }
+
+ // Send email notification
+ await sendRegistrationApprovedEmail(
+ user.email,
+ 'Crossfeed Registration Approved',
+ user.firstName,
+ user.lastName,
+ 'crossfeed_approval_notification.html'
+ );
+
+ // TODO: Handle Response Output
+ return {
+ statusCode: 200,
+ body: 'User registration approved.'
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /users/{id}/register/deny:
+ * put:
+ * description: Deny a particular users registration.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: User id
+ * tags:
+ * - Users
+ */
+export const registrationDenial = wrapHandler(async (event) => {
+ // Get the user id from the path
+ const userId = event.pathParameters?.userId;
+
+ // Confirm that the id is a valid UUID
+ if (!userId || !isUUID(userId)) {
+ return NotFound;
+ }
+
+ // Connect to the database
+ await connectToDatabase();
+
+ const user = await User.findOne(userId);
+ if (!user) {
+ return NotFound;
+ }
+
+ await sendRegistrationDeniedEmail(
+ user.email,
+ 'Crossfeed Registration Denied',
+ user.firstName,
+ user.lastName,
+ 'crossfeed_denial_notification.html'
+ );
+
+ // TODO: Handle Response Output
+ return {
+ statusCode: 200,
+ body: 'User registration denied.'
+ };
+});
+
+//***************//
+// V2 Endpoints //
+//***************//
+
+/**
+ * @swagger
+ *
+ * /v2/users:
+ * get:
+ * description: List all users with query parameters.
+ * tags:
+ * - Users
+ * parameters:
+ * - in: query
+ * name: state
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ * - in: query
+ * name: regionId
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ * - in: query
+ * name: invitePending
+ * required: false
+ * schema:
+ * type: array
+ * items:
+ * type: string
+ *
+ */
+export const getAllV2 = wrapHandler(async (event) => {
+ if (!isRegionalAdmin(event)) return Unauthorized;
+
+ const filterParams = {};
+
+ if (event.query && event.query.state) {
+ filterParams['state'] = event.query.state;
+ }
+ if (event.query && event.query.regionId) {
+ filterParams['regionId'] = event.query.regionId;
+ }
+ if (event.query && event.query.invitePending) {
+ filterParams['invitePending'] = event.query.invitePending;
+ }
+
+ await connectToDatabase();
+ if (Object.entries(filterParams).length === 0) {
+ const result = await User.find({
+ relations: ['roles', 'roles.organization']
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ } else {
+ const result = await User.find({
+ where: filterParams,
+ relations: ['roles', 'roles.organization']
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(result)
+ };
+ }
+});
+
+/**
+ * @swagger
+ *
+ * /v2/users:
+ * post:
+ * description: Create a new user.
+ * tags:
+ * - Users
+ */
+export const inviteV2 = wrapHandler(async (event) => {
+ const body = await validateBody(NewUser, event.body);
+ // Invoker must be either an organization or global admin
+ if (body.organization) {
+ if (!isOrgAdmin(event, body.organization)) return Unauthorized;
+ } else {
+ if (!isGlobalWriteAdmin(event)) return Unauthorized;
+ }
+ if (!isGlobalWriteAdmin(event) && body.userType) {
+ // Non-global admins can't set userType
+ return Unauthorized;
+ }
+
+ await connectToDatabase();
+
+ body.email = body.email.toLowerCase();
+ const userEmail = body.email.toLowerCase();
+
+ const sendRegisterEmail = async (email: string) => {
+ const staging = process.env.NODE_ENV !== 'production';
+
+ await sendEmail(
+ email,
+ 'Crossfeed Registration',
+ `Hello,
+ Your Crossfeed registration is under review.
+ You will receive an email when your registration is approved.
+
+ Thank you!`
+ );
+ };
+
+ // Check if user already exists
+ let user = await User.findOne({
+ email: body.email
+ });
+
+ // Handle Organization assignment if provided
+ let organization: Organization | undefined;
+ if (body.organization) {
+ organization = await Organization.findOne(body.organization);
+ }
+
+ // Create user if not found
+ if (!user) {
+ // Create User object
+ user = await User.create({
+ invitePending: true,
+ ...body
+ });
+ // Save User to DB
+ await User.save(user);
+
+ // Send Notification Email to user
+ await sendRegisterEmail(userEmail);
+ } else if (!user.firstName && !user.lastName) {
+ // Only set the user first name and last name the first time the user is invited.
+ user.firstName = body.firstName;
+ user.lastName = body.lastName;
+ // Save User to DB
+ await User.save(user);
+ }
+
+ // Always update the userType, if specified in the request.
+ if (body.userType) {
+ user.userType = body.userType;
+ await User.save(user);
+ }
+
+ if (organization) {
+ // Create approved role if organization supplied
+ await Role.createQueryBuilder()
+ .insert()
+ .values({
+ user: user,
+ organization: { id: body.organization },
+ approved: true,
+ createdBy: { id: event.requestContext.authorizer!.id },
+ approvedBy: { id: event.requestContext.authorizer!.id },
+ role: body.organizationAdmin ? 'admin' : 'user'
+ })
+ .onConflict(
+ `
+ ("userId", "organizationId") DO UPDATE
+ SET "role" = excluded."role",
+ "approved" = excluded."approved",
+ "approvedById" = excluded."approvedById"
+ `
+ )
+ .execute();
+ }
+
+ const updated = await User.findOne(
+ {
+ id: user.id
+ },
+ {
+ relations: ['roles', 'roles.organization']
+ }
+ );
+ return {
+ statusCode: 200,
+ body: JSON.stringify(updated)
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /v2/users/{id}:
+ * put:
+ * description: Update a particular user.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: User id
+ * tags:
+ * - Users
+ */
+export const updateV2 = wrapHandler(async (event) => {
+ // Get the user id from the path
+ const userId = event.pathParameters?.userId;
+
+ // Confirm that the id is a valid UUID
+ if (!userId || !isUUID(userId)) {
+ return NotFound;
+ }
+
+ // Validate the body
+ const body = await validateBody(UpdateUser, event.body);
+
+ // Connect to the database
+ await connectToDatabase();
+
+ const user = await User.findOne(userId);
+ if (!user) {
+ return NotFound;
+ }
+
+ // Update the user
+ const updatedResp = await User.update(userId, body);
+
+ // Handle response
+ if (updatedResp) {
+ const updatedUser = await User.findOne(userId, {
+ relations: ['roles', 'roles.organization']
+ });
+ return {
+ statusCode: 200,
+ body: JSON.stringify(updatedUser)
+ };
+ }
+ return NotFound;
+});
diff --git a/backend/src/api/vulnerabilities.ts b/backend/src/api/vulnerabilities.ts
new file mode 100644
index 00000000..218df49b
--- /dev/null
+++ b/backend/src/api/vulnerabilities.ts
@@ -0,0 +1,379 @@
+import {
+ IsInt,
+ IsPositive,
+ IsString,
+ IsIn,
+ ValidateNested,
+ isUUID,
+ IsOptional,
+ IsObject,
+ IsUUID,
+ IsBoolean
+} from 'class-validator';
+import { Type } from 'class-transformer';
+import { Vulnerability, connectToDatabase, User } from '../models';
+import { validateBody, wrapHandler, NotFound } from './helpers';
+import { Column, SelectQueryBuilder } from 'typeorm';
+import {
+ getOrgMemberships,
+ getTagOrganizations,
+ isGlobalViewAdmin,
+ isGlobalWriteAdmin
+} from './auth';
+import S3Client from '../tasks/s3-client';
+import * as Papa from 'papaparse';
+
+const PAGE_SIZE = parseInt(process.env.PAGE_SIZE ?? '') || 25;
+
+class VulnerabilityFilters {
+ @IsUUID()
+ @IsOptional()
+ id?: string;
+
+ @IsString()
+ @IsOptional()
+ title?: string;
+
+ @IsString()
+ @IsOptional()
+ domain?: string;
+
+ @IsString()
+ @IsOptional()
+ severity?: string;
+
+ @IsString()
+ @IsOptional()
+ cpe?: string;
+
+ @IsString()
+ @IsOptional()
+ state?: string;
+
+ @IsString()
+ @IsOptional()
+ substate?: string;
+
+ @IsUUID()
+ @IsOptional()
+ organization?: string;
+
+ @IsUUID()
+ @IsOptional()
+ tag?: string;
+
+ @IsBoolean()
+ @IsOptional()
+ isKev?: boolean;
+}
+
+class VulnerabilitySearch {
+ @IsInt()
+ @IsPositive()
+ page: number = 1;
+
+ @IsString()
+ @IsIn([
+ 'title',
+ 'createdAt',
+ 'severity',
+ 'cvss',
+ 'state',
+ 'createdAt',
+ 'domain'
+ ])
+ @IsOptional()
+ sort: string = 'createdAt';
+
+ @IsString()
+ @IsIn(['ASC', 'DESC'])
+ order: 'ASC' | 'DESC' = 'DESC';
+
+ @Type(() => VulnerabilityFilters)
+ @ValidateNested()
+ @IsObject()
+ @IsOptional()
+ filters?: VulnerabilityFilters;
+
+ @IsInt()
+ @IsOptional()
+ // If set to -1, returns all results.
+ pageSize?: number;
+
+ @IsString()
+ @IsOptional()
+ @IsIn(['title'])
+ groupBy?: 'title';
+
+ async filterResultQueryset(qs: SelectQueryBuilder, event) {
+ if (this.filters?.id) {
+ qs.andWhere('vulnerability.id = :id', {
+ id: this.filters.id
+ });
+ }
+ if (this.filters?.title) {
+ qs.andWhere('vulnerability.title ILIKE :title', {
+ title: `%${this.filters.title}%`
+ });
+ }
+ if (this.filters?.domain) {
+ qs.andWhere('domain.name ILIKE :name', {
+ name: `%${this.filters.domain}%`
+ });
+ }
+ if (this.filters?.severity) {
+ qs.andWhere('vulnerability.severity=:severity', {
+ severity: this.filters.severity
+ });
+ }
+ if (this.filters?.cpe) {
+ qs.andWhere('vulnerability.cpe ILIKE :cpe', {
+ cpe: `%${this.filters.cpe}%`
+ });
+ }
+ if (this.filters?.state) {
+ qs.andWhere('vulnerability.state=:state', {
+ state: this.filters.state
+ });
+ }
+ if (this.filters?.substate) {
+ qs.andWhere('vulnerability.substate=:substate', {
+ substate: this.filters.substate
+ });
+ }
+ if (this.filters?.isKev || this.filters?.isKev === false) {
+ qs.andWhere('vulnerability.isKev=:isKev', {
+ isKev: this.filters.isKev
+ });
+ }
+ if (this.filters?.organization) {
+ qs.andWhere('organization.id = :org', {
+ org: this.filters.organization
+ });
+ }
+ if (this.filters?.tag) {
+ qs.andWhere('organization.id IN (:...orgs)', {
+ orgs: await getTagOrganizations(event, this.filters.tag)
+ });
+ }
+ return qs;
+ }
+
+ async getResults(event): Promise<[Vulnerability[], number]> {
+ const pageSize = this.pageSize || PAGE_SIZE;
+ const groupBy = this.groupBy;
+ const sort =
+ this.sort === 'domain'
+ ? 'domain.name'
+ : this.sort === 'severity'
+ ? 'vulnerability.cvss'
+ : `vulnerability.${this.sort}`;
+ let qs = Vulnerability.createQueryBuilder('vulnerability')
+ .leftJoinAndSelect('vulnerability.domain', 'domain')
+ .leftJoinAndSelect('domain.organization', 'organization')
+ .leftJoinAndSelect('vulnerability.service', 'service');
+
+ if (groupBy) {
+ qs = qs
+ .groupBy('title, cve, "isKev", description, severity')
+ .select([
+ 'title',
+ 'cve',
+ '"isKev"',
+ 'description',
+ 'severity',
+ 'count(*) as cnt'
+ ])
+ .orderBy('cnt', 'DESC');
+ } else {
+ qs = qs.orderBy(sort, this.order);
+ }
+
+ if (pageSize !== -1) {
+ qs = qs.skip(pageSize * (this.page - 1)).take(pageSize);
+ }
+
+ await this.filterResultQueryset(qs, event);
+ if (!isGlobalViewAdmin(event)) {
+ qs.andWhere('organization.id IN (:...orgs)', {
+ orgs: getOrgMemberships(event)
+ });
+ }
+
+ if (groupBy) {
+ const results = await qs.getRawMany();
+ // TODO: allow pagination of grouped-by results. For now, we just
+ // return one page max of grouped-by results.
+ return [results, results.length];
+ } else {
+ return qs.getManyAndCount();
+ }
+ }
+}
+
+/**
+ * @swagger
+ *
+ * /vulnerabilities/{id}:
+ * put:
+ * description: Update a particular vulnerability.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Vulnerability id
+ * tags:
+ * - Vulnerabilities
+ */
+export const update = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const id = event.pathParameters?.vulnerabilityId;
+ if (!isUUID(id) || !event.body) {
+ return NotFound;
+ }
+ const vuln = await Vulnerability.findOne(
+ { id },
+ { relations: ['domain', 'domain.organization'] }
+ );
+ let isAuthorized = false;
+ if (vuln && vuln.domain.organization && vuln.domain.organization.id) {
+ isAuthorized =
+ isGlobalWriteAdmin(event) ||
+ getOrgMemberships(event).includes(vuln.domain.organization.id);
+ }
+ if (vuln && isAuthorized) {
+ const body = JSON.parse(event.body);
+ const user = await User.findOne({
+ id: event.requestContext.authorizer!.id
+ });
+ if (body.substate) {
+ vuln.setState(body.substate, false, user ? user : null);
+ }
+ if (body.notes) vuln.notes = body.notes;
+ if (body.comment) {
+ vuln.actions.unshift({
+ type: 'comment',
+ automatic: false,
+ userId: user ? user.id : null,
+ userName: user ? user.fullName : null,
+ date: new Date(),
+ value: body.comment
+ });
+ }
+ vuln.save();
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify(vuln)
+ };
+ }
+ return {
+ statusCode: 404,
+ body: ''
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /vulnerabilities/search:
+ * post:
+ * description: List vulnerabilities by specifying a filter.
+ * tags:
+ * - Vulnerabilities
+ */
+export const list = wrapHandler(async (event) => {
+ await connectToDatabase(true);
+ const search = await validateBody(VulnerabilitySearch, event.body);
+ const [result, count] = await search.getResults(event);
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ result,
+ count
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /vulnerabilities/export:
+ * post:
+ * description: Export vulnerabilities to a CSV file by specifying a filter.
+ * tags:
+ * - Vulnerabilities
+ */
+export const export_ = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const search = await validateBody(VulnerabilitySearch, event.body);
+ const [result, count] = await search.getResults(event);
+ const client = new S3Client();
+ const url = await client.saveCSV(
+ Papa.unparse({
+ fields: [
+ 'organization',
+ 'domain',
+ 'title',
+ 'description',
+ 'cve',
+ 'isKev',
+ 'cwe',
+ 'cpe',
+ 'description',
+ 'cvss',
+ 'severity',
+ 'state',
+ 'substate',
+ 'lastSeen',
+ 'createdAt',
+ 'id'
+ ],
+ data: result.map((e) => ({
+ ...e,
+ organization: e.domain?.organization?.name,
+ domain: e.domain?.name
+ }))
+ }),
+ 'vulnerabilities'
+ );
+
+ return {
+ statusCode: 200,
+ body: JSON.stringify({
+ url
+ })
+ };
+});
+
+/**
+ * @swagger
+ *
+ * /vulnerabilities/{id}:
+ * get:
+ * description: Get information about a particular vulnerability.
+ * parameters:
+ * - in: path
+ * name: id
+ * description: Vulnerability id
+ * tags:
+ * - Vulnerabilities
+ */
+export const get = wrapHandler(async (event) => {
+ await connectToDatabase();
+ const id = event.pathParameters?.vulnerabilityId;
+ if (!isUUID(id)) {
+ return NotFound;
+ }
+
+ // Need to use QueryBuilder because typeorm doesn't support nested
+ // relations filtering -- see https://github.com/typeorm/typeorm/issues/3890
+ const search = new VulnerabilitySearch();
+ search.filters = new VulnerabilityFilters();
+ search.filters.id = id;
+ const [result] = await search.getResults(event);
+
+ return {
+ statusCode: result.length ? 200 : 404,
+ body: result.length ? JSON.stringify(result[0]) : ''
+ };
+});
diff --git a/backend/src/models/api-key.ts b/backend/src/models/api-key.ts
new file mode 100644
index 00000000..de2baf5e
--- /dev/null
+++ b/backend/src/models/api-key.ts
@@ -0,0 +1,44 @@
+import {
+ Entity,
+ Column,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ ManyToOne
+} from 'typeorm';
+import { User } from './';
+
+@Entity()
+export class ApiKey extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @ManyToOne((type) => User, (user) => user.apiKeys, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ user: User;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ lastUsed: Date | null;
+
+ @Column({
+ type: 'text'
+ })
+ hashedKey: string;
+
+ @Column({
+ type: 'text'
+ })
+ lastFour: string;
+}
diff --git a/backend/src/models/connection.ts b/backend/src/models/connection.ts
new file mode 100644
index 00000000..ec8c8cd3
--- /dev/null
+++ b/backend/src/models/connection.ts
@@ -0,0 +1,59 @@
+import { createConnection, Connection } from 'typeorm';
+import {
+ Domain,
+ Service,
+ Vulnerability,
+ Scan,
+ Organization,
+ User,
+ Role,
+ ScanTask,
+ Webpage,
+ ApiKey,
+ SavedSearch,
+ OrganizationTag,
+ Cpe,
+ Cve
+} from '.';
+
+let connection: Connection | null = null;
+
+const connectDb = async (logging?: boolean) => {
+ const connection = createConnection({
+ type: 'postgres',
+ host: process.env.DB_HOST,
+ port: parseInt(process.env.DB_PORT ?? ''),
+ username: process.env.DB_USERNAME,
+ password: process.env.DB_PASSWORD,
+ database: process.env.DB_NAME,
+ entities: [
+ Cpe,
+ Cve,
+ Domain,
+ Service,
+ Vulnerability,
+ Scan,
+ Organization,
+ User,
+ Role,
+ ScanTask,
+ Webpage,
+ ApiKey,
+ SavedSearch,
+ OrganizationTag
+ ],
+ synchronize: false,
+ name: 'default',
+ dropSchema: false,
+ logging: logging ?? false,
+ cache: true
+ });
+ return connection;
+};
+
+export const connectToDatabase = async (logging?: boolean) => {
+ if (!connection?.isConnected) {
+ connection = await connectDb(logging);
+ }
+ return connection;
+};
diff --git a/backend/src/models/cpe.ts b/backend/src/models/cpe.ts
new file mode 100644
index 00000000..ac18be70
--- /dev/null
+++ b/backend/src/models/cpe.ts
@@ -0,0 +1,31 @@
+import {
+ Entity,
+ PrimaryGeneratedColumn,
+ Column,
+ ManyToMany,
+ BaseEntity,
+ Unique
+} from 'typeorm';
+import { Cve } from './cve';
+
+@Entity()
+@Unique(['name', 'version', 'vendor'])
+export class Cpe extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @Column()
+ name: string;
+
+ @Column()
+ version: string;
+
+ @Column()
+ vendor: string;
+
+ @Column()
+ lastSeenAt: Date;
+
+ @ManyToMany(() => Cve, (cve) => cve.cpes)
+ cves: Cve[];
+}
diff --git a/backend/src/models/cve.ts b/backend/src/models/cve.ts
new file mode 100644
index 00000000..4eda5fd2
--- /dev/null
+++ b/backend/src/models/cve.ts
@@ -0,0 +1,117 @@
+import {
+ Entity,
+ PrimaryGeneratedColumn,
+ Column,
+ ManyToMany,
+ BaseEntity,
+ JoinTable,
+ Unique
+} from 'typeorm';
+import { Cpe } from './cpe';
+
+//TODO: Refactor column names to camelCase to match the rest of the codebase?
+@Entity()
+@Unique(['name'])
+export class Cve extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @Column({ nullable: true })
+ name: string;
+
+ @Column({ nullable: true })
+ publishedAt: Date;
+
+ @Column({ nullable: true })
+ modifiedAt: Date;
+
+ @Column({ nullable: true })
+ status: string;
+
+ @Column({ nullable: true })
+ description: string;
+
+ @Column({ nullable: true })
+ cvssV2Source: string;
+
+ @Column({ nullable: true })
+ cvssV2Type: string;
+
+ @Column({ nullable: true })
+ cvssV2Version: string;
+
+ @Column({ nullable: true })
+ cvssV2VectorString: string;
+
+ @Column({ nullable: true })
+ cvssV2BaseScore: string;
+
+ @Column({ nullable: true })
+ cvssV2BaseSeverity: string;
+
+ @Column({ nullable: true })
+ cvssV2ExploitabilityScore: string;
+
+ @Column({ nullable: true })
+ cvssV2ImpactScore: string;
+
+ @Column({ nullable: true })
+ cvssV3Source: string;
+
+ @Column({ nullable: true })
+ cvssV3Type: string;
+
+ @Column({ nullable: true })
+ cvssV3Version: string;
+
+ @Column({ nullable: true })
+ cvssV3VectorString: string;
+
+ @Column({ nullable: true })
+ cvssV3BaseScore: string;
+
+ @Column({ nullable: true })
+ cvssV3BaseSeverity: string;
+
+ @Column({ nullable: true })
+ cvssV3ExploitabilityScore: string;
+
+ @Column({ nullable: true })
+ cvssV3ImpactScore: string;
+
+ @Column({ nullable: true })
+ cvssV4Source: string;
+
+ @Column({ nullable: true })
+ cvssV4Type: string;
+
+ @Column({ nullable: true })
+ cvssV4Version: string;
+
+ @Column({ nullable: true })
+ cvssV4VectorString: string;
+
+ @Column({ nullable: true })
+ cvssV4BaseScore: string;
+
+ @Column({ nullable: true })
+ cvssV4BaseSeverity: string;
+
+ @Column({ nullable: true })
+ cvssV4ExploitabilityScore: string;
+
+ @Column({ nullable: true })
+ cvssV4ImpactScore: string;
+
+ @Column('simple-array', { nullable: true })
+ weaknesses: string[];
+
+ @Column('simple-array', { nullable: true })
+ references: string[];
+
+ @ManyToMany(() => Cpe, (cpe) => cpe.cves, {
+ cascade: true
+ })
+ @JoinTable()
+ cpes: Cpe[];
+}
diff --git a/backend/src/models/domain.ts b/backend/src/models/domain.ts
new file mode 100644
index 00000000..2a6be83c
--- /dev/null
+++ b/backend/src/models/domain.ts
@@ -0,0 +1,191 @@
+import {
+ Entity,
+ Index,
+ Column,
+ OneToMany,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ BeforeInsert,
+ ManyToOne
+} from 'typeorm';
+import { Service } from './service';
+import { Organization } from './organization';
+import { Vulnerability } from './vulnerability';
+import { Scan } from './scan';
+import { Webpage } from './webpage';
+
+@Entity()
+@Index(['name', 'organization'], { unique: true })
+export class Domain extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ /** When this model was last synced with Elasticsearch. */
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ syncedAt: Date | null;
+
+ @Column({
+ nullable: true
+ })
+ ip: string;
+
+ /** Associated root domain that led to the discovery of this domain. */
+ @Column({
+ nullable: true
+ })
+ fromRootDomain: string;
+
+ /** Scan that discovered this domain (findomain, amass) */
+ @Column({
+ nullable: true
+ })
+ subdomainSource: string;
+
+ /** Set to true if the domain only has an associated IP address, but not a domain name. In this case, the `name` field is set to the IP address. */
+ @Column({
+ nullable: true,
+ default: false
+ })
+ ipOnly: boolean;
+
+ @ManyToOne((type) => Scan, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ discoveredBy: Scan;
+
+ @Column({
+ length: 512
+ })
+ reverseName: string;
+
+ @Column({
+ length: 512
+ })
+ name: string;
+
+ @OneToMany((type) => Service, (service) => service.domain)
+ services: Service[];
+
+ @OneToMany((type) => Vulnerability, (vulnerability) => vulnerability.domain)
+ vulnerabilities: Vulnerability[];
+
+ @OneToMany((type) => Webpage, (webpage) => webpage.domain)
+ webpages: Service[];
+
+ @ManyToOne((type) => Organization, { onDelete: 'CASCADE', nullable: false })
+ organization: Organization;
+
+ @Column({
+ length: 512,
+ nullable: true,
+ type: 'varchar'
+ })
+ screenshot: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'varchar'
+ })
+ country: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'varchar'
+ })
+ asn: string | null;
+
+ @Column({
+ default: false
+ })
+ cloudHosted: boolean;
+
+ /** SSL Certificate information */
+ @Column({
+ type: 'jsonb',
+ nullable: true
+ })
+ ssl: {
+ issuerOrg?: string;
+ issuerCN?: string;
+ validFrom?: string;
+ validTo?: string;
+ protocol?: string;
+ altNames?: string[];
+ bits?: string;
+ fingerprint?: string;
+ valid?: boolean;
+ } | null;
+
+ /** Censys Certificates results */
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ censysCertificatesResults: {
+ [x: string]: any;
+ };
+
+ @BeforeInsert()
+ setLowerCase() {
+ this.name = this.name.toLowerCase();
+ }
+
+ @BeforeInsert()
+ setReverseName() {
+ this.reverseName = this.name.split('.').reverse().join('.');
+ }
+
+ // Trustymail results
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ trustymailResults: {
+ updatedAt: 'timestamp';
+ Domain: string;
+ 'Base Domain': string;
+ Live: boolean;
+ 'MX Record': boolean;
+ 'MX Record DNSSEC': string;
+ 'Mail Servers': string[];
+ 'Mail Server Ports Tested': number[];
+ 'Domain Supports SMTP Results': string[];
+ 'Domain Supports SMTP': string;
+ 'Domain Supports STARTTLS Results': string[];
+ 'Domain Supports STARTTLS': string;
+ 'SPF Record': boolean;
+ 'SPF Record DNSSEC': string;
+ 'Valid SPF': boolean;
+ 'SPF Results': string[];
+ 'DMARC Record': boolean;
+ 'DMARC Record DNSSEC': string;
+ 'Valid DMARC': boolean;
+ 'DMARC Results': string[];
+ 'DMARC Record on Base Domain': boolean;
+ 'DMARC Record on Base Domain DNSSEC': string;
+ 'Valid DMARC Record on Base Domain': boolean;
+ 'DMARC Results on Base Domain': string[];
+ 'DMARC Policy': string;
+ 'DMARC Subdomain Policy': string;
+ 'DMARC Policy Percentage': number;
+ 'DMARC Aggregate Report URIs': string[];
+ 'DMARC Forensic Report URIs': string[];
+ 'DMARC Has Aggregate Report URI': boolean;
+ 'DMARC Has Forensic Report URI': boolean;
+ 'DMARC Reporting Address Acceptance Error': boolean;
+ 'Syntax Errors': string[];
+ 'Debug Info': string[];
+ } | null;
+}
diff --git a/backend/src/models/generated/censysCertificates.ts b/backend/src/models/generated/censysCertificates.ts
new file mode 100644
index 00000000..07cc4fac
--- /dev/null
+++ b/backend/src/models/generated/censysCertificates.ts
@@ -0,0 +1,2109 @@
+/* tslint:disable */
+/**
+ * This file was automatically generated by json-schema-to-typescript.
+ * DO NOT MODIFY IT BY HAND. Instead, run "npm run codegen" to regenerate this file.
+ */
+
+export interface CensysCertificatesData {
+ validation?: {
+ nss?: {
+ paths?: {
+ path?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * True if the certificate is explicitly blacklisted by some method than OneCRL/CRLSet. For example, a set of certificates revoked by Cloudflare are blacklisted by SPKI hash in Chrome.
+ */
+ blacklisted?: boolean;
+ /**
+ * True if now or at some point in the past there existed a path from the certificate to the root store.
+ */
+ had_trusted_path?: boolean;
+ /**
+ * True if the certificate is explicitly whitelisted, e.g. the set of trusted WoSign certificates Apple uses.
+ */
+ whitelisted?: boolean;
+ /**
+ * True if the certificate is in the revocation set (e.g. OneCRL) associated with this root store.
+ */
+ in_revocation_set?: boolean;
+ /**
+ * True if the certificate is valid now or was ever valid in the past.
+ */
+ was_valid?: boolean;
+ /**
+ * ((has_trusted_path && !revoked && !blacklisted) || whitelisted) && !expired
+ */
+ valid?: boolean;
+ parents?: string;
+ /**
+ * True if there exists a path from the certificate to the root store.
+ */
+ trusted_path?: boolean;
+ /**
+ * Indicates if the certificate is a root, intermediate, or leaf.
+ */
+ type?: string;
+ [k: string]: unknown;
+ };
+ google_ct_primary?: {
+ paths?: {
+ path?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * True if the certificate is explicitly blacklisted by some method than OneCRL/CRLSet. For example, a set of certificates revoked by Cloudflare are blacklisted by SPKI hash in Chrome.
+ */
+ blacklisted?: boolean;
+ /**
+ * True if now or at some point in the past there existed a path from the certificate to the root store.
+ */
+ had_trusted_path?: boolean;
+ /**
+ * True if the certificate is explicitly whitelisted, e.g. the set of trusted WoSign certificates Apple uses.
+ */
+ whitelisted?: boolean;
+ /**
+ * True if the certificate is in the revocation set (e.g. OneCRL) associated with this root store.
+ */
+ in_revocation_set?: boolean;
+ /**
+ * True if the certificate is valid now or was ever valid in the past.
+ */
+ was_valid?: boolean;
+ /**
+ * ((has_trusted_path && !revoked && !blacklisted) || whitelisted) && !expired
+ */
+ valid?: boolean;
+ parents?: string;
+ /**
+ * True if there exists a path from the certificate to the root store.
+ */
+ trusted_path?: boolean;
+ /**
+ * Indicates if the certificate is a root, intermediate, or leaf.
+ */
+ type?: string;
+ [k: string]: unknown;
+ };
+ apple?: {
+ paths?: {
+ path?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * True if the certificate is explicitly blacklisted by some method than OneCRL/CRLSet. For example, a set of certificates revoked by Cloudflare are blacklisted by SPKI hash in Chrome.
+ */
+ blacklisted?: boolean;
+ /**
+ * True if now or at some point in the past there existed a path from the certificate to the root store.
+ */
+ had_trusted_path?: boolean;
+ /**
+ * True if the certificate is explicitly whitelisted, e.g. the set of trusted WoSign certificates Apple uses.
+ */
+ whitelisted?: boolean;
+ /**
+ * True if the certificate is in the revocation set (e.g. OneCRL) associated with this root store.
+ */
+ in_revocation_set?: boolean;
+ /**
+ * True if the certificate is valid now or was ever valid in the past.
+ */
+ was_valid?: boolean;
+ /**
+ * ((has_trusted_path && !revoked && !blacklisted) || whitelisted) && !expired
+ */
+ valid?: boolean;
+ parents?: string;
+ /**
+ * True if there exists a path from the certificate to the root store.
+ */
+ trusted_path?: boolean;
+ /**
+ * Indicates if the certificate is a root, intermediate, or leaf.
+ */
+ type?: string;
+ [k: string]: unknown;
+ };
+ microsoft?: {
+ paths?: {
+ path?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * True if the certificate is explicitly blacklisted by some method than OneCRL/CRLSet. For example, a set of certificates revoked by Cloudflare are blacklisted by SPKI hash in Chrome.
+ */
+ blacklisted?: boolean;
+ /**
+ * True if now or at some point in the past there existed a path from the certificate to the root store.
+ */
+ had_trusted_path?: boolean;
+ /**
+ * True if the certificate is explicitly whitelisted, e.g. the set of trusted WoSign certificates Apple uses.
+ */
+ whitelisted?: boolean;
+ /**
+ * True if the certificate is in the revocation set (e.g. OneCRL) associated with this root store.
+ */
+ in_revocation_set?: boolean;
+ /**
+ * True if the certificate is valid now or was ever valid in the past.
+ */
+ was_valid?: boolean;
+ /**
+ * ((has_trusted_path && !revoked && !blacklisted) || whitelisted) && !expired
+ */
+ valid?: boolean;
+ parents?: string;
+ /**
+ * True if there exists a path from the certificate to the root store.
+ */
+ trusted_path?: boolean;
+ /**
+ * Indicates if the certificate is a root, intermediate, or leaf.
+ */
+ type?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ parent_spki_subject_fingerprint?: string;
+ tags?: string;
+ added_at?: string;
+ fingerprint_sha256?: string;
+ raw?: string;
+ parents?: string;
+ zlint?: {
+ version?: string;
+ errors_present?: boolean;
+ fatals_present?: boolean;
+ warnings_present?: boolean;
+ lints?: {
+ e_name_constraint_empty?: string;
+ e_ev_valid_time_too_long?: string;
+ e_sub_ca_must_not_contain_any_policy?: string;
+ e_root_ca_extended_key_usage_present?: string;
+ e_ext_ian_uri_format_invalid?: string;
+ e_rsa_mod_less_than_2048_bits?: string;
+ e_ext_san_missing?: string;
+ e_sub_cert_cert_policy_empty?: string;
+ e_sub_ca_crl_distribution_points_does_not_contain_url?: string;
+ e_sub_cert_postal_code_must_not_appear?: string;
+ e_ext_cert_policy_disallowed_any_policy_qualifier?: string;
+ e_ext_san_not_critical_without_subject?: string;
+ e_sub_ca_crl_distribution_points_missing?: string;
+ e_cert_policy_ov_requires_country?: string;
+ w_name_constraint_on_x400?: string;
+ w_multiple_subject_rdn?: string;
+ e_ian_dns_name_includes_null_char?: string;
+ e_ext_name_constraints_not_in_ca?: string;
+ e_subject_locality_name_max_length?: string;
+ n_contains_redacted_dnsname?: string;
+ e_international_dns_name_not_unicode?: string;
+ e_sub_cert_locality_name_must_not_appear?: string;
+ w_ext_cert_policy_contains_noticeref?: string;
+ e_sub_cert_country_name_must_appear?: string;
+ e_ext_key_usage_cert_sign_without_ca?: string;
+ w_root_ca_basic_constraints_path_len_constraint_field_present?: string;
+ e_cab_dv_conflicts_with_street?: string;
+ e_ext_subject_key_identifier_missing_ca?: string;
+ e_sub_cert_aia_marked_critical?: string;
+ w_sub_cert_aia_does_not_contain_issuing_ca_url?: string;
+ e_san_dns_name_includes_null_char?: string;
+ e_subject_common_name_max_length?: string;
+ e_ext_key_usage_without_bits?: string;
+ e_utc_time_not_in_zulu?: string;
+ e_ext_freshest_crl_marked_critical?: string;
+ e_international_dns_name_not_nfkc?: string;
+ e_ext_san_empty_name?: string;
+ e_sub_cert_key_usage_cert_sign_bit_set?: string;
+ w_ext_san_critical_with_subject_dn?: string;
+ w_sub_ca_aia_does_not_contain_issuing_ca_url?: string;
+ e_subject_state_name_max_length?: string;
+ w_san_iana_pub_suffix_empty?: string;
+ e_ext_authority_key_identifier_missing?: string;
+ e_ext_san_contains_reserved_ip?: string;
+ e_ext_san_directory_name_present?: string;
+ e_distribution_point_incomplete?: string;
+ e_dsa_params_missing?: string;
+ e_dnsname_underscore_in_sld?: string;
+ e_cab_dv_conflicts_with_province?: string;
+ e_ian_wildcard_not_first?: string;
+ n_ca_digital_signature_not_set?: string;
+ e_dnsname_not_valid_tld?: string;
+ e_issuer_field_empty?: string;
+ e_sub_ca_crl_distribution_points_marked_critical?: string;
+ e_cab_dv_conflicts_with_org?: string;
+ e_ca_key_usage_missing?: string;
+ e_ext_san_uniform_resource_identifier_present?: string;
+ e_ext_subject_directory_attr_critical?: string;
+ e_name_constraint_maximum_not_absent?: string;
+ e_cert_policy_iv_requires_country?: string;
+ e_cab_dv_conflicts_with_postal?: string;
+ e_inhibit_any_policy_not_critical?: string;
+ e_ev_organization_name_missing?: string;
+ e_public_key_type_not_allowed?: string;
+ e_old_sub_ca_rsa_mod_less_than_1024_bits?: string;
+ e_ext_san_uri_not_ia5?: string;
+ e_sub_cert_key_usage_crl_sign_bit_set?: string;
+ e_ext_policy_constraints_not_critical?: string;
+ e_subject_country_not_iso?: string;
+ e_signature_algorithm_not_supported?: string;
+ e_cab_iv_requires_personal_name?: string;
+ e_san_dns_name_starts_with_period?: string;
+ e_ext_policy_map_any_policy?: string;
+ e_subject_not_dn?: string;
+ e_ext_policy_constraints_empty?: string;
+ e_san_bare_wildcard?: string;
+ e_ext_san_uri_host_not_fqdn_or_ip?: string;
+ e_ian_dns_name_starts_with_period?: string;
+ e_ca_key_usage_not_critical?: string;
+ w_root_ca_contains_cert_policy?: string;
+ w_sub_cert_certificate_policies_marked_critical?: string;
+ w_name_constraint_on_edi_party_name?: string;
+ e_ext_san_edi_party_name_present?: string;
+ e_generalized_time_includes_fraction_seconds?: string;
+ e_dnsname_left_label_wildcard_correct?: string;
+ n_subject_common_name_included?: string;
+ w_multiple_issuer_rdn?: string;
+ e_subject_empty_without_san?: string;
+ w_sub_ca_name_constraints_not_critical?: string;
+ e_dsa_correct_order_in_subgroup?: string;
+ w_dnsname_underscore_in_trd?: string;
+ e_sub_cert_aia_missing?: string;
+ e_root_ca_key_usage_present?: string;
+ e_utc_time_does_not_include_seconds?: string;
+ w_name_constraint_on_registered_id?: string;
+ e_serial_number_longer_than_20_octets?: string;
+ e_sub_cert_valid_time_too_long?: string;
+ w_ext_key_usage_not_critical?: string;
+ e_sub_cert_crl_distribution_points_marked_critical?: string;
+ w_ext_aia_access_location_missing?: string;
+ e_generalized_time_not_in_zulu?: string;
+ e_ca_key_cert_sign_not_set?: string;
+ e_dsa_improper_modulus_or_divisor_size?: string;
+ e_serial_number_not_positive?: string;
+ w_ext_policy_map_not_in_cert_policy?: string;
+ e_sub_cert_or_sub_ca_using_sha1?: string;
+ e_ext_name_constraints_not_critical?: string;
+ e_validity_time_not_positive?: string;
+ e_ext_san_dns_name_too_long?: string;
+ e_sub_cert_eku_missing?: string;
+ w_eku_critical_improperly?: string;
+ w_subject_dn_trailing_whitespace?: string;
+ e_dnsname_empty_label?: string;
+ w_sub_cert_sha1_expiration_too_long?: string;
+ e_sub_cert_not_is_ca?: string;
+ e_name_constraint_minimum_non_zero?: string;
+ e_ev_locality_name_missing?: string;
+ e_ext_ian_uri_host_not_fqdn_or_ip?: string;
+ e_cert_unique_identifier_version_not_2_or_3?: string;
+ e_generalized_time_does_not_include_seconds?: string;
+ e_ev_country_name_missing?: string;
+ e_cab_dv_conflicts_with_locality?: string;
+ e_path_len_constraint_improperly_included?: string;
+ e_sub_ca_eku_name_constraints?: string;
+ e_sub_ca_aia_marked_critical?: string;
+ w_rsa_mod_not_odd?: string;
+ e_sub_cert_aia_does_not_contain_ocsp_url?: string;
+ e_ev_business_category_missing?: string;
+ e_sub_ca_eku_missing?: string;
+ e_sub_cert_locality_name_must_appear?: string;
+ e_sub_cert_given_name_surname_contains_correct_policy?: string;
+ e_cab_ov_requires_org?: string;
+ e_sub_cert_street_address_should_not_exist?: string;
+ e_ext_aia_marked_critical?: string;
+ e_sub_ca_certificate_policies_missing?: string;
+ w_issuer_dn_leading_whitespace?: string;
+ w_ext_policy_map_not_critical?: string;
+ e_ext_authority_key_identifier_no_key_identifier?: string;
+ e_cert_policy_ov_requires_province_or_locality?: string;
+ e_ec_improper_curves?: string;
+ e_dnsname_wildcard_only_in_left_label?: string;
+ e_rsa_public_exponent_too_small?: string;
+ w_ext_crl_distribution_marked_critical?: string;
+ e_rsa_exp_negative?: string;
+ e_subject_common_name_not_from_san?: string;
+ e_subject_organizational_unit_name_max_length?: string;
+ n_sub_ca_eku_not_technically_constrained?: string;
+ e_ca_subject_field_empty?: string;
+ e_root_ca_key_usage_must_be_critical?: string;
+ e_ext_ian_dns_not_ia5_string?: string;
+ w_ext_cert_policy_explicit_text_includes_control?: string;
+ w_ext_ian_critical?: string;
+ e_sub_cert_certificate_policies_missing?: string;
+ w_rsa_mod_factors_smaller_than_752?: string;
+ e_ian_bare_wildcard?: string;
+ w_serial_number_low_entropy?: string;
+ e_ext_san_no_entries?: string;
+ e_sub_ca_aia_does_not_contain_ocsp_url?: string;
+ w_sub_ca_eku_critical?: string;
+ w_ext_subject_key_identifier_missing_sub_cert?: string;
+ e_rsa_no_public_key?: string;
+ e_dnsname_hyphen_in_sld?: string;
+ e_cert_policy_iv_requires_province_or_locality?: string;
+ e_subject_contains_noninformational_value?: string;
+ w_dnsname_wildcard_left_of_public_suffix?: string;
+ e_ext_ian_uri_not_ia5?: string;
+ w_sub_ca_certificate_policies_marked_critical?: string;
+ e_sub_ca_aia_missing?: string;
+ e_basic_constraints_not_critical?: string;
+ w_rsa_public_exponent_not_in_range?: string;
+ e_ext_cert_policy_duplicate?: string;
+ e_ext_cert_policy_explicit_text_too_long?: string;
+ w_issuer_dn_trailing_whitespace?: string;
+ e_ext_san_dns_not_ia5_string?: string;
+ e_sub_cert_province_must_not_appear?: string;
+ e_subject_contains_reserved_ip?: string;
+ e_dsa_shorter_than_2048_bits?: string;
+ e_dnsname_bad_character_in_label?: string;
+ e_san_wildcard_not_first?: string;
+ e_ext_ian_empty_name?: string;
+ w_ext_cert_policy_explicit_text_not_nfc?: string;
+ e_ca_country_name_invalid?: string;
+ e_ca_country_name_missing?: string;
+ w_sub_cert_eku_extra_values?: string;
+ e_dnsname_contains_bare_iana_suffix?: string;
+ w_ian_iana_pub_suffix_empty?: string;
+ e_old_root_ca_rsa_mod_less_than_2048_bits?: string;
+ e_ca_is_ca?: string;
+ e_sub_cert_province_must_appear?: string;
+ e_ca_common_name_missing?: string;
+ e_path_len_constraint_zero_or_less?: string;
+ e_ext_san_uri_relative?: string;
+ e_ext_subject_key_identifier_critical?: string;
+ e_sub_cert_eku_server_auth_client_auth_missing?: string;
+ e_wrong_time_format_pre2050?: string;
+ e_dsa_unique_correct_representation?: string;
+ e_ext_ian_uri_relative?: string;
+ e_ext_cert_policy_explicit_text_ia5_string?: string;
+ w_distribution_point_missing_ldap_or_uri?: string;
+ e_subject_info_access_marked_critical?: string;
+ e_ext_san_other_name_present?: string;
+ e_ca_crl_sign_not_set?: string;
+ e_ev_serial_number_missing?: string;
+ e_ext_san_registered_id_present?: string;
+ e_ext_san_uri_format_invalid?: string;
+ e_ext_ian_space_dns_name?: string;
+ e_dnsname_label_too_long?: string;
+ e_ext_san_rfc822_name_present?: string;
+ e_sub_cert_crl_distribution_points_does_not_contain_url?: string;
+ e_ca_organization_name_missing?: string;
+ w_subject_dn_leading_whitespace?: string;
+ e_ext_ian_rfc822_format_invalid?: string;
+ e_subject_organization_name_max_length?: string;
+ e_cert_contains_unique_identifier?: string;
+ e_ext_duplicate_extension?: string;
+ e_invalid_certificate_version?: string;
+ e_ext_ian_no_entries?: string;
+ e_cert_extensions_version_not_3?: string;
+ e_old_sub_cert_rsa_mod_less_than_1024_bits?: string;
+ e_ext_san_space_dns_name?: string;
+ e_ext_authority_key_identifier_critical?: string;
+ e_ext_san_rfc822_format_invalid?: string;
+ e_rsa_public_exponent_not_odd?: string;
+ w_ext_cert_policy_explicit_text_not_utf8?: string;
+ [k: string]: unknown;
+ };
+ notices_present?: boolean;
+ [k: string]: unknown;
+ };
+ precert?: boolean;
+ ct?: {
+ certificatetransparency_cn_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_argon_2017?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ sheca_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_nessie_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_nessie_2018?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_pilot?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_xenon_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ comodo_mammoth?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ akamai_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ behind_the_sofa?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_argon_2018?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_argon_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wosign_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_xenon_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_faux?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ comodo_dodo?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ venafi_api_ctlog?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wosign_ctlog2?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ izenpe_eus_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wotrus_ctlog?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ gdca_log2?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wosign_ctlog3?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_oak_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_golem?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_skydiver?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_oak_2022?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_aviator?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ gdca_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_rocketeer?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ izenpe_com_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cloudflare_nimbus_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cloudflare_nimbus_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ symantec_ws_deneb?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_daedalus?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_xenon_2018?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ izenpe_com_pilot?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_yeti_2022?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_xenon_2022?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_yeti_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_yeti_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ symantec_ws_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_argon_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_nessie_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_nessie_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_nessie_2022?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_oak?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_xenon_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ comodo_sabre?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_argon_2021?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ gdca_ctlog?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ nordu_ct_flimsy?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_testtube?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_yeti_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_yeti_2018?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ nordu_ct_plausible?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ startssl_ct?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ symantec_ws_vega?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wotrus_ctlog3?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ ctlogs_alpha?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ wosign_ctlog?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cloudflare_nimbus_2017?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ symantec_ws_sirius?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_icarus?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_ct1?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_oak_2020?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ gdca_log?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ digicert_ct2?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_oak_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cloudflare_nimbus_2018?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cloudflare_nimbus_2019?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ cnnic_ctserver?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ certly_log?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ sheca_ctlog?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_clicky?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ google_submariner?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ venafi_api_ctlog_gen2?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ letsencrypt_ct_birch?: {
+ index?: string;
+ censys_to_ct_at?: string;
+ ct_to_censys_at?: string;
+ added_to_ct_at?: string;
+ sct?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ /**
+ * The certificate's public key. Only one of the *_public_key fields will be set.
+ */
+ subject_key_info?: {
+ /**
+ * The SHA2-256 digest calculated over the certificate's DER-encoded SubjectPublicKeyInfo field.
+ */
+ fingerprint_sha256?: string;
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_public_key?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Identifies the type of key and any relevant parameters.
+ */
+ key_algorithm?: {
+ /**
+ * OID of the public key on the certificate. This is helpful when an unknown type is present. This field is reserved and not currently populated.
+ */
+ oid?: string;
+ /**
+ * Name of public key type, e.g., RSA or ECDSA. More information is available the named SubRecord (e.g., RSAPublicKey()).
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of an ECDSA asymmetric key.
+ */
+ ecdsa_public_key?: {
+ b?: string;
+ curve?: string;
+ gy?: string;
+ n?: string;
+ p?: string;
+ length?: string;
+ pub?: string;
+ y?: string;
+ x?: string;
+ gx?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of a DSA asymmetric key.
+ */
+ dsa_public_key?: {
+ q?: string;
+ p?: string;
+ y?: string;
+ g?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The x.509 certificate version number.
+ */
+ version?: string;
+ /**
+ * A canonical string representation of the subject name.
+ */
+ subject_dn?: string;
+ /**
+ * List of raw extensions that were not recognized by the application.
+ */
+ unknown_extensions?: {
+ /**
+ * Certificates should be rejected if they have critical extensions the validator does not recognize.
+ */
+ critical?: boolean;
+ /**
+ * The OBJECT IDENTIFIER identifying the extension.
+ */
+ id?: string;
+ /**
+ * The raw value of the extnValue OCTET STREAM.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Identifies the algorithm used by the CA to sign the certificate.
+ */
+ signature_algorithm?: {
+ /**
+ * The OBJECT IDENTIFIER of the signature algorithm, in dotted-decimal notation.
+ */
+ oid?: string;
+ /**
+ * Name of signature algorithm, e.g., SHA1-RSA or ECDSA-SHA512. Unknown algorithms get an integer id.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * This is set if any of the certificate's names contain redacted fields.
+ */
+ redacted?: boolean;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct_fingerprint?: string;
+ /**
+ * A canonical string representation of the issuer name.
+ */
+ issuer_dn?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs_fingerprint?: string;
+ extensions?: {
+ /**
+ * The parsed id-ce-nameConstraints extension (2.5.29.30). Specifies a name space within which all child certificates' subject names MUST be located.
+ */
+ name_constraints?: {
+ /**
+ * Permitted names of type directoryName.
+ */
+ permitted_directory_names?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Permitted names of type rfc822Name.
+ */
+ permitted_email_addresses?: string;
+ /**
+ * Excluded names of type ediPartyName.
+ */
+ excluded_edi_party_names?: {
+ /**
+ * The partyName (a DirectoryString)
+ */
+ party_name?: string;
+ /**
+ * The nameAssigner (a DirectoryString)
+ */
+ name_assigner?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Permitted names of type registeredID.
+ */
+ permitted_registered_ids?: string;
+ /**
+ * Excluded names of type rfc822Name.
+ */
+ excluded_email_addresses?: string;
+ /**
+ * Excluded names of type registeredID.
+ */
+ excluded_registered_ids?: string;
+ /**
+ * Excluded names of type dNSName.
+ */
+ excluded_names?: string;
+ /**
+ * If set, clients unable to understand this extension must reject this certificate.
+ */
+ critical?: boolean;
+ /**
+ * Permitted names of type ediPartyName
+ */
+ permitted_edi_party_names?: {
+ /**
+ * The partyName (a DirectoryString)
+ */
+ party_name?: string;
+ /**
+ * The nameAssigner (a DirectoryString)
+ */
+ name_assigner?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Excluded names of type directoryName.
+ */
+ excluded_directory_names?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Permitted names of type dNSName.
+ */
+ permitted_names?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A key identifier, usually a digest of the DER encoding of a SubjectPublicKeyInfo. This is the hex encoding of the OCTET STRING value.
+ */
+ authority_key_id?: string;
+ /**
+ * The CA/BF organization ID extensions (2.23.140.3.1)
+ */
+ cabf_organization_id?: {
+ country?: string;
+ state?: string;
+ scheme?: string;
+ reference?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed Subject Alternative Name extension (id-ce-subjectAltName, 2.5.29.17).
+ */
+ subject_alt_name?: {
+ /**
+ * uniformResourceIdentifier entries in the GeneralName (CHOICE tag 6).
+ */
+ uniform_resource_identifiers?: string;
+ /**
+ * Parsed directoryName entries in the GeneralName (CHOICE tag 4).
+ */
+ directory_names?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * iPAddress entries in the GeneralName (CHOICE tag 7).
+ */
+ ip_addresses?: string;
+ /**
+ * otherName entries in the GeneralName (CHOICE tag 0). An arbitrary binary value identified by an OBJECT IDENTIFIER.
+ */
+ other_names?: {
+ /**
+ * The OBJECT IDENTIFIER identifying the syntax of the otherName value.
+ */
+ id?: string;
+ /**
+ * The raw otherName value.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * registeredID entries in the GeneralName (OBJECT IDENTIFIER, CHOICE tag 8). Stored in dotted-decimal format.
+ */
+ registered_ids?: string;
+ /**
+ * Parsed eDIPartyName entries in the GeneralName (CHOICE tag 5)
+ */
+ edi_party_names?: {
+ /**
+ * The partyName (a DirectoryString)
+ */
+ party_name?: string;
+ /**
+ * The nameAssigner (a DirectoryString)
+ */
+ name_assigner?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * dNSName entries in the GeneralName (IA5String, CHOICE tag 2).
+ */
+ dns_names?: string;
+ /**
+ * rfc822Name entries in the GeneralName (IA5String, CHOICE tag 1).
+ */
+ email_addresses?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed id-pe-authorityInfoAccess extension (1.3.6.1.5.7.1.1). Only id-ad-caIssuers and id-ad-ocsp accessMethods are supported; others are omitted.
+ */
+ authority_info_access?: {
+ /**
+ * URLs of accessLocations with accessMethod of id-ad-ocsp, pointing to OCSP servers that can be used to check this certificate's revocation status. Only uniformResourceIdentifier accessLocations are supported; others are omitted.
+ */
+ ocsp_urls?: string;
+ /**
+ * URLs of accessLocations with accessMethod of id-ad-caIssuers, pointing to locations where this certificate's issuers can be downloaded. Only uniformResourceIdentifier accessLocations are supported; others are omitted.
+ */
+ issuer_urls?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed id-ce-basicConstraints extension (2.5.29.19); see RFC 5280.
+ */
+ basic_constraints?: {
+ /**
+ * When present, gives the maximum number of non-self-issued intermediate certificates that may follow this certificate in a valid certification path.
+ */
+ max_path_len?: string;
+ /**
+ * Indicates that the certificate is permitted to sign other certificates.
+ */
+ is_ca?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * IDs and parsed statements for qualified certificates (1.3.6.1.5.5.7.1.3)
+ */
+ qc_statements?: {
+ /**
+ * All included statement OIDs
+ */
+ ids?: string;
+ /**
+ * Contains known QCStatements. Each field is repeated to handle the case where a single statement appears more than once.
+ */
+ parsed?: {
+ /**
+ * Statement ID 0.4.0.1862.1.7
+ */
+ legislation?: {
+ /**
+ * Country codes for the set of countries where this certificate issued as a qualified certificate
+ */
+ country_codes?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Statement ID 0.4.0.1862.1.3
+ */
+ retention_period?: string;
+ /**
+ * Statement ID 0.4.0.1862.1.5
+ */
+ pds_locations?: {
+ /**
+ * Included PDS locations
+ */
+ locations?: {
+ /**
+ * Location of the PDS
+ */
+ url?: string;
+ /**
+ * Locale code
+ */
+ language?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Statement ID 0.4.0.1862.1.2
+ */
+ limit?: {
+ /**
+ * Currency, if provided as an integer
+ */
+ currency_number?: string;
+ /**
+ * Currency, if provided as a string
+ */
+ currency?: string;
+ /**
+ * Value in currency
+ */
+ amount?: string;
+ /**
+ * Total is amount times 10 raised to the exponent
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * True if present (Statement ID 0.4.0.1862.1.4
+ */
+ sscd?: boolean;
+ /**
+ * True if present (Statement ID 0.4.0.1862.1.1)
+ */
+ etsi_compliance?: boolean;
+ /**
+ * Statement ID 0.4.0.1862.1.6
+ */
+ types?: {
+ /**
+ * Included QC type OIDs
+ */
+ ids?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed id-ce-certificatePolicies extension (2.5.29.32).
+ */
+ certificate_policies?: {
+ /**
+ * List of URIs to the policies
+ */
+ cps?: string;
+ /**
+ * The OBJECT IDENTIFIER identifying the policy.
+ */
+ id?: string;
+ /**
+ * List of textual notices to display relying parties.
+ */
+ user_notice?: {
+ /**
+ * Names an organization and identifies, by number, a particular textual statement prepared by that organization.
+ */
+ notice_reference?: {
+ /**
+ * The numeric identifier(s) of the notice.
+ */
+ notice_numbers?: string;
+ /**
+ * The organization that prepared the notice.
+ */
+ organization?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Textual statement with a maximum size of 200 characters. Should be a UTF8String or IA5String.
+ */
+ explicit_text?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed id-ce-cRLDistributionPoints extension (2.5.29.31). Contents are a list of distributionPoint URLs (other distributionPoint types are omitted).
+ */
+ crl_distribution_points?: string;
+ /**
+ * The parsed id-ce-keyUsage extension (2.5.29.15); see RFC 5280.
+ */
+ key_usage?: {
+ /**
+ * Indicates if the keyEncipherment bit(2) is set.
+ */
+ key_encipherment?: boolean;
+ /**
+ * Indicates if the digitalSignature bit(0) is set.
+ */
+ digital_signature?: boolean;
+ /**
+ * Indicates if the encipherOnly bit(7) is set.
+ */
+ decipher_only?: boolean;
+ /**
+ * Indicates if the keyAgreement bit(4) is set.
+ */
+ key_agreement?: boolean;
+ /**
+ * Indicates if the dataEncipherment bit(3) is set.
+ */
+ data_encipherment?: boolean;
+ /**
+ * Integer value of the bitmask in the extension
+ */
+ value?: string;
+ /**
+ * Indicates if the decipherOnly bit(8) is set.
+ */
+ encipher_only?: boolean;
+ /**
+ * Indicates if the keyCertSign bit(5) is set.
+ */
+ certificate_sign?: boolean;
+ /**
+ * Indicates if the contentCommitment bit(1) (formerly called nonRepudiation) is set.
+ */
+ content_commitment?: boolean;
+ /**
+ * Indicates if the cRLSign bit(6) is set.
+ */
+ crl_sign?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed Certificate Transparency SignedCertificateTimestampsList extension (1.3.6.1.4.1.11129.2.4.2); see RFC 6962.
+ */
+ signed_certificate_timestamps?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the certificate possesses the Certificate Transparency Precertificate Poison extension (1.3.6.1.4.1.11129.2.4.3).
+ */
+ ct_poison?: boolean;
+ /**
+ * A key identifier, usually a digest of the DER encoding of a SubjectPublicKeyInfo. This is the hex encoding of the OCTET STRING value.
+ */
+ subject_key_id?: string;
+ /**
+ * The parsed Issuer Alternative Name extension (id-ce-issuerAltName, 2.5.29.18).
+ */
+ issuer_alt_name?: {
+ /**
+ * uniformResourceIdentifier entries in the GeneralName (CHOICE tag 6).
+ */
+ uniform_resource_identifiers?: string;
+ /**
+ * Parsed directoryName entries in the GeneralName (CHOICE tag 4).
+ */
+ directory_names?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * iPAddress entries in the GeneralName (CHOICE tag 7).
+ */
+ ip_addresses?: string;
+ /**
+ * otherName entries in the GeneralName (CHOICE tag 0). An arbitrary binary value identified by an OBJECT IDENTIFIER.
+ */
+ other_names?: {
+ /**
+ * The OBJECT IDENTIFIER identifying the syntax of the otherName value.
+ */
+ id?: string;
+ /**
+ * The raw otherName value.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * registeredID entries in the GeneralName (OBJECT IDENTIFIER, CHOICE tag 8). Stored in dotted-decimal format.
+ */
+ registered_ids?: string;
+ /**
+ * Parsed eDIPartyName entries in the GeneralName (CHOICE tag 5)
+ */
+ edi_party_names?: {
+ /**
+ * The partyName (a DirectoryString)
+ */
+ party_name?: string;
+ /**
+ * The nameAssigner (a DirectoryString)
+ */
+ name_assigner?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * dNSName entries in the GeneralName (IA5String, CHOICE tag 2).
+ */
+ dns_names?: string;
+ /**
+ * rfc822Name entries in the GeneralName (IA5String, CHOICE tag 1).
+ */
+ email_addresses?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * A list of subject names in the certificate, including the Subject CommonName and SubjectAltName DNSNames, IPAddresses and URIs.
+ */
+ names?: string;
+ signature?: {
+ /**
+ * Indicates whether the subject key was also used to sign the certificate.
+ */
+ self_signed?: boolean;
+ valid?: boolean;
+ /**
+ * Contents of the signature BIT STRING.
+ */
+ value?: string;
+ signature_algorithm?: {
+ /**
+ * The OBJECT IDENTIFIER of the signature algorithm, in dotted-decimal notation.
+ */
+ oid?: string;
+ /**
+ * Name of signature algorithm, e.g., SHA1-RSA or ECDSA-SHA512. Unknown algorithms get an integer id.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * How the certificate is validated -- Domain validated (DV), Organization Validated (OV), Extended Validation (EV), or unknown.
+ */
+ validation_level?: string;
+ /**
+ * Serial number as an signed decimal integer. Stored as string to support >uint lengths. Negative values are allowed.
+ */
+ serial_number?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_md5?: string;
+ /**
+ * The parsed subject name.
+ */
+ subject?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject_fingerprint?: string;
+ validity?: {
+ /**
+ * Timestamp of when certificate is first valid. Timezone is UTC.
+ */
+ start?: string;
+ /**
+ * The length of time, in seconds, that the certificate is valid.
+ */
+ length?: string;
+ /**
+ * Timestamp of when certificate expires. Timezone is UTC.
+ */
+ end?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed issuer name.
+ */
+ issuer?: {
+ /**
+ * jurisdictionCountry elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.3)
+ */
+ jurisdiction_country?: string;
+ /**
+ * stateOrProviceName (ST) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.8)
+ */
+ province?: string;
+ /**
+ * surname (SN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.4)
+ */
+ surname?: string;
+ /**
+ * localityName (L) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.7)
+ */
+ locality?: string;
+ /**
+ * domainComponent (DC) elements of the distinguished name (OBJECT IDENTIFIER 0.9.2342.19200300.100.1.25)
+ */
+ domain_component?: string;
+ /**
+ * countryName (C) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.6)
+ */
+ country?: string;
+ /**
+ * jurisdictionStateOrProvice elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.2)
+ */
+ jurisdiction_province?: string;
+ /**
+ * jurisdictionLocality elements of the distinguished name (OBJECT IDENTIFIER 1.3.6.1.4.1.311.60.2.1.1)
+ */
+ jurisdiction_locality?: string;
+ /**
+ * postalCode elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.17)
+ */
+ postal_code?: string;
+ /**
+ * organizationId elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.97)
+ */
+ organization_id?: string;
+ /**
+ * organizationalUnit (OU) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.11)
+ */
+ organizational_unit?: string;
+ /**
+ * givenName (G) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.42)
+ */
+ given_name?: string;
+ /**
+ * serialNumber elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.5)
+ */
+ serial_number?: string;
+ /**
+ * commonName (CN) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.3)
+ */
+ common_name?: string;
+ /**
+ * organizationName (O) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.10)
+ */
+ organization?: string;
+ /**
+ * emailAddress (E) elements of the distinguished name (OBJECT IDENTIFIER 1.2.840.113549.1.9.1)
+ */
+ email_address?: string;
+ /**
+ * streetAddress (STREET) elements of the distinguished name (OBJECT IDENTIFIER 2.5.4.9)
+ */
+ street_address?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ post_processed_at?: string;
+ post_processed?: boolean;
+ parse_status?: string;
+ seen_in_scan?: boolean;
+ updated_at?: string;
+ added_at?: string;
+ source?: string;
+ parse_version?: string;
+ parse_error?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+}
diff --git a/backend/src/models/generated/censysIpv4.ts b/backend/src/models/generated/censysIpv4.ts
new file mode 100644
index 00000000..aa5802b4
--- /dev/null
+++ b/backend/src/models/generated/censysIpv4.ts
@@ -0,0 +1,16214 @@
+/* tslint:disable */
+/**
+ * This file was automatically generated by json-schema-to-typescript.
+ * DO NOT MODIFY IT BY HAND. Instead, run "npm run codegen" to regenerate this file.
+ */
+
+export interface CensysIpv4Data {
+ p11211?: {
+ memcached?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ certificate?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * All server stats, formatted 'key=value key2=value2'
+ */
+ stats?: string;
+ /**
+ * What protocol the scanner used when connecting to the server (tcp/tls/udp)
+ */
+ connected_on?: string;
+ /**
+ * Is the server willing to use the binary protocol to communicate
+ */
+ binary_protocol_running?: boolean;
+ /**
+ * If true, Memcached was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Is SASL running on the server
+ */
+ sasl_enabled?: boolean;
+ /**
+ * Is the server willing to use the ascii protocol to communicate
+ */
+ ascii_protocol_running?: boolean;
+ /**
+ * Memcached version
+ */
+ version?: string;
+ /**
+ * libevent version being used by the server
+ */
+ libevent?: string;
+ /**
+ * Server responds to UDP
+ */
+ responds_to_udp?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p20000?: {
+ dnp3?: {
+ status?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ raw_response?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p3306?: {
+ mysql?: {
+ banner?: {
+ /**
+ * If the server allows upgrading the session to use TLS, this is the log of the handshake.
+ */
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, MySQL was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Optional string describing the error. Only set if there is an error.
+ */
+ error_message?: string;
+ /**
+ * The set of capability flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.
+ */
+ capability_flags?: {
+ CLIENT_IGNORE_SPACE?: boolean;
+ CLIENT_RESERVED?: boolean;
+ CLIENT_PLUGIN_AUTH?: boolean;
+ CLIENT_INTERACTIVE?: boolean;
+ CLIENT_SECURE_CONNECTION?: boolean;
+ CLIENT_MULTI_RESULTS?: boolean;
+ CLIENT_CONNECT_ATTRS?: boolean;
+ CLIENT_IGNORE_SIGPIPE?: boolean;
+ CLIENT_TRANSACTIONS?: boolean;
+ CLIENT_NO_SCHEMA?: boolean;
+ CLIENT_LONG_FLAG?: boolean;
+ CLIENT_CONNECT_WITH_DB?: boolean;
+ CLIENT_SSL?: boolean;
+ CLIENT_FOUND_ROWS?: boolean;
+ CLIENT_COMPRESS?: boolean;
+ CLIENT_LOCAL_FILES?: boolean;
+ CLIENT_ODBC?: boolean;
+ CLIENT_PLUGIN_AUTH_LEN_ENC_CLIENT_DATA?: boolean;
+ CLIENT_LONG_PASSWORD?: boolean;
+ CLIENT_MULTI_STATEMENTS?: boolean;
+ CLIENT_SESSION_TRACK?: boolean;
+ CLIENT_PS_MULTI_RESULTS?: boolean;
+ CLIENT_PROTOCOL_41?: boolean;
+ CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS?: boolean;
+ CLIENT_DEPRECATED_EOF?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * The set of status flags the server returned in the initial HandshakePacket. Each entry corresponds to a bit being set in the flags; key names correspond to the #defines in the MySQL docs.
+ */
+ status_flags?: {
+ SERVER_STATUS_DB_DROPPED?: boolean;
+ SERVER_STATUS_IN_TRANS_READONLY?: boolean;
+ SERVER_STATUS_CURSOR_EXISTS?: boolean;
+ SERVER_SESSION_STATE_CHANGED?: boolean;
+ SERVER_QUERY_NO_INDEX_USED?: boolean;
+ SERVER_STATUS_IN_TRANS?: boolean;
+ SERVER_QUERY_NO_GOOD_INDEX_USED?: boolean;
+ SERVER_MORE_RESULTS_EXISTS?: boolean;
+ SERVER_STATUS_NO_BACKSLASH_ESCAPES?: boolean;
+ SERVER_PS_OUT_PARAMS?: boolean;
+ SERVER_STATUS_METADATA_CHANGED?: boolean;
+ SERVER_STATUS_AUTOCOMMIT?: boolean;
+ SERVER_STATUS_LAST_ROW_SENT?: boolean;
+ SERVER_QUERY_WAS_SLOW?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * 8-bit unsigned integer representing the server's protocol version sent in the initial HandshakePacket from the server.
+ */
+ protocol_version?: string;
+ /**
+ * The friendly name for the error code as defined at https://dev.mysql.com/doc/refman/8.0/en/error-messages-server.html, or UNKNOWN.
+ */
+ error_id?: string;
+ /**
+ * Only set if there is an error returned by the server, for example if the scanner is not on the allowed hosts list.
+ */
+ error_code?: string;
+ /**
+ * The specific server version returned in the initial HandshakePacket. Often in the form x.y.z, but not always.
+ */
+ server_version?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p161?: {
+ snmp?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ certificate?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, SNMP was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * 1.3.6.1.2.1.1 - System Variables
+ */
+ oid_system?: {
+ /**
+ * 1.3.6.1.2.1.1.3 - 1/100ths of sec
+ */
+ uptime?: string;
+ /**
+ * 1.3.6.1.2.1.1.5 - Name, usually FQDN
+ */
+ name?: string;
+ /**
+ * 1.3.6.1.2.1.1.1 - Description of entity
+ */
+ descr?: string;
+ /**
+ * 1.3.6.1.2.1.1.2 - Vendor ID
+ */
+ object_id?: string;
+ /**
+ * 1.3.6.1.2.1.1.4 - Contact info
+ */
+ contact?: string;
+ /**
+ * 1.3.6.1.2.1.1.6 - Physical location
+ */
+ location?: string;
+ /**
+ * 1.3.6.1.2.1.1.7 - Set of services offered by entity
+ */
+ services?: {
+ /**
+ * Physical (e.g. repeaters)
+ */
+ layer_1?: boolean;
+ /**
+ * Internet (e.g. IP gateways)
+ */
+ layer_3?: boolean;
+ /**
+ * Datalink/subnetwork (e.g. bridges)
+ */
+ layer_2?: boolean;
+ /**
+ * OSI layer 5
+ */
+ layer_5?: boolean;
+ /**
+ * End-to-end (e.g. IP hosts)
+ */
+ layer_4?: boolean;
+ /**
+ * Applications (e.g. mail relays)
+ */
+ layer_7?: boolean;
+ /**
+ * OSI layer 6
+ */
+ layer_6?: boolean;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1 - Entity Physical
+ */
+ oid_physical?: {
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.12 - Name of mfg
+ */
+ manufacturer_name?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.9 - Firmware revision string
+ */
+ firmware_rev?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.10 - Software revision string
+ */
+ software_rev?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.11 - Serial number string
+ */
+ serial_number?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.8 - Hardware revision string
+ */
+ hardware_rev?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.13 - Model name of component
+ */
+ model_name?: string;
+ /**
+ * 1.3.6.1.2.1.47.1.1.1.1.7 - Entity name
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * 1.3.6.1.2.1.2 - Interfaces
+ */
+ oid_interfaces?: {
+ /**
+ * 1.3.6.1.2.1.2.1 - Number of network interfaces
+ */
+ num_interfaces?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p80?: {
+ http?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ updated_at?: string;
+ p1900?: {
+ upnp?: {
+ discovery?: {
+ x_user_agent?: string;
+ usn?: string;
+ agent?: string;
+ server?: string;
+ ext?: string;
+ location?: string;
+ st?: string;
+ cache_control?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p25?: {
+ smtp?: {
+ starttls?: {
+ /**
+ * The response to the EHLO command.
+ */
+ ehlo?: string;
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The response to the STARTTLS command.
+ */
+ starttls?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The initial SMTP command sent by the server (e.g. "220 localhost.localdomain ESMTP Postfix (Ubuntu)\r\n"
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p2323?: {
+ telnet?: {
+ banner?: {
+ /**
+ * The server refuses to perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ wont?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server requests the client to perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ do?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server requests the client not perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ dont?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * Indicates whether the server supports telnet.
+ */
+ support?: boolean;
+ /**
+ * The server will perform (or is performing) the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ will?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The banner sent by the server after negotiating the connection options. Truncated at 8kb.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ zdb_version?: string;
+ /**
+ * Integer value of IP address in host order
+ */
+ ipint?: string;
+ p21?: {
+ ftp?: {
+ banner?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The banner returned by the FTP server (zero or more lines, followed by three decimal digits and optionally a human readable command followed by a final LF, see https://tools.ietf.org/html/rfc354
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p8888?: {
+ http?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p23?: {
+ telnet?: {
+ banner?: {
+ /**
+ * The server refuses to perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ wont?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server requests the client to perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ do?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server requests the client not perform the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ dont?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * Indicates whether the server supports telnet.
+ */
+ support?: boolean;
+ /**
+ * The server will perform (or is performing) the listed options, see https://tools.ietf.org/html/rfc854.
+ */
+ will?: {
+ /**
+ * The friendly name of the telnet option.
+ */
+ name?: string;
+ /**
+ * The integer value of the telnet option.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The banner sent by the server after negotiating the connection options. Truncated at 8kb.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p22?: {
+ ssh?: {
+ v2?: {
+ /**
+ * See https://tools.ietf.org/html/rfc4253#section-7
+ */
+ key_exchange?: {
+ curve25519_sha256_params?: {
+ server_public?: string;
+ client_public?: string;
+ client_private?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * Supported options advertised by the server during key exchange algorithm negotiation. See https://tools.ietf.org/html/rfc4253#section-7
+ */
+ support?: {
+ /**
+ * An ssh public key algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-19 for standard values.
+ */
+ host_key_algorithms?: string;
+ /**
+ * Indicates whether a guessed key exchange packet follows, see https://tools.ietf.org/html/rfc4253#section-7.1.
+ */
+ first_kex_follows?: boolean;
+ /**
+ * An ssh key exchange algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-15 for standard values.
+ */
+ kex_algorithms?: string;
+ /**
+ * Server's supported settings for communications flowing from the server to the client. See https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml
+ */
+ server_to_client?: {
+ /**
+ * A name-list of language tags in order of preference.
+ */
+ languages?: string;
+ /**
+ * An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.
+ */
+ ciphers?: string;
+ /**
+ * An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.
+ */
+ macs?: string;
+ /**
+ * An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.
+ */
+ compressions?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Server's supported settings for communications flowing from the client to the server. See https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml
+ */
+ client_to_server?: {
+ /**
+ * A name-list of language tags in order of preference.
+ */
+ languages?: string;
+ /**
+ * An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.
+ */
+ ciphers?: string;
+ /**
+ * An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.
+ */
+ macs?: string;
+ /**
+ * An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.
+ */
+ compressions?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ selected?: {
+ /**
+ * The selected host key algorithm
+ */
+ host_key_algorithm?: string;
+ /**
+ * The selected key exchange algorithm
+ */
+ kex_algorithm?: string;
+ server_to_client?: {
+ /**
+ * An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.
+ */
+ mac?: string;
+ /**
+ * An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.
+ */
+ cipher?: string;
+ /**
+ * An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.
+ */
+ compression?: string;
+ [k: string]: unknown;
+ };
+ client_to_server?: {
+ /**
+ * An ssh MAC algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-18 for standard values.
+ */
+ mac?: string;
+ /**
+ * An ssh cipher algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-16 for standard values.
+ */
+ cipher?: string;
+ /**
+ * An ssh compression algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-20 for standard values.
+ */
+ compression?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ server_host_key?: {
+ /**
+ * The server host key algorithm.
+ */
+ key_algorithm?: string;
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_public_key?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The SHA2-256 digest calculated over the encoded key (algorithm + key data)
+ */
+ fingerprint_sha256?: string;
+ ed25519_public_key?: {
+ public_bytes?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * OpenSSH certificate for host key, see https://cvsweb.openbsd.org/src/usr.bin/ssh/PROTOCOL.certkeys?rev=1.8
+ */
+ certkey_public_key?: {
+ nonce?: string;
+ /**
+ * The hostnames for which this key is valid (empty string=any).
+ */
+ valid_principals?: string;
+ reserved?: string;
+ /**
+ * The OpenSSH certificate signature generated using the signature_key.
+ */
+ signature?: {
+ value?: string;
+ signature_algorithm?: {
+ /**
+ * An ssh public key algorithm identifier, named according to section 6 of https://www.ietf.org/rfc/rfc4251.txt; see https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-19 for standard values.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Critical OpenSSL certificate options.
+ */
+ critical_options?: {
+ /**
+ * A list of any unrecognized critical options in the form "replaced_option_name: option_value", where replaced_option_name is the option name with any hyphens replaced by underscores.
+ */
+ unknown?: string;
+ /**
+ * True if and only if the force-command extension is present.
+ */
+ force_command?: boolean;
+ /**
+ * True if and only if the source-address extension is present.
+ */
+ source_address?: boolean;
+ [k: string]: unknown;
+ };
+ validity?: {
+ /**
+ * The length of time, in seconds, that the certificate is valid.
+ */
+ length?: string;
+ /**
+ * Timestamp of when certificate expires. Timezone is UTC.
+ */
+ valid_before?: string;
+ /**
+ * Timestamp of when certificate is first valid. Timezone is UTC.
+ */
+ valid_after?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The CA key used to sign this certificate.
+ */
+ signature_key?: {
+ /**
+ * CA key algorithm.
+ */
+ key_algorithm?: string;
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_public_key?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * SHA2-256 digest calculated over the CA key algorithm identifier + raw CA key data.
+ */
+ fingerprint_sha256?: string;
+ ed25519_public_key?: {
+ public_bytes?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of an ECDSA asymmetric key.
+ */
+ ecdsa_public_key?: {
+ b?: string;
+ curve?: string;
+ gy?: string;
+ n?: string;
+ p?: string;
+ length?: string;
+ pub?: string;
+ y?: string;
+ x?: string;
+ gx?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of a DSA asymmetric key.
+ */
+ dsa_public_key?: {
+ q?: string;
+ p?: string;
+ y?: string;
+ g?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Non-critical OpenSSH certificate extensions.
+ */
+ extensions?: {
+ /**
+ * True if and only if the permit-X11-forwarding extension is present.
+ */
+ permit_X11_forwarding?: boolean;
+ /**
+ * True if and only if the permit-port-forwarding extension is present.
+ */
+ permit_port_forwarding?: boolean;
+ /**
+ * A list of any unrecognized extensions in the form "replaced_extension_name: extension_value", where replaced_extension_name is the extension name with any hyphens replaced by underscores.
+ */
+ unknown?: string;
+ /**
+ * True if and only if the permit-pty extension is present.
+ */
+ permit_pty?: boolean;
+ /**
+ * True if and only if the permit-user-rc extension is present.
+ */
+ permit_user_rc?: boolean;
+ /**
+ * True if and only if the permit-agent-forwarding extension is present.
+ */
+ permit_agent_forwarding?: boolean;
+ [k: string]: unknown;
+ };
+ key?: {
+ key_algorithm?: string;
+ algorithm?: string;
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_public_key?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ fingerprint_sha256?: string;
+ raw?: string;
+ ed25519_public_key?: {
+ public_bytes?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of an ECDSA asymmetric key.
+ */
+ ecdsa_public_key?: {
+ b?: string;
+ curve?: string;
+ gy?: string;
+ n?: string;
+ p?: string;
+ length?: string;
+ pub?: string;
+ y?: string;
+ x?: string;
+ gx?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of a DSA asymmetric key.
+ */
+ dsa_public_key?: {
+ q?: string;
+ p?: string;
+ y?: string;
+ g?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Free-form text field set by the CA during issuance; used to identify the principal in log messages.
+ */
+ key_id?: string;
+ /**
+ * If present, a description of the error parsing the certificate.
+ */
+ parse_error?: string;
+ /**
+ * Certificate serial number (decimal encoded 64-bit integer).
+ */
+ serial?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of an ECDSA asymmetric key.
+ */
+ ecdsa_public_key?: {
+ b?: string;
+ curve?: string;
+ gy?: string;
+ n?: string;
+ p?: string;
+ length?: string;
+ pub?: string;
+ y?: string;
+ x?: string;
+ gx?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The public portion of a DSA asymmetric key.
+ */
+ dsa_public_key?: {
+ q?: string;
+ p?: string;
+ y?: string;
+ g?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The server endpoint ID.
+ */
+ banner?: {
+ comment?: string;
+ raw?: string;
+ version?: string;
+ software?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p27017?: {
+ mongodb?: {
+ banner?: {
+ /**
+ * Result of issuing the isMaster command see https://docs.mongodb.com/manual/reference/command/isMaster
+ */
+ is_master?: {
+ /**
+ * Indicates whether the server is running in read-only mode.
+ */
+ read_only?: boolean;
+ /**
+ * The earliest version of the wire protocol that this server can use.
+ */
+ min_wire_version?: string;
+ /**
+ * The latest version of the wire protocol that this server can use.
+ */
+ max_wire_version?: string;
+ /**
+ * The time in minutes that a session remains active after its most recent use
+ */
+ logical_session_timeout_minutes?: string;
+ /**
+ * Indicates if this node is writable.
+ */
+ is_master?: boolean;
+ /**
+ * The maximum number of writes in a single write batch.
+ */
+ max_write_batch_size?: string;
+ /**
+ * The maximum size (in bytes) of a BSON wire protocol message.
+ */
+ max_message_size_bytes?: string;
+ /**
+ * The maximum size (in bytes) of a BSON object.
+ */
+ max_bson_object_size?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, MongoDB was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Result of issuing the buildInfo command see https://docs.mongodb.com/manual/reference/command/buildInfo
+ */
+ build_info?: {
+ /**
+ * DEPRECATED.
+ */
+ max_wire_version?: string;
+ /**
+ * Version of mongodb server
+ */
+ version?: string;
+ /**
+ * Git Version of mongodb server
+ */
+ git_version?: string;
+ /**
+ * Various debugging information about the build environment.
+ */
+ build_environment?: {
+ /**
+ * The buildEnvironment.linkflags field.
+ */
+ link_flags?: string;
+ /**
+ * The buildEnvironment.ccflags field.
+ */
+ cc_flags?: string;
+ /**
+ * The buildEnvironment.distmod field.
+ */
+ dist_mod?: string;
+ /**
+ * The buildEnvironment.cc field.
+ */
+ cc?: string;
+ /**
+ * The buildEnvironment.cxxflags field.
+ */
+ cxx_flags?: string;
+ /**
+ * The buildEnvironment.cxx field.
+ */
+ cxx?: string;
+ /**
+ * The buildEnvironment.distarch field.
+ */
+ dist_arch?: string;
+ /**
+ * The buildEnvironment.target_arch field.
+ */
+ target_arch?: string;
+ /**
+ * The buildEnvironment.target_os field.
+ */
+ target_os?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ autonomous_system?: {
+ /**
+ * The friendly name of the autonomous system.
+ */
+ name?: string;
+ /**
+ * DEPRECATED.
+ */
+ rir?: string;
+ /**
+ * The autonomous system's CIDR.
+ */
+ routed_prefix?: string;
+ /**
+ * The autonomous system's two-letter ISO 3166-1 alpha-2 country code (US, CN, GB, RU, ...).
+ */
+ country_code?: string;
+ /**
+ * The name of the organization managning the autonomous system.
+ */
+ organization?: string;
+ /**
+ * The ASNs of the autonomous systems between a fixed starting point and the host.
+ */
+ path?: string;
+ /**
+ * The ASN (autonomous system number) of the host's autonomous system.
+ */
+ asn?: string;
+ /**
+ * Brief description of the autonomous system.
+ */
+ description?: string;
+ [k: string]: unknown;
+ };
+ p8883?: {
+ mqtt?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, MQTT was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Raw CONNACK response packet
+ */
+ raw_conn_ack?: string;
+ connack?: {
+ /**
+ * Raw connect status value
+ */
+ raw?: string;
+ /**
+ * Connection status
+ */
+ connect_return?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5903?: {
+ vnc?: {
+ banner?: {
+ /**
+ * If server terminates handshake, the reason offered (if any)
+ */
+ connection_fail_reason?: string;
+ screen?: {
+ framebuffer_width?: string;
+ server_pixel_format?: {
+ /**
+ * If false, color maps are used
+ */
+ true_color_flag?: string;
+ /**
+ * Max value of red pixel
+ */
+ red_max?: string;
+ /**
+ * Max value of blue pixel
+ */
+ blue_max?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ blue_shift?: string;
+ padding_byte_3?: string;
+ padding_byte_2?: string;
+ padding_byte_1?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ red_shift?: string;
+ /**
+ * Color depth
+ */
+ depth?: string;
+ /**
+ * How many bits in a single full pixel datum. Valid values are: 8, 16, 32
+ */
+ bits_per_pixel?: string;
+ /**
+ * If pixel RGB data are in big-endian
+ */
+ big_endian_flag?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ green_shift?: string;
+ /**
+ * Max value of green pixel
+ */
+ green_max?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Server advertised desktop name length
+ */
+ desktop_name_len?: string;
+ framebuffer_height?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, VNC was detected on this machine.
+ */
+ supported?: boolean;
+ pixel_encoding?: {
+ /**
+ * server-preferred pixel encoding
+ */
+ name?: string;
+ /**
+ * binary value of server-preferred pixel encoding
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ framebuffer_grab_stats?: {
+ /**
+ * Number of pixel bytes received
+ */
+ bytes_received?: string;
+ /**
+ * True if a framebuffer grab was saved
+ */
+ framebuffer_saved?: boolean;
+ /**
+ * Full frames received. Currently capped at 1
+ */
+ full_frames_received?: string;
+ /**
+ * Number of rects sent to re-assemble for one full frame
+ */
+ rects_received?: string;
+ [k: string]: unknown;
+ };
+ security_types?: {
+ /**
+ * server-specified security option
+ */
+ name?: string;
+ /**
+ * binary value of server-specified security option
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ server_protocol_version?: {
+ /**
+ * Full VNC Protocol Version String
+ */
+ version_string?: string;
+ /**
+ * Version minor
+ */
+ version_minor?: string;
+ /**
+ * Version major
+ */
+ version_major?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Desktop name provided by the server, capped at 255 bytes
+ */
+ desktop_name?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5902?: {
+ vnc?: {
+ banner?: {
+ /**
+ * If server terminates handshake, the reason offered (if any)
+ */
+ connection_fail_reason?: string;
+ screen?: {
+ framebuffer_width?: string;
+ server_pixel_format?: {
+ /**
+ * If false, color maps are used
+ */
+ true_color_flag?: string;
+ /**
+ * Max value of red pixel
+ */
+ red_max?: string;
+ /**
+ * Max value of blue pixel
+ */
+ blue_max?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ blue_shift?: string;
+ padding_byte_3?: string;
+ padding_byte_2?: string;
+ padding_byte_1?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ red_shift?: string;
+ /**
+ * Color depth
+ */
+ depth?: string;
+ /**
+ * How many bits in a single full pixel datum. Valid values are: 8, 16, 32
+ */
+ bits_per_pixel?: string;
+ /**
+ * If pixel RGB data are in big-endian
+ */
+ big_endian_flag?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ green_shift?: string;
+ /**
+ * Max value of green pixel
+ */
+ green_max?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Server advertised desktop name length
+ */
+ desktop_name_len?: string;
+ framebuffer_height?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, VNC was detected on this machine.
+ */
+ supported?: boolean;
+ pixel_encoding?: {
+ /**
+ * server-preferred pixel encoding
+ */
+ name?: string;
+ /**
+ * binary value of server-preferred pixel encoding
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ framebuffer_grab_stats?: {
+ /**
+ * Number of pixel bytes received
+ */
+ bytes_received?: string;
+ /**
+ * True if a framebuffer grab was saved
+ */
+ framebuffer_saved?: boolean;
+ /**
+ * Full frames received. Currently capped at 1
+ */
+ full_frames_received?: string;
+ /**
+ * Number of rects sent to re-assemble for one full frame
+ */
+ rects_received?: string;
+ [k: string]: unknown;
+ };
+ security_types?: {
+ /**
+ * server-specified security option
+ */
+ name?: string;
+ /**
+ * binary value of server-specified security option
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ server_protocol_version?: {
+ /**
+ * Full VNC Protocol Version String
+ */
+ version_string?: string;
+ /**
+ * Version minor
+ */
+ version_minor?: string;
+ /**
+ * Version major
+ */
+ version_major?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Desktop name provided by the server, capped at 255 bytes
+ */
+ desktop_name?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5901?: {
+ vnc?: {
+ banner?: {
+ /**
+ * If server terminates handshake, the reason offered (if any)
+ */
+ connection_fail_reason?: string;
+ screen?: {
+ framebuffer_width?: string;
+ server_pixel_format?: {
+ /**
+ * If false, color maps are used
+ */
+ true_color_flag?: string;
+ /**
+ * Max value of red pixel
+ */
+ red_max?: string;
+ /**
+ * Max value of blue pixel
+ */
+ blue_max?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ blue_shift?: string;
+ padding_byte_3?: string;
+ padding_byte_2?: string;
+ padding_byte_1?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ red_shift?: string;
+ /**
+ * Color depth
+ */
+ depth?: string;
+ /**
+ * How many bits in a single full pixel datum. Valid values are: 8, 16, 32
+ */
+ bits_per_pixel?: string;
+ /**
+ * If pixel RGB data are in big-endian
+ */
+ big_endian_flag?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ green_shift?: string;
+ /**
+ * Max value of green pixel
+ */
+ green_max?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Server advertised desktop name length
+ */
+ desktop_name_len?: string;
+ framebuffer_height?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, VNC was detected on this machine.
+ */
+ supported?: boolean;
+ pixel_encoding?: {
+ /**
+ * server-preferred pixel encoding
+ */
+ name?: string;
+ /**
+ * binary value of server-preferred pixel encoding
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ framebuffer_grab_stats?: {
+ /**
+ * Number of pixel bytes received
+ */
+ bytes_received?: string;
+ /**
+ * True if a framebuffer grab was saved
+ */
+ framebuffer_saved?: boolean;
+ /**
+ * Full frames received. Currently capped at 1
+ */
+ full_frames_received?: string;
+ /**
+ * Number of rects sent to re-assemble for one full frame
+ */
+ rects_received?: string;
+ [k: string]: unknown;
+ };
+ security_types?: {
+ /**
+ * server-specified security option
+ */
+ name?: string;
+ /**
+ * binary value of server-specified security option
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ server_protocol_version?: {
+ /**
+ * Full VNC Protocol Version String
+ */
+ version_string?: string;
+ /**
+ * Version minor
+ */
+ version_minor?: string;
+ /**
+ * Version major
+ */
+ version_major?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Desktop name provided by the server, capped at 255 bytes
+ */
+ desktop_name?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5900?: {
+ vnc?: {
+ banner?: {
+ /**
+ * If server terminates handshake, the reason offered (if any)
+ */
+ connection_fail_reason?: string;
+ screen?: {
+ framebuffer_width?: string;
+ server_pixel_format?: {
+ /**
+ * If false, color maps are used
+ */
+ true_color_flag?: string;
+ /**
+ * Max value of red pixel
+ */
+ red_max?: string;
+ /**
+ * Max value of blue pixel
+ */
+ blue_max?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ blue_shift?: string;
+ padding_byte_3?: string;
+ padding_byte_2?: string;
+ padding_byte_1?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ red_shift?: string;
+ /**
+ * Color depth
+ */
+ depth?: string;
+ /**
+ * How many bits in a single full pixel datum. Valid values are: 8, 16, 32
+ */
+ bits_per_pixel?: string;
+ /**
+ * If pixel RGB data are in big-endian
+ */
+ big_endian_flag?: string;
+ /**
+ * how many bits to right shift a pixel datum to get red bits in lsb
+ */
+ green_shift?: string;
+ /**
+ * Max value of green pixel
+ */
+ green_max?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Server advertised desktop name length
+ */
+ desktop_name_len?: string;
+ framebuffer_height?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, VNC was detected on this machine.
+ */
+ supported?: boolean;
+ pixel_encoding?: {
+ /**
+ * server-preferred pixel encoding
+ */
+ name?: string;
+ /**
+ * binary value of server-preferred pixel encoding
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ framebuffer_grab_stats?: {
+ /**
+ * Number of pixel bytes received
+ */
+ bytes_received?: string;
+ /**
+ * True if a framebuffer grab was saved
+ */
+ framebuffer_saved?: boolean;
+ /**
+ * Full frames received. Currently capped at 1
+ */
+ full_frames_received?: string;
+ /**
+ * Number of rects sent to re-assemble for one full frame
+ */
+ rects_received?: string;
+ [k: string]: unknown;
+ };
+ security_types?: {
+ /**
+ * server-specified security option
+ */
+ name?: string;
+ /**
+ * binary value of server-specified security option
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ server_protocol_version?: {
+ /**
+ * Full VNC Protocol Version String
+ */
+ version_string?: string;
+ /**
+ * Version minor
+ */
+ version_minor?: string;
+ /**
+ * Version major
+ */
+ version_major?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Desktop name provided by the server, capped at 255 bytes
+ */
+ desktop_name?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p1521?: {
+ oracle?: {
+ /**
+ * The log of the Oracle / TDS handshake process.
+ */
+ banner?: {
+ /**
+ * The TLS handshake with the server (if applicable).
+ */
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The data from the Refuse packet returned by the server; it is empty if the server does not return a Refuse packet.
+ */
+ refuse_error_raw?: string;
+ /**
+ * The protocol version number from the Accept packet.
+ */
+ accept_version?: string;
+ /**
+ * The parsed connect descriptor returned by the server in the redirect packet, if one is sent. Otherwise, omitted. The parsed descriptor is a list of objects with key and value, where the keys strings like 'DESCRIPTION.CONNECT_DATA.SERVICE_NAME'.
+ */
+ redirect_target?: {
+ /**
+ * The descriptor value.
+ */
+ value?: string;
+ /**
+ * The dot-separated path to the descriptor
+ */
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The 'SysReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.
+ */
+ refuse_reason_sys?: string;
+ /**
+ * The parsed DESCRIPTION.VSNNUM field from the RefuseError descriptor returned by the server in the Refuse packet, in dotted-decimal format.
+ */
+ refuse_version?: string;
+ /**
+ * If true, Oracle was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * A map from the native Service Negotation service names to the ReleaseVersion (in dotted-decimal format) in that service packet.
+ */
+ nsn_service_versions?: {
+ DataIntegrity?: string;
+ Encryption?: string;
+ Authentication?: string;
+ Supervisor?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Set of flags that the server returns in the Accept packet.
+ */
+ global_service_options?: {
+ HEADER_CHECKSUM?: boolean;
+ HALF_DUPLEX?: boolean;
+ UNKNOWN_0001?: boolean;
+ PACKET_CHECKSUM?: boolean;
+ CAN_SEND_ATTENTION?: boolean;
+ FULL_DUPLEX?: boolean;
+ ATTENTION_PROCESSING?: boolean;
+ UNKNOWN_0040?: boolean;
+ UNKNOWN_0100?: boolean;
+ UNKNOWN_0080?: boolean;
+ UNKNOWN_0020?: boolean;
+ BROKEN_CONNECT_NOTIFY?: boolean;
+ CAN_RECEIVE_ATTENTION?: boolean;
+ DIRECT_IO?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * True if the server sent a Resend packet request in response to the client's first Connect packet.
+ */
+ did_resend?: boolean;
+ /**
+ * The parsed descriptor returned by the server in the Refuse packet; it is empty if the server does not return a Refuse packet. The keys are strings like 'DESCRIPTION.ERROR_STACK.ERROR.CODE'.
+ */
+ refuse_error?: {
+ /**
+ * The descriptor value.
+ */
+ value?: string;
+ /**
+ * The dot-separated path to the descriptor
+ */
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The 'AppReason' returned by the server in the RefusePacket, as an 8-bit unsigned hex string. Omitted if the server did not send a Refuse packet.
+ */
+ refuse_reason_app?: string;
+ /**
+ * The connect descriptor returned by the server in the Redirect packet, if one is sent. Otherwise, omitted.
+ */
+ redirect_target_raw?: string;
+ /**
+ * The ReleaseVersion string (in dotted-decimal format) in the root of the Native Service Negotiation packet.
+ */
+ nsn_version?: string;
+ /**
+ * The first set of ConnectFlags returned in the Accept packet.
+ */
+ connect_flags0?: {
+ INTERCHANGE_INVOLVED?: boolean;
+ SERVICES_WANTED?: boolean;
+ SERVICES_ENABLED?: boolean;
+ SERVICES_LINKED_IN?: boolean;
+ SERVICES_REQUIRED?: boolean;
+ UNKNOWN_40?: boolean;
+ UNKNOWN_20?: boolean;
+ UNKNOWN_80?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * The second set of ConnectFlags returned in the Accept packet.
+ */
+ connect_flags1?: {
+ INTERCHANGE_INVOLVED?: boolean;
+ SERVICES_WANTED?: boolean;
+ SERVICES_ENABLED?: boolean;
+ SERVICES_LINKED_IN?: boolean;
+ SERVICES_REQUIRED?: boolean;
+ UNKNOWN_40?: boolean;
+ UNKNOWN_20?: boolean;
+ UNKNOWN_80?: boolean;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p3389?: {
+ rdp?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ selected_security_protocol?: {
+ tls?: boolean;
+ /**
+ * Set for both error and success. 0 = PROTOCOL_RDP.
+ */
+ raw_value?: string;
+ rdstls?: boolean;
+ standard_rdp?: boolean;
+ error_hybrid_required?: boolean;
+ credssp_early_auth?: boolean;
+ error_bad_flags?: boolean;
+ error_ssl_forbidden?: boolean;
+ error_ssl_cert_missing?: boolean;
+ credssp?: boolean;
+ error_ssl_user_auth_required?: boolean;
+ error?: boolean;
+ error_ssl_required?: boolean;
+ error_unknown?: boolean;
+ [k: string]: unknown;
+ };
+ connect_response?: {
+ connect_id?: string;
+ domain_parameters?: {
+ max_mcspdu_size?: string;
+ max_user_id_channels?: string;
+ min_octets_per_second?: string;
+ domain_protocol_ver?: string;
+ tcs_per_mcs?: string;
+ max_token_ids?: string;
+ max_provider_height?: string;
+ max_channel_ids?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, RDP was detected on this machine.
+ */
+ supported?: boolean;
+ version?: {
+ raw_value?: string;
+ major?: string;
+ minor?: string;
+ [k: string]: unknown;
+ };
+ protocol_supported_flags?: {
+ dynvc_graphics_pipeline?: boolean;
+ neg_resp_reserved?: boolean;
+ redirected_auth_mode?: boolean;
+ restricted_admin_mode?: boolean;
+ extended_client_data_supported?: boolean;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p623?: {
+ ipmi?: {
+ /**
+ * The IPMI scan response. All section numbers refer to https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf.
+ */
+ banner?: {
+ /**
+ * The RMCP header of the response, (section 13.1.3)
+ */
+ rmcp_header?: {
+ /**
+ * The version. This scanner supports version 6.
+ */
+ version?: string;
+ /**
+ * Reserved for future use. 0 for version 6.
+ */
+ reserved?: string;
+ /**
+ * The class of the message
+ */
+ message_class?: {
+ /**
+ * True if the message is an acknowledgment to a previous message, omitted otherwise
+ */
+ is_ack?: boolean;
+ /**
+ * The raw message class byte.
+ */
+ raw?: string;
+ /**
+ * Reserved. Omitted if 0.
+ */
+ reserved?: string;
+ /**
+ * Just the class part of the byte (lower 5 bits of raw)
+ */
+ class?: string;
+ /**
+ * The human-readable name of the message class
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Sequence number of this packet in the session.
+ */
+ sequence_number?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, IPMI was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * The Get Channel Authentication Capabilities response (section 22.13)
+ */
+ capabilities?: {
+ /**
+ * The status code of the response
+ */
+ completion_code?: {
+ /**
+ * The raw completion code
+ */
+ raw?: string;
+ /**
+ * The human-readable name of the code
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The auth types supported by the server
+ */
+ supported_auth_types?: {
+ /**
+ * True if the OEM Proprietary AuthType is supported. Omitted otherwise.
+ */
+ oem_proprietary?: boolean;
+ /**
+ * True if the None AuthType is supported. Omitted otherwise.
+ */
+ none?: boolean;
+ /**
+ * True if the Extended authentication is supported. Omitted otherwise.
+ */
+ extended?: boolean;
+ /**
+ * The reserved bits. Omitted if zero.
+ */
+ reserved?: string;
+ /**
+ * The raw byte, with the bit mask etc
+ */
+ raw?: string;
+ /**
+ * True if the MD2 AuthType is supported. Omitted otherwise.
+ */
+ md2?: boolean;
+ /**
+ * True if the Password AuthType is supported. Omitted otherwise.
+ */
+ password?: boolean;
+ /**
+ * True if the MD5 AuthType is supported. Omitted otherwise.
+ */
+ md5?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * The OEM-specific data
+ */
+ oem_data?: string;
+ /**
+ * The response channel number
+ */
+ channel_number?: string;
+ /**
+ * The 3-byte OEM identifier
+ */
+ oem_id?: string;
+ /**
+ * Extended auth capabilities (if present)
+ */
+ extended_capabilities?: {
+ /**
+ * True if IPMI v1.5 is supported
+ */
+ supports_ipmi_v1_5?: boolean;
+ /**
+ * Reserved. Omitted if 0.
+ */
+ reserved?: string;
+ /**
+ * True if IPMI v2.0 is supported
+ */
+ supports_ipmi_v2_0?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * The authentication status
+ */
+ auth_status?: {
+ /**
+ * If true, the server allows anonymous login. Otherwise omitted.
+ */
+ anonymous_login_enabled?: boolean;
+ /**
+ * If true, the server has anonymous users. Otherwise omitted.
+ */
+ has_anonymous_users?: boolean;
+ /**
+ * If true, each message must be authenticated. Otherwise omitted.
+ */
+ auth_each_message?: boolean;
+ /**
+ * Reserved. Omitted if zero.
+ */
+ reserved?: string;
+ /**
+ * The KG field. true if present, otherwise omitted.
+ */
+ two_key_login_required?: boolean;
+ /**
+ * If true, user authentication is disabled. Otherwise omitted.
+ */
+ user_auth_disabled?: boolean;
+ /**
+ * If true, the server supports named users. Otherwise omitted.
+ */
+ has_named_users?: boolean;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The raw data returned by the server
+ */
+ raw?: string;
+ /**
+ * The IPMI sesssion header of the response
+ */
+ ipmi_header?: {
+ /**
+ * The authentication type for this request (see section 13.6)
+ */
+ auth_type?: {
+ /**
+ * The raw value of the auth_type
+ */
+ raw?: string;
+ /**
+ * Reserved. Omitted if zero.
+ */
+ reserved?: string;
+ /**
+ * The human-readable name of the auth type.
+ */
+ name?: string;
+ /**
+ * Just the auth type (reserved bits omitted)
+ */
+ type?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The expected length of the IPMI payload. Omitted if zero.
+ */
+ length?: string;
+ /**
+ * The ID of this session; omitted if zero.
+ */
+ session_id?: string;
+ /**
+ * The session sequence number of this packet in the session
+ */
+ sequence_number?: string;
+ /**
+ * The 16-byte authentication code; not present if auth_type is None
+ */
+ auth_code?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The IPMI command payload
+ */
+ ipmi_payload?: {
+ /**
+ * The NetFn and LUN
+ */
+ net_fn?: {
+ /**
+ * The raw value of the (NetFn << 2) | LUN
+ */
+ raw?: string;
+ /**
+ * The parsed NetFn value (the upper 6 bits of raw)
+ */
+ net_fn?: {
+ /**
+ * True if the least-significant bit is one, omitted otherwise.
+ */
+ is_response?: boolean;
+ /**
+ * True if the least-significant bit is zero, omitted otherwise.
+ */
+ is_request?: boolean;
+ /**
+ * The human-readable name of the NetFn
+ */
+ name?: string;
+ /**
+ * The normalized value of the NetFn (i.e. raw & 0xfe, so it is always even)
+ */
+ value?: string;
+ /**
+ * The raw value of the NetFn (6 bits, least significant indicates request/response)
+ */
+ raw?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The parsed LUN (logical unit number -- the lower 2 bits of raw)
+ */
+ lun?: {
+ /**
+ * The value of the LUN (3 bits)
+ */
+ raw?: string;
+ /**
+ * The human-readable name of the LUN
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is set to true if the values of chk1 / chk2 do not match the command data; otherwise it is omitted.
+ */
+ checksum_error?: boolean;
+ /**
+ * The parsed IPMI command number
+ */
+ cmd?: {
+ /**
+ * The raw value of the cmd value
+ */
+ raw?: string;
+ /**
+ * The human-readable name of the cmd + NetFn
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The chk1 field (chk1 = -((RsAddr + NetFn) & 0xff)
+ */
+ chk1?: string;
+ /**
+ * The chk2 field (chk2 = -((rq_addr + rq_seq + cmd + data[:]) & 0xff)
+ */
+ chk2?: string;
+ /**
+ * The request sequence number.
+ */
+ rq_seq?: string;
+ /**
+ * The response address
+ */
+ rs_addr?: {
+ /**
+ * The raw address byte (including the slave/software_id bit)
+ */
+ raw?: string;
+ /**
+ * Indicates that the address refers to a software identifier. Set to true if the least significant bit of raw is one, otherwise absent.
+ */
+ software_id?: boolean;
+ /**
+ * Indicates that the address refers to a slave device. Set to true if the least significant bit of raw is zero, otherwise absent.
+ */
+ slave?: boolean;
+ /**
+ * The address, with the slave/software_id bit removed.
+ */
+ address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The request address
+ */
+ rq_addr?: {
+ /**
+ * The raw address byte (including the slave/software_id bit)
+ */
+ raw?: string;
+ /**
+ * Indicates that the address refers to a software identifier. Set to true if the least significant bit of raw is one, otherwise absent.
+ */
+ software_id?: boolean;
+ /**
+ * Indicates that the address refers to a slave device. Set to true if the least significant bit of raw is zero, otherwise absent.
+ */
+ slave?: boolean;
+ /**
+ * The address, with the slave/software_id bit removed.
+ */
+ address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The raw data. On success, this should be the value of the GetAuthenticationCapabilities resopnse.
+ */
+ data?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p16993?: {
+ https?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p53?: {
+ dns?: {
+ lookup?: {
+ errors?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ open_resolver?: boolean;
+ answers?: {
+ type?: string;
+ name?: string;
+ response?: string;
+ [k: string]: unknown;
+ };
+ resolves_correctly?: boolean;
+ additionals?: {
+ type?: string;
+ name?: string;
+ response?: string;
+ [k: string]: unknown;
+ };
+ questions?: {
+ type?: string;
+ name?: string;
+ [k: string]: unknown;
+ };
+ authorities?: {
+ type?: string;
+ name?: string;
+ response?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ location?: {
+ /**
+ * The state or province name of the detected location.
+ */
+ province?: string;
+ /**
+ * The English name of the detected city.
+ */
+ city?: string;
+ /**
+ * The English name of the detected country.
+ */
+ country?: string;
+ /**
+ * The estimated longitude of the detected location.
+ */
+ longitude?: number;
+ /**
+ * The English name of the registered country.
+ */
+ registered_country?: string;
+ /**
+ * The registered country's two-letter ISO 3166-1 alpha-2 country code (US, CN, GB, RU, ...).
+ */
+ registered_country_code?: string;
+ /**
+ * The postal code (if applicable) of the detected location.
+ */
+ postal_code?: string;
+ /**
+ * The detected two-letter ISO 3166-1 alpha-2 country code (US, CN, GB, RU, ...).
+ */
+ country_code?: string;
+ /**
+ * The estimated latitude of the detected location.
+ */
+ latitude?: number;
+ /**
+ * The IANA time zone database name of the detected location.
+ */
+ timezone?: string;
+ /**
+ * The English name of the detected continent (North America, Europe, Asia, South America, Africa, Oceania, Antarctica)
+ */
+ continent?: string;
+ [k: string]: unknown;
+ };
+ ip?: string;
+ p110?: {
+ pop3?: {
+ starttls?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The response to the starttls command.
+ */
+ starttls?: string;
+ /**
+ * The IMAP/POP3 command sent by the server immediately upon connection.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5672?: {
+ amqp?: {
+ banner?: {
+ /**
+ * If true, AMQP was detected on this machine.
+ */
+ supported?: boolean;
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ protocol_id?: {
+ /**
+ * Protocol ID
+ */
+ id?: string;
+ /**
+ * Decoded protocol ID
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ version?: {
+ /**
+ * version major
+ */
+ major?: string;
+ /**
+ * version minor
+ */
+ minor?: string;
+ /**
+ * version revision
+ */
+ revision?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p6443?: {
+ kubernetes?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ certificate?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ roles?: {
+ roles?: {
+ /**
+ * individual rules set for a specific role
+ */
+ rules?: {
+ /**
+ * Verbs is a list of Verbs that apply to ALL the ResourceKinds and AttributeRestrictions contained in this rule. VerbAll represents all kinds
+ */
+ verbs?: string;
+ /**
+ * APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of the enumerated resources in any API group will be allowed
+ */
+ api_groups?: string;
+ /**
+ * Resources is a list of resources this rule applies to. ResourceAll represents all resources
+ */
+ resources?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Name of a role
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Information about this version of kubernetes
+ */
+ version_info?: {
+ /**
+ * Date version was built
+ */
+ build_date?: string;
+ /**
+ * Kubernetes major version
+ */
+ major?: string;
+ /**
+ * Version of GO used for kubernetes
+ */
+ go_version?: string;
+ git_version?: string;
+ /**
+ * Platform it was compiled for
+ */
+ platform?: string;
+ /**
+ * Hash of git commit version is built from
+ */
+ git_commit?: string;
+ /**
+ * State of the tree when build
+ */
+ git_tree_state?: string;
+ /**
+ * Kubernetes minor version
+ */
+ minor?: string;
+ /**
+ * Go Compiler user
+ */
+ compiler?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If true, Kubernetes was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * True if the dashboard is running and accessible
+ */
+ dashboard_running?: boolean;
+ nodes?: {
+ items?: {
+ /**
+ * Status of the Node
+ */
+ status?: {
+ /**
+ * AttachedVolume describes a volume attached to a node
+ */
+ volumes_attached?: {
+ /**
+ * DevicePath represents the device path where the volume should be available
+ */
+ device_path?: string;
+ /**
+ * Name of the attached volume
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * NodeDaemonEndpoints lists ports opened by daemons running on the Node.
+ */
+ daemon_endpoints?: {
+ /**
+ * Endpoint on which Kubelet is listening
+ */
+ kubelet_endpoint?: {
+ /**
+ * port on which Kubelet is listening
+ */
+ port?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * address reachable to the node. Queried from cloud provider, if available. More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
+ */
+ addresses?: {
+ /**
+ * Node address type, one of Hostname, ExternalIP or InternalIP.
+ */
+ type?: string;
+ /**
+ * the node address, IP/URL
+ */
+ address?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * General information about the node, such as kernel version, Kubernetes version (kubelet and kube-proxy version), Docker version (if used), OS name. The information is gathered by Kubelet from the node
+ */
+ node_info?: {
+ /**
+ * kube Proxy Version
+ */
+ kube_proxy_version?: string;
+ /**
+ * OS family running on the container
+ */
+ operating_system?: string;
+ /**
+ * Container Software version
+ */
+ container_runtime_version?: string;
+ /**
+ * Kernel running on the node
+ */
+ kernel_version?: string;
+ /**
+ * Docker OS image running on the node
+ */
+ os_image?: string;
+ /**
+ * node's architecture
+ */
+ architecture?: string;
+ /**
+ * kubelet version
+ */
+ kubelet_version?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * List of attachable volumes in use (mounted) by the node
+ */
+ volumes_in_use?: string;
+ /**
+ * List of container images on this node
+ */
+ images?: {
+ /**
+ * Names by which this image is known. e.g. ['k8s.gcr.io/hyperkube:v1.0.7', 'dockerhub.io/google_containers/hyperkube:v1.0.7']
+ */
+ names?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
+ */
+ metadata?: {
+ /**
+ * Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ endpoints?: {
+ items?: {
+ subsets?: {
+ addresses?: {
+ ip?: string;
+ hostname?: string;
+ node_name?: string;
+ [k: string]: unknown;
+ };
+ ports?: {
+ protocol?: string;
+ name?: string;
+ port?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ self_link?: string;
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ pods?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p587?: {
+ smtp?: {
+ starttls?: {
+ /**
+ * The response to the EHLO command.
+ */
+ ehlo?: string;
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The response to the STARTTLS command.
+ */
+ starttls?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The initial SMTP command sent by the server (e.g. "220 localhost.localdomain ESMTP Postfix (Ubuntu)\r\n"
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ tags?: string;
+ p1911?: {
+ fox?: {
+ device_id?: {
+ vm_name?: string;
+ version?: string;
+ host_address?: string;
+ vm_version?: string;
+ app_name?: string;
+ language?: string;
+ os_version?: string;
+ auth_agent_type?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ hostname?: string;
+ time_zone?: string;
+ brand_id?: string;
+ os_name?: string;
+ vm_uuid?: string;
+ sys_info?: string;
+ host_id?: string;
+ station_name?: string;
+ app_version?: string;
+ id?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p1883?: {
+ mqtt?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, MQTT was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Raw CONNACK response packet
+ */
+ raw_conn_ack?: string;
+ connack?: {
+ /**
+ * Raw connect status value
+ */
+ raw?: string;
+ /**
+ * Connection status
+ */
+ connect_return?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5632?: {
+ pca?: {
+ banner?: {
+ status?: {
+ /**
+ * Full 'ST' query response
+ */
+ st_raw?: string;
+ /**
+ * Workstation is In Use if true, Available if false
+ */
+ in_use?: boolean;
+ [k: string]: unknown;
+ };
+ /**
+ * Workstation Name, with padding bytes removed
+ */
+ workstation_name?: string;
+ /**
+ * If true, PCA was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Full 'NR' query response
+ */
+ nr_raw?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p1433?: {
+ mssql?: {
+ banner?: {
+ /**
+ * The TLS handshake with the server (for non-encrypted connections, this used only for the authentication phase).
+ */
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, MSSQL was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * The negotiated encryption mode for the session. See https://msdn.microsoft.com/en-us/library/dd357559.aspx for details.
+ */
+ encrypt_mode?: string;
+ /**
+ * The value of the INSTANCE field returned by the server in the PRELOGIN response.
+ */
+ instance_name?: string;
+ /**
+ * The MSSQL version returned by the server in the PRELOGIN response. Its format is 'MAJOR.MINOR.BUILD_NUMBER'.
+ */
+ version?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p8080?: {
+ http?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p102?: {
+ s7?: {
+ /**
+ * Parsed response data from the Siemens S7 scan.
+ */
+ szl?: {
+ /**
+ * The seventh string in the response to the S7_SZL_MODULE_IDENTIFICATION request.
+ */
+ firmware?: string;
+ /**
+ * The eighth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ memory_serial_number?: string;
+ /**
+ * The seventh string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ reserved_for_os?: string;
+ /**
+ * The fourth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ copyright?: string;
+ /**
+ * The third string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ plant_id?: string;
+ /**
+ * Indicates that the scanner was able to successfully negotiate a Siemens S7 session with the server.
+ */
+ support?: boolean;
+ /**
+ * The ninth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ cpu_profile?: string;
+ /**
+ * The fifth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ serial_number?: string;
+ /**
+ * The second string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ module?: string;
+ /**
+ * The first string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ system?: string;
+ /**
+ * The sixth string in the response to the S7_SZL_MODULE_IDENTIFICATION request.
+ */
+ hardware?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The sixth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ module_type?: string;
+ /**
+ * The eleventh string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ location?: string;
+ /**
+ * The tenth string in the response to the S7_SZL_COMPONENT_IDENTIFICATION request.
+ */
+ oem_id?: string;
+ /**
+ * The first string in the response to the S7_SZL_MODULE_IDENTIFICATION request.
+ */
+ module_id?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ protocols?: string;
+ p47808?: {
+ bacnet?: {
+ device_id?: {
+ vendor?: {
+ reported_name?: string;
+ id?: string;
+ official_name?: string;
+ [k: string]: unknown;
+ };
+ description?: string;
+ firmware_revision?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ instance_number?: string;
+ object_name?: string;
+ location?: string;
+ application_software_revision?: string;
+ model_name?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p6379?: {
+ redis?: {
+ banner?: {
+ /**
+ * Major is the version's major number.
+ */
+ major?: string;
+ /**
+ * If true, Redis was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * The Sha-1 Git commit hash the Redis server used.
+ */
+ git_sha1?: string;
+ /**
+ * The Build ID of the Redis server.
+ */
+ build_id?: string;
+ /**
+ * The version of the GCC compiler used to compile the Redis server.
+ */
+ gcc_version?: string;
+ /**
+ * The total number of bytes allocated by Redis using its allocator.
+ */
+ used_memory?: string;
+ /**
+ * The response from the NONEXISTENT command.
+ */
+ nonexistent_response?: string;
+ /**
+ * The version string, read from the the info_response (if available).
+ */
+ version?: string;
+ /**
+ * The total number of commands processed by the server.
+ */
+ total_commands_processed?: string;
+ /**
+ * The response from the INFO command. Should be a series of key:value pairs separated by CRLFs.
+ */
+ info_response?: string;
+ /**
+ * Minor is the version's minor number.
+ */
+ minor?: string;
+ /**
+ * The mode the Redis server is running (standalone or cluster), read from the the info_response (if available).
+ */
+ mode?: string;
+ /**
+ * The total number of connections accepted by the server.
+ */
+ total_connections_received?: string;
+ /**
+ * The response to the QUIT command.
+ */
+ quit_response?: string;
+ /**
+ * The architecture bits (32 or 64) the Redis server used to build.
+ */
+ arch_bits?: string;
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ certificate?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The memory allocator.
+ */
+ mem_allocator?: string;
+ /**
+ * The number of seconds since Redis server start.
+ */
+ uptime_in_seconds?: string;
+ /**
+ * The response from the PING command; should either be "PONG" or an authentication error.
+ */
+ ping_response?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The OS the Redis server is running, read from the the info_response (if available).
+ */
+ os?: string;
+ /**
+ * Patchlevel is the version's patchlevel number.
+ */
+ patchlevel?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p5432?: {
+ postgres?: {
+ banner?: {
+ /**
+ * If the server allows upgrading the session to use TLS, this is the log of the handshake.
+ */
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ backend_key_data?: {
+ secret_key?: string;
+ process_id?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The error string returned by the server in response to a StartupMessage with ProtocolVersion = 0.0
+ */
+ supported_versions?: string;
+ protocol_error?: {
+ code?: string;
+ severity?: string;
+ internal_position?: string;
+ constraint?: string;
+ routine?: string;
+ table?: string;
+ hint?: string;
+ internal_query?: string;
+ detail?: string;
+ where?: string;
+ severity_v?: string;
+ file?: string;
+ _unknown_error_tag?: string;
+ position?: string;
+ line?: string;
+ data?: string;
+ message?: string;
+ schema?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * If the server supports TLS and the session was updated to use TLS, this is true.
+ */
+ is_ssl?: boolean;
+ /**
+ * If true, PostgreSQL was detected on this machine.
+ */
+ supported?: boolean;
+ startup_error?: {
+ code?: string;
+ severity?: string;
+ internal_position?: string;
+ constraint?: string;
+ routine?: string;
+ table?: string;
+ hint?: string;
+ internal_query?: string;
+ detail?: string;
+ where?: string;
+ severity_v?: string;
+ file?: string;
+ _unknown_error_tag?: string;
+ position?: string;
+ line?: string;
+ data?: string;
+ message?: string;
+ schema?: string;
+ [k: string]: unknown;
+ };
+ authentication_mode?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ notes?: string;
+ p502?: {
+ modbus?: {
+ device_id?: {
+ /**
+ * Requested function type; see http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
+ */
+ function_code?: string;
+ /**
+ * Indicates whether the server supports modbus.
+ */
+ support?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * See http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf
+ */
+ mei_response?: {
+ objects?: {
+ user_application_name?: string;
+ /**
+ * Mandatory ASCII string on all objects. Names the vendor.
+ */
+ vendor?: string;
+ product_name?: string;
+ product_code?: string;
+ model_name?: string;
+ vendor_url?: string;
+ revision?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Identification conformity level of the device and type of supported access
+ */
+ conformity_level?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ description?: string;
+ revision?: string;
+ os_version?: string;
+ version?: string;
+ device_type?: string;
+ manufacturer?: string;
+ os?: string;
+ os_description?: string;
+ [k: string]: unknown;
+ };
+ p7547?: {
+ cwmp?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ ports?: string;
+ p993?: {
+ imaps?: {
+ tls?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The IMAP/POP3 command sent by the server as soon as the TLS handshake completes.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p143?: {
+ imap?: {
+ starttls?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The response to the starttls command.
+ */
+ starttls?: string;
+ /**
+ * The IMAP/POP3 command sent by the server immediately upon connection.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p9200?: {
+ elasticsearch?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ nodes_info?: {
+ cluster?: {
+ status?: string;
+ timestamp?: string;
+ uuid?: string;
+ name?: string;
+ filesystem?: {
+ /**
+ * Human-friendly available size
+ */
+ available?: string;
+ /**
+ * Total size in bytes
+ */
+ total_in_bytes?: string;
+ /**
+ * Free size in bytes
+ */
+ free_in_bytes?: string;
+ /**
+ * Human-friendly free size
+ */
+ free?: string;
+ /**
+ * Human-friendly total size
+ */
+ total?: string;
+ /**
+ * Available size in bytes
+ */
+ available_in_bytes?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ nodes?: {
+ node_info?: {
+ name?: string;
+ roles?: string;
+ settings?: {
+ node?: {
+ attr?: {
+ ml?: {
+ enabled?: string;
+ machine_memory?: string;
+ max_open_jobs?: string;
+ [k: string]: unknown;
+ };
+ xpack?: {
+ installed?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ name?: string;
+ [k: string]: unknown;
+ };
+ cluster?: {
+ name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ thread_pool_list?: {
+ thread_name?: string;
+ min?: string;
+ max?: string;
+ keep_alive?: string;
+ queue_size?: string;
+ type?: string;
+ [k: string]: unknown;
+ };
+ ip?: string;
+ build_flavor?: string;
+ modules?: {
+ has_native_controller?: boolean;
+ description?: string;
+ java_version?: string;
+ classname?: string;
+ version?: string;
+ elasticsearch_version?: string;
+ extended_plugins?: string;
+ name?: string;
+ [k: string]: unknown;
+ };
+ ingest?: {
+ processors?: {
+ type?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ total_indexing_buffer?: string;
+ host?: string;
+ version?: string;
+ jvm?: {
+ vm_name?: string;
+ vm_version?: string;
+ start_time?: string;
+ gc_collectors?: string;
+ input_arguments?: string;
+ vm_vendor?: string;
+ version?: string;
+ memory_pools?: string;
+ start_time_in_millis?: string;
+ [k: string]: unknown;
+ };
+ build_hash?: string;
+ os?: {
+ name?: string;
+ pretty_name?: string;
+ allocated_processors?: string;
+ version?: string;
+ arch?: string;
+ refresh_interval_in_millis?: string;
+ available_processors?: string;
+ [k: string]: unknown;
+ };
+ build_type?: string;
+ [k: string]: unknown;
+ };
+ node_name?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * If true, Elasticsearch was detected on this machine.
+ */
+ supported?: boolean;
+ system_info?: {
+ /**
+ * Cluster UUID
+ */
+ cluster_uuid?: string;
+ /**
+ * Elasticsearch identifying tagline
+ */
+ tagline?: string;
+ version?: {
+ build_date?: string;
+ minimum_wire_compatibility_version?: string;
+ build_hash?: string;
+ /**
+ * ES Cluster version
+ */
+ number?: string;
+ build_type?: string;
+ minimum_index_compatibility_version?: string;
+ build_flavor?: string;
+ build_snapshot?: boolean;
+ lucene_version?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Cluster Name
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ http_info?: {
+ headers?: {
+ content_length?: string;
+ x_ua_compatible?: string;
+ via?: string;
+ pragma?: string;
+ set_cookie?: string;
+ x_powered_by?: string;
+ vary?: string;
+ retry_after?: string;
+ warning?: string;
+ content_language?: string;
+ content_location?: string;
+ p3p?: string;
+ server?: string;
+ proxy_authenticate?: string;
+ proxy_agent?: string;
+ upgrade?: string;
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ x_content_type_options?: string;
+ x_content_security_policy?: string;
+ www_authenticate?: string;
+ content_range?: string;
+ content_encoding?: string;
+ access_control_allow_origin?: string;
+ content_md5?: string;
+ content_disposition?: string;
+ cache_control?: string;
+ location?: string;
+ status?: string;
+ strict_transport_security?: string;
+ expires?: string;
+ accept_patch?: string;
+ last_modified?: string;
+ link?: string;
+ content_type?: string;
+ date?: string;
+ x_frame_options?: string;
+ x_webkit_csp?: string;
+ x_real_ip?: string;
+ alternate_protocol?: string;
+ accept_ranges?: string;
+ age?: string;
+ x_xss_protection?: string;
+ x_forwarded_for?: string;
+ refresh?: string;
+ public_key_pins?: string;
+ connection?: string;
+ x_content_duration?: string;
+ alt_svc?: string;
+ allow?: string;
+ referer?: string;
+ content_security_policy?: string;
+ transfer_encoding?: string;
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ status_line?: string;
+ status_code?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p16992?: {
+ http?: {
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p631?: {
+ ipp?: {
+ banner?: {
+ /**
+ * If the server allows upgrading the session to use TLS, this is the log of the handshake.
+ */
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The specific IPP version returned in response to an IPP get-printer-attributes request. Always in the form 'IPP/x.y'
+ */
+ version_string?: string;
+ /**
+ * If true, IPP was detected on this machine.
+ */
+ supported?: boolean;
+ /**
+ * Major component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request.
+ */
+ version_major?: string;
+ /**
+ * The CUPS version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Generally in the form 'x.y.z'.
+ */
+ attr_cups_version?: string;
+ /**
+ * Each IPP version, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Always in the form 'x.y'.
+ */
+ attr_ipp_versions?: string;
+ /**
+ * The CUPS version, if any, specified in the Server header of an IPP get-attributes response.
+ */
+ cups_version?: string;
+ /**
+ * Each printer URI, if any, specified in the list of attributes returned in a get-printer-attributes response or CUPS-get-printers response. Uses ipp(s) or http(s) scheme, followed by a hostname or IP, and then the path to a particular printer.
+ */
+ attr_printer_uris?: string;
+ /**
+ * All IPP attributes included in any contentful responses obtained. Each has a name, list of values (potentially only one), and a tag denoting how the value should be interpreted.
+ */
+ attributes?: {
+ tag?: string;
+ values?: {
+ memberAttrName?: string;
+ octetString?: string;
+ charset?: string;
+ keyword?: string;
+ bagCollection?: string;
+ rangeOfInteger?: string;
+ enum?: string;
+ uri?: string;
+ dateTime?: string;
+ raw?: string;
+ nameWithoutLanguage?: string;
+ boolean?: boolean;
+ endCollection?: string;
+ mimeMediaType?: string;
+ integer?: string;
+ naturalLanguage?: string;
+ textWithLanguage?: string;
+ resolution?: string;
+ uriScheme?: string;
+ textWithoutLanguage?: string;
+ nameWithLanguage?: string;
+ [k: string]: unknown;
+ };
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Minor component of IPP version listed in the Server header of a response to an IPP get-printer-attributes request.
+ */
+ version_minor?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p995?: {
+ pop3s?: {
+ tls?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The IMAP/POP3 command sent by the server as soon as the TLS handshake completes.
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p445?: {
+ smb?: {
+ banner?: {
+ smbv1_support?: boolean;
+ /**
+ * If true, SMB was detected on this machine.
+ */
+ supported?: boolean;
+ negotiation_log?: {
+ status?: string;
+ security_mode?: string;
+ system_time?: string;
+ server_start_time?: string;
+ protocol_id?: string;
+ capabilities?: string;
+ server_guid?: string;
+ credits?: string;
+ dialect_revision?: string;
+ command?: string;
+ authentication_types?: string;
+ flags?: string;
+ [k: string]: unknown;
+ };
+ smb_version?: {
+ /**
+ * Major version
+ */
+ major?: string;
+ /**
+ * Full SMB Version String
+ */
+ version_string?: string;
+ /**
+ * Minor version
+ */
+ minor?: string;
+ /**
+ * Protocol Revision
+ */
+ revision?: string;
+ [k: string]: unknown;
+ };
+ session_setup_log?: {
+ status?: string;
+ protocol_id?: string;
+ target_name?: string;
+ negotiate_flags?: string;
+ setup_flags?: string;
+ credits?: string;
+ command?: string;
+ flags?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Capabilities flags for the connection. See [MS-SMB2] Sect. 2.2.4.
+ */
+ smb_capabilities?: {
+ /**
+ * Server supports multi-credit operations
+ */
+ smb_multicredit_support?: boolean;
+ /**
+ * Server supports multiple channels per session
+ */
+ smb_multchan_support?: boolean;
+ /**
+ * Server supports persistent handles
+ */
+ smb_persistent_handle_support?: boolean;
+ /**
+ * Server supports Distributed File System
+ */
+ smb_dfs_support?: boolean;
+ /**
+ * Server supports Leasing
+ */
+ smb_leasing_support?: boolean;
+ /**
+ * Server supports encryption
+ */
+ smb_encryption_support?: boolean;
+ /**
+ * Server supports directory leasing
+ */
+ smb_directory_leasing_support?: boolean;
+ [k: string]: unknown;
+ };
+ has_ntlm?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p443?: {
+ https?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Additional certificates provided by the server.
+ */
+ chain?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ dhe_export?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * True if the host supports export-grade Diffie-Hellman in TLS handshakes.
+ */
+ support?: boolean;
+ /**
+ * The parameters for the key.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ get?: {
+ /**
+ * The HTTP body, truncated according to configured MaxSize (default 256kb).
+ */
+ body?: string;
+ /**
+ * HTTP response headers. Names are normalized by converting them to lowercase and replacing hyphens with underscores. When a header is returned multiple times, only the first is included. Values are truncated to 256 bytes.
+ */
+ headers?: {
+ /**
+ * The value of the content_length header.
+ */
+ content_length?: string;
+ /**
+ * The value of the x-ua-compatible header.
+ */
+ x_ua_compatible?: string;
+ /**
+ * The value of the via header.
+ */
+ via?: string;
+ /**
+ * The value of the pragma header.
+ */
+ pragma?: string;
+ /**
+ * The value of the set_cookie header.
+ */
+ set_cookie?: string;
+ /**
+ * The value of the x-powered-by header.
+ */
+ x_powered_by?: string;
+ /**
+ * The value of the vary header.
+ */
+ vary?: string;
+ /**
+ * The value of the retry_after header.
+ */
+ retry_after?: string;
+ /**
+ * The value of the www-authenticate header.
+ */
+ www_authenticate?: string;
+ /**
+ * The value of the warning header.
+ */
+ warning?: string;
+ /**
+ * The value of the content_language header.
+ */
+ content_language?: string;
+ /**
+ * The value of the content_location header.
+ */
+ content_location?: string;
+ /**
+ * The value of the p3p header.
+ */
+ p3p?: string;
+ /**
+ * The value of the server header.
+ */
+ server?: string;
+ /**
+ * The value of the proxy-authenticate header.
+ */
+ proxy_authenticate?: string;
+ /**
+ * The value of the proxy-agent header.
+ */
+ proxy_agent?: string;
+ /**
+ * The value of the upgrade header.
+ */
+ upgrade?: string;
+ /**
+ * Other headers are included as a list of key, value pairs.
+ */
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The value of the x-content-type-options header.
+ */
+ x_content_type_options?: string;
+ /**
+ * The value of the x-content-security-policy header.
+ */
+ x_content_security_policy?: string;
+ /**
+ * The value of the etag header.
+ */
+ etag?: string;
+ /**
+ * The value of the content_range header.
+ */
+ content_range?: string;
+ /**
+ * The value of the content_encoding header.
+ */
+ content_encoding?: string;
+ /**
+ * The value of the access-control-allow-origin header.
+ */
+ access_control_allow_origin?: string;
+ /**
+ * The value of the content_md5 header.
+ */
+ content_md5?: string;
+ /**
+ * The value of the content_disposition header.
+ */
+ content_disposition?: string;
+ /**
+ * The value of the cache_control header.
+ */
+ cache_control?: string;
+ /**
+ * The value of the location header.
+ */
+ location?: string;
+ /**
+ * The value of the status header.
+ */
+ status?: string;
+ /**
+ * The value of the strict-transport-security header.
+ */
+ strict_transport_security?: string;
+ /**
+ * The value of the expires header.
+ */
+ expires?: string;
+ /**
+ * The value of the accept-patch header.
+ */
+ accept_patch?: string;
+ /**
+ * The value of the last_modified header.
+ */
+ last_modified?: string;
+ /**
+ * The value of the link header.
+ */
+ link?: string;
+ /**
+ * The value of the content_type header.
+ */
+ content_type?: string;
+ /**
+ * The value of the date header.
+ */
+ date?: string;
+ /**
+ * The value of the x-frame-options header.
+ */
+ x_frame_options?: string;
+ /**
+ * The value of the x-webkit-csp header.
+ */
+ x_webkit_csp?: string;
+ /**
+ * The value of the x-real-ip header.
+ */
+ x_real_ip?: string;
+ /**
+ * The value of the alternate_protocol header.
+ */
+ alternate_protocol?: string;
+ /**
+ * The value of the accept-ranges header.
+ */
+ accept_ranges?: string;
+ /**
+ * The value of the age header.
+ */
+ age?: string;
+ /**
+ * The value of the x-xss-protection header.
+ */
+ x_xss_protection?: string;
+ /**
+ * The value of the x-forwarded-for header.
+ */
+ x_forwarded_for?: string;
+ /**
+ * The value of the refresh header.
+ */
+ refresh?: string;
+ /**
+ * The value of the public-key-pins header.
+ */
+ public_key_pins?: string;
+ /**
+ * The value of the connection header.
+ */
+ connection?: string;
+ /**
+ * The value of the x-content-duration header.
+ */
+ x_content_duration?: string;
+ /**
+ * The value of the alt-svc header.
+ */
+ alt_svc?: string;
+ /**
+ * The value of the allow header.
+ */
+ allow?: string;
+ /**
+ * The value of the referer header.
+ */
+ referer?: string;
+ /**
+ * The value of the content-security-policy header.
+ */
+ content_security_policy?: string;
+ /**
+ * The value of the transfer_encoding header.
+ */
+ transfer_encoding?: string;
+ /**
+ * The value of the trailer header.
+ */
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The HTTP status code (e.g. 200, 404, 503).
+ */
+ status_code?: string;
+ /**
+ * The contents of the first TITLE tag in the body (stripped of any surrounding whitespace and truncated to 1024 characters).
+ */
+ title?: string;
+ /**
+ * The full status line returned by the server (e.g. "200 OK" or "401 UNAUTHORIZED")
+ */
+ status_line?: string;
+ /**
+ * The SHA2-256 digest of the body. NOTE: This digest is calculated using the same data returned in the body field, so if that was truncated, this will be calculated over the truncated body, rather than full data stored on the server.
+ */
+ body_sha256?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ dhe?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * True if the host supports Diffie-Hellman in TLS handshakes.
+ */
+ support?: boolean;
+ /**
+ * The parameters for the key.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ tls_1_2?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ ssl_3?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ heartbleed?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The server response to the Heartbeat extension
+ */
+ heartbeat_enabled?: boolean;
+ /**
+ * Indicates if the server is vulnerable to the Heartbleed attack.
+ */
+ heartbleed_vulnerable?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ rsa_export?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * True if the host supports export-grade RSA in TLS handshakes.
+ */
+ support?: boolean;
+ /**
+ * The parameters for the key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ ecdhe?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The parameters for the key.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * True if the host supports ECDH in TLS handshakes.
+ */
+ support?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ tls_1_1?: {
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ support?: boolean;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p9090?: {
+ prometheus?: {
+ banner?: {
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ certificate?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * List of all errors encountered during scan.
+ */
+ errors?: string;
+ /**
+ * If true, Prometheus was detected on this machine.
+ */
+ supported?: boolean;
+ http_info?: {
+ headers?: {
+ content_length?: string;
+ x_ua_compatible?: string;
+ via?: string;
+ pragma?: string;
+ set_cookie?: string;
+ x_powered_by?: string;
+ vary?: string;
+ retry_after?: string;
+ warning?: string;
+ content_language?: string;
+ content_location?: string;
+ p3p?: string;
+ server?: string;
+ proxy_authenticate?: string;
+ proxy_agent?: string;
+ upgrade?: string;
+ unknown?: {
+ value?: string;
+ key?: string;
+ [k: string]: unknown;
+ };
+ x_content_type_options?: string;
+ x_content_security_policy?: string;
+ www_authenticate?: string;
+ content_range?: string;
+ content_encoding?: string;
+ access_control_allow_origin?: string;
+ content_md5?: string;
+ content_disposition?: string;
+ cache_control?: string;
+ location?: string;
+ status?: string;
+ strict_transport_security?: string;
+ expires?: string;
+ accept_patch?: string;
+ last_modified?: string;
+ link?: string;
+ content_type?: string;
+ date?: string;
+ x_frame_options?: string;
+ x_webkit_csp?: string;
+ x_real_ip?: string;
+ alternate_protocol?: string;
+ accept_ranges?: string;
+ age?: string;
+ x_xss_protection?: string;
+ x_forwarded_for?: string;
+ refresh?: string;
+ public_key_pins?: string;
+ connection?: string;
+ x_content_duration?: string;
+ alt_svc?: string;
+ allow?: string;
+ referer?: string;
+ content_security_policy?: string;
+ transfer_encoding?: string;
+ trailer?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Status message received from hitting /api/v1/targets
+ */
+ status_line?: string;
+ /**
+ * Status code received from hitting /api/v1/targets
+ */
+ status_code?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Information Prometheus captured as well as build information.
+ */
+ response?: {
+ /**
+ * List of the versions and revisions of Prometheus.
+ */
+ prometheus_build_info?: {
+ /**
+ * Version of Prometheus.
+ */
+ version?: string;
+ /**
+ * Version of Go used to build Prometheus.
+ */
+ go_version?: string;
+ /**
+ * Revision of Prometheus.
+ */
+ revision?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * List of dropped targets.
+ */
+ dropped_targets?: {
+ discovered_labels?: {
+ /**
+ * URL scheme.
+ */
+ scheme?: string;
+ /**
+ * Job of target.
+ */
+ job?: string;
+ /**
+ * Path to metrics of target.
+ */
+ metrics_path?: string;
+ /**
+ * Address of target.
+ */
+ address?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * List of the versions of everything that Prometheus finds (i.e., version of Prometheus, Go, Node, cAdvisor, etc.)
+ */
+ all_versions?: string;
+ /**
+ * List of the versions of Go.
+ */
+ go_versions?: string;
+ /**
+ * List of active targets.
+ */
+ active_targets?: {
+ discovered_labels?: {
+ /**
+ * URL scheme.
+ */
+ scheme?: string;
+ /**
+ * Job of target.
+ */
+ job?: string;
+ /**
+ * Path to metrics of target.
+ */
+ metrics_path?: string;
+ /**
+ * Address of target.
+ */
+ address?: string;
+ [k: string]: unknown;
+ };
+ labels?: {
+ /**
+ * Instance after relabelling has occurred
+ */
+ instance?: string;
+ /**
+ * Job of target after relabelling has occurred
+ */
+ job?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * URL that Prometheus scraped.
+ */
+ scrape_url?: string;
+ /**
+ * Whether target is up or down.
+ */
+ health?: string;
+ /**
+ * Last error that occurred within target.
+ */
+ last_error?: string;
+ /**
+ * Last time Prometheus scraped target.
+ */
+ last_scrape?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ p465?: {
+ smtp?: {
+ tls?: {
+ /**
+ * The response to the EHLO command.
+ */
+ ehlo?: string;
+ tls?: {
+ /**
+ * The key data sent by the server in the TLS key exchange message.
+ */
+ server_key_exchange?: {
+ /**
+ * Parameters for the Diffie-Hellman key exchange.
+ */
+ dh_params?: {
+ /**
+ * The shared prime number.
+ */
+ prime?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's public key.
+ */
+ server_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The generator of the DH group.
+ */
+ generator?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's private key. Usually does not coexist with server_private.
+ */
+ client_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's private key. Usually does not coexist with client_private.
+ */
+ server_private?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The client's public key.
+ */
+ client_public?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The session key.
+ */
+ session_key?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Container for the public portion (modulus and exponent) of an RSA asymmetric key.
+ */
+ rsa_params?: {
+ /**
+ * Bit-length of modulus.
+ */
+ length?: string;
+ /**
+ * The RSA key's modulus (n) in big-endian encoding.
+ */
+ modulus?: string;
+ /**
+ * The RSA key's public exponent (e).
+ */
+ exponent?: string;
+ [k: string]: unknown;
+ };
+ signature?: {
+ raw?: string;
+ tls_version?: {
+ /**
+ * A human-readable version of the TLS version.
+ */
+ name?: string;
+ /**
+ * The TLS version identifier.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ valid?: boolean;
+ type?: string;
+ /**
+ * mirrors the TLS 1.2, SignatureAndHashAlgorithm struct. See RFC 5246, section A.4.1.
+ */
+ signature_and_hash_type?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * Parameters for ECDH key exchange.
+ */
+ ecdh_params?: {
+ /**
+ * An elliptic curve point.
+ */
+ server_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve algorithm identifier.
+ */
+ curve_id?: {
+ /**
+ * The numeric value of the curve identifier. See http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-8
+ */
+ id?: string;
+ /**
+ * The name of the curve algorithm (e.g. sect163kr1, secp192r1). Unrecognized curves are 'unknown'.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ server_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * An elliptic curve point.
+ */
+ client_public?: {
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ y?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * Generic parameter for a cryptographic algorithm.
+ */
+ x?: {
+ /**
+ * The length of the parameter.
+ */
+ length?: string;
+ /**
+ * The value of the parameter.
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * TLS key exchange parameters for ECDH keys.
+ */
+ client_private?: {
+ length?: string;
+ value?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ /**
+ * The digest that is signed.
+ */
+ digest?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The server's TLS certificate.
+ */
+ certificate?: {
+ parsed?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ fingerprint_sha256?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ chain?: {
+ fingerprints?: {
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's SubjectPublicKeyInfo, as a hexadecimal string.
+ */
+ spki_subject?: string;
+ /**
+ * The SHA1 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha1?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, as a hexadecimal string.
+ */
+ tbs?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate's TBSCertificate, *with any CT extensions omitted*, as a hexadecimal string.
+ */
+ tbs_noct?: string;
+ /**
+ * The SHA2-256 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ sha256?: string;
+ /**
+ * The MD5 digest over the DER encoding of the certificate, as a hexadecimal string.
+ */
+ md5?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * This is true if the client has the Secure Renegotiation extension (see https://tools.ietf.org/html/rfc5746).
+ */
+ secure_renegotiation?: boolean;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ session_ticket?: {
+ /**
+ * The length of the session ticket, in bytes.
+ */
+ length?: string;
+ /**
+ * A hint from the server as to how long the ticket should be stored (in seconds relative to when the ticket is received).
+ */
+ lifetime_hint?: string;
+ /**
+ * The session ticket (an opaque binary blob).
+ */
+ value?: string;
+ [k: string]: unknown;
+ };
+ cipher_suite?: {
+ /**
+ * The hexadecimal string representation of the numeric cipher algorithm identifier.
+ */
+ id?: string;
+ /**
+ * The algorithm identifier for the cipher algorithm identifier, see e.g. https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml.
+ */
+ name?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * A human-readable version of the TLS version.
+ */
+ version?: string;
+ /**
+ * This is true if the OCSP Stapling extension is set (see https://www.ietf.org/rfc/rfc6961.txt for details).
+ */
+ ocsp_stapling?: boolean;
+ signature?: {
+ /**
+ * The name of the hash algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ hash_algorithm?: string;
+ /**
+ * The signature error, if one occurred.
+ */
+ signature_error?: string;
+ valid?: boolean;
+ /**
+ * The name of the signature algorithm, as defined in RFC5246 section 7.4.1.4.1. Unrecognized values are of the form 'unknown.255'.
+ */
+ signature_algorithm?: string;
+ [k: string]: unknown;
+ };
+ /**
+ * The values in the SignedCertificateTimestampList of the Signed Certificate Timestamp, if present.
+ */
+ scts?: {
+ /**
+ * The SHA-256 hash of the log's public key, calculated over the DER encoding of the key's SubjectPublicKeyInfo.
+ */
+ log_id?: string;
+ /**
+ * Time at which the SCT was issued (in seconds since the Unix epoch).
+ */
+ timestamp?: string;
+ /**
+ * Version of the protocol to which the SCT conforms.
+ */
+ version?: string;
+ /**
+ * For future extensions to the protocol.
+ */
+ extensions?: string;
+ /**
+ * The log's signature for this SCT.
+ */
+ signature?: string;
+ [k: string]: unknown;
+ };
+ validation?: {
+ /**
+ * Indicates whether the server's domain name matches that in the certificate.
+ */
+ matches_domain?: boolean;
+ /**
+ * Indicates whether the certificate is trusted by the standard browser certificate stores.
+ */
+ browser_trusted?: boolean;
+ /**
+ * Description of the reason browser_trusted == false.
+ */
+ browser_error?: string;
+ [k: string]: unknown;
+ };
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ /**
+ * The response to the STARTTLS command.
+ */
+ starttls?: string;
+ /**
+ * Time the scan was run.
+ */
+ timestamp?: string;
+ /**
+ * The initial SMTP command sent by the server (e.g. "220 localhost.localdomain ESMTP Postfix (Ubuntu)\r\n"
+ */
+ banner?: string;
+ metadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+ };
+ [k: string]: unknown;
+}
diff --git a/backend/src/models/generated/kev.ts b/backend/src/models/generated/kev.ts
new file mode 100644
index 00000000..455dcc10
--- /dev/null
+++ b/backend/src/models/generated/kev.ts
@@ -0,0 +1,62 @@
+/* tslint:disable */
+/**
+ * This file was automatically generated by json-schema-to-typescript.
+ * DO NOT MODIFY IT BY HAND. Instead, run "npm run codegen" to regenerate this file.
+ */
+
+/**
+ * A catalog of known exploited vulnerabilities that carry significant risk to the federal enterprise
+ */
+export interface CISACatalogOfKnownExploitedVulnerabilities {
+ /**
+ * Version of the known exploited vulnerabilities catalog
+ */
+ catalogVersion: string;
+ /**
+ * Date-time of Catalog Release in the format YYYY-MM-DDTHH:mm:ss.sssZ
+ */
+ dateReleased: string;
+ /**
+ * Total number of Known Exploited Vulnerabilities in the catalog
+ */
+ count: number;
+ /**
+ * The exploited vulnerabilities included in this catalog
+ */
+ vulnerabilities: {
+ /**
+ * The CVE ID of the vulnerability in the format CVE-YYYY-NNNN, note that the number portion can have more than 4 digits
+ */
+ cveID: string;
+ /**
+ * The vendor or project name for the vulnerability
+ */
+ vendorProject: string;
+ /**
+ * The vulnerability product
+ */
+ product: string;
+ /**
+ * The name of the vulnerability
+ */
+ vulnerabilityName: string;
+ /**
+ * The date the vulnerability was added to the catalog in the format YYYY-MM-DD
+ */
+ dateAdded: string;
+ /**
+ * A short description of the vulnerability
+ */
+ shortDescription: string;
+ /**
+ * The required action to address the vulnerability
+ */
+ requiredAction: string;
+ /**
+ * The date the required action is due in the format YYYY-MM-DD
+ */
+ dueDate: string;
+ [k: string]: unknown;
+ }[];
+ [k: string]: unknown;
+}
diff --git a/backend/src/models/index.ts b/backend/src/models/index.ts
new file mode 100644
index 00000000..310cfb76
--- /dev/null
+++ b/backend/src/models/index.ts
@@ -0,0 +1,15 @@
+export * from './domain';
+export * from './cve';
+export * from './cpe';
+export * from './service';
+export * from './connection';
+export * from './vulnerability';
+export * from './scan';
+export * from './organization';
+export * from './user';
+export * from './role';
+export * from './scan-task';
+export * from './webpage';
+export * from './api-key';
+export * from './saved-search';
+export * from './organization-tag';
diff --git a/backend/src/models/organization-tag.ts b/backend/src/models/organization-tag.ts
new file mode 100644
index 00000000..19ce0721
--- /dev/null
+++ b/backend/src/models/organization-tag.ts
@@ -0,0 +1,47 @@
+import {
+ Entity,
+ Index,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ ManyToMany,
+ JoinTable,
+ Column
+} from 'typeorm';
+import { Organization, Scan } from '.';
+
+@Entity()
+@Index(['name'], { unique: true })
+export class OrganizationTag extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column()
+ name: string;
+
+ /**
+ * Organizations that are labeled with this tag
+ */
+ @ManyToMany((type) => Organization, (organization) => organization.tags, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ @JoinTable()
+ organizations: Organization[];
+
+ /**
+ * Scans that have this tag enabled, and will run against all tagged organizations
+ */
+ @ManyToMany((type) => Scan, (scan) => scan.tags, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ scans: Scan[];
+}
diff --git a/backend/src/models/organization.ts b/backend/src/models/organization.ts
new file mode 100644
index 00000000..3c359313
--- /dev/null
+++ b/backend/src/models/organization.ts
@@ -0,0 +1,160 @@
+import {
+ Entity,
+ Index,
+ Column,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ OneToMany,
+ ManyToMany,
+ ManyToOne
+} from 'typeorm';
+import { Domain, Role, Scan, ScanTask, OrganizationTag } from '.';
+import { User } from './user';
+
+export interface PendingDomain {
+ name: string;
+ token: string;
+}
+
+@Entity()
+export class Organization extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Index({ unique: true })
+ @Column({
+ nullable: true,
+ unique: true
+ })
+ acronym: string;
+
+ @Column()
+ name: string;
+
+ @Column('varchar', { array: true })
+ rootDomains: string[];
+
+ @Column('varchar', { array: true })
+ ipBlocks: string[];
+
+ @Column()
+ isPassive: boolean;
+
+ @OneToMany((type) => Domain, (domain) => domain.organization, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ domains: Domain[];
+
+ @Column('json', { default: '[]' })
+ pendingDomains: PendingDomain[];
+
+ @OneToMany((type) => Role, (role) => role.organization, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ userRoles: Role[];
+
+ /**
+ * Corresponds to "organization" property of ScanTask.
+ * Deprecated, replaced by "allScanTasks" property.
+ */
+ @OneToMany((type) => ScanTask, (scanTask) => scanTask.organization, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ scanTasks: ScanTask[];
+
+ /**
+ * Corresponds to "organizations" property of ScanTask.
+ */
+ @ManyToMany((type) => ScanTask, (scanTask) => scanTask.organizations, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ allScanTasks: ScanTask[];
+
+ @ManyToMany((type) => Scan, (scan) => scan.organizations, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ granularScans: Scan[];
+
+ @ManyToMany((type) => OrganizationTag, (tag) => tag.organizations, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ tags: OrganizationTag[];
+
+ /**
+ * The organization's parent organization, if any.
+ * Organizations without a parent organization are
+ * shown to users as 'Organizations', while organizations
+ * with a parent organization are shown to users as 'Teams'
+ */
+ @ManyToOne((type) => Organization, (org) => org.children, {
+ onDelete: 'CASCADE',
+ nullable: true
+ })
+ parent: Organization;
+
+ @OneToMany((type) => Organization, (org) => org.parent, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ children: Organization[];
+
+ @ManyToOne((type) => User, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ createdBy: User;
+
+ @Column({
+ nullable: true
+ })
+ country: string;
+
+ @Column({
+ nullable: true
+ })
+ state: string;
+
+ @Column({
+ nullable: true
+ })
+ regionId: string;
+
+ @Column({
+ nullable: true
+ })
+ stateFips: number;
+
+ @Column({
+ nullable: true
+ })
+ stateName: string;
+
+ @Column({
+ nullable: true
+ })
+ county: string;
+
+ @Column({
+ nullable: true
+ })
+ countyFips: number;
+
+ @Column({
+ nullable: true
+ })
+ type: string;
+}
diff --git a/backend/src/models/role.ts b/backend/src/models/role.ts
new file mode 100644
index 00000000..666eb09d
--- /dev/null
+++ b/backend/src/models/role.ts
@@ -0,0 +1,64 @@
+import {
+ Entity,
+ Index,
+ Column,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ ManyToOne
+} from 'typeorm';
+import { Organization, User } from './';
+
+@Entity()
+@Index(['user', 'organization'], { unique: true })
+export class Role extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @ManyToOne((type) => User, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ createdBy: User;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column({
+ default: 'user'
+ })
+ role: 'user' | 'admin';
+
+ @Column({
+ default: false
+ })
+ approved: boolean;
+
+ @ManyToOne((type) => User, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ approvedBy: User;
+
+ @ManyToOne((type) => User, (user) => user.roles, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ user: User;
+
+ // @ManyToOne((type) => User, (user) => user.organizations, {
+ // onDelete: 'CASCADE',
+ // onUpdate: 'CASCADE'
+ // })
+ // userOrgs: User;
+
+ @ManyToOne((type) => Organization, (organization) => organization.userRoles, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ organization: Organization;
+}
diff --git a/backend/src/models/saved-search.ts b/backend/src/models/saved-search.ts
new file mode 100644
index 00000000..91a9f63f
--- /dev/null
+++ b/backend/src/models/saved-search.ts
@@ -0,0 +1,61 @@
+import {
+ Entity,
+ Column,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ ManyToOne
+} from 'typeorm';
+import { Vulnerability } from './vulnerability';
+import { User } from './user';
+
+@Entity()
+export class SavedSearch extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column()
+ name: string;
+
+ @Column()
+ searchTerm: string;
+
+ @Column()
+ sortDirection: string;
+
+ @Column()
+ sortField: string;
+
+ @Column()
+ count: number;
+
+ @Column({ type: 'jsonb', default: '[]' })
+ filters: { field: string; values: any[]; type: string }[];
+
+ @Column()
+ searchPath: string;
+
+ @Column({
+ default: false
+ })
+ createVulnerabilities: boolean;
+
+ // Content of vulnerability when search is configured to create vulnerabilities from results
+ @Column({ type: 'jsonb', default: '{}' })
+ vulnerabilityTemplate: Partial & {
+ title: string;
+ };
+
+ @ManyToOne((type) => User, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ createdBy: User;
+}
diff --git a/backend/src/models/scan-task.ts b/backend/src/models/scan-task.ts
new file mode 100644
index 00000000..82b7896d
--- /dev/null
+++ b/backend/src/models/scan-task.ts
@@ -0,0 +1,121 @@
+import {
+ Entity,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ ManyToOne,
+ JoinColumn,
+ Column,
+ ManyToMany,
+ JoinTable
+} from 'typeorm';
+import { Scan, Organization } from '.';
+
+@Entity()
+export class ScanTask extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ /**
+ * Organization that this specific ScanTask runs on.
+ * Deprecated, replaced by "organizations" property.
+ */
+ @ManyToOne((type) => Organization, (organization) => organization.scanTasks, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ organization: Organization;
+
+ /**
+ * Organizations that this specific ScanTask runs on.
+ */
+ @ManyToMany(
+ (type) => Organization,
+ (organization) => organization.allScanTasks,
+ {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ }
+ )
+ @JoinTable()
+ organizations: Organization[];
+
+ @ManyToOne((type) => Scan, (scan) => scan.scanTasks, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ @JoinColumn()
+ scan: Scan;
+
+ /**
+ * created: model is created
+ * queued: Fargate capacity has been reached, so the task will run whenever there is available capacity.
+ * requested: a request to Fargate has been sent to start the task
+ * started: the Fargate container has started running the task
+ * finished: the Fargate container has finished running the task
+ * failed: any of the steps above have failed
+ */
+ @Column('text')
+ status:
+ | 'created'
+ | 'queued'
+ | 'requested'
+ | 'started'
+ | 'finished'
+ | 'failed';
+
+ @Column('text')
+ type: 'fargate' | 'lambda';
+
+ /**
+ * ARN of the associated fargate task.
+ */
+ @Column({
+ type: 'text',
+ nullable: true
+ })
+ fargateTaskArn: string | null;
+
+ @Column({
+ type: 'text',
+ nullable: true
+ })
+ input: string | null;
+
+ @Column({
+ type: 'text',
+ nullable: true
+ })
+ output: string | null;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ requestedAt: Date | null;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ startedAt: Date | null;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ finishedAt: Date | null;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ queuedAt: Date | null;
+}
diff --git a/backend/src/models/scan.ts b/backend/src/models/scan.ts
new file mode 100644
index 00000000..4a098acf
--- /dev/null
+++ b/backend/src/models/scan.ts
@@ -0,0 +1,113 @@
+import {
+ Entity,
+ Column,
+ PrimaryGeneratedColumn,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ OneToMany,
+ ManyToMany,
+ JoinTable,
+ ManyToOne
+} from 'typeorm';
+import { ScanTask, Organization, OrganizationTag } from '.';
+import { User } from './user';
+
+@Entity()
+export class Scan extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column()
+ name: string;
+
+ @Column('json')
+ arguments: Object;
+
+ /** How often the scan is run, in seconds */
+ @Column()
+ frequency: number;
+
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ lastRun: Date | null;
+
+ @OneToMany((type) => ScanTask, (scanTask) => scanTask.scan, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ scanTasks: ScanTask[];
+
+ /** Whether the scan is granular. Granular scans
+ * are only run on specified organizations.
+ * Global scans cannot be granular scans.
+ */
+ @Column({
+ type: 'boolean',
+ default: false
+ })
+ isGranular: boolean;
+
+ /** Whether the scan is user-modifiable. User-modifiable
+ * scans are granular scans that can be viewed and toggled on/off by
+ * organization admins themselves.
+ */
+ @Column({
+ type: 'boolean',
+ default: false,
+ nullable: true
+ })
+ isUserModifiable: boolean;
+
+ /**
+ * If the scan is granular, specifies organizations that the
+ * scan will run on.
+ */
+ @ManyToMany(
+ (type) => Organization,
+ (organization) => organization.granularScans,
+ {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ }
+ )
+ @JoinTable()
+ organizations: Organization[];
+
+ /**
+ * If the scan is granular, specifies organization tags that the
+ * scan will run on.
+ */
+ @ManyToMany((type) => OrganizationTag, (tag) => tag.scans, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ @JoinTable()
+ tags: OrganizationTag[];
+
+ @ManyToOne((type) => User, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ createdBy: User;
+
+ @Column({
+ type: 'boolean',
+ default: false
+ })
+ isSingleScan: boolean;
+
+ @Column({
+ type: 'boolean',
+ default: false
+ })
+ manualRunPending: boolean;
+}
diff --git a/backend/src/models/service.ts b/backend/src/models/service.ts
new file mode 100644
index 00000000..d27703fc
--- /dev/null
+++ b/backend/src/models/service.ts
@@ -0,0 +1,336 @@
+import {
+ Entity,
+ Column,
+ Index,
+ PrimaryGeneratedColumn,
+ ManyToOne,
+ BaseEntity,
+ CreateDateColumn,
+ BeforeInsert,
+ BeforeUpdate,
+ UpdateDateColumn
+} from 'typeorm';
+import { Domain } from './domain';
+import { Scan } from './scan';
+import { CpeParser } from '@thefaultvault/tfv-cpe-parser';
+import { EXCHANGE_BUILD_NUMBER_TO_CPE } from '../ref/exchange';
+
+const filterProducts = (product: Product) => {
+ // Filter out false positives.
+ const { cpe, version } = product;
+ if (cpe?.includes('apache:tomcat') && version === '1.1') {
+ // Wappalyzer incorrectly detects "Apache Tomcat 1.1"
+ // https://github.com/AliasIO/wappalyzer/issues/3305
+ return false;
+ }
+ if (cpe?.includes('apache:coyote') && version === '1.1') {
+ // Intrigue Ident incorrectly detects "Apache Coyote 1.1"
+ // https://github.com/intrigueio/intrigue-ident/issues/51
+ return false;
+ }
+ if (cpe?.includes('generic:unauthorized')) {
+ // Intrigue Ident sometimes detects "Unauthorized" CPEs
+ return false;
+ }
+ if (
+ cpe?.includes('f5:big-ip_application_security_manager:14.0.0_and_later')
+ ) {
+ // Intrigue Ident returns an invalid CPE version. TODO: ignore all invalid versions in CPEs.
+ return false;
+ }
+ return true;
+};
+
+const mapProducts = (product: Product) => {
+ if (!product.name) {
+ // Some products don't have names, so use a sensible default.
+ product.name = product.cpe || 'Unknown';
+ }
+ return product;
+};
+
+export interface Product {
+ // Common name
+ name: string;
+ // Product name
+ product?: string;
+ // Product vendor
+ vendor?: string;
+ // Product version
+ version: string;
+ // Product version revision
+ revision?: string;
+ // CPE without version (unique identifier)
+ cpe?: string;
+ // Optional icon
+ icon?: string;
+ // Optional description
+ description?: string;
+ // Tags
+ tags: string[];
+}
+
+@Entity()
+@Index(['port', 'domain'], { unique: true })
+export class Service extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Index()
+ @ManyToOne((type) => Domain, (domain) => domain.services, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ domain: Domain;
+
+ @ManyToOne((type) => Scan, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ discoveredBy: Scan;
+
+ /** Name of scan that discovered this port/service (censysIpv4, shodan). */
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ serviceSource: string | null;
+
+ @Column()
+ port: number;
+
+ @Column({
+ nullable: true,
+ type: 'varchar'
+ })
+ service: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'timestamp'
+ })
+ lastSeen: Date | null;
+
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ banner: string | null;
+
+ @Column({
+ type: 'jsonb',
+ default: []
+ })
+ products: Product[];
+
+ /** Censys Metadata */
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ censysMetadata: {
+ product: string;
+ revision: string;
+ description: string;
+ version: string;
+ manufacturer: string;
+ } | null;
+
+ /** Censys Ipv4 results */
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ censysIpv4Results: {
+ [x: string]: any;
+ };
+
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ intrigueIdentResults: {
+ fingerprint: {
+ type: string;
+ vendor: string;
+ product: string;
+ version: string;
+ update: string;
+ tags: string[];
+ match_type: string;
+ match_details: string;
+ hide: boolean;
+ cpe: string;
+ issue?: string;
+ task?: string;
+ inference: boolean;
+ }[];
+ content: {
+ type: string;
+ name: string;
+ hide?: boolean;
+ issue?: boolean;
+ task?: boolean;
+ result?: boolean;
+ }[];
+ };
+
+ /** Shodan results */
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ shodanResults: {
+ product: string;
+ version: string;
+ cpe?: string[];
+ } | null;
+
+ /** Wappalyzer output */
+ @Column({
+ type: 'jsonb',
+ default: []
+ })
+ wappalyzerResults: {
+ technology?: {
+ name?: string;
+ categories?: number[];
+ slug?: string;
+ url?: string[];
+ headers?: any[];
+ dns?: any[];
+ cookies?: any[];
+ dom?: any[];
+ html?: any[];
+ css?: any[];
+ certIssuer?: any[];
+ robots?: any[];
+ meta?: any[];
+ scripts?: any[];
+ js?: any;
+ implies?: any[];
+ excludes?: any[];
+ icon?: string;
+ website?: string;
+ cpe?: string;
+ };
+ pattern?: {
+ value?: string;
+ regex?: string;
+ confidence?: number;
+ version?: string;
+ };
+ // Actual detected version
+ version?: string;
+ }[];
+
+ @BeforeInsert()
+ @BeforeUpdate()
+ setProducts() {
+ const products: Product[] = [];
+ if (this.wappalyzerResults) {
+ for (const wappalyzerResult of this.wappalyzerResults) {
+ const { technology = {}, version = '' } = wappalyzerResult;
+ const product = {
+ name: technology.name!,
+ version,
+ cpe: technology.cpe,
+ icon: technology.icon,
+ tags: []
+ // TODO: Lookup category names from Wappalyzer.
+ // tags: (technology.categories || []).map((cat) => cat.name)
+ };
+ if (product.cpe === 'cpe:/a:microsoft:exchange_server') {
+ // Translate detected Exchange build numbers to actual CPEs.
+ for (const possibleVersion in EXCHANGE_BUILD_NUMBER_TO_CPE) {
+ if (possibleVersion.startsWith(version)) {
+ product.cpe = EXCHANGE_BUILD_NUMBER_TO_CPE[possibleVersion];
+ break;
+ }
+ }
+ }
+ products.push(product);
+ }
+ }
+
+ if (this.intrigueIdentResults?.fingerprint) {
+ for (const result of this.intrigueIdentResults.fingerprint) {
+ const product = {
+ name: result.product,
+ version: result.version,
+ // Convert "cpe:2.3:" to "cpe:/"
+ cpe: result.cpe?.replace(/^cpe:2\.3:/, 'cpe:/'),
+ tags: result.tags,
+ vendor: result.vendor,
+ revision: result.update
+ };
+ products.push(product);
+ }
+ }
+
+ // Shodan stores all CPEs in the cpe array,
+ // but stores product name / version in the product and version
+ // keys for only one of those CPEs, so those two keys
+ // are not useful for our purposes.
+ if (this.shodanResults?.cpe && this.shodanResults.cpe.length > 0) {
+ for (const cpe of this.shodanResults.cpe) {
+ const parser = new CpeParser();
+ const parsed = parser.parse(cpe);
+ const product: Product = {
+ name: parsed.product,
+ version: parsed.version,
+ vendor: parsed.vendor,
+ cpe,
+ tags: []
+ };
+ products.push(product);
+ }
+ }
+
+ if (this.censysMetadata && Object.values(this.censysMetadata).length > 0) {
+ let cpe;
+
+ if (this.censysMetadata.manufacturer && this.censysMetadata.product) {
+ // TODO: Improve methods for getting CPEs from Censys
+ // See https://www.napier.ac.uk/~/media/worktribe/output-1500093/identifying-vulnerabilities-using-internet-wide-scanning-data.pdf
+ // and https://github.com/TheHairyJ/Scout
+ cpe =
+ `cpe:/a:${this.censysMetadata.manufacturer}:${this.censysMetadata.product}`.toLowerCase();
+ }
+ const product = {
+ name: this.censysMetadata.product,
+ version: this.censysMetadata.version,
+ description: this.censysMetadata.description,
+ product: this.censysMetadata.product,
+ revision: this.censysMetadata.revision,
+ cpe,
+ tags: []
+ };
+ products.push(product);
+ }
+
+ const productDict: { [cpe: string]: Product } = {};
+ const misc: Product[] = [];
+
+ for (const product of products) {
+ for (const prop in product) {
+ if (!product[prop]) delete product[prop];
+ }
+ if (product.cpe && productDict[product.cpe])
+ productDict[product.cpe] = { ...productDict[product.cpe], ...product };
+ else if (product.cpe) productDict[product.cpe] = product;
+ else misc.push(product);
+ }
+
+ this.products = Object.values(productDict)
+ .concat(misc)
+ .filter(filterProducts)
+ .map(mapProducts);
+ }
+}
diff --git a/backend/src/models/test/__snapshots__/service.test.ts.snap b/backend/src/models/test/__snapshots__/service.test.ts.snap
new file mode 100644
index 00000000..db43cfec
--- /dev/null
+++ b/backend/src/models/test/__snapshots__/service.test.ts.snap
@@ -0,0 +1,13 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`service set products 1`] = `
+Array [
+ Object {
+ "cpe": "cpe1",
+ "icon": "icon",
+ "name": "name",
+ "tags": Array [],
+ "version": "version",
+ },
+]
+`;
diff --git a/backend/src/models/test/service.test.ts b/backend/src/models/test/service.test.ts
new file mode 100644
index 00000000..861b993a
--- /dev/null
+++ b/backend/src/models/test/service.test.ts
@@ -0,0 +1,148 @@
+import { connectToDatabase } from '../connection';
+import { Service } from '../service';
+
+describe('service', () => {
+ let connection;
+ beforeAll(async () => {
+ connection = await connectToDatabase();
+ });
+ afterAll(async () => {
+ await connection.close();
+ });
+ test('set products', async () => {
+ const service = await Service.create({
+ port: 443
+ }).save();
+ service.wappalyzerResults = [
+ {
+ technology: {
+ cpe: 'cpe1',
+ name: 'name',
+ slug: 'slug',
+ icon: 'icon',
+ website: 'website',
+ categories: []
+ },
+ version: 'version'
+ }
+ ];
+ await service.save();
+ expect(service.products).toMatchSnapshot();
+ });
+ test('set products should not include a blacklisted product', async () => {
+ const service = await Service.create({
+ port: 443
+ }).save();
+ service.wappalyzerResults = [
+ {
+ technology: {
+ cpe: 'cpe:/a:apache:tomcat',
+ name: 'name',
+ slug: 'slug',
+ icon: 'icon',
+ website: 'website',
+ categories: []
+ },
+ version: '1.1'
+ }
+ ];
+ await service.save();
+ expect(service.products.length).toEqual(0);
+ });
+ test('set products should combine data from multiple scans (intrigue over wappalyzer)', async () => {
+ const service = await Service.create({
+ port: 443
+ }).save();
+ service.wappalyzerResults = [
+ {
+ technology: {
+ cpe: 'cpe:/a:software',
+ name: 'name',
+ slug: 'slug',
+ icon: 'icon',
+ website: 'website',
+ categories: []
+ },
+ version: ''
+ }
+ ];
+ service.intrigueIdentResults = {
+ fingerprint: [
+ {
+ cpe: 'cpe:/a:software',
+ version: '1.1',
+ type: '',
+ vendor: 'vendor',
+ update: '1',
+ tags: ['test'],
+ match_type: '',
+ match_details: '',
+ hide: false,
+ product: '',
+ inference: false
+ }
+ ],
+ content: []
+ };
+ await service.save();
+ expect(service.products).toMatchObject([
+ {
+ cpe: 'cpe:/a:software',
+ icon: 'icon',
+ name: 'name',
+ revision: '1',
+ tags: ['test'],
+ vendor: 'vendor',
+ version: '1.1'
+ }
+ ]);
+ });
+ test('set products should combine data from multiple scans (wappalyzer over intrigue)', async () => {
+ const service = await Service.create({
+ port: 443
+ }).save();
+ service.wappalyzerResults = [
+ {
+ technology: {
+ cpe: 'cpe:/a:software',
+ name: 'name',
+ slug: 'slug',
+ icon: 'icon',
+ website: 'website',
+ categories: []
+ },
+ version: '1.1'
+ }
+ ];
+ service.intrigueIdentResults = {
+ fingerprint: [
+ {
+ cpe: 'cpe:/a:software',
+ version: '',
+ type: '',
+ vendor: 'vendor',
+ update: '1',
+ tags: ['test'],
+ match_type: '',
+ match_details: '',
+ hide: false,
+ product: '',
+ inference: false
+ }
+ ],
+ content: []
+ };
+ await service.save();
+ expect(service.products).toMatchObject([
+ {
+ cpe: 'cpe:/a:software',
+ icon: 'icon',
+ name: 'name',
+ revision: '1',
+ tags: ['test'],
+ vendor: 'vendor',
+ version: '1.1'
+ }
+ ]);
+ });
+});
diff --git a/backend/src/models/user.ts b/backend/src/models/user.ts
new file mode 100644
index 00000000..8a9cdc5f
--- /dev/null
+++ b/backend/src/models/user.ts
@@ -0,0 +1,130 @@
+import {
+ Entity,
+ Index,
+ Column,
+ UpdateDateColumn,
+ CreateDateColumn,
+ BaseEntity,
+ OneToMany,
+ BeforeInsert,
+ PrimaryGeneratedColumn,
+ BeforeUpdate
+} from 'typeorm';
+import { Organization, Role } from './';
+import { ApiKey } from './api-key';
+
+export enum UserType {
+ STANDARD = 'standard',
+ GLOBAL_VIEW = 'globalView',
+ GLOBAL_ADMIN = 'globalAdmin',
+ REGIONAL_ADMIN = 'regionalAdmin'
+}
+@Entity()
+export class User extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @Index({ unique: true })
+ @Column({
+ nullable: true
+ })
+ cognitoId: string;
+
+ @Index({ unique: true })
+ @Column({
+ nullable: true
+ })
+ loginGovId: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column()
+ firstName: string;
+
+ @Column()
+ lastName: string;
+
+ @Column()
+ fullName: string;
+
+ @Index({ unique: true })
+ @Column()
+ email: string;
+
+ /** Whether the user's invite is pending */
+ @Column({ default: false })
+ invitePending: boolean;
+
+ /**
+ * When the user accepted the terms of use,
+ * if the user did so
+ */
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ dateAcceptedTerms: Date | null;
+
+ @Column({
+ type: 'text',
+ nullable: true
+ })
+ acceptedTermsVersion: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'timestamp'
+ })
+ lastLoggedIn: Date | null;
+
+ /** The user's type. globalView allows access to all organizations
+ * while globalAdmin allows universally administering Crossfeed */
+ @Column('text', { default: UserType.STANDARD })
+ userType: UserType;
+
+ /** List of the user's API keys */
+ @OneToMany((type) => ApiKey, (key) => key.user, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ apiKeys: ApiKey[];
+
+ /** The roles for organizations which the user belongs to */
+ @OneToMany((type) => Role, (role) => role.user, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ roles: Role[];
+
+ @BeforeInsert()
+ @BeforeUpdate()
+ setFullName() {
+ this.fullName = this.firstName + ' ' + this.lastName;
+ }
+
+ @Column({
+ nullable: true
+ })
+ regionId: string;
+
+ @Column({
+ nullable: true
+ })
+ state: string;
+
+ // @Column({
+ // nullable: true,
+ // default: 0
+ // })
+ // numberOfOrganizations: number;
+
+ // @Column({
+ // nullable: true,
+ // default: []
+ // })
+ // organizationIds: Array;
+}
diff --git a/backend/src/models/vulnerability.ts b/backend/src/models/vulnerability.ts
new file mode 100644
index 00000000..c621a61f
--- /dev/null
+++ b/backend/src/models/vulnerability.ts
@@ -0,0 +1,207 @@
+import {
+ Entity,
+ Column,
+ PrimaryGeneratedColumn,
+ BaseEntity,
+ CreateDateColumn,
+ ManyToOne,
+ Index,
+ UpdateDateColumn,
+ BeforeInsert,
+ BeforeUpdate
+} from 'typeorm';
+import { User } from './user';
+import { Domain } from './domain';
+import { Service } from './service';
+import { IsBoolean, IsOptional } from 'class-validator';
+
+export type VulnerabilitySubstate =
+ | 'unconfirmed'
+ | 'exploitable'
+ | 'false-positive'
+ | 'accepted-risk'
+ | 'remediated';
+
+@Entity()
+@Index(['domain', 'title'], { unique: true })
+@Index(['createdAt'])
+@Index(['updatedAt'])
+export class Vulnerability extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @ManyToOne((type) => Domain, (domain) => domain.vulnerabilities, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ domain: Domain;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ @Column({ nullable: true, type: 'timestamp' })
+ lastSeen: Date | null;
+
+ @Column()
+ title: string;
+
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ cve: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ cwe: string | null;
+
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ cpe: string | null;
+
+ @Column({
+ default: ''
+ })
+ description: string;
+
+ @Column({
+ type: 'jsonb',
+ default: []
+ })
+ references: {
+ url: string;
+ name: string;
+ source: string;
+ tags: string[];
+ }[];
+
+ @Column({
+ nullable: true,
+ type: 'decimal'
+ })
+ cvss: number | null;
+
+ @Column({
+ nullable: true,
+ type: 'text'
+ })
+ severity: 'None' | 'Low' | 'Medium' | 'High' | 'Critical' | null;
+
+ @Column({
+ default: false
+ })
+ needsPopulation: boolean;
+
+ @Column({ default: 'open' })
+ state: 'open' | 'closed';
+
+ @Column({ default: 'unconfirmed' })
+ substate: VulnerabilitySubstate;
+
+ /** Determines the source of the vulnerability, i.e., which
+ * logic caused it to be created.
+ */
+ @Column({ default: 'cpe2cve' })
+ source:
+ | 'cpe2cve'
+ | 'webpage_status_code'
+ | 'certs'
+ | 'shodan'
+ | 'hibp'
+ | 'lookingGlass'
+ | 'dnstwist'
+ | 'rootDomainSync';
+
+ @Column({
+ default: ''
+ })
+ notes: string;
+
+ @ManyToOne((type) => Service, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ service: Service;
+
+ @Column({
+ type: 'jsonb',
+ default: []
+ })
+ actions: {
+ type: 'state-change' | 'comment';
+ state?: string;
+ substate?: string;
+ value?: string;
+ automatic: boolean;
+ userId: string | null;
+ userName: string | null;
+ date: Date;
+ }[];
+
+ /** Stores structured vulnerability data related to a specific
+ * scan type, e.g., a list of emails found in breaches for a domain.
+ */
+ @Column({
+ type: 'jsonb',
+ default: {}
+ })
+ structuredData: object;
+
+ setState(
+ substate: VulnerabilitySubstate,
+ automatic: boolean,
+ user: User | null
+ ) {
+ this.substate = substate;
+ if (substate === 'unconfirmed' || substate === 'exploitable')
+ this.state = 'open';
+ else this.state = 'closed';
+ this.actions.unshift({
+ type: 'state-change',
+ state: this.state,
+ substate: this.substate,
+ automatic,
+ userId: user ? user.id : null,
+ userName: user ? user.fullName : null,
+ date: new Date()
+ });
+ }
+
+ /** Set to true if the vulnerability has been on the CISA Known Exploited Vulnerability (KEV) list. **/
+ @IsBoolean()
+ @IsOptional()
+ @Column({
+ default: false,
+ nullable: true
+ })
+ isKev?: boolean;
+
+ /* KEV results */
+ @IsOptional()
+ @Column({
+ type: 'jsonb',
+ default: {},
+ nullable: true
+ })
+ kevResults?: {
+ [x: string]: any;
+ };
+
+ @BeforeInsert()
+ @BeforeUpdate()
+ setSeverity() {
+ if (!this.cvss) return;
+ if (this.cvss === 0) this.severity = 'None';
+ else if (this.cvss < 4) this.severity = 'Low';
+ else if (this.cvss < 7) this.severity = 'Medium';
+ else if (this.cvss < 9) this.severity = 'High';
+ else this.severity = 'Critical';
+ }
+}
diff --git a/backend/src/models/webpage.ts b/backend/src/models/webpage.ts
new file mode 100644
index 00000000..98f39a71
--- /dev/null
+++ b/backend/src/models/webpage.ts
@@ -0,0 +1,79 @@
+import {
+ Entity,
+ Column,
+ Index,
+ PrimaryGeneratedColumn,
+ ManyToOne,
+ BaseEntity,
+ CreateDateColumn,
+ UpdateDateColumn
+} from 'typeorm';
+import { Domain } from './domain';
+import { Scan } from './scan';
+
+@Entity()
+@Index(['url', 'domain'], { unique: true })
+export class Webpage extends BaseEntity {
+ @PrimaryGeneratedColumn('uuid')
+ id: string;
+
+ @CreateDateColumn()
+ createdAt: Date;
+
+ @UpdateDateColumn()
+ updatedAt: Date;
+
+ /** When this model was last synced with Elasticsearch. */
+ @Column({
+ type: 'timestamp',
+ nullable: true
+ })
+ syncedAt: Date | null;
+
+ @ManyToOne((type) => Domain, (domain) => domain.webpages, {
+ onDelete: 'CASCADE',
+ onUpdate: 'CASCADE'
+ })
+ domain: Domain;
+
+ @ManyToOne((type) => Scan, {
+ onDelete: 'SET NULL',
+ onUpdate: 'CASCADE'
+ })
+ discoveredBy: Scan;
+
+ @Column({
+ nullable: true,
+ type: 'timestamp'
+ })
+ lastSeen: Date | null;
+
+ /** S3 key that corresponds to this webpage's contents. */
+ @Column({
+ nullable: true,
+ type: 'varchar'
+ })
+ s3Key: string | null;
+
+ @Column({
+ type: 'varchar'
+ })
+ url: string;
+
+ @Column({
+ type: 'numeric'
+ })
+ status: number;
+
+ @Column({
+ type: 'numeric',
+ nullable: true
+ })
+ responseSize: number | null;
+
+ @Column({
+ type: 'jsonb',
+ default: []
+ })
+ headers: { name: string; value: string }[];
+}
diff --git a/backend/src/ref/exchange.ts b/backend/src/ref/exchange.ts
new file mode 100644
index 00000000..b32aa700
--- /dev/null
+++ b/backend/src/ref/exchange.ts
@@ -0,0 +1,199 @@
+export const EXCHANGE_BUILD_NUMBER_TO_CPE = {
+ // Converts Microsoft Exchange short build numbers (which are detected by wappalyzer) to their corresponding CPEs.
+ // Taken from: https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019
+ '15.2.792.3': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_8',
+ '15.2.721.2': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_7',
+ '15.2.659.4': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_6',
+ '15.2.595.3': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_5',
+ '15.2.529.5': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_4',
+ '15.2.464.5': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_3',
+ '15.2.397.3': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_2',
+ '15.2.330.5': 'cpe:/a:microsoft:exchange_server:2019:cumulative_update_1',
+ '15.2.221.12': 'cpe:/a:microsoft:exchange_server:2019:-',
+ '15.2.196.0': 'cpe:/a:microsoft:exchange_server:2019:-',
+ '15.1.2176.2': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_19',
+ '15.1.2106.2': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_18',
+ '15.1.2044.4': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_17',
+ '15.1.1979.3': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_16',
+ '15.1.1913.5': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_15',
+ '15.1.1847.3': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_14',
+ '15.1.1779.2': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_13',
+ '15.1.1713.5': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_12',
+ '15.1.1591.10': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_11',
+ '15.1.1531.3': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_10',
+ '15.1.1466.3': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_9',
+ '15.1.1415.2': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_8',
+ '15.1.1261.35': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_7',
+ '15.1.1034.26': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_6',
+ '15.1.845.34': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_5',
+ '15.1.669.32': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_4',
+ '15.1.544.27': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_3',
+ '15.1.466.34': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_2',
+ '15.1.396.30': 'cpe:/a:microsoft:exchange_server:2016:cumulative_update_1',
+ '15.1.225.42': 'cpe:/a:microsoft:exchange_server:2016:-',
+ '15.1.225.16': 'cpe:/a:microsoft:exchange_server:2016:-',
+ '15.0.1497.2': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_23',
+ '15.0.1473.3': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_22',
+ '15.0.1395.4': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_21',
+ '15.0.1367.3': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_20',
+ '15.0.1365.1': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_19',
+ '15.0.1347.2': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_18',
+ '15.0.1320.4': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_17',
+ '15.0.1293.2': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_16',
+ '15.0.1263.5': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_15',
+ '15.0.1236.3': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_14',
+ '15.0.1210.3': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_13',
+ '15.0.1178.4': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_12',
+ '15.0.1156.6': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_11',
+ '15.0.1130.7': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_10',
+ '15.0.1104.5': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_9',
+ '15.0.1076.9': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_8',
+ '15.0.1044.25': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_7',
+ '15.0.995.29': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_6',
+ '15.0.913.22': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_5',
+ '15.0.847.32': 'cpe:/a:microsoft:exchange_server:2013:sp1',
+ '15.0.775.38': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_3',
+ '15.0.712.24': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_2',
+ '15.0.620.29': 'cpe:/a:microsoft:exchange_server:2013:cumulative_update_1',
+ '15.0.516.32': 'cpe:/a:microsoft:exchange_server:2013:rtm',
+ '14.3.509.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_31',
+ '14.3.496.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_30',
+ '14.3.468.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_29',
+ '14.3.461.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_28',
+ '14.3.452.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_27',
+ '14.3.442.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_26',
+ '14.3.435.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_25',
+ '14.3.419.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_24',
+ '14.3.417.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_23',
+ '14.3.411.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_22',
+ '14.3.399.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_21',
+ '14.3.389.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_20',
+ '14.3.382.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_19',
+ '14.3.361.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_18',
+ '14.3.352.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_17',
+ '14.3.336.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_16',
+ '14.3.319.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_15',
+ '14.3.301.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_14',
+ '14.3.294.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_13',
+ '14.3.279.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_12',
+ '14.3.266.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_11',
+ '14.3.248.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_10',
+ '14.3.235.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_9',
+ '14.3.224.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_8',
+ '14.3.224.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_8',
+ '14.3.210.2': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_7',
+ '14.3.195.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_6',
+ '14.3.181.6': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_5',
+ '14.3.174.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_4',
+ '14.3.169.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_3',
+ '14.3.158.1': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_2',
+ '14.3.146.0': 'cpe:/a:microsoft:exchange_server:2010:sp3_rollup_1',
+ '14.3.123.4': 'cpe:/a:microsoft:exchange_server:2010:sp3',
+ '14.2.390.3': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.375.0': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.342.3': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.328.10': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.3.328.5': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.318.4': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.318.2': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.309.2': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.298.4': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.283.3': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.2.247.5': 'cpe:/a:microsoft:exchange_server:2010:sp2',
+ '14.1.438.0': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.421.3': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.421.2': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.421.0': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.355.2': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.339.1': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.323.6': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.289.7': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.270.1': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.255.2': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.1.218.15': 'cpe:/a:microsoft:exchange_server:2010:sp1',
+ '14.0.726.0': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '14.0.702.1': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '14.0.694.0': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '14.0.689.0': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '14.0.682.1': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '14.0.639.21': 'cpe:/a:microsoft:exchange_server:2010:-',
+ '8.3.517.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.502.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.485.1': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.468.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.459.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.445.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.417.1': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.406.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.389.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.379.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.348.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.342.4': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.327.1': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.298.3': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.297.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.279.6': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.279.5': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.279.3': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.264.0': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.245.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.213.1': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.192.1': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.159.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.137.3': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.106.2': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.3.83.6': 'cpe:/a:microsoft:exchange_server:2007:sp3',
+ '8.2.305.3': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.2.254.0': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.2.247.2': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.2.234.1': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.2.217.3': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.2.176.2': 'cpe:/a:microsoft:exchange_server:2007:sp2',
+ '8.1.436.0': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.393.1': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.375.2': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.359.2': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.340.1': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.336.1': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.311.3': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.291.2': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.278.2': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.263.1': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.1.240.6': 'cpe:/a:microsoft:exchange_server:2007:sp1',
+ '8.0.813.0': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.783.2': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.754.0': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.744.0': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.730.1': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.711.2': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.708.3': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '8.0.685.25': 'cpe:/a:microsoft:exchange_server:2007:-',
+ '6.5.7654.4': 'cpe:/a:microsoft:exchange_server:2003:sp2',
+ '6.5.7653.33': 'cpe:/a:microsoft:exchange_server:2003:sp2',
+ '6.5.7683': 'cpe:/a:microsoft:exchange_server:2003:sp2',
+ '6.5.7226': 'cpe:/a:microsoft:exchange_server:2003:sp1',
+ '6.5.6944': 'cpe:/a:microsoft:exchange_server:2003',
+ '6.0.6620.7': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.6620.5': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.6603': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.6556': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.6487': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.6249': 'cpe:/a:microsoft:exchange_server:2000:sp3',
+ '6.0.5762': 'cpe:/a:microsoft:exchange_server:2000:sp2',
+ '6.0.4712': 'cpe:/a:microsoft:exchange_server:2000:sp1',
+ '6.0.4417': 'cpe:/a:microsoft:exchange_server:2000:-',
+ '5.5.2653': 'cpe:/a:microsoft:exchange_server:5.5:sp4',
+ '5.5.2650': 'cpe:/a:microsoft:exchange_server:5.5:sp3',
+ '5.5.2448': 'cpe:/a:microsoft:exchange_server:5.5:sp2',
+ '5.5.2232': 'cpe:/a:microsoft:exchange_server:5.5:sp1',
+ '5.5.1960': 'cpe:/a:microsoft:exchange_server:5.5:-',
+ '5.0.1460': 'cpe:/a:microsoft:exchange_server:5.0:sp2',
+ '5.0.1458': 'cpe:/a:microsoft:exchange_server:5.0:sp1',
+ '5.0.1457': 'cpe:/a:microsoft:exchange_server:5.0:-',
+ '4.0.996': 'cpe:/a:microsoft:exchange_server:4.0:sp5',
+ '4.0.995': 'cpe:/a:microsoft:exchange_server:4.0:sp4',
+ '4.0.994': 'cpe:/a:microsoft:exchange_server:4.0:sp3',
+ '4.0.993': 'cpe:/a:microsoft:exchange_server:4.0:sp2',
+ '4.0.838': 'cpe:/a:microsoft:exchange_server:4.0:sp1',
+ '4.0.837': 'cpe:/a:microsoft:exchange_server:4.0:-'
+};
diff --git a/backend/src/tasks/__mocks__/ecs-client.ts b/backend/src/tasks/__mocks__/ecs-client.ts
new file mode 100644
index 00000000..ba6f144f
--- /dev/null
+++ b/backend/src/tasks/__mocks__/ecs-client.ts
@@ -0,0 +1,21 @@
+import { CommandOptions } from '../ecs-client';
+
+export const runCommand = jest.fn(async (commandOptions: CommandOptions) => {
+ return {
+ tasks: [
+ {
+ taskArn: 'mock_task_arn'
+ }
+ ]
+ };
+});
+
+export const getNumTasks = jest.fn(() => 0);
+
+export const getLogs = jest.fn(() => 'logs');
+
+export default jest.fn(() => ({
+ runCommand,
+ getNumTasks,
+ getLogs
+}));
diff --git a/backend/src/tasks/__mocks__/es-client.ts b/backend/src/tasks/__mocks__/es-client.ts
new file mode 100644
index 00000000..3bf61d3b
--- /dev/null
+++ b/backend/src/tasks/__mocks__/es-client.ts
@@ -0,0 +1,14 @@
+export const syncDomainsIndex = jest.fn(() => ({}));
+
+export const updateDomains = jest.fn(() => ({}));
+
+export const updateWebpages = jest.fn(() => ({}));
+
+export const searchDomains = jest.fn(() => ({}));
+
+export default jest.fn(() => ({
+ syncDomainsIndex,
+ updateDomains,
+ updateWebpages,
+ searchDomains
+}));
diff --git a/backend/src/tasks/__mocks__/s3-client.ts b/backend/src/tasks/__mocks__/s3-client.ts
new file mode 100644
index 00000000..9afb9a92
--- /dev/null
+++ b/backend/src/tasks/__mocks__/s3-client.ts
@@ -0,0 +1,9 @@
+export const saveCSV = jest.fn(() => 'http://mock_url');
+export const listReports = jest.fn(() => ({ Contents: 'report content' }));
+export const exportReport = jest.fn(() => 'report_url');
+
+export default jest.fn(() => ({
+ saveCSV,
+ listReports,
+ exportReport
+}));
diff --git a/backend/src/tasks/amass.ts b/backend/src/tasks/amass.ts
new file mode 100644
index 00000000..34017d22
--- /dev/null
+++ b/backend/src/tasks/amass.ts
@@ -0,0 +1,57 @@
+import { Domain } from '../models';
+import { spawnSync } from 'child_process';
+import { readFileSync } from 'fs';
+import { plainToClass } from 'class-transformer';
+import { CommandOptions } from './ecs-client';
+import getRootDomains from './helpers/getRootDomains';
+import saveDomainsToDb from './helpers/saveDomainsToDb';
+import * as path from 'path';
+
+const OUT_PATH = path.join(__dirname, 'out-' + Math.random() + '.txt');
+
+export const handler = async (commandOptions: CommandOptions) => {
+ const { organizationId, organizationName, scanId } = commandOptions;
+
+ console.log('Running amass on organization', organizationName);
+
+ const rootDomains = await getRootDomains(organizationId!);
+
+ for (const rootDomain of rootDomains) {
+ try {
+ const args = [
+ 'enum',
+ '-ip',
+ '-active',
+ '-d',
+ rootDomain,
+ '-json',
+ OUT_PATH
+ ];
+ console.log('Running amass with args', args);
+ spawnSync('amass', args, { stdio: 'pipe' });
+ const output = String(readFileSync(OUT_PATH));
+ const lines = output.split('\n');
+ const domains: Domain[] = [];
+ for (const line of lines) {
+ if (line == '') continue;
+ const parsed = JSON.parse(line);
+ domains.push(
+ plainToClass(Domain, {
+ ip: parsed.addresses[0].ip,
+ name: parsed.name,
+ asn: parsed.addresses[0].asn,
+ organization: { id: organizationId },
+ fromRootDomain: rootDomain,
+ subdomainSource: 'amass',
+ discoveredBy: { id: scanId }
+ })
+ );
+ }
+ await saveDomainsToDb(domains);
+ console.log(`amass created/updated ${domains.length} new domains`);
+ } catch (e) {
+ console.error(e);
+ continue;
+ }
+ }
+};
diff --git a/backend/src/tasks/bastion.ts b/backend/src/tasks/bastion.ts
new file mode 100644
index 00000000..ab6c0556
--- /dev/null
+++ b/backend/src/tasks/bastion.ts
@@ -0,0 +1,21 @@
+import { Handler } from 'aws-lambda';
+import { connectToDatabase, User } from '../models';
+import ESClient from '../tasks/es-client';
+
+export const handler: Handler = async (event) => {
+ if (event.mode === 'db') {
+ const connection = await connectToDatabase(true);
+ const res = await connection.query(event.query);
+ console.log(res);
+ } else if (event.mode === 'es') {
+ if (event.query === 'delete') {
+ const client = new ESClient();
+ await client.deleteAll();
+ console.log('Index successfully deleted');
+ } else {
+ console.log('Query not found: ' + event.query);
+ }
+ } else {
+ console.log('Mode not found: ' + event.mode);
+ }
+};
diff --git a/backend/src/tasks/censys.ts b/backend/src/tasks/censys.ts
new file mode 100644
index 00000000..83e92a92
--- /dev/null
+++ b/backend/src/tasks/censys.ts
@@ -0,0 +1,135 @@
+import axios from 'axios';
+import { Domain } from '../models';
+import { plainToClass } from 'class-transformer';
+import * as dns from 'dns';
+import saveDomainsToDb from './helpers/saveDomainsToDb';
+import { CommandOptions } from './ecs-client';
+import getRootDomains from './helpers/getRootDomains';
+
+interface CensysAPIResponse {
+ result: {
+ total: number;
+ hits: [
+ {
+ names?: string[];
+ }
+ ];
+ };
+}
+
+const resultLimit = 1000;
+const resultsPerPage = 100;
+
+const sleep = (milliseconds: number) => {
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
+};
+
+const fetchCensysData = async (rootDomain: string) => {
+ console.log(`Fetching certificates for ${rootDomain}`);
+ const data = await fetchPage(rootDomain);
+ console.log(
+ `Censys found ${data.result.total} certificates for ${rootDomain}
+ Fetching ${Math.min(data.result.total, resultLimit)} of them...`
+ );
+ let resultCount = 0;
+ let nextToken = data.result.links.next;
+ while (nextToken && resultCount < resultLimit) {
+ const nextPage = await fetchPage(rootDomain, nextToken);
+ data.result.hits = data.result.hits.concat(nextPage.result.hits);
+ nextToken = nextPage.result.links.next;
+ resultCount += resultsPerPage;
+ }
+ return data as CensysAPIResponse;
+};
+
+const fetchPage = async (rootDomain: string, nextToken?: string) => {
+ const { data } = await axios({
+ url: 'https://search.censys.io/api/v2/certificates/search',
+ method: 'POST',
+ auth: {
+ username: String(process.env.CENSYS_API_ID),
+ password: String(process.env.CENSYS_API_SECRET)
+ },
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ data: {
+ q: rootDomain,
+ per_page: resultsPerPage,
+ cursor: nextToken,
+ fields: ['names']
+ }
+ });
+ return data;
+};
+
+export const handler = async (commandOptions: CommandOptions) => {
+ const { organizationId, organizationName, scanId } = commandOptions;
+
+ console.log(`Running Censys on: ${organizationName}`);
+
+ const rootDomains = await getRootDomains(organizationId!);
+ const uniqueNames = new Set(); //used to dedupe domain names
+ const foundDomains = new Set<{
+ name: string;
+ organization: { id: string };
+ fromRootDomain: string;
+ discoveredBy: { id: string };
+ }>();
+
+ for (const rootDomain of rootDomains) {
+ const data = await fetchCensysData(rootDomain);
+ for (const hit of data.result.hits) {
+ if (!hit.names) continue;
+ for (const name of hit.names) {
+ const normalizedName = name.replace(/\*\.|^(www\.)/g, ''); // Remove www from beginning of name and wildcards from entire name
+ if (
+ normalizedName.endsWith(rootDomain) &&
+ !uniqueNames.has(normalizedName)
+ ) {
+ uniqueNames.add(normalizedName);
+ foundDomains.add({
+ name: normalizedName,
+ organization: { id: organizationId! },
+ fromRootDomain: rootDomain,
+ discoveredBy: { id: scanId }
+ });
+ }
+ }
+ }
+
+ await sleep(1000); // Wait for rate limit
+ }
+
+ // LATER: Can we just grab the cert the site is presenting, and store that?
+ // Censys (probably doesn't know who's presenting it)
+ // SSLyze (fetches the cert), Project Sonar (has SSL certs, but not sure how pulls domains -- from IPs)
+ // Project Sonar has both forward & reverse DNS for finding subdomains
+
+ // Save domains to database
+ console.log(`Saving ${organizationName} subdomains to database...`);
+ const domains: Domain[] = [];
+ for (const domain of foundDomains) {
+ let ip: string | null;
+ try {
+ ip = (await dns.promises.lookup(domain.name)).address;
+ } catch {
+ // IP not found
+ ip = null;
+ }
+ domains.push(
+ plainToClass(Domain, {
+ ip: ip,
+ name: domain.name,
+ organization: domain.organization,
+ fromRootDomain: domain.fromRootDomain,
+ subdomainSource: 'censys',
+ discoveredBy: domain.discoveredBy
+ })
+ );
+ }
+ await saveDomainsToDb(domains);
+ console.log(
+ `Censys saved or updated ${domains.length} subdomains for ${organizationName}`
+ );
+};
diff --git a/backend/src/tasks/censys/mapping.ts b/backend/src/tasks/censys/mapping.ts
new file mode 100644
index 00000000..c55529e0
--- /dev/null
+++ b/backend/src/tasks/censys/mapping.ts
@@ -0,0 +1,194 @@
+import { CensysIpv4Data } from '../../models/generated/censysIpv4';
+
+type Mapping = {
+ [x in keyof CensysIpv4Data]: (service: CensysIpv4Data[x]) => {
+ banner?: string | null;
+ censysMetadata?: {
+ product?: string;
+ revision?: string;
+ description?: string;
+ version?: string;
+ manufacturer?: string;
+ };
+ };
+};
+
+const httpMap = (e: CensysIpv4Data['p80']) => ({
+ banner: e?.http?.get?.body,
+ censysMetadata: e?.http?.get?.metadata
+});
+
+const httpsMap = (e: CensysIpv4Data['p443']) => ({
+ banner: e?.https?.get?.body,
+ censysMetadata: e?.https?.get?.metadata
+});
+
+const vncMap = (e: CensysIpv4Data['p5900']) => ({
+ banner: null,
+ censysMetadata: e?.vnc?.banner?.metadata
+});
+
+export const mapping: Mapping = {
+ p80: httpMap,
+ p8888: httpMap,
+ p8080: httpMap,
+ p16992: httpMap,
+ p443: httpsMap,
+ p16993: httpsMap,
+ p21: (e) => ({
+ banner: e?.ftp?.banner?.banner,
+ censysMetadata: e?.ftp?.banner?.metadata
+ }),
+ p22: (e) => ({
+ banner: e?.ssh?.v2?.banner?.raw,
+ censysMetadata: e?.ssh?.v2?.metadata
+ }),
+ p23: (e) => ({
+ banner: e?.telnet?.banner?.banner,
+ censysMetadata: e?.telnet?.banner?.metadata
+ }),
+ p25: (e) => ({
+ banner: e?.smtp?.starttls?.banner,
+ censysMetadata: e?.smtp?.starttls?.metadata
+ }),
+ p53: (e) => ({
+ banner: null,
+ censysMetadata: e?.dns?.lookup?.metadata
+ }),
+ p465: (e) => ({
+ banner: e?.smtp?.tls?.banner,
+ censysMetadata: e?.smtp?.tls?.metadata
+ }),
+ p587: (e) => ({
+ banner: e?.smtp?.starttls?.banner,
+ censysMetadata: e?.smtp?.starttls?.metadata
+ }),
+ p102: (e) => ({
+ banner: null,
+ censysMetadata: e?.s7?.szl?.metadata
+ }),
+ p110: (e) => ({
+ banner: e?.pop3?.starttls?.banner,
+ censysMetadata: e?.pop3?.starttls?.metadata
+ }),
+ p161: (e) => ({
+ banner: null,
+ censysMetadata: e?.snmp?.banner?.metadata
+ }),
+ p143: (e) => ({
+ banner: e?.imap?.starttls?.banner,
+ censysMetadata: e?.imap?.starttls?.metadata
+ }),
+ p445: (e) => ({
+ banner: null,
+ censysMetadata: e?.smb?.banner?.metadata
+ }),
+ p502: (e) => ({
+ banner: null,
+ censysMetadata: e?.modbus?.device_id?.metadata
+ }),
+ p623: (e) => ({
+ banner: e?.ipmi?.banner?.raw,
+ censysMetadata: e?.ipmi?.banner?.metadata
+ }),
+ p631: (e) => ({
+ banner: null,
+ censysMetadata: e?.ipp?.banner?.metadata
+ }),
+ p993: (e) => ({
+ banner: e?.imaps?.tls?.banner,
+ censysMetadata: e?.imaps?.tls?.metadata
+ }),
+ p995: (e) => ({
+ banner: e?.pop3s?.tls?.banner,
+ censysMetadata: e?.pop3s?.tls?.metadata
+ }),
+ p1433: (e) => ({
+ banner: null,
+ censysMetadata: e?.mssql?.banner?.metadata
+ }),
+ p1521: (e) => ({
+ banner: null,
+ censysMetadata: e?.oracle?.banner?.metadata
+ }),
+ p1883: (e) => ({
+ banner: null,
+ censysMetadata: e?.mqtt?.banner?.metadata
+ }),
+ p8883: (e) => ({
+ banner: null,
+ censysMetadata: e?.mqtt?.banner?.metadata
+ }),
+ p1900: (e) => ({
+ banner: null,
+ censysMetadata: e?.upnp?.discovery?.metadata
+ }),
+ p1911: (e) => ({
+ banner: null,
+ censysMetadata: e?.fox?.device_id?.metadata
+ }),
+ p2323: (e) => ({
+ banner: e?.telnet?.banner?.banner,
+ censysMetadata: e?.telnet?.banner?.metadata
+ }),
+ p3306: (e) => ({
+ banner: null,
+ censysMetadata: e?.mysql?.banner?.metadata
+ }),
+ p3389: (e) => ({
+ banner: null,
+ censysMetadata: e?.rdp?.banner?.metadata
+ }),
+ p5432: (e) => ({
+ banner: null,
+ censysMetadata: e?.postgres?.banner?.metadata
+ }),
+ p5632: (e) => ({
+ banner: null,
+ censysMetadata: e?.pca?.banner?.metadata
+ }),
+ p5672: (e) => ({
+ banner: null,
+ censysMetadata: e?.amqp?.banner?.metadata
+ }),
+ p5900: vncMap,
+ p5901: vncMap,
+ p5902: vncMap,
+ p5903: vncMap,
+ p6379: (e) => ({
+ banner: null,
+ censysMetadata: e?.redis?.banner?.metadata
+ }),
+ p6443: (e) => ({
+ banner: null,
+ censysMetadata: e?.kubernetes?.banner?.metadata
+ }),
+ p7547: (e) => ({
+ banner: e?.cwmp?.get?.body,
+ censysMetadata: e?.cwmp?.get?.metadata
+ }),
+ p9090: (e) => ({
+ banner: null,
+ censysMetadata: e?.prometheus?.banner?.metadata
+ }),
+ p9200: (e) => ({
+ banner: null,
+ censysMetadata: e?.elasticsearch?.banner?.metadata
+ }),
+ p11211: (e) => ({
+ banner: null,
+ censysMetadata: e?.memcached?.banner?.metadata
+ }),
+ p20000: (e) => ({
+ banner: null,
+ censysMetadata: e?.dnp3?.status?.metadata
+ }),
+ p27017: (e) => ({
+ banner: null,
+ censysMetadata: e?.mongodb?.banner?.metadata
+ }),
+ p47808: (e) => ({
+ banner: null,
+ censysMetadata: e?.bacnet?.device_id?.metadata
+ })
+};
diff --git a/backend/src/tasks/censysCertificates.ts b/backend/src/tasks/censysCertificates.ts
new file mode 100644
index 00000000..f2bd369e
--- /dev/null
+++ b/backend/src/tasks/censysCertificates.ts
@@ -0,0 +1,211 @@
+import { connectToDatabase, Domain, Scan } from '../models';
+import { plainToClass } from 'class-transformer';
+import saveDomainsToDb from './helpers/saveDomainsToDb';
+import { CommandOptions } from './ecs-client';
+import { CensysCertificatesData } from '../models/generated/censysCertificates';
+import getAllDomains from './helpers/getAllDomains';
+import sanitizeChunkValues from './helpers/sanitizeChunkValues';
+import * as zlib from 'zlib';
+import * as readline from 'readline';
+import got from 'got';
+import PQueue from 'p-queue';
+import pRetry from 'p-retry';
+import axios from 'axios';
+import getScanOrganizations from './helpers/getScanOrganizations';
+
+interface CommonNameToDomainsMap {
+ [commonName: string]: Domain[];
+}
+
+const auth = {
+ username: process.env.CENSYS_API_ID!,
+ password: process.env.CENSYS_API_SECRET!
+};
+
+const CENSYS_CERTIFICATES_ENDPOINT =
+ 'https://censys.io/api/v1/data/certificates_2018/';
+
+// Sometimes, a field might contain null characters, but we can't store null
+// characters in a string field in PostgreSQL. For example, a site might have
+// a banner ending with "