mirror of
https://github.com/logos-messaging/lab.waku.org.git
synced 2026-01-03 22:33:09 +00:00
55 lines
219 KiB
JavaScript
55 lines
219 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/dns-query";
|
|
exports.ids = ["vendor-chunks/dns-query"];
|
|
exports.modules = {
|
|
|
|
/***/ "(ssr)/./node_modules/dns-query/common.mjs":
|
|
/*!*******************************************!*\
|
|
!*** ./node_modules/dns-query/common.mjs ***!
|
|
\*******************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbortError: () => (/* binding */ AbortError),\n/* harmony export */ BaseEndpoint: () => (/* binding */ BaseEndpoint),\n/* harmony export */ HTTPEndpoint: () => (/* binding */ HTTPEndpoint),\n/* harmony export */ HTTPStatusError: () => (/* binding */ HTTPStatusError),\n/* harmony export */ InvalidProtocolError: () => (/* binding */ InvalidProtocolError),\n/* harmony export */ ResponseError: () => (/* binding */ ResponseError),\n/* harmony export */ TimeoutError: () => (/* binding */ TimeoutError),\n/* harmony export */ UDP4Endpoint: () => (/* binding */ UDP4Endpoint),\n/* harmony export */ UDP6Endpoint: () => (/* binding */ UDP6Endpoint),\n/* harmony export */ UDPEndpoint: () => (/* binding */ UDPEndpoint),\n/* harmony export */ URL: () => (/* binding */ URL),\n/* harmony export */ parseEndpoint: () => (/* binding */ parseEndpoint),\n/* harmony export */ reduceError: () => (/* binding */ reduceError),\n/* harmony export */ supportedProtocols: () => (/* binding */ supportedProtocols),\n/* harmony export */ toEndpoint: () => (/* binding */ toEndpoint)\n/* harmony export */ });\nlet AbortError = typeof global !== \"undefined\" ? global.AbortError : false ? 0 : null;\nif (!AbortError) {\n AbortError = class AbortError extends Error {\n constructor(message = \"Request aborted.\"){\n super(message);\n }\n };\n}\nAbortError.prototype.name = \"AbortError\";\nAbortError.prototype.code = \"ABORT_ERR\";\nconst URL = typeof globalThis !== \"undefined\" && globalThis.URL || require(\"url\").URL;\n\nclass HTTPStatusError extends Error {\n constructor(uri, code, method){\n super(\"status=\" + code + \" while requesting \" + uri + \" [\" + method + \"]\");\n this.uri = uri;\n this.status = code;\n this.method = method;\n }\n toJSON() {\n return {\n code: this.code,\n uri: this.uri,\n status: this.status,\n method: this.method,\n endpoint: this.endpoint\n };\n }\n}\nHTTPStatusError.prototype.name = \"HTTPStatusError\";\nHTTPStatusError.prototype.code = \"HTTP_STATUS\";\nclass ResponseError extends Error {\n constructor(message, cause){\n super(message);\n this.cause = cause;\n }\n toJSON() {\n return {\n message: this.message,\n endpoint: this.endpoint,\n code: this.code,\n cause: reduceError(this.cause)\n };\n }\n}\nResponseError.prototype.name = \"ResponseError\";\nResponseError.prototype.code = \"RESPONSE_ERR\";\nclass TimeoutError extends Error {\n constructor(timeout){\n super(\"Timeout (t=\" + timeout + \").\");\n this.timeout = timeout;\n }\n toJSON() {\n return {\n code: this.code,\n endpoint: this.endpoint,\n timeout: this.timeout\n };\n }\n}\nTimeoutError.prototype.name = \"TimeoutError\";\nTimeoutError.prototype.code = \"ETIMEOUT\";\nconst v4Regex = /^((\\d{1,3}\\.){3,3}\\d{1,3})(:(\\d{2,5}))?$/;\nconst v6Regex = /^((::)?(((\\d{1,3}\\.){3}(\\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?)(:(\\d{2,5}))?$/i;\nfunction reduceError(err) {\n if (typeof err === \"string\") {\n return {\n message: err\n };\n }\n try {\n const json = JSON.stringify(err);\n if (json !== \"{}\") {\n return JSON.parse(json);\n }\n } catch (e) {}\n const error = {\n message: String(err.message || err)\n };\n if (err.code !== undefined) {\n error.code = String(err.code);\n }\n return error;\n}\nconst baseParts = /^(([a-z0-9]+:)\\/\\/)?([^/[\\s:]+|\\[[^\\]]+\\])?(:([^/\\s]+))?(\\/[^\\s]*)?(.*)$/;\nconst httpFlags = /\\[(post|get|((ipv4|ipv6|name)=([^\\]]+)))\\]/ig;\nconst updFlags = /\\[(((pk|name)=([^\\]]+)))\\]/ig;\nfunction parseEndpoint(endpoint) {\n const parts = baseParts.exec(endpoint);\n const protocol = parts[2] || \"https:\";\n const host = parts[3];\n const port = parts[5];\n const path = parts[6];\n const rest = parts[7];\n if (protocol === \"https:\" || protocol === \"http:\") {\n const flags = parseFlags(rest, httpFlags);\n return {\n name: flags.name,\n protocol,\n ipv4: flags.ipv4,\n ipv6: flags.ipv6,\n host,\n port,\n path,\n method: flags.post ? \"POST\" : \"GET\"\n };\n }\n if (protocol === \"udp:\" || protocol === \"udp4:\" || protocol === \"udp6:\") {\n const flags = parseFlags(rest, updFlags);\n const v6Parts = /^\\[(.*)\\]$/.exec(host);\n if (v6Parts && protocol === \"udp4:\") {\n throw new Error(`Endpoint parsing error: Cannot use ipv6 host with udp4: (endpoint=${endpoint})`);\n }\n if (!v6Parts && protocol === \"udp6:\") {\n throw new Error(`Endpoint parsing error: Incorrectly formatted host for udp6: (endpoint=${endpoint})`);\n }\n if (v6Parts) {\n return new UDP6Endpoint({\n protocol: \"udp6:\",\n ipv6: v6Parts[1],\n port,\n pk: flags.pk,\n name: flags.name\n });\n }\n return new UDP4Endpoint({\n protocol: \"udp4:\",\n ipv4: host,\n port,\n pk: flags.pk,\n name: flags.name\n });\n }\n throw new InvalidProtocolError(protocol, endpoint);\n}\nfunction parseFlags(rest, regex) {\n regex.lastIndex = 0;\n const result = {};\n while(true){\n const match = regex.exec(rest);\n if (!match) break;\n if (match[2]) {\n result[match[3].toLowerCase()] = match[4];\n } else {\n result[match[1].toLowerCase()] = true;\n }\n }\n return result;\n}\nclass InvalidProtocolError extends Error {\n constructor(protocol, endpoint){\n super(`Invalid Endpoint: unsupported protocol \"${protocol}\" for endpoint: ${endpoint}, supported protocols: ${supportedProtocols.join(\", \")}`);\n this.protocol = protocol;\n this.endpoint = endpoint;\n }\n toJSON() {\n return {\n code: this.code,\n endpoint: this.endpoint,\n timeout: this.timeout\n };\n }\n}\nInvalidProtocolError.prototype.name = \"InvalidProtocolError\";\nInvalidProtocolError.prototype.code = \"EPROTOCOL\";\nconst supportedProtocols = [\n \"http:\",\n \"https:\",\n \"udp4:\",\n \"udp6:\"\n];\nclass BaseEndpoint {\n constructor(opts, isHTTP){\n this.name = opts.name || null;\n this.protocol = opts.protocol;\n const port = typeof opts.port === \"string\" ? opts.port = parseInt(opts.port, 10) : opts.port;\n if (port === undefined || port === null) {\n this.port = isHTTP ? this.protocol === \"https:\" ? 443 : 80 : opts.pk ? 443 : 53;\n } else if (typeof port !== \"number\" && !isNaN(port)) {\n throw new Error(`Invalid Endpoint: port \"${opts.port}\" needs to be a number: ${JSON.stringify(opts)}`);\n } else {\n this.port = port;\n }\n }\n toJSON() {\n return this.toString();\n }\n}\nclass UDPEndpoint extends BaseEndpoint {\n constructor(opts){\n super(opts, false);\n this.pk = opts.pk || null;\n }\n toString() {\n const port = this.port !== (this.pk ? 443 : 53) ? `:${this.port}` : \"\";\n const pk = this.pk ? ` [pk=${this.pk}]` : \"\";\n const name = this.name ? ` [name=${this.name}]` : \"\";\n return `udp://${this.ipv4 || `[${this.ipv6}]`}${port}${pk}${name}`;\n }\n}\nclass UDP4Endpoint extends UDPEndpoint {\n constructor(opts){\n super(Object.assign({\n protocol: \"udp4:\"\n }, opts));\n if (!opts.ipv4 || typeof opts.ipv4 !== \"string\") {\n throw new Error(`Invalid Endpoint: .ipv4 \"${opts.ipv4}\" needs to be set: ${JSON.stringify(opts)}`);\n }\n this.ipv4 = opts.ipv4;\n }\n}\nclass UDP6Endpoint extends UDPEndpoint {\n constructor(opts){\n super(Object.assign({\n protocol: \"udp6:\"\n }, opts));\n if (!opts.ipv6 || typeof opts.ipv6 !== \"string\") {\n throw new Error(`Invalid Endpoint: .ipv6 \"${opts.ipv6}\" needs to be set: ${JSON.stringify(opts)}`);\n }\n this.ipv6 = opts.ipv6;\n }\n}\nfunction safeHost(host) {\n return v6Regex.test(host) && !v4Regex.test(host) ? `[${host}]` : host;\n}\nclass HTTPEndpoint extends BaseEndpoint {\n constructor(opts){\n super(Object.assign({\n protocol: \"https:\"\n }, opts), true);\n if (!opts.host) {\n if (opts.ipv4) {\n opts.host = opts.ipv4;\n }\n if (opts.ipv6) {\n opts.host = `[${opts.ipv6}]`;\n }\n }\n if (!opts.host || typeof opts.host !== \"string\") {\n throw new Error(`Invalid Endpoint: host \"${opts.path}\" needs to be set: ${JSON.stringify(opts)}`);\n }\n this.host = opts.host;\n this.path = opts.path || \"/dns-query\";\n this.method = /^post$/i.test(opts.method) ? \"POST\" : \"GET\";\n this.ipv4 = opts.ipv4;\n this.ipv6 = opts.ipv6;\n if (!this.ipv6) {\n const v6Parts = v6Regex.exec(this.host);\n if (v6Parts) {\n this.ipv6 = v6Parts[1];\n }\n }\n if (!this.ipv4) {\n if (v4Regex.test(this.host)) {\n this.ipv4 = this.host;\n }\n }\n const url = `${this.protocol}//${safeHost(this.host)}:${this.port}${this.path}`;\n try {\n this.url = new URL(url);\n } catch (err) {\n throw new Error(err.message + ` [${url}]`);\n }\n }\n toString() {\n const protocol = this.protocol === \"https:\" ? \"\" : \"http://\";\n const port = this.port !== (this.protocol === \"https:\" ? 443 : 80) ? `:${this.port}` : \"\";\n const method = this.method !== \"GET\" ? \" [post]\" : \"\";\n const path = this.path === \"/dns-query\" ? \"\" : this.path;\n const name = this.name ? ` [name=${this.name}]` : \"\";\n const ipv4 = this.ipv4 && this.ipv4 !== this.host ? ` [ipv4=${this.ipv4}]` : \"\";\n const ipv6 = this.ipv6 && this.ipv6 !== this.host ? ` [ipv6=${this.ipv6}]` : \"\";\n return `${protocol}${safeHost(this.host)}${port}${path}${method}${ipv4}${ipv6}${name}`;\n }\n}\nfunction toEndpoint(input) {\n let opts;\n if (typeof input === \"string\") {\n opts = parseEndpoint(input);\n } else {\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n throw new Error(`Can not convert ${input} to an endpoint`);\n } else if (input instanceof BaseEndpoint) {\n return input;\n }\n opts = input;\n }\n if (opts.protocol === null || opts.protocol === undefined) {\n opts.protocol = \"https:\";\n }\n const protocol = opts.protocol;\n if (protocol === \"udp4:\") {\n return new UDP4Endpoint(opts);\n }\n if (protocol === \"udp6:\") {\n return new UDP6Endpoint(opts);\n }\n if (protocol === \"https:\" || protocol === \"http:\") {\n return new HTTPEndpoint(opts);\n }\n throw new InvalidProtocolError(protocol, JSON.stringify(opts));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvZG5zLXF1ZXJ5L2NvbW1vbi5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsYUFBYSxPQUFPQyxXQUFXLGNBQWNBLE9BQU9ELFVBQVUsR0FBRyxNQUFrQixHQUFjRSxDQUFpQixHQUFHO0FBQ3pILElBQUksQ0FBQ0YsWUFBWTtJQUNmQSxhQUFhLE1BQU1BLG1CQUFtQkc7UUFDcENDLFlBQWFDLFVBQVUsa0JBQWtCLENBQUU7WUFDekMsS0FBSyxDQUFDQTtRQUNSO0lBQ0Y7QUFDRjtBQUNBTCxXQUFXTSxTQUFTLENBQUNDLElBQUksR0FBRztBQUM1QlAsV0FBV00sU0FBUyxDQUFDRSxJQUFJLEdBQUc7QUFFNUIsTUFBTUMsTUFBTSxPQUFRQyxlQUFlLGVBQWVBLFdBQVdELEdBQUcsSUFBS0UsUUFBUSxPQUFPRixHQUFHO0FBRTdEO0FBRW5CLE1BQU1HLHdCQUF3QlQ7SUFDbkNDLFlBQWFTLEdBQUcsRUFBRUwsSUFBSSxFQUFFTSxNQUFNLENBQUU7UUFDOUIsS0FBSyxDQUFDLFlBQVlOLE9BQU8sdUJBQXVCSyxNQUFNLE9BQU9DLFNBQVM7UUFDdEUsSUFBSSxDQUFDRCxHQUFHLEdBQUdBO1FBQ1gsSUFBSSxDQUFDRSxNQUFNLEdBQUdQO1FBQ2QsSUFBSSxDQUFDTSxNQUFNLEdBQUdBO0lBQ2hCO0lBRUFFLFNBQVU7UUFDUixPQUFPO1lBQ0xSLE1BQU0sSUFBSSxDQUFDQSxJQUFJO1lBQ2ZLLEtBQUssSUFBSSxDQUFDQSxHQUFHO1lBQ2JFLFFBQVEsSUFBSSxDQUFDQSxNQUFNO1lBQ25CRCxRQUFRLElBQUksQ0FBQ0EsTUFBTTtZQUNuQkcsVUFBVSxJQUFJLENBQUNBLFFBQVE7UUFDekI7SUFDRjtBQUNGO0FBQ0FMLGdCQUFnQk4sU0FBUyxDQUFDQyxJQUFJLEdBQUc7QUFDakNLLGdCQUFnQk4sU0FBUyxDQUFDRSxJQUFJLEdBQUc7QUFFMUIsTUFBTVUsc0JBQXNCZjtJQUNqQ0MsWUFBYUMsT0FB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M0QsT0FBTyxJQUFJQSxpQkFBaUJkLGNBQWM7WUFDeEMsT0FBT2M7UUFDVDtRQUNBYixPQUFPYTtJQUNUO0lBQ0EsSUFBSWIsS0FBS3ZCLFFBQVEsS0FBSyxRQUFRdUIsS0FBS3ZCLFFBQVEsS0FBS1AsV0FBVztRQUN6RDhCLEtBQUt2QixRQUFRLEdBQUc7SUFDbEI7SUFDQSxNQUFNQSxXQUFXdUIsS0FBS3ZCLFFBQVE7SUFDOUIsSUFBSUEsYUFBYSxTQUFTO1FBQ3hCLE9BQU8sSUFBSWEsYUFBYVU7SUFDMUI7SUFDQSxJQUFJdkIsYUFBYSxTQUFTO1FBQ3hCLE9BQU8sSUFBSVcsYUFBYVk7SUFDMUI7SUFDQSxJQUFJdkIsYUFBYSxZQUFZQSxhQUFhLFNBQVM7UUFDakQsT0FBTyxJQUFJaUMsYUFBYVY7SUFDMUI7SUFDQSxNQUFNLElBQUlULHFCQUFxQmQsVUFBVWIsS0FBS0MsU0FBUyxDQUFDbUM7QUFDMUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9kbnMtcXVlcnkvY29tbW9uLm1qcz8yMjczIl0sInNvdXJjZXNDb250ZW50IjpbImxldCBBYm9ydEVycm9yID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwuQWJvcnRFcnJvciA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LkFib3J0RXJyb3IgOiBudWxsXG5pZiAoIUFib3J0RXJyb3IpIHtcbiAgQWJvcnRFcnJvciA9IGNsYXNzIEFib3J0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IgKG1lc3NhZ2UgPSAnUmVxdWVzdCBhYm9ydGVkLicpIHtcbiAgICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgfVxuICB9XG59XG5BYm9ydEVycm9yLnByb3RvdHlwZS5uYW1lID0gJ0Fib3J0RXJyb3InXG5BYm9ydEVycm9yLnByb3RvdHlwZS5jb2RlID0gJ0FCT1JUX0VSUidcblxuY29uc3QgVVJMID0gKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzLlVSTCkgfHwgcmVxdWlyZSgndXJsJykuVVJMXG5cbmV4cG9ydCB7IEFib3J0RXJyb3IsIFVSTCB9XG5cbmV4cG9ydCBjbGFzcyBIVFRQU3RhdHVzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yICh1cmksIGNvZGUsIG1ldGhvZCkge1xuICAgIHN1cGVyKCdzdGF0dXM9JyArIGNvZGUgKyAnIHdoaWxlIHJlcXVlc3RpbmcgJyArIHVyaSArICcgWycgKyBtZXRob2QgKyAnXScpXG4gICAgdGhpcy51cmkgPSB1cmlcbiAgICB0aGlzLnN0YXR1cyA9IGNvZGVcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZFxuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgdXJpOiB0aGlzLnVyaSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgICAgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnRcbiAgICB9XG4gIH1cbn1cbkhUVFBTdGF0dXNFcnJvci5wcm90b3R5cGUubmFtZSA9ICdIVFRQU3RhdHVzRXJyb3InXG5IVFRQU3RhdHVzRXJyb3IucHJvdG90eXBlLmNvZGUgPSAnSFRUUF9TVEFUVVMnXG5cbmV4cG9ydCBjbGFzcyBSZXNwb25zZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAobWVzc2FnZSwgY2F1c2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuICAgIHRoaXMuY2F1c2UgPSBjYXVzZVxuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnQsXG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBjYXVzZTogcmVkdWNlRXJyb3IodGhpcy5jYXVzZSlcbiAgICB9XG4gIH1cbn1cblJlc3BvbnNlRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnUmVzcG9uc2VFcnJvcidcblJlc3BvbnNlRXJyb3IucHJvdG90eXBlLmNvZGUgPSAnUkVTUE9OU0VfRVJSJ1xuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAodGltZW91dCkge1xuICAgIHN1cGVyKCdUaW1lb3V0ICh0PScgKyB0aW1lb3V0ICsgJykuJylcbiAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0XG4gIH1cblxuICB0b0pTT04gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBlbmRwb2ludDogdGhpcy5lbmRwb2ludCxcbiAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dFxuICAgIH1cbiAgfVxufVxuVGltZW91dEVycm9yLnByb3RvdHlwZS5uYW1lID0gJ1RpbWVvdXRFcnJvcidcblRpbWVvdXRFcnJvci5wcm90b3R5cGUuY29kZSA9ICdFVElNRU9VVCdcblxuY29uc3QgdjRSZWdleCA9IC9eKChcXGR7MSwzfVxcLil7MywzfVxcZHsxLDN9KSg6KFxcZHsyLDV9KSk/JC9cbmNvbnN0IHY2UmVnZXggPSAvXigoOjopPygoKFxcZHsxLDN9XFwuKXszfShcXGR7MSwzfSl7MX0pPyhbMC05YS1mXSl7MCw0fTp7MCwyfSl7MSw4fSg6Oik/KSg6KFxcZHsyLDV9KSk/JC9pXG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2VFcnJvciAoZXJyKSB7XG4gIGlmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoZXJyKVxuICAgIGlmIChqc29uICE9PSAne30nKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge31cbiAgY29uc3QgZXJyb3IgPSB7XG4gICAgbWVzc2FnZTogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycilcbiAgfVxuICBpZiAoZXJyLmNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgIGVycm9yLmNvZGUgPSBTdHJpbmcoZXJyLmNvZGUpXG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmNvbnN0IGJhc2VQYXJ0cyA9IC9eKChbYS16MC05XSs6KVxcL1xcLyk/KFteL1tcXHM6XSt8XFxbW15cXF1dK1xcXSk/KDooW14vXFxzXSspKT8oXFwvW15cXHNdKik/KC4qKSQvXG5jb25zdCBodHRwRmxhZ3MgPSAvXFxbKHBvc3R8Z2V0fCgoaXB2NHxpcHY2fG5hbWUpPShbXlxcXV0rKSkpXFxdL2lnXG5jb25zdCB1cGRGbGFncyA9IC9cXFsoKChwa3xuYW1lKT0oW15cXF1dKykpKVxcXS9pZ1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbmRwb2ludCAoZW5kcG9pbnQpIHtcbiAgY29uc3QgcGFydHMgPSBiYXNlUGFydHMuZXhlYyhlbmRwb2ludClcbiAgY29uc3QgcHJvdG9jb2wgPSBwYXJ0c1syXSB8fCAnaHR0cHM6J1xuICBjb25zdCBob3N0ID0gcGFydHNbM11cbiAgY29uc3QgcG9ydCA9IHBhcnRzWzVdXG4gIGNvbnN0IHBhdGggPSBwYXJ0c1s2XVxuICBjb25zdCByZXN0ID0gcGFydHNbN11cbiAgaWYgKHByb3RvY29sID09PSAnaHR0cHM6JyB8fCBwcm90b2NvbCA9PT0gJ2h0dHA6Jykge1xuICAgIGNvbnN0IGZsYWdzID0gcGFyc2VGbGFncyhyZXN0LCBodHRwRmxhZ3MpXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZsYWdzLm5hbWUsXG4gICAgICBwcm90b2NvbCxcbiAgICAgIGlwdjQ6IGZsYWdzLmlwdjQsXG4gICAgICBpcHY2OiBmbGFncy5pcHY2LFxuICAgICAgaG9zdCxcbiAgICAgIHBvcnQsXG4gICAgICBwYXRoLFxuICAgICAgbWV0aG9kOiBmbGFncy5wb3N0ID8gJ1BPU1QnIDogJ0dFVCdcbiAgICB9XG4gIH1cbiAgaWYgKHByb3RvY29sID09PSAndWRwOicgfHwgcHJvdG9jb2wgPT09ICd1ZHA0OicgfHwgcHJvdG9jb2wgPT09ICd1ZHA2OicpIHtcbiAgICBjb25zdCBmbGFncyA9IHBhcnNlRmxhZ3MocmVzdCwgdXBkRmxhZ3MpXG4gICAgY29uc3QgdjZQYXJ0cyA9IC9eXFxbKC4qKVxcXSQvLmV4ZWMoaG9zdClcbiAgICBpZiAodjZQYXJ0cyAmJiBwcm90b2NvbCA9PT0gJ3VkcDQ6Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmRwb2ludCBwYXJzaW5nIGVycm9yOiBDYW5ub3QgdXNlIGlwdjYgaG9zdCB3aXRoIHVkcDQ6IChlbmRwb2ludD0ke2VuZHBvaW50fSlgKVxuICAgIH1cbiAgICBpZiAoIXY2UGFydHMgJiYgcHJvdG9jb2wgPT09ICd1ZHA2OicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kcG9pbnQgcGFyc2luZyBlcnJvcjogSW5jb3JyZWN0bHkgZm9ybWF0dGVkIGhvc3QgZm9yIHVkcDY6IChlbmRwb2ludD0ke2VuZHBvaW50fSlgKVxuICAgIH1cbiAgICBpZiAodjZQYXJ0cykge1xuICAgICAgcmV0dXJuIG5ldyBVRFA2RW5kcG9pbnQoeyBwcm90b2NvbDogJ3VkcDY6JywgaXB2NjogdjZQYXJ0c1sxXSwgcG9ydCwgcGs6IGZsYWdzLnBrLCBuYW1lOiBmbGFncy5uYW1lIH0pXG4gICAgfVxuICAgIHJldHVybiBuZXcgVURQNEVuZHBvaW50KHsgcHJvdG9jb2w6ICd1ZHA0OicsIGlwdjQ6IGhvc3QsIHBvcnQsIHBrOiBmbGFncy5waywgbmFtZTogZmxhZ3MubmFtZSB9KVxuICB9XG4gIHRocm93IG5ldyBJbnZhbGlkUHJvdG9jb2xFcnJvcihwcm90b2NvbCwgZW5kcG9pbnQpXG59XG5cbmZ1bmN0aW9uIHBhcnNlRmxhZ3MgKHJlc3QsIHJlZ2V4KSB7XG4gIHJlZ2V4Lmxhc3RJbmRleCA9IDBcbiAgY29uc3QgcmVzdWx0ID0ge31cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMocmVzdClcbiAgICBpZiAoIW1hdGNoKSBicmVha1xuICAgIGlmIChtYXRjaFsyXSkge1xuICAgICAgcmVzdWx0W21hdGNoWzNdLnRvTG93ZXJDYXNlKCldID0gbWF0Y2hbNF1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W21hdGNoWzFdLnRvTG93ZXJDYXNlKCldID0gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvdG9jb2xFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IgKHByb3RvY29sLCBlbmRwb2ludCkge1xuICAgIHN1cGVyKGBJbnZhbGlkIEVuZHBvaW50OiB1bnN1cHBvcnRlZCBwcm90b2NvbCBcIiR7cHJvdG9jb2x9XCIgZm9yIGVuZHBvaW50OiAke2VuZHBvaW50fSwgc3VwcG9ydGVkIHByb3RvY29sczogJHtzdXBwb3J0ZWRQcm90b2NvbHMuam9pbignLCAnKX1gKVxuICAgIHRoaXMucHJvdG9jb2wgPSBwcm90b2NvbFxuICAgIHRoaXMuZW5kcG9pbnQgPSBlbmRwb2ludFxuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnQsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXRcbiAgICB9XG4gIH1cbn1cbkludmFsaWRQcm90b2NvbEVycm9yLnByb3RvdHlwZS5uYW1lID0gJ0ludmFsaWRQcm90b2NvbEVycm9yJ1xuSW52YWxpZFByb3RvY29sRXJyb3IucHJvdG90eXBlLmNvZGUgPSAnRVBST1RPQ09MJ1xuXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkUHJvdG9jb2xzID0gWydodHRwOicsICdodHRwczonLCAndWRwNDonLCAndWRwNjonXVxuXG5leHBvcnQgY2xhc3MgQmFzZUVuZHBvaW50IHtcbiAgY29uc3RydWN0b3IgKG9wdHMsIGlzSFRUUCkge1xuICAgIHRoaXMubmFtZSA9IG9wdHMubmFtZSB8fCBudWxsXG4gICAgdGhpcy5wcm90b2NvbCA9IG9wdHMucHJvdG9jb2xcbiAgICBjb25zdCBwb3J0ID0gdHlwZW9mIG9wdHMucG9ydCA9PT0gJ3N0cmluZycgPyBvcHRzLnBvcnQgPSBwYXJzZUludChvcHRzLnBvcnQsIDEwKSA6IG9wdHMucG9ydFxuICAgIGlmIChwb3J0ID09PSB1bmRlZmluZWQgfHwgcG9ydCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5wb3J0ID0gaXNIVFRQXG4gICAgICAgID8gKHRoaXMucHJvdG9jb2wgPT09ICdodHRwczonID8gNDQzIDogODApXG4gICAgICAgIDogKG9wdHMucGsgPyA0NDMgOiA1MylcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwb3J0ICE9PSAnbnVtYmVyJyAmJiAhaXNOYU4ocG9ydCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBFbmRwb2ludDogcG9ydCBcIiR7b3B0cy5wb3J0fVwiIG5lZWRzIHRvIGJlIGEgbnVtYmVyOiAke0pTT04uc3RyaW5naWZ5KG9wdHMpfWApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9ydCA9IHBvcnRcbiAgICB9XG4gIH1cblxuICB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKClcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVURQRW5kcG9pbnQgZXh0ZW5kcyBCYXNlRW5kcG9pbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKG9wdHMsIGZhbHNlKVxuICAgIHRoaXMucGsgPSBvcHRzLnBrIHx8IG51bGxcbiAgfVxuXG4gIHRvU3RyaW5nICgpIHtcbiAgICBjb25zdCBwb3J0ID0gdGhpcy5wb3J0ICE9PSAodGhpcy5wayA/IDQ0MyA6IDUzKSA/IGA6JHt0aGlzLnBvcnR9YCA6ICcnXG4gICAgY29uc3QgcGsgPSB0aGlzLnBrID8gYCBbcGs9JHt0aGlzLnBrfV1gIDogJydcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lID8gYCBbbmFtZT0ke3RoaXMubmFtZX1dYCA6ICcnXG4gICAgcmV0dXJuIGB1ZHA6Ly8ke3RoaXMuaXB2NCB8fCBgWyR7dGhpcy5pcHY2fV1gfSR7cG9ydH0ke3BrfSR7bmFtZX1gXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVEUDRFbmRwb2ludCBleHRlbmRzIFVEUEVuZHBvaW50IHtcbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHsgcHJvdG9jb2w6ICd1ZHA0OicgfSwgb3B0cykpXG4gICAgaWYgKCFvcHRzLmlwdjQgfHwgdHlwZW9mIG9wdHMuaXB2NCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBFbmRwb2ludDogLmlwdjQgXCIke29wdHMuaXB2NH1cIiBuZWVkcyB0byBiZSBzZXQ6ICR7SlNPTi5zdHJpbmdpZnkob3B0cyl9YClcbiAgICB9XG4gICAgdGhpcy5pcHY0ID0gb3B0cy5pcHY0XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVEUDZFbmRwb2ludCBleHRlbmRzIFVEUEVuZHBvaW50IHtcbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICBzdXBlcihPYmplY3QuYXNzaWduKHsgcHJvdG9jb2w6ICd1ZHA2OicgfSwgb3B0cykpXG4gICAgaWYgKCFvcHRzLmlwdjYgfHwgdHlwZW9mIG9wdHMuaXB2NiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBFbmRwb2ludDogLmlwdjYgXCIke29wdHMuaXB2Nn1cIiBuZWVkcyB0byBiZSBzZXQ6ICR7SlNPTi5zdHJpbmdpZnkob3B0cyl9YClcbiAgICB9XG4gICAgdGhpcy5pcHY2ID0gb3B0cy5pcHY2XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FmZUhvc3QgKGhvc3QpIHtcbiAgcmV0dXJuIHY2UmVnZXgudGVzdChob3N0KSAmJiAhdjRSZWdleC50ZXN0KGhvc3QpID8gYFske2hvc3R9XWAgOiBob3N0XG59XG5cbmV4cG9ydCBjbGFzcyBIVFRQRW5kcG9pbnQgZXh0ZW5kcyBCYXNlRW5kcG9pbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIHN1cGVyKE9iamVjdC5hc3NpZ24oeyBwcm90b2NvbDogJ2h0dHBzOicgfSwgb3B0cyksIHRydWUpXG4gICAgaWYgKCFvcHRzLmhvc3QpIHtcbiAgICAgIGlmIChvcHRzLmlwdjQpIHtcbiAgICAgICAgb3B0cy5ob3N0ID0gb3B0cy5pcHY0XG4gICAgICB9XG4gICAgICBpZiAob3B0cy5pcHY2KSB7XG4gICAgICAgIG9wdHMuaG9zdCA9IGBbJHtvcHRzLmlwdjZ9XWBcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRzLmhvc3QgfHwgdHlwZW9mIG9wdHMuaG9zdCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBFbmRwb2ludDogaG9zdCBcIiR7b3B0cy5wYXRofVwiIG5lZWRzIHRvIGJlIHNldDogJHtKU09OLnN0cmluZ2lmeShvcHRzKX1gKVxuICAgIH1cbiAgICB0aGlzLmhvc3QgPSBvcHRzLmhvc3RcbiAgICB0aGlzLnBhdGggPSBvcHRzLnBhdGggfHwgJy9kbnMtcXVlcnknXG4gICAgdGhpcy5tZXRob2QgPSAvXnBvc3QkL2kudGVzdChvcHRzLm1ldGhvZCkgPyAnUE9TVCcgOiAnR0VUJ1xuICAgIHRoaXMuaXB2NCA9IG9wdHMuaXB2NFxuICAgIHRoaXMuaXB2NiA9IG9wdHMuaXB2NlxuICAgIGlmICghdGhpcy5pcHY2KSB7XG4gICAgICBjb25zdCB2NlBhcnRzID0gdjZSZWdleC5leGVjKHRoaXMuaG9zdClcbiAgICAgIGlmICh2NlBhcnRzKSB7XG4gICAgICAgIHRoaXMuaXB2NiA9IHY2UGFydHNbMV1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0aGlzLmlwdjQpIHtcbiAgICAgIGlmICh2NFJlZ2V4LnRlc3QodGhpcy5ob3N0KSkge1xuICAgICAgICB0aGlzLmlwdjQgPSB0aGlzLmhvc3RcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5wcm90b2NvbH0vLyR7c2FmZUhvc3QodGhpcy5ob3N0KX06JHt0aGlzLnBvcnR9JHt0aGlzLnBhdGh9YFxuICAgIHRyeSB7XG4gICAgICB0aGlzLnVybCA9IG5ldyBVUkwodXJsKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5tZXNzYWdlICsgYCBbJHt1cmx9XWApXG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcgKCkge1xuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyAnJyA6ICdodHRwOi8vJ1xuICAgIGNvbnN0IHBvcnQgPSB0aGlzLnBvcnQgIT09ICh0aGlzLnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSA/IGA6JHt0aGlzLnBvcnR9YCA6ICcnXG4gICAgY29uc3QgbWV0aG9kID0gdGhpcy5tZXRob2QgIT09ICdHRVQnID8gJyBbcG9zdF0nIDogJydcbiAgICBjb25zdCBwYXRoID0gdGhpcy5wYXRoID09PSAnL2Rucy1xdWVyeScgPyAnJyA6IHRoaXMucGF0aFxuICAgIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWUgPyBgIFtuYW1lPSR7dGhpcy5uYW1lfV1gIDogJydcbiAgICBjb25zdCBpcHY0ID0gdGhpcy5pcHY0ICYmIHRoaXMuaXB2NCAhPT0gdGhpcy5ob3N0ID8gYCBbaXB2ND0ke3RoaXMuaXB2NH1dYCA6ICcnXG4gICAgY29uc3QgaXB2NiA9IHRoaXMuaXB2NiAmJiB0aGlzLmlwdjYgIT09IHRoaXMuaG9zdCA/IGAgW2lwdjY9JHt0aGlzLmlwdjZ9XWAgOiAnJ1xuICAgIHJldHVybiBgJHtwcm90b2NvbH0ke3NhZmVIb3N0KHRoaXMuaG9zdCl9JHtwb3J0fSR7cGF0aH0ke21ldGhvZH0ke2lwdjR9JHtpcHY2fSR7bmFtZX1gXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvRW5kcG9pbnQgKGlucHV0KSB7XG4gIGxldCBvcHRzXG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgb3B0cyA9IHBhcnNlRW5kcG9pbnQoaW5wdXQpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcgfHwgaW5wdXQgPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCBjb252ZXJ0ICR7aW5wdXR9IHRvIGFuIGVuZHBvaW50YClcbiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgQmFzZUVuZHBvaW50KSB7XG4gICAgICByZXR1cm4gaW5wdXRcbiAgICB9XG4gICAgb3B0cyA9IGlucHV0XG4gIH1cbiAgaWYgKG9wdHMucHJvdG9jb2wgPT09IG51bGwgfHwgb3B0cy5wcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgb3B0cy5wcm90b2NvbCA9ICdodHRwczonXG4gIH1cbiAgY29uc3QgcHJvdG9jb2wgPSBvcHRzLnByb3RvY29sXG4gIGlmIChwcm90b2NvbCA9PT0gJ3VkcDQ6Jykge1xuICAgIHJldHVybiBuZXcgVURQNEVuZHBvaW50KG9wdHMpXG4gIH1cbiAgaWYgKHByb3RvY29sID09PSAndWRwNjonKSB7XG4gICAgcmV0dXJuIG5ldyBVRFA2RW5kcG9pbnQob3B0cylcbiAgfVxuICBpZiAocHJvdG9jb2wgPT09ICdodHRwczonIHx8IHByb3RvY29sID09PSAnaHR0cDonKSB7XG4gICAgcmV0dXJuIG5ldyBIVFRQRW5kcG9pbnQob3B0cylcbiAgfVxuICB0aHJvdyBuZXcgSW52YWxpZFByb3RvY29sRXJyb3IocHJvdG9jb2wsIEpTT04uc3RyaW5naWZ5KG9wdHMpKVxufVxuIl0sIm5hbWVzIjpbIkFib3J0RXJyb3IiLCJnbG9iYWwiLCJ3aW5kb3ciLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsInByb3RvdHlwZSIsIm5hbWUiLCJjb2RlIiwiVVJMIiwiZ2xvYmFsVGhpcyIsInJlcXVpcmUiLCJIVFRQU3RhdHVzRXJyb3IiLCJ1cmkiLCJtZXRob2QiLCJzdGF0dXMiLCJ0b0pTT04iLCJlbmRwb2ludCIsIlJlc3BvbnNlRXJyb3IiLCJjYXVzZSIsInJlZHVjZUVycm9yIiwiVGltZW91dEVycm9yIiwidGltZW91dCIsInY0UmVnZXgiLCJ2NlJlZ2V4IiwiZXJyIiwianNvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsImUiLCJlcnJvciIsIlN0cmluZyIsInVuZGVmaW5lZCIsImJhc2VQYXJ0cyIsImh0dHBGbGFncyIsInVwZEZsYWdzIiwicGFyc2VFbmRwb2ludCIsInBhcnRzIiwiZXhlYyIsInByb3RvY29sIiwiaG9zdCIsInBvcnQiLCJwYXRoIiwicmVzdCIsImZsYWdzIiwicGFyc2VGbGFncyIsImlwdjQiLCJpcHY2IiwicG9zdCIsInY2UGFydHMiLCJVRFA2RW5kcG9pbnQiLCJwayIsIlVEUDRFbmRwb2ludCIsIkludmFsaWRQcm90b2NvbEVycm9yIiwicmVnZXgiLCJsYXN0SW5kZXgiLCJyZXN1bHQiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwic3VwcG9ydGVkUHJvdG9jb2xzIiwiam9pbiIsIkJhc2VFbmRwb2ludCIsIm9wdHMiLCJpc0hUVFAiLCJwYXJzZUludCIsImlzTmFOIiwidG9TdHJpbmciLCJVRFBFbmRwb2ludCIsIk9iamVjdCIsImFzc2lnbiIsInNhZmVIb3N0IiwidGVzdCIsIkhUVFBFbmRwb2ludCIsInVybCIsInRvRW5kcG9pbnQiLCJpbnB1dCIsIkFycmF5IiwiaXNBcnJheSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/dns-query/common.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/dns-query/index.mjs":
|
|
/*!******************************************!*\
|
|
!*** ./node_modules/dns-query/index.mjs ***!
|
|
\******************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AbortError: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.AbortError),\n/* harmony export */ BaseEndpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.BaseEndpoint),\n/* harmony export */ DNSRcodeError: () => (/* binding */ DNSRcodeError),\n/* harmony export */ DNS_RCODE_ERROR: () => (/* binding */ DNS_RCODE_ERROR),\n/* harmony export */ DNS_RCODE_MESSAGE: () => (/* binding */ DNS_RCODE_MESSAGE),\n/* harmony export */ HTTPEndpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.HTTPEndpoint),\n/* harmony export */ HTTPStatusError: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.HTTPStatusError),\n/* harmony export */ ResponseError: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.ResponseError),\n/* harmony export */ TimeoutError: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.TimeoutError),\n/* harmony export */ UDP4Endpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.UDP4Endpoint),\n/* harmony export */ UDP6Endpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.UDP6Endpoint),\n/* harmony export */ Wellknown: () => (/* binding */ Wellknown),\n/* harmony export */ backup: () => (/* binding */ backup),\n/* harmony export */ combineTXT: () => (/* binding */ combineTXT),\n/* harmony export */ lookupTxt: () => (/* binding */ lookupTxt),\n/* harmony export */ parseEndpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.parseEndpoint),\n/* harmony export */ query: () => (/* binding */ query),\n/* harmony export */ toEndpoint: () => (/* reexport safe */ _common_mjs__WEBPACK_IMPORTED_MODULE_5__.toEndpoint),\n/* harmony export */ validateResponse: () => (/* binding */ validateResponse),\n/* harmony export */ wellknown: () => (/* binding */ wellknown)\n/* harmony export */ });\n/* harmony import */ var _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @leichtgewicht/dns-packet */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/index.mjs\");\n/* harmony import */ var _leichtgewicht_dns_packet_rcodes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @leichtgewicht/dns-packet/rcodes.js */ \"(ssr)/./node_modules/@leichtgewicht/dns-packet/rcodes.mjs\");\n/* harmony import */ var utf8_codec__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utf8-codec */ \"(ssr)/./node_modules/utf8-codec/index.mjs\");\n/* harmony import */ var _lib_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib.mjs */ \"(ssr)/./node_modules/dns-query/lib.mjs\");\n/* harmony import */ var _resolvers_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./resolvers.mjs */ \"(ssr)/./node_modules/dns-query/resolvers.mjs\");\n/* harmony import */ var _common_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./common.mjs */ \"(ssr)/./node_modules/dns-query/common.mjs\");\n\n\n\n\n\n\n\nconst DNS_RCODE_ERROR = {\n 1: \"FormErr\",\n 2: \"ServFail\",\n 3: \"NXDomain\",\n 4: \"NotImp\",\n 5: \"Refused\",\n 6: \"YXDomain\",\n 7: \"YXRRSet\",\n 8: \"NXRRSet\",\n 9: \"NotAuth\",\n 10: \"NotZone\",\n 11: \"DSOTYPENI\"\n};\nconst DNS_RCODE_MESSAGE = {\n // https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6\n 1: \"The name server was unable to interpret the query.\",\n 2: \"The name server was unable to process this query due to a problem with the name server.\",\n 3: \"Non-Existent Domain.\",\n 4: \"The name server does not support the requested kind of query.\",\n 5: \"The name server refuses to perform the specified operation for policy reasons.\",\n 6: \"Name Exists when it should not.\",\n 7: \"RR Set Exists when it should not.\",\n 8: \"RR Set that should exist does not.\",\n 9: \"Server Not Authoritative for zone / Not Authorized.\",\n 10: \"Name not contained in zone.\",\n 11: \"DSO-TYPE Not Implemented.\"\n};\nclass DNSRcodeError extends Error {\n constructor(rcode, question){\n super(`${DNS_RCODE_MESSAGE[rcode] || \"Undefined error.\"} (rcode=${rcode}${DNS_RCODE_ERROR[rcode] ? `, error=${DNS_RCODE_ERROR[rcode]}` : \"\"}, question=${JSON.stringify(question)})`);\n this.rcode = rcode;\n this.code = `DNS_RCODE_${rcode}`;\n this.error = DNS_RCODE_ERROR[rcode];\n this.question = question;\n }\n toJSON() {\n return {\n code: this.code,\n error: this.error,\n question: this.question,\n endpoint: this.endpoint\n };\n }\n}\nfunction validateResponse(data, question) {\n const rcode = (0,_leichtgewicht_dns_packet_rcodes_js__WEBPACK_IMPORTED_MODULE_1__.toRcode)(data.rcode);\n if (rcode !== 0) {\n const err = new DNSRcodeError(rcode, question);\n err.endpoint = data.endpoint;\n throw err;\n }\n return data;\n}\nfunction processResolvers(res) {\n const time = res.time === null || res.time === undefined ? Date.now() : res.time;\n const resolvers = _lib_mjs__WEBPACK_IMPORTED_MODULE_3__.processResolvers(res.data.map((resolver)=>{\n resolver.endpoint = (0,_common_mjs__WEBPACK_IMPORTED_MODULE_5__.toEndpoint)(Object.assign({\n name: resolver.name\n }, resolver.endpoint));\n return resolver;\n }));\n const endpoints = resolvers.map((resolver)=>resolver.endpoint);\n return {\n data: {\n resolvers,\n resolverByName: resolvers.reduce((byName, resolver)=>{\n byName[resolver.name] = resolver;\n return byName;\n }, {}),\n endpoints,\n endpointByName: endpoints.reduce((byName, endpoint)=>{\n byName[endpoint.name] = endpoint;\n return byName;\n }, {})\n },\n time\n };\n}\nconst backup = processResolvers(_resolvers_mjs__WEBPACK_IMPORTED_MODULE_4__.resolvers);\nfunction toMultiQuery(singleQuery) {\n const query = Object.assign({\n type: \"query\"\n }, singleQuery);\n delete query.question;\n query.questions = [];\n if (singleQuery.question) {\n query.questions.push(singleQuery.question);\n }\n return query;\n}\nfunction queryOne(endpoint, query, timeout, abortSignal) {\n if (abortSignal && abortSignal.aborted) {\n return Promise.reject(new _common_mjs__WEBPACK_IMPORTED_MODULE_5__.AbortError());\n }\n if (endpoint.protocol === \"udp4:\" || endpoint.protocol === \"udp6:\") {\n return _lib_mjs__WEBPACK_IMPORTED_MODULE_3__.queryDns(endpoint, query, timeout, abortSignal);\n }\n return queryDoh(endpoint, query, timeout, abortSignal);\n}\nfunction queryDoh(endpoint, query, timeout, abortSignal) {\n return _lib_mjs__WEBPACK_IMPORTED_MODULE_3__.request(endpoint.url, endpoint.method, _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_0__.encode(Object.assign({\n flags: _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_0__.RECURSION_DESIRED\n }, query)), timeout, abortSignal).then(function(res) {\n const data = res.data;\n const response = res.response;\n let error = res.error;\n if (error === undefined) {\n if (data.length === 0) {\n error = new _common_mjs__WEBPACK_IMPORTED_MODULE_5__.ResponseError(\"Empty.\");\n } else {\n try {\n const decoded = _leichtgewicht_dns_packet__WEBPACK_IMPORTED_MODULE_0__.decode(data);\n decoded.response = response;\n return decoded;\n } catch (err) {\n error = new _common_mjs__WEBPACK_IMPORTED_MODULE_5__.ResponseError(\"Invalid packet (cause=\" + err.message + \")\", err);\n }\n }\n }\n throw Object.assign(error, {\n response\n });\n });\n}\nconst UPDATE_URL = new _common_mjs__WEBPACK_IMPORTED_MODULE_5__.URL(\"https://martinheidegger.github.io/dns-query/resolvers.json\");\nfunction concatUint8(arrs) {\n const res = new Uint8Array(arrs.reduce((len, arr)=>len + arr.length, 0));\n let pos = 0;\n for (const arr of arrs){\n res.set(arr, pos);\n pos += arr.length;\n }\n return res;\n}\nfunction combineTXT(inputs) {\n return (0,utf8_codec__WEBPACK_IMPORTED_MODULE_2__.decode)(concatUint8(inputs));\n}\nfunction isNameString(entry) {\n return /^@/.test(entry);\n}\nclass Wellknown {\n constructor(opts){\n this.opts = Object.assign({\n timeout: 5000,\n update: true,\n updateURL: UPDATE_URL,\n persist: false,\n localStoragePrefix: \"dnsquery_\",\n maxAge: 300000 // 5 minutes\n }, opts);\n this._dataP = null;\n }\n _data(force, outdated) {\n if (!force && this._dataP !== null) {\n return this._dataP.then((res)=>{\n if (res.time < Date.now() - this.opts.maxAge) {\n return this._data(true, res);\n }\n return res;\n });\n }\n this._dataP = !this.opts.update ? Promise.resolve(backup) : _lib_mjs__WEBPACK_IMPORTED_MODULE_3__.loadJSON(this.opts.updateURL, this.opts.persist ? {\n name: \"resolvers.json\",\n localStoragePrefix: this.opts.localStoragePrefix,\n maxTime: Date.now() - this.opts.maxAge\n } : null, this.opts.timeout).then((res)=>processResolvers({\n data: res.data.resolvers,\n time: res.time\n })).catch(()=>outdated || backup);\n return this._dataP;\n }\n data() {\n return this._data(false).then((data)=>data.data);\n }\n endpoints(input) {\n if (input === null || input === undefined) {\n return this.data().then((data)=>data.endpoints);\n }\n if (input === \"doh\") {\n input = filterDoh;\n }\n if (input === \"dns\") {\n input = filterDns;\n }\n if (typeof input === \"function\") {\n return this.data().then((data)=>data.endpoints.filter(input));\n }\n if (typeof input === \"string\" || typeof input[Symbol.iterator] !== \"function\") {\n return Promise.reject(new Error(`Endpoints (${input}) needs to be iterable (array).`));\n }\n input = Array.from(input).filter(Boolean);\n if (input.findIndex(isNameString) === -1) {\n try {\n return Promise.resolve(input.map(_common_mjs__WEBPACK_IMPORTED_MODULE_5__.toEndpoint));\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return this.data().then((data)=>input.map((entry)=>{\n if (isNameString(entry)) {\n const found = data.endpointByName[entry.substring(1)];\n if (!found) {\n throw new Error(`Endpoint ${entry} is not known.`);\n }\n return found;\n }\n return (0,_common_mjs__WEBPACK_IMPORTED_MODULE_5__.toEndpoint)(entry);\n }));\n }\n}\nconst wellknown = new Wellknown();\nfunction isPromise(input) {\n if (input === null) {\n return false;\n }\n if (typeof input !== \"object\") {\n return false;\n }\n return typeof input.then === \"function\";\n}\nfunction toPromise(input) {\n return isPromise(input) ? input : Promise.resolve(input);\n}\nfunction query(q, opts) {\n opts = Object.assign({\n retries: 5,\n timeout: 30000 // 30 seconds\n }, opts);\n if (!q.question) return Promise.reject(new Error(\"To request data you need to specify a .question!\"));\n return toPromise(opts.endpoints).then((endpoints)=>{\n if (!Array.isArray(endpoints) || endpoints.length === 0) {\n throw new Error(\"No endpoints defined to lookup dns records.\");\n }\n return queryN(endpoints.map(_common_mjs__WEBPACK_IMPORTED_MODULE_5__.toEndpoint), toMultiQuery(q), opts);\n }).then((data)=>{\n data.question = data.questions[0];\n delete data.questions;\n return data;\n });\n}\nfunction lookupTxt(domain, opts) {\n const q = Object.assign({\n question: {\n type: \"TXT\",\n name: domain\n }\n }, opts.query);\n return query(q, opts).then((data)=>{\n validateResponse(data, q);\n return {\n entries: (data.answers || []).filter((answer)=>answer.type === \"TXT\" && answer.data).map((answer)=>{\n return {\n data: combineTXT(answer.data),\n ttl: answer.ttl\n };\n }).sort((a, b)=>{\n if (a.data > b.data) return 1;\n if (a.data < b.data) return -1;\n return 0;\n }),\n endpoint: data.endpoint\n };\n });\n}\nfunction queryN(endpoints, q, opts) {\n const endpoint = endpoints.length === 1 ? endpoints[0] : endpoints[Math.floor(Math.random() * endpoints.length) % endpoints.length];\n return queryOne(endpoint, q, opts.timeout, opts.signal).then((data)=>{\n // Add the endpoint to give a chance to identify which endpoint returned the result\n data.endpoint = endpoint.toString();\n return data;\n }, (err)=>{\n if (err.name === \"AbortError\" || opts.retries === 0) {\n err.endpoint = endpoint.toString();\n throw err;\n }\n if (opts.retries > 0) {\n opts.retries -= 1;\n }\n return queryN(endpoints, q, opts);\n });\n}\nfunction filterDoh(endpoint) {\n return endpoint.protocol === \"https:\" || endpoint.protocol === \"http:\";\n}\nfunction filterDns(endpoint) {\n return endpoint.protocol === \"udp4:\" || endpoint.protocol === \"udp6:\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvZG5zLXF1ZXJ5L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtRDtBQUNVO0FBQzFCO0FBQ0g7QUFDOEI7QUFNekM7QUFhQTtBQUVkLE1BQU1pQixrQkFBa0I7SUFDN0IsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsSUFBSTtJQUNKLElBQUk7QUFDTixFQUFDO0FBRU0sTUFBTUMsb0JBQW9CO0lBQy9CLHdGQUF3RjtJQUN4RixHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxHQUFHO0lBQ0gsR0FBRztJQUNILEdBQUc7SUFDSCxJQUFJO0lBQ0osSUFBSTtBQUNOLEVBQUM7QUFFTSxNQUFNQyxzQkFBc0JDO0lBQ2pDQyxZQUFhQyxLQUFLLEVBQUVDLFFBQVEsQ0FBRTtRQUM1QixLQUFLLENBQUMsQ0FBQyxFQUFHTCxpQkFBaUIsQ0FBQ0ksTUFBTSxJQUFJLG1CQUFvQixRQUFRLEVBQUVBLE1BQU0sRUFBRUwsZUFBZSxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxRQUFRLEVBQUVMLGVBQWUsQ0FBQ0ssTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsRUFBRUUsS0FBS0MsU0FBUyxDQUFDRixVQUFVLENBQUMsQ0FBQztRQUN0TCxJQUFJLENBQUNELEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNJLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRUosTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQ0ssS0FBSyxHQUFHVixlQUFlLENBQUNLLE1BQU07UUFDbkMsSUFBSSxDQUFDQyxRQUFRLEdBQUdBO0lBQ2xCO0lBRUFLLFNBQVU7UUFDUixPQUFPO1lBQ0xGLE1BQU0sSUFBSSxDQUFDQSxJQUFJO1lBQ2ZDLE9BQU8s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QyxLQUFLNkMsTUFBTSxFQUNuRGhFLElBQUksQ0FDSHhDLENBQUFBO1FBQ0UsbUZBQW1GO1FBQ25GQSxLQUFLRixRQUFRLEdBQUdBLFNBQVMyRyxRQUFRO1FBQ2pDLE9BQU96RztJQUNULEdBQ0FDLENBQUFBO1FBQ0UsSUFBSUEsSUFBSVcsSUFBSSxLQUFLLGdCQUFnQitDLEtBQUs4QixPQUFPLEtBQUssR0FBRztZQUNuRHhGLElBQUlILFFBQVEsR0FBR0EsU0FBUzJHLFFBQVE7WUFDaEMsTUFBTXhHO1FBQ1I7UUFDQSxJQUFJMEQsS0FBSzhCLE9BQU8sR0FBRyxHQUFHO1lBQ3BCOUIsS0FBSzhCLE9BQU8sSUFBSTtRQUNsQjtRQUNBLE9BQU9FLE9BQU85RSxXQUFXMkUsR0FBRzdCO0lBQzlCO0FBRU47QUFFQSxTQUFTZSxVQUFXNUUsUUFBUTtJQUMxQixPQUFPQSxTQUFTaUMsUUFBUSxLQUFLLFlBQVlqQyxTQUFTaUMsUUFBUSxLQUFLO0FBQ2pFO0FBRUEsU0FBUzRDLFVBQVc3RSxRQUFRO0lBQzFCLE9BQU9BLFNBQVNpQyxRQUFRLEtBQUssV0FBV2pDLFNBQVNpQyxRQUFRLEtBQUs7QUFDaEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbHVzaC1ub3Rlcy8uL25vZGVfbW9kdWxlcy9kbnMtcXVlcnkvaW5kZXgubWpzPzU2NzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGFja2V0IGZyb20gJ0BsZWljaHRnZXdpY2h0L2Rucy1wYWNrZXQnXG5pbXBvcnQgeyB0b1Jjb2RlIH0gZnJvbSAnQGxlaWNodGdld2ljaHQvZG5zLXBhY2tldC9yY29kZXMuanMnXG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICd1dGY4LWNvZGVjJ1xuaW1wb3J0ICogYXMgbGliIGZyb20gJy4vbGliLm1qcydcbmltcG9ydCB7IHJlc29sdmVycyBhcyBiYWNrdXBSZXNvbHZlcnMgfSBmcm9tICcuL3Jlc29sdmVycy5tanMnXG5pbXBvcnQge1xuICBBYm9ydEVycm9yLFxuICBSZXNwb25zZUVycm9yLFxuICBVUkwsXG4gIHRvRW5kcG9pbnRcbn0gZnJvbSAnLi9jb21tb24ubWpzJ1xuXG5leHBvcnQge1xuICBUaW1lb3V0RXJyb3IsXG4gIEhUVFBTdGF0dXNFcnJvcixcbiAgQWJvcnRFcnJvcixcbiAgUmVzcG9uc2VFcnJvcixcbiAgQmFzZUVuZHBvaW50LFxuICBIVFRQRW5kcG9pbnQsXG4gIFVEUDRFbmRwb2ludCxcbiAgVURQNkVuZHBvaW50LFxuICBwYXJzZUVuZHBvaW50LFxuICB0b0VuZHBvaW50XG59IGZyb20gJy4vY29tbW9uLm1qcydcblxuZXhwb3J0IGNvbnN0IEROU19SQ09ERV9FUlJPUiA9IHtcbiAgMTogJ0Zvcm1FcnInLFxuICAyOiAnU2VydkZhaWwnLFxuICAzOiAnTlhEb21haW4nLFxuICA0OiAnTm90SW1wJyxcbiAgNTogJ1JlZnVzZWQnLFxuICA2OiAnWVhEb21haW4nLFxuICA3OiAnWVhSUlNldCcsXG4gIDg6ICdOWFJSU2V0JyxcbiAgOTogJ05vdEF1dGgnLFxuICAxMDogJ05vdFpvbmUnLFxuICAxMTogJ0RTT1RZUEVOSSdcbn1cblxuZXhwb3J0IGNvbnN0IEROU19SQ09ERV9NRVNTQUdFID0ge1xuICAvLyBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9kbnMtcGFyYW1ldGVycy9kbnMtcGFyYW1ldGVycy54aHRtbCNkbnMtcGFyYW1ldGVycy02XG4gIDE6ICdUaGUgbmFtZSBzZXJ2ZXIgd2FzIHVuYWJsZSB0byBpbnRlcnByZXQgdGhlIHF1ZXJ5LicsXG4gIDI6ICdUaGUgbmFtZSBzZXJ2ZXIgd2FzIHVuYWJsZSB0byBwcm9jZXNzIHRoaXMgcXVlcnkgZHVlIHRvIGEgcHJvYmxlbSB3aXRoIHRoZSBuYW1lIHNlcnZlci4nLFxuICAzOiAnTm9uLUV4aXN0ZW50IERvbWFpbi4nLFxuICA0OiAnVGhlIG5hbWUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBraW5kIG9mIHF1ZXJ5LicsXG4gIDU6ICdUaGUgbmFtZSBzZXJ2ZXIgcmVmdXNlcyB0byBwZXJmb3JtIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGZvciBwb2xpY3kgcmVhc29ucy4nLFxuICA2OiAnTmFtZSBFeGlzdHMgd2hlbiBpdCBzaG91bGQgbm90LicsXG4gIDc6ICdSUiBTZXQgRXhpc3RzIHdoZW4gaXQgc2hvdWxkIG5vdC4nLFxuICA4OiAnUlIgU2V0IHRoYXQgc2hvdWxkIGV4aXN0IGRvZXMgbm90LicsXG4gIDk6ICdTZXJ2ZXIgTm90IEF1dGhvcml0YXRpdmUgZm9yIHpvbmUgIC8gTm90IEF1dGhvcml6ZWQuJyxcbiAgMTA6ICdOYW1lIG5vdCBjb250YWluZWQgaW4gem9uZS4nLFxuICAxMTogJ0RTTy1UWVBFIE5vdCBJbXBsZW1lbnRlZC4nXG59XG5cbmV4cG9ydCBjbGFzcyBETlNSY29kZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAocmNvZGUsIHF1ZXN0aW9uKSB7XG4gICAgc3VwZXIoYCR7KEROU19SQ09ERV9NRVNTQUdFW3Jjb2RlXSB8fCAnVW5kZWZpbmVkIGVycm9yLicpfSAocmNvZGU9JHtyY29kZX0ke0ROU19SQ09ERV9FUlJPUltyY29kZV0gPyBgLCBlcnJvcj0ke0ROU19SQ09ERV9FUlJPUltyY29kZV19YCA6ICcnfSwgcXVlc3Rpb249JHtKU09OLnN0cmluZ2lmeShxdWVzdGlvbil9KWApXG4gICAgdGhpcy5yY29kZSA9IHJjb2RlXG4gICAgdGhpcy5jb2RlID0gYEROU19SQ09ERV8ke3Jjb2RlfWBcbiAgICB0aGlzLmVycm9yID0gRE5TX1JDT0RFX0VSUk9SW3Jjb2RlXVxuICAgIHRoaXMucXVlc3Rpb24gPSBxdWVzdGlvblxuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgZXJyb3I6IHRoaXMuZXJyb3IsXG4gICAgICBxdWVzdGlvbjogdGhpcy5xdWVzdGlvbixcbiAgICAgIGVuZHBvaW50OiB0aGlzLmVuZHBvaW50XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlIChkYXRhLCBxdWVzdGlvbikge1xuICBjb25zdCByY29kZSA9IHRvUmNvZGUoZGF0YS5yY29kZSlcbiAgaWYgKHJjb2RlICE9PSAwKSB7XG4gICAgY29uc3QgZXJyID0gbmV3IEROU1Jjb2RlRXJyb3IocmNvZGUsIHF1ZXN0aW9uKVxuICAgIGVyci5lbmRwb2ludCA9IGRhdGEuZW5kcG9pbnRcbiAgICB0aHJvdyBlcnJcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzUmVzb2x2ZXJzIChyZXMpIHtcbiAgY29uc3QgdGltZSA9IChyZXMudGltZSA9PT0gbnVsbCB8fCByZXMudGltZSA9PT0gdW5kZWZpbmVkKSA/IERhdGUubm93KCkgOiByZXMudGltZVxuICBjb25zdCByZXNvbHZlcnMgPSBsaWIucHJvY2Vzc1Jlc29sdmVycyhyZXMuZGF0YS5tYXAocmVzb2x2ZXIgPT4ge1xuICAgIHJlc29sdmVyLmVuZHBvaW50ID0gdG9FbmRwb2ludChPYmplY3QuYXNzaWduKHsgbmFtZTogcmVzb2x2ZXIubmFtZSB9LCByZXNvbHZlci5lbmRwb2ludCkpXG4gICAgcmV0dXJuIHJlc29sdmVyXG4gIH0pKVxuICBjb25zdCBlbmRwb2ludHMgPSByZXNvbHZlcnMubWFwKHJlc29sdmVyID0+IHJlc29sdmVyLmVuZHBvaW50KVxuICByZXR1cm4ge1xuICAgIGRhdGE6IHtcbiAgICAgIHJlc29sdmVycyxcbiAgICAgIHJlc29sdmVyQnlOYW1lOiByZXNvbHZlcnMucmVkdWNlKChieU5hbWUsIHJlc29sdmVyKSA9PiB7XG4gICAgICAgIGJ5TmFtZVtyZXNvbHZlci5uYW1lXSA9IHJlc29sdmVyXG4gICAgICAgIHJldHVybiBieU5hbWVcbiAgICAgIH0sIHt9KSxcbiAgICAgIGVuZHBvaW50cyxcbiAgICAgIGVuZHBvaW50QnlOYW1lOiBlbmRwb2ludHMucmVkdWNlKChieU5hbWUsIGVuZHBvaW50KSA9PiB7XG4gICAgICAgIGJ5TmFtZVtlbmRwb2ludC5uYW1lXSA9IGVuZHBvaW50XG4gICAgICAgIHJldHVybiBieU5hbWVcbiAgICAgIH0sIHt9KVxuICAgIH0sXG4gICAgdGltZVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBiYWNrdXAgPSBwcm9jZXNzUmVzb2x2ZXJzKGJhY2t1cFJlc29sdmVycylcblxuZnVuY3Rpb24gdG9NdWx0aVF1ZXJ5IChzaW5nbGVRdWVyeSkge1xuICBjb25zdCBxdWVyeSA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHR5cGU6ICdxdWVyeSdcbiAgfSwgc2luZ2xlUXVlcnkpXG4gIGRlbGV0ZSBxdWVyeS5xdWVzdGlvblxuICBxdWVyeS5xdWVzdGlvbnMgPSBbXVxuICBpZiAoc2luZ2xlUXVlcnkucXVlc3Rpb24pIHtcbiAgICBxdWVyeS5xdWVzdGlvbnMucHVzaChzaW5nbGVRdWVyeS5xdWVzdGlvbilcbiAgfVxuICByZXR1cm4gcXVlcnlcbn1cblxuZnVuY3Rpb24gcXVlcnlPbmUgKGVuZHBvaW50LCBxdWVyeSwgdGltZW91dCwgYWJvcnRTaWduYWwpIHtcbiAgaWYgKGFib3J0U2lnbmFsICYmIGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFib3J0RXJyb3IoKSlcbiAgfVxuICBpZiAoZW5kcG9pbnQucHJvdG9jb2wgPT09ICd1ZHA0OicgfHwgZW5kcG9pbnQucHJvdG9jb2wgPT09ICd1ZHA2OicpIHtcbiAgICByZXR1cm4gbGliLnF1ZXJ5RG5zKGVuZHBvaW50LCBxdWVyeSwgdGltZW91dCwgYWJvcnRTaWduYWwpXG4gIH1cbiAgcmV0dXJuIHF1ZXJ5RG9oKGVuZHBvaW50LCBxdWVyeSwgdGltZW91dCwgYWJvcnRTaWduYWwpXG59XG5cbmZ1bmN0aW9uIHF1ZXJ5RG9oIChlbmRwb2ludCwgcXVlcnksIHRpbWVvdXQsIGFib3J0U2lnbmFsKSB7XG4gIHJldHVybiBsaWIucmVxdWVzdChcbiAgICBlbmRwb2ludC51cmwsXG4gICAgZW5kcG9pbnQubWV0aG9kLFxuICAgIHBhY2tldC5lbmNvZGUoT2JqZWN0LmFzc2lnbih7XG4gICAgICBmbGFnczogcGFja2V0LlJFQ1VSU0lPTl9ERVNJUkVEXG4gICAgfSwgcXVlcnkpKSxcbiAgICB0aW1lb3V0LFxuICAgIGFib3J0U2lnbmFsXG4gICkudGhlbihcbiAgICBmdW5jdGlvbiAocmVzKSB7XG4gICAgICBjb25zdCBkYXRhID0gcmVzLmRhdGFcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzLnJlc3BvbnNlXG4gICAgICBsZXQgZXJyb3IgPSByZXMuZXJyb3JcbiAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGVycm9yID0gbmV3IFJlc3BvbnNlRXJyb3IoJ0VtcHR5LicpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWQgPSBwYWNrZXQuZGVjb2RlKGRhdGEpXG4gICAgICAgICAgICBkZWNvZGVkLnJlc3BvbnNlID0gcmVzcG9uc2VcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVkXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBlcnJvciA9IG5ldyBSZXNwb25zZUVycm9yKCdJbnZhbGlkIHBhY2tldCAoY2F1c2U9JyArIGVyci5tZXNzYWdlICsgJyknLCBlcnIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBPYmplY3QuYXNzaWduKGVycm9yLCB7IHJlc3BvbnNlIH0pXG4gICAgfVxuICApXG59XG5cbmNvbnN0IFVQREFURV9VUkwgPSBuZXcgVVJMKCdodHRwczovL21hcnRpbmhlaWRlZ2dlci5naXRodWIuaW8vZG5zLXF1ZXJ5L3Jlc29sdmVycy5qc29uJylcblxuZnVuY3Rpb24gY29uY2F0VWludDggKGFycnMpIHtcbiAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgYXJycy5yZWR1Y2UoKGxlbiwgYXJyKSA9PiBsZW4gKyBhcnIubGVuZ3RoLCAwKVxuICApXG4gIGxldCBwb3MgPSAwXG4gIGZvciAoY29uc3QgYXJyIG9mIGFycnMpIHtcbiAgICByZXMuc2V0KGFyciwgcG9zKVxuICAgIHBvcyArPSBhcnIubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZVRYVCAoaW5wdXRzKSB7XG4gIHJldHVybiBkZWNvZGUoY29uY2F0VWludDgoaW5wdXRzKSlcbn1cblxuZnVuY3Rpb24gaXNOYW1lU3RyaW5nIChlbnRyeSkge1xuICByZXR1cm4gL15ALy50ZXN0KGVudHJ5KVxufVxuXG5leHBvcnQgY2xhc3MgV2VsbGtub3duIHtcbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICB0aGlzLm9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICB1cGRhdGU6IHRydWUsXG4gICAgICB1cGRhdGVVUkw6IFVQREFURV9VUkwsXG4gICAgICBwZXJzaXN0OiBmYWxzZSxcbiAgICAgIGxvY2FsU3RvcmFnZVByZWZpeDogJ2Ruc3F1ZXJ5XycsXG4gICAgICBtYXhBZ2U6IDMwMDAwMCAvLyA1IG1pbnV0ZXNcbiAgICB9LCBvcHRzKVxuICAgIHRoaXMuX2RhdGFQID0gbnVsbFxuICB9XG5cbiAgX2RhdGEgKGZvcmNlLCBvdXRkYXRlZCkge1xuICAgIGlmICghZm9yY2UgJiYgdGhpcy5fZGF0YVAgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhUC50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMudGltZSA8IERhdGUubm93KCkgLSB0aGlzLm9wdHMubWF4QWdlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEodHJ1ZSwgcmVzKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuX2RhdGFQID0gKCF0aGlzLm9wdHMudXBkYXRlXG4gICAgICA/IFByb21pc2UucmVzb2x2ZShiYWNrdXApXG4gICAgICA6IGxpYi5sb2FkSlNPTihcbiAgICAgICAgdGhpcy5vcHRzLnVwZGF0ZVVSTCxcbiAgICAgICAgdGhpcy5vcHRzLnBlcnNpc3RcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgbmFtZTogJ3Jlc29sdmVycy5qc29uJyxcbiAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlUHJlZml4OiB0aGlzLm9wdHMubG9jYWxTdG9yYWdlUHJlZml4LFxuICAgICAgICAgICAgICBtYXhUaW1lOiBEYXRlLm5vdygpIC0gdGhpcy5vcHRzLm1heEFnZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgdGhpcy5vcHRzLnRpbWVvdXRcbiAgICAgIClcbiAgICAgICAgLnRoZW4ocmVzID0+IHByb2Nlc3NSZXNvbHZlcnMoe1xuICAgICAgICAgIGRhdGE6IHJlcy5kYXRhLnJlc29sdmVycyxcbiAgICAgICAgICB0aW1lOiByZXMudGltZVxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKCgpID0+IG91dGRhdGVkIHx8IGJhY2t1cClcbiAgICApXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFQXG4gIH1cblxuICBkYXRhICgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YShmYWxzZSkudGhlbihkYXRhID0+IGRhdGEuZGF0YSlcbiAgfVxuXG4gIGVuZHBvaW50cyAoaW5wdXQpIHtcbiAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLnRoZW4oZGF0YSA9PiBkYXRhLmVuZHBvaW50cylcbiAgICB9XG4gICAgaWYgKGlucHV0ID09PSAnZG9oJykge1xuICAgICAgaW5wdXQgPSBmaWx0ZXJEb2hcbiAgICB9XG4gICAgaWYgKGlucHV0ID09PSAnZG5zJykge1xuICAgICAgaW5wdXQgPSBmaWx0ZXJEbnNcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YSgpLnRoZW4oZGF0YSA9PiBkYXRhLmVuZHBvaW50cy5maWx0ZXIoaW5wdXQpKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgaW5wdXRbU3ltYm9sLml0ZXJhdG9yXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgRW5kcG9pbnRzICgke2lucHV0fSkgbmVlZHMgdG8gYmUgaXRlcmFibGUgKGFycmF5KS5gKSlcbiAgICB9XG4gICAgaW5wdXQgPSBBcnJheS5mcm9tKGlucHV0KS5maWx0ZXIoQm9vbGVhbilcbiAgICBpZiAoaW5wdXQuZmluZEluZGV4KGlzTmFtZVN0cmluZykgPT09IC0xKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGlucHV0Lm1hcCh0b0VuZHBvaW50KSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRhKCkudGhlbihkYXRhID0+XG4gICAgICBpbnB1dC5tYXAoZW50cnkgPT4ge1xuICAgICAgICBpZiAoaXNOYW1lU3RyaW5nKGVudHJ5KSkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZGF0YS5lbmRwb2ludEJ5TmFtZVtlbnRyeS5zdWJzdHJpbmcoMSldXG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmRwb2ludCAke2VudHJ5fSBpcyBub3Qga25vd24uYClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvRW5kcG9pbnQoZW50cnkpXG4gICAgICB9KVxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgd2VsbGtub3duID0gbmV3IFdlbGxrbm93bigpXG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAoaW5wdXQpIHtcbiAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHlwZW9mIGlucHV0LnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gdG9Qcm9taXNlIChpbnB1dCkge1xuICByZXR1cm4gaXNQcm9taXNlKGlucHV0KSA/IGlucHV0IDogUHJvbWlzZS5yZXNvbHZlKGlucHV0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVlcnkgKHEsIG9wdHMpIHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJldHJpZXM6IDUsXG4gICAgdGltZW91dDogMzAwMDAgLy8gMzAgc2Vjb25kc1xuICB9LCBvcHRzKVxuICBpZiAoIXEucXVlc3Rpb24pIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1RvIHJlcXVlc3QgZGF0YSB5b3UgbmVlZCB0byBzcGVjaWZ5IGEgLnF1ZXN0aW9uIScpKVxuICByZXR1cm4gdG9Qcm9taXNlKG9wdHMuZW5kcG9pbnRzKVxuICAgIC50aGVuKGVuZHBvaW50cyA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW5kcG9pbnRzKSB8fCBlbmRwb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZW5kcG9pbnRzIGRlZmluZWQgdG8gbG9va3VwIGRucyByZWNvcmRzLicpXG4gICAgICB9XG4gICAgICByZXR1cm4gcXVlcnlOKGVuZHBvaW50cy5tYXAodG9FbmRwb2ludCksIHRvTXVsdGlRdWVyeShxKSwgb3B0cylcbiAgICB9KVxuICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgZGF0YS5xdWVzdGlvbiA9IGRhdGEucXVlc3Rpb25zWzBdXG4gICAgICBkZWxldGUgZGF0YS5xdWVzdGlvbnNcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cFR4dCAoZG9tYWluLCBvcHRzKSB7XG4gIGNvbnN0IHEgPSBPYmplY3QuYXNzaWduKHtcbiAgICBxdWVzdGlvbjoge1xuICAgICAgdHlwZTogJ1RYVCcsXG4gICAgICBuYW1lOiBkb21haW5cbiAgICB9XG4gIH0sIG9wdHMucXVlcnkpXG4gIHJldHVybiBxdWVyeShxLCBvcHRzKVxuICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgdmFsaWRhdGVSZXNwb25zZShkYXRhLCBxKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW50cmllczogKGRhdGEuYW5zd2VycyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKGFuc3dlciA9PiBhbnN3ZXIudHlwZSA9PT0gJ1RYVCcgJiYgYW5zd2VyLmRhdGEpXG4gICAgICAgICAgLm1hcChhbnN3ZXIgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgIGRhdGE6IGNvbWJpbmVUWFQoYW5zd2VyLmRhdGEpLFxuICAgICAgICAgICAgICB0dGw6IGFuc3dlci50dGxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0YSA+IGIuZGF0YSkgcmV0dXJuIDFcbiAgICAgICAgICAgIGlmIChhLmRhdGEgPCBiLmRhdGEpIHJldHVybiAtMVxuICAgICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgICB9KSxcbiAgICAgICAgZW5kcG9pbnQ6IGRhdGEuZW5kcG9pbnRcbiAgICAgIH1cbiAgICB9KVxufVxuXG5mdW5jdGlvbiBxdWVyeU4gKGVuZHBvaW50cywgcSwgb3B0cykge1xuICBjb25zdCBlbmRwb2ludCA9IGVuZHBvaW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVuZHBvaW50c1swXVxuICAgIDogZW5kcG9pbnRzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGVuZHBvaW50cy5sZW5ndGgpICUgZW5kcG9pbnRzLmxlbmd0aF1cbiAgcmV0dXJuIHF1ZXJ5T25lKGVuZHBvaW50LCBxLCBvcHRzLnRpbWVvdXQsIG9wdHMuc2lnbmFsKVxuICAgIC50aGVuKFxuICAgICAgZGF0YSA9PiB7XG4gICAgICAgIC8vIEFkZCB0aGUgZW5kcG9pbnQgdG8gZ2l2ZSBhIGNoYW5jZSB0byBpZGVudGlmeSB3aGljaCBlbmRwb2ludCByZXR1cm5lZCB0aGUgcmVzdWx0XG4gICAgICAgIGRhdGEuZW5kcG9pbnQgPSBlbmRwb2ludC50b1N0cmluZygpXG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicgfHwgb3B0cy5yZXRyaWVzID09PSAwKSB7XG4gICAgICAgICAgZXJyLmVuZHBvaW50ID0gZW5kcG9pbnQudG9TdHJpbmcoKVxuICAgICAgICAgIHRocm93IGVyclxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnJldHJpZXMgPiAwKSB7XG4gICAgICAgICAgb3B0cy5yZXRyaWVzIC09IDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVlcnlOKGVuZHBvaW50cywgcSwgb3B0cylcbiAgICAgIH1cbiAgICApXG59XG5cbmZ1bmN0aW9uIGZpbHRlckRvaCAoZW5kcG9pbnQpIHtcbiAgcmV0dXJuIGVuZHBvaW50LnByb3RvY29sID09PSAnaHR0cHM6JyB8fCBlbmRwb2ludC5wcm90b2NvbCA9PT0gJ2h0dHA6J1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJEbnMgKGVuZHBvaW50KSB7XG4gIHJldHVybiBlbmRwb2ludC5wcm90b2NvbCA9PT0gJ3VkcDQ6JyB8fCBlbmRwb2ludC5wcm90b2NvbCA9PT0gJ3VkcDY6J1xufVxuIl0sIm5hbWVzIjpbInBhY2tldCIsInRvUmNvZGUiLCJkZWNvZGUiLCJsaWIiLCJyZXNvbHZlcnMiLCJiYWNrdXBSZXNvbHZlcnMiLCJBYm9ydEVycm9yIiwiUmVzcG9uc2VFcnJvciIsIlVSTCIsInRvRW5kcG9pbnQiLCJUaW1lb3V0RXJyb3IiLCJIVFRQU3RhdHVzRXJyb3IiLCJCYXNlRW5kcG9pbnQiLCJIVFRQRW5kcG9pbnQiLCJVRFA0RW5kcG9pbnQiLCJVRFA2RW5kcG9pbnQiLCJwYXJzZUVuZHBvaW50IiwiRE5TX1JDT0RFX0VSUk9SIiwiRE5TX1JDT0RFX01FU1NBR0UiLCJETlNSY29kZUVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsInJjb2RlIiwicXVlc3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiY29kZSIsImVycm9yIiwidG9KU09OIiwiZW5kcG9pbnQiLCJ2YWxpZGF0ZVJlc3BvbnNlIiwiZGF0YSIsImVyciIsInByb2Nlc3NSZXNvbHZlcnMiLCJyZXMiLCJ0aW1lIiwidW5kZWZpbmVkIiwiRGF0ZSIsIm5vdyIsIm1hcCIsInJlc29sdmVyIiwiT2JqZWN0IiwiYXNzaWduIiwibmFtZSIsImVuZHBvaW50cyIsInJlc29sdmVyQnlOYW1lIiwicmVkdWNlIiwiYnlOYW1lIiwiZW5kcG9pbnRCeU5hbWUiLCJiYWNrdXAiLCJ0b011bHRpUXVlcnkiLCJzaW5nbGVRdWVyeSIsInF1ZXJ5IiwidHlwZSIsInF1ZXN0aW9ucyIsInB1c2giLCJxdWVyeU9uZSIsInRpbWVvdXQiLCJhYm9ydFNpZ25hbCIsImFib3J0ZWQiLCJQcm9taXNlIiwicmVqZWN0IiwicHJvdG9jb2wiLCJxdWVyeURucyIsInF1ZXJ5RG9oIiwicmVxdWVzdCIsInVybCIsIm1ldGhvZCIsImVuY29kZSIsImZsYWdzIiwiUkVDVVJTSU9OX0RFU0lSRUQiLCJ0aGVuIiwicmVzcG9uc2UiLCJsZW5ndGgiLCJkZWNvZGVkIiwibWVzc2FnZSIsIlVQREFURV9VUkwiLCJjb25jYXRVaW50OCIsImFycnMiLCJVaW50OEFycmF5IiwibGVuIiwiYXJyIiwicG9zIiwic2V0IiwiY29tYmluZVRYVCIsImlucHV0cyIsImlzTmFtZVN0cmluZyIsImVudHJ5IiwidGVzdCIsIldlbGxrbm93biIsIm9wdHMiLCJ1cGRhdGUiLCJ1cGRhdGVVUkwiLCJwZXJzaXN0IiwibG9jYWxTdG9yYWdlUHJlZml4IiwibWF4QWdlIiwiX2RhdGFQIiwiX2RhdGEiLCJmb3JjZSIsIm91dGRhdGVkIiwicmVzb2x2ZSIsImxvYWRKU09OIiwibWF4VGltZSIsImNhdGNoIiwiaW5wdXQiLCJmaWx0ZXJEb2giLCJmaWx0ZXJEbnMiLCJmaWx0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsIkJvb2xlYW4iLCJmaW5kSW5kZXgiLCJmb3VuZCIsInN1YnN0cmluZyIsIndlbGxrbm93biIsImlzUHJvbWlzZSIsInRvUHJvbWlzZSIsInEiLCJyZXRyaWVzIiwiaXNBcnJheSIsInF1ZXJ5TiIsImxvb2t1cFR4dCIsImRvbWFpbiIsImVudHJpZXMiLCJhbnN3ZXJzIiwiYW5zd2VyIiwidHRsIiwic29ydCIsImEiLCJiIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwic2lnbmFsIiwidG9TdHJpbmciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/dns-query/index.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/dns-query/lib.mjs":
|
|
/*!****************************************!*\
|
|
!*** ./node_modules/dns-query/lib.mjs ***!
|
|
\****************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ loadJSON: () => (/* binding */ loadJSON),\n/* harmony export */ processResolvers: () => (/* binding */ processResolvers),\n/* harmony export */ queryDns: () => (/* binding */ queryDns),\n/* harmony export */ request: () => (/* binding */ request)\n/* harmony export */ });\n/* harmony import */ var dns__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dns */ \"dns\");\n/* harmony import */ var dgram__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dgram */ \"dgram\");\n/* harmony import */ var _leichtgewicht_dns_socket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @leichtgewicht/dns-socket */ \"(ssr)/./node_modules/@leichtgewicht/dns-socket/index.mjs\");\n/* harmony import */ var _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @leichtgewicht/ip-codec */ \"(ssr)/./node_modules/@leichtgewicht/ip-codec/index.mjs\");\n/* harmony import */ var _leichtgewicht_base64_codec__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @leichtgewicht/base64-codec */ \"(ssr)/./node_modules/@leichtgewicht/base64-codec/index.mjs\");\n/* harmony import */ var https__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! https */ \"https\");\n/* harmony import */ var http__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! http */ \"http\");\n/* harmony import */ var _common_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./common.mjs */ \"(ssr)/./node_modules/dns-query/common.mjs\");\n/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! fs */ \"fs\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var buffer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! buffer */ \"buffer\");\n\n\n\n\n\n\n\n\n\n\n\nconst { AbortError, HTTPStatusError, TimeoutError, UDP4Endpoint, UDP6Endpoint, URL } = _common_mjs__WEBPACK_IMPORTED_MODULE_7__;\n// Node 6 support\nconst writeFile = (path, data)=>new Promise((resolve, reject)=>fs__WEBPACK_IMPORTED_MODULE_8__.writeFile(path, data, (err)=>{\n err ? reject(err) : resolve();\n }));\nconst readFile = (path, opts)=>new Promise((resolve, reject)=>fs__WEBPACK_IMPORTED_MODULE_8__.readFile(path, opts, (err, data)=>{\n err ? reject(err) : resolve(data);\n }));\nconst mkdir = (path)=>new Promise((resolve, reject)=>fs__WEBPACK_IMPORTED_MODULE_8__.mkdir(path, (err)=>{\n err ? reject(err) : resolve();\n }));\nconst stat = (path)=>new Promise((resolve, reject)=>fs__WEBPACK_IMPORTED_MODULE_8__.stat(path, (err, stats)=>{\n err ? reject(err) : resolve(stats);\n }));\nconst filename = decodeURI(\"file:///Users/arseniy/Waku/lab.waku.org/examples/flush-notes/node_modules/dns-query/lib.mjs\").replace(/^file:\\/\\/(\\/(\\w+:))?/, \"$2\").replace(/\\//g, path__WEBPACK_IMPORTED_MODULE_9__.sep);\nconst contentType = \"application/dns-message\";\nlet socket4;\nlet socket6;\nfunction clearSocketMaybe(socket) {\n if (socket.inflight === 0) {\n socket.destroy();\n if (socket === socket4) {\n socket4 = null;\n } else {\n socket6 = null;\n }\n }\n}\nconst MAX_32BIT_INT = 2147483647;\nfunction getSocket(protocol) {\n if (protocol === \"udp4:\") {\n if (!socket4) {\n socket4 = new _leichtgewicht_dns_socket__WEBPACK_IMPORTED_MODULE_2__.DNSSocket({\n timeout: MAX_32BIT_INT,\n timeoutChecks: MAX_32BIT_INT,\n retries: 0,\n socket: dgram__WEBPACK_IMPORTED_MODULE_1__.createSocket(\"udp4\")\n });\n }\n return socket4;\n }\n if (!socket6) {\n socket6 = new _leichtgewicht_dns_socket__WEBPACK_IMPORTED_MODULE_2__.DNSSocket({\n timeout: MAX_32BIT_INT,\n timeoutChecks: MAX_32BIT_INT,\n retries: 0,\n socket: dgram__WEBPACK_IMPORTED_MODULE_1__.createSocket(\"udp6\")\n });\n }\n return socket6;\n}\nfunction queryDns(endpoint, query, timeout, signal) {\n return new Promise((resolve, reject)=>{\n const socket = getSocket(endpoint.protocol);\n if (endpoint.pk) {\n // TODO: add dnscrypt support to @leichtgewicht/dns-socket\n return reject(new Error(\"dnscrypt servers currently not supported\"));\n }\n const done = (err, res)=>{\n if (signal) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n clearSocketMaybe(socket);\n clearTimeout(t);\n if (err) return reject(err);\n resolve(res);\n };\n const requestId = socket.query(query, endpoint.port, endpoint.ipv4 || endpoint.ipv6, (err, res)=>{\n // Done for sturdier tests, some DNS servers return very, very fast.\n setTimeout(done, 10, err, res);\n });\n const t = setTimeout(onTimeout, timeout);\n if (signal) {\n signal.addEventListener(\"abort\", onAbort);\n }\n function onAbort() {\n done(new AbortError());\n socket.cancel(requestId);\n clearSocketMaybe(socket);\n }\n function onTimeout() {\n done(new TimeoutError(timeout));\n socket.cancel(requestId);\n clearSocketMaybe(socket);\n }\n });\n}\nfunction requestRaw(url, method, body, timeout, abortSignal, headers) {\n return new Promise((resolve, reject)=>{\n let timer;\n const client = url.protocol === \"https:\" ? https__WEBPACK_IMPORTED_MODULE_5__ : http__WEBPACK_IMPORTED_MODULE_6__;\n let finish = (error, data, response)=>{\n finish = null;\n clearTimeout(timer);\n if (abortSignal) {\n abortSignal.removeEventListener(\"abort\", onabort);\n }\n if (error) {\n if (response) {\n resolve({\n error,\n response\n });\n } else {\n reject(error);\n }\n } else {\n resolve({\n data,\n response\n });\n }\n };\n const target = new URL(url);\n if (method === \"GET\" && body) {\n target.search = \"?dns=\" + _leichtgewicht_base64_codec__WEBPACK_IMPORTED_MODULE_4__.base64URL.decode(body);\n }\n const req = client.request({\n hostname: target.hostname,\n port: target.port || (target.protocol === \"https:\" ? 443 : 80),\n path: `${target.pathname}${target.search}`,\n method,\n headers\n }, onresponse);\n if (abortSignal) {\n abortSignal.addEventListener(\"abort\", onabort);\n }\n req.on(\"error\", onerror);\n if (method === \"POST\") {\n req.end(buffer__WEBPACK_IMPORTED_MODULE_10__.Buffer.from(body));\n } else {\n req.end();\n }\n resetTimeout();\n function onabort() {\n req.destroy(new AbortError());\n }\n function onresponse(res) {\n if (res.statusCode !== 200) {\n const error = new HTTPStatusError(target.toString(), res.statusCode, method);\n finish(error, null, res);\n res.destroy(error);\n return;\n }\n const result = [];\n res.on(\"error\", onerror);\n res.on(\"data\", (data)=>{\n resetTimeout();\n result.push(data);\n });\n res.on(\"end\", onclose);\n res.on(\"close\", onclose);\n function onclose() {\n if (finish !== null) {\n finish(null, buffer__WEBPACK_IMPORTED_MODULE_10__.Buffer.concat(result), res);\n }\n }\n }\n function onerror(error) {\n if (finish !== null) {\n if (error instanceof Error) {\n finish(error);\n } else {\n finish(error ? new Error(error) : new Error(\"Unknown Error.\"));\n }\n }\n }\n function resetTimeout() {\n clearTimeout(timer);\n timer = setTimeout(ontimeout, timeout);\n }\n function ontimeout() {\n req.destroy(new TimeoutError(timeout));\n }\n });\n}\nfunction request(url, method, packet, timeout, abortSignal) {\n const headers = {\n Accept: contentType\n };\n if (method === \"POST\") {\n headers[\"Content-Type\"] = contentType;\n headers[\"Content-Length\"] = packet.byteLength;\n }\n return requestRaw(url, method, packet, timeout, abortSignal, headers);\n}\nfunction loadCache(cache, cachePath) {\n if (!cachePath) {\n return Promise.resolve();\n }\n return stat(cachePath).then(function(stats) {\n const time = stats.mtime.getTime();\n if (stats.isFile && time > cache.maxTime) {\n return readFile(cachePath, \"utf8\").then(function(raw) {\n const data = JSON.parse(raw);\n return {\n time,\n data\n };\n });\n }\n }).catch(noop);\n}\nfunction storeCache(folder, cachePath, data) {\n if (!cachePath) {\n return Promise.resolve(null);\n }\n return mkdir(folder).catch(function() {}) // mkdir is okay to fail!\n .then(function() {\n return writeFile(cachePath, data);\n }).then(function() {\n return stat(cachePath);\n }).then(function(stat) {\n return stat.mtime.getTime();\n }, function() {\n return null;\n });\n}\nfunction noop() {}\nfunction loadJSON(url, cache, timeout, abortSignal) {\n const folder = path__WEBPACK_IMPORTED_MODULE_9__.join(filename, \"..\", \".cache\");\n const cachePath = cache ? path__WEBPACK_IMPORTED_MODULE_9__.join(folder, cache.name) : null;\n return loadCache(cache, cachePath).then(function(cached) {\n if (cached) {\n return cached;\n }\n return requestRaw(url, \"GET\", null, timeout, abortSignal).then(function(response) {\n if (response.error) {\n return Promise.reject(response.error);\n }\n const data = response.data;\n return storeCache(folder, cachePath, data).then(function(time) {\n return {\n time,\n data: JSON.parse(data.toString())\n };\n });\n });\n });\n}\nfunction processResolvers(resolvers) {\n return resolvers.concat(dns__WEBPACK_IMPORTED_MODULE_0__.getServers().map((host, index)=>{\n const name = `local#${index}`;\n return {\n name,\n endpoint: _leichtgewicht_ip_codec__WEBPACK_IMPORTED_MODULE_3__.familyOf(host) === 1 ? new UDP4Endpoint({\n protocol: \"udp4:\",\n ipv4: host\n }) : new UDP6Endpoint({\n protocol: \"udp6:\",\n ipv6: host\n })\n };\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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aUcsV0FBV0MsUUFBUWIsV0FBV3JGLE1BQU1zRixJQUFJLENBQUMsU0FBVUMsSUFBSTtnQkFDNUQsT0FBTztvQkFDTEE7b0JBQ0F2RixNQUFNNkYsS0FBS0MsS0FBSyxDQUFDOUYsS0FBSzBFLFFBQVE7Z0JBQ2hDO1lBQ0Y7UUFDRjtJQUNKO0FBQ0o7QUFFTyxTQUFTNkIsaUJBQWtCQyxTQUFTO0lBQ3pDLE9BQU9BLFVBQVUxQixNQUFNLENBQ3JCaEcsMkNBQWMsR0FDWDRILEdBQUcsQ0FBQyxDQUFDQyxNQUFNQztRQUNWLE1BQU1QLE9BQU8sQ0FBQyxNQUFNLEVBQUVPLE1BQU0sQ0FBQztRQUM3QixPQUFPO1lBQ0xQO1lBQ0F2RSxVQUFVN0MsNkRBQWMsQ0FBQzBILFVBQVUsSUFDL0IsSUFBSS9HLGFBQWE7Z0JBQUU0QixVQUFVO2dCQUFTbUIsTUFBTWdFO1lBQUssS0FDakQsSUFBSTlHLGFBQWE7Z0JBQUUyQixVQUFVO2dCQUFTb0IsTUFBTStEO1lBQUs7UUFDdkQ7SUFDRjtBQUVOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvZG5zLXF1ZXJ5L2xpYi5tanM/NGViNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG5zIGZyb20gJ2RucydcbmltcG9ydCBkZ3JhbSBmcm9tICdkZ3JhbSdcbmltcG9ydCB7IEROU1NvY2tldCB9IGZyb20gJ0BsZWljaHRnZXdpY2h0L2Rucy1zb2NrZXQnXG5pbXBvcnQgKiBhcyBjb2RlYyBmcm9tICdAbGVpY2h0Z2V3aWNodC9pcC1jb2RlYydcbmltcG9ydCB7IGJhc2U2NFVSTCB9IGZyb20gJ0BsZWljaHRnZXdpY2h0L2Jhc2U2NC1jb2RlYydcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcydcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSAnLi9jb21tb24ubWpzJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJ1xuY29uc3QgeyBBYm9ydEVycm9yLCBIVFRQU3RhdHVzRXJyb3IsIFRpbWVvdXRFcnJvciwgVURQNEVuZHBvaW50LCBVRFA2RW5kcG9pbnQsIFVSTCB9ID0gY29tbW9uXG5cbi8vIE5vZGUgNiBzdXBwb3J0XG5jb25zdCB3cml0ZUZpbGUgPSAocGF0aCwgZGF0YSkgPT4gbmV3IFByb21pc2UoXG4gIChyZXNvbHZlLCByZWplY3QpID0+IGZzLndyaXRlRmlsZShwYXRoLCBkYXRhLCBlcnIgPT4geyBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoKSB9KVxuKVxuY29uc3QgcmVhZEZpbGUgPSAocGF0aCwgb3B0cykgPT4gbmV3IFByb21pc2UoXG4gIChyZXNvbHZlLCByZWplY3QpID0+IGZzLnJlYWRGaWxlKHBhdGgsIG9wdHMsIChlcnIsIGRhdGEpID0+IHsgZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKGRhdGEpIH0pXG4pXG5jb25zdCBta2RpciA9IHBhdGggPT4gbmV3IFByb21pc2UoXG4gIChyZXNvbHZlLCByZWplY3QpID0+IGZzLm1rZGlyKHBhdGgsIGVyciA9PiB7IGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZSgpIH0pXG4pXG5jb25zdCBzdGF0ID0gcGF0aCA9PiBuZXcgUHJvbWlzZShcbiAgKHJlc29sdmUsIHJlamVjdCkgPT4gZnMuc3RhdChwYXRoLCAoZXJyLCBzdGF0cykgPT4geyBlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoc3RhdHMpIH0pXG4pXG5cbmNvbnN0IGZpbGVuYW1lID0gZGVjb2RlVVJJKGltcG9ydC5tZXRhLnVybCkucmVwbGFjZSgvXmZpbGU6XFwvXFwvKFxcLyhcXHcrOikpPy8sICckMicpLnJlcGxhY2UoL1xcLy9nLCBwYXRoLnNlcClcbmNvbnN0IGNvbnRlbnRUeXBlID0gJ2FwcGxpY2F0aW9uL2Rucy1tZXNzYWdlJ1xuXG5sZXQgc29ja2V0NFxubGV0IHNvY2tldDZcblxuZnVuY3Rpb24gY2xlYXJTb2NrZXRNYXliZSAoc29ja2V0KSB7XG4gIGlmIChzb2NrZXQuaW5mbGlnaHQgPT09IDApIHtcbiAgICBzb2NrZXQuZGVzdHJveSgpXG4gICAgaWYgKHNvY2tldCA9PT0gc29ja2V0NCkge1xuICAgICAgc29ja2V0NCA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgc29ja2V0NiA9IG51bGxcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgTUFYXzMyQklUX0lOVCA9IDIxNDc0ODM2NDdcblxuZnVuY3Rpb24gZ2V0U29ja2V0IChwcm90b2NvbCkge1xuICBpZiAocHJvdG9jb2wgPT09ICd1ZHA0OicpIHtcbiAgICBpZiAoIXNvY2tldDQpIHtcbiAgICAgIHNvY2tldDQgPSBuZXcgRE5TU29ja2V0KHsgdGltZW91dDogTUFYXzMyQklUX0lOVCwgdGltZW91dENoZWNrczogTUFYXzMyQklUX0lOVCwgcmV0cmllczogMCwgc29ja2V0OiBkZ3JhbS5jcmVhdGVTb2NrZXQoJ3VkcDQnKSB9KVxuICAgIH1cbiAgICByZXR1cm4gc29ja2V0NFxuICB9XG4gIGlmICghc29ja2V0Nikge1xuICAgIHNvY2tldDYgPSBuZXcgRE5TU29ja2V0KHsgdGltZW91dDogTUFYXzMyQklUX0lOVCwgdGltZW91dENoZWNrczogTUFYXzMyQklUX0lOVCwgcmV0cmllczogMCwgc29ja2V0OiBkZ3JhbS5jcmVhdGVTb2NrZXQoJ3VkcDYnKSB9KVxuICB9XG4gIHJldHVybiBzb2NrZXQ2XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeURucyAoZW5kcG9pbnQsIHF1ZXJ5LCB0aW1lb3V0LCBzaWduYWwpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzb2NrZXQgPSBnZXRTb2NrZXQoZW5kcG9pbnQucHJvdG9jb2wpXG4gICAgaWYgKGVuZHBvaW50LnBrKSB7XG4gICAgICAvLyBUT0RPOiBhZGQgZG5zY3J5cHQgc3VwcG9ydCB0byBAbGVpY2h0Z2V3aWNodC9kbnMtc29ja2V0XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignZG5zY3J5cHQgc2VydmVycyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCcpKVxuICAgIH1cbiAgICBjb25zdCBkb25lID0gKGVyciwgcmVzKSA9PiB7XG4gICAgICBpZiAoc2lnbmFsKSB7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpXG4gICAgICB9XG4gICAgICBjbGVhclNvY2tldE1heWJlKHNvY2tldClcbiAgICAgIGNsZWFyVGltZW91dCh0KVxuICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICByZXNvbHZlKHJlcylcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdElkID0gc29ja2V0LnF1ZXJ5KHF1ZXJ5LCBlbmRwb2ludC5wb3J0LCBlbmRwb2ludC5pcHY0IHx8IGVuZHBvaW50LmlwdjYsIChlcnIsIHJlcykgPT4ge1xuICAgICAgLy8gRG9uZSBmb3Igc3R1cmRpZXIgdGVzdHMsIHNvbWUgRE5TIHNlcnZlcnMgcmV0dXJuIHZlcnksIHZlcnkgZmFzdC5cbiAgICAgIHNldFRpbWVvdXQoZG9uZSwgMTAsIGVyciwgcmVzKVxuICAgIH0pXG4gICAgY29uc3QgdCA9IHNldFRpbWVvdXQob25UaW1lb3V0LCB0aW1lb3V0KVxuICAgIGlmIChzaWduYWwpIHtcbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQWJvcnQpXG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uQWJvcnQgKCkge1xuICAgICAgZG9uZShuZXcgQWJvcnRFcnJvcigpKVxuICAgICAgc29ja2V0LmNhbmNlbChyZXF1ZXN0SWQpXG4gICAgICBjbGVhclNvY2tldE1heWJlKHNvY2tldClcbiAgICB9XG4gICAgZnVuY3Rpb24gb25UaW1lb3V0ICgpIHtcbiAgICAgIGRvbmUobmV3IFRpbWVvdXRFcnJvcih0aW1lb3V0KSlcbiAgICAgIHNvY2tldC5jYW5jZWwocmVxdWVzdElkKVxuICAgICAgY2xlYXJTb2NrZXRNYXliZShzb2NrZXQpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0UmF3ICh1cmwsIG1ldGhvZCwgYm9keSwgdGltZW91dCwgYWJvcnRTaWduYWwsIGhlYWRlcnMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBsZXQgdGltZXJcbiAgICBjb25zdCBjbGllbnQgPSB1cmwucHJvdG9jb2wgPT09ICdodHRwczonID8gaHR0cHMgOiBodHRwXG4gICAgbGV0IGZpbmlzaCA9IChlcnJvciwgZGF0YSwgcmVzcG9uc2UpID0+IHtcbiAgICAgIGZpbmlzaCA9IG51bGxcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIGlmIChhYm9ydFNpZ25hbCkge1xuICAgICAgICBhYm9ydFNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpXG4gICAgICB9XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIHJlc3BvbnNlXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgcmVzcG9uc2VcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3IFVSTCh1cmwpXG4gICAgaWYgKG1ldGhvZCA9PT0gJ0dFVCcgJiYgYm9keSkge1xuICAgICAgdGFyZ2V0LnNlYXJjaCA9ICc/ZG5zPScgKyBiYXNlNjRVUkwuZGVjb2RlKGJvZHkpXG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IGNsaWVudC5yZXF1ZXN0KFxuICAgICAge1xuICAgICAgICBob3N0bmFtZTogdGFyZ2V0Lmhvc3RuYW1lLFxuICAgICAgICBwb3J0OiB0YXJnZXQucG9ydCB8fCAodGFyZ2V0LnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSxcbiAgICAgICAgcGF0aDogYCR7dGFyZ2V0LnBhdGhuYW1lfSR7dGFyZ2V0LnNlYXJjaH1gLFxuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnNcbiAgICAgIH0sXG4gICAgICBvbnJlc3BvbnNlXG4gICAgKVxuICAgIGlmIChhYm9ydFNpZ25hbCkge1xuICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbmFib3J0KVxuICAgIH1cbiAgICByZXEub24oJ2Vycm9yJywgb25lcnJvcilcbiAgICBpZiAobWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgIHJlcS5lbmQoQnVmZmVyLmZyb20oYm9keSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcS5lbmQoKVxuICAgIH1cbiAgICByZXNldFRpbWVvdXQoKVxuXG4gICAgZnVuY3Rpb24gb25hYm9ydCAoKSB7XG4gICAgICByZXEuZGVzdHJveShuZXcgQWJvcnRFcnJvcigpKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9ucmVzcG9uc2UgKHJlcykge1xuICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICE9PSAyMDApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgSFRUUFN0YXR1c0Vycm9yKHRhcmdldC50b1N0cmluZygpLCByZXMuc3RhdHVzQ29kZSwgbWV0aG9kKVxuICAgICAgICBmaW5pc2goZXJyb3IsIG51bGwsIHJlcylcbiAgICAgICAgcmVzLmRlc3Ryb3koZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gW11cbiAgICAgIHJlcy5vbignZXJyb3InLCBvbmVycm9yKVxuICAgICAgcmVzLm9uKCdkYXRhJywgZGF0YSA9PiB7XG4gICAgICAgIHJlc2V0VGltZW91dCgpXG4gICAgICAgIHJlc3VsdC5wdXNoKGRhdGEpXG4gICAgICB9KVxuICAgICAgcmVzLm9uKCdlbmQnLCBvbmNsb3NlKVxuICAgICAgcmVzLm9uKCdjbG9zZScsIG9uY2xvc2UpXG5cbiAgICAgIGZ1bmN0aW9uIG9uY2xvc2UgKCkge1xuICAgICAgICBpZiAoZmluaXNoICE9PSBudWxsKSB7XG4gICAgICAgICAgZmluaXNoKG51bGwsIEJ1ZmZlci5jb25jYXQocmVzdWx0KSwgcmVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25lcnJvciAoZXJyb3IpIHtcbiAgICAgIGlmIChmaW5pc2ggIT09IG51bGwpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBmaW5pc2goZXJyb3IpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmluaXNoKGVycm9yID8gbmV3IEVycm9yKGVycm9yKSA6IG5ldyBFcnJvcignVW5rbm93biBFcnJvci4nKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2V0VGltZW91dCAoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICB0aW1lciA9IHNldFRpbWVvdXQob250aW1lb3V0LCB0aW1lb3V0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9udGltZW91dCAoKSB7XG4gICAgICByZXEuZGVzdHJveShuZXcgVGltZW91dEVycm9yKHRpbWVvdXQpKVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QgKHVybCwgbWV0aG9kLCBwYWNrZXQsIHRpbWVvdXQsIGFib3J0U2lnbmFsKSB7XG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgQWNjZXB0OiBjb250ZW50VHlwZVxuICB9XG4gIGlmIChtZXRob2QgPT09ICdQT1NUJykge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gY29udGVudFR5cGVcbiAgICBoZWFkZXJzWydDb250ZW50LUxlbmd0aCddID0gcGFja2V0LmJ5dGVMZW5ndGhcbiAgfVxuICByZXR1cm4gcmVxdWVzdFJhdyh1cmwsIG1ldGhvZCwgcGFja2V0LCB0aW1lb3V0LCBhYm9ydFNpZ25hbCwgaGVhZGVycylcbn1cblxuZnVuY3Rpb24gbG9hZENhY2hlIChjYWNoZSwgY2FjaGVQYXRoKSB7XG4gIGlmICghY2FjaGVQYXRoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gIH1cbiAgcmV0dXJuIHN0YXQoY2FjaGVQYXRoKS50aGVuKGZ1bmN0aW9uIChzdGF0cykge1xuICAgIGNvbnN0IHRpbWUgPSBzdGF0cy5tdGltZS5nZXRUaW1lKClcbiAgICBpZiAoc3RhdHMuaXNGaWxlICYmIHRpbWUgPiBjYWNoZS5tYXhUaW1lKSB7XG4gICAgICByZXR1cm4gcmVhZEZpbGUoY2FjaGVQYXRoLCAndXRmOCcpLnRoZW4oZnVuY3Rpb24gKHJhdykge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyYXcpXG4gICAgICAgIHJldHVybiB7IHRpbWUsIGRhdGEgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pLmNhdGNoKG5vb3ApXG59XG5cbmZ1bmN0aW9uIHN0b3JlQ2FjaGUgKGZvbGRlciwgY2FjaGVQYXRoLCBkYXRhKSB7XG4gIGlmICghY2FjaGVQYXRoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKVxuICB9XG4gIHJldHVybiBta2Rpcihmb2xkZXIpXG4gICAgLmNhdGNoKGZ1bmN0aW9uICgpIHt9KSAvLyBta2RpciBpcyBva2F5IHRvIGZhaWwhXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHdyaXRlRmlsZShjYWNoZVBhdGgsIGRhdGEpXG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gc3RhdChjYWNoZVBhdGgpXG4gICAgfSlcbiAgICAudGhlbihcbiAgICAgIGZ1bmN0aW9uIChzdGF0KSB7XG4gICAgICAgIHJldHVybiBzdGF0Lm10aW1lLmdldFRpbWUoKVxuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICApXG59XG5cbmZ1bmN0aW9uIG5vb3AgKCkge31cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRKU09OICh1cmwsIGNhY2hlLCB0aW1lb3V0LCBhYm9ydFNpZ25hbCkge1xuICBjb25zdCBmb2xkZXIgPSBwYXRoLmpvaW4oZmlsZW5hbWUsICcuLicsICcuY2FjaGUnKVxuICBjb25zdCBjYWNoZVBhdGggPSBjYWNoZSA/IHBhdGguam9pbihmb2xkZXIsIGNhY2hlLm5hbWUpIDogbnVsbFxuICByZXR1cm4gbG9hZENhY2hlKGNhY2hlLCBjYWNoZVBhdGgpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGNhY2hlZCkge1xuICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVxdWVzdFJhdyh1cmwsICdHRVQnLCBudWxsLCB0aW1lb3V0LCBhYm9ydFNpZ25hbClcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzcG9uc2UuZXJyb3IpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhXG4gICAgICAgICAgcmV0dXJuIHN0b3JlQ2FjaGUoZm9sZGVyLCBjYWNoZVBhdGgsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKHRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICAgIGRhdGE6IEpTT04ucGFyc2UoZGF0YS50b1N0cmluZygpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSZXNvbHZlcnMgKHJlc29sdmVycykge1xuICByZXR1cm4gcmVzb2x2ZXJzLmNvbmNhdChcbiAgICBkbnMuZ2V0U2VydmVycygpXG4gICAgICAubWFwKChob3N0LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lID0gYGxvY2FsIyR7aW5kZXh9YFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZW5kcG9pbnQ6IGNvZGVjLmZhbWlseU9mKGhvc3QpID09PSAxXG4gICAgICAgICAgICA/IG5ldyBVRFA0RW5kcG9pbnQoeyBwcm90b2NvbDogJ3VkcDQ6JywgaXB2NDogaG9zdCB9KVxuICAgICAgICAgICAgOiBuZXcgVURQNkVuZHBvaW50KHsgcHJvdG9jb2w6ICd1ZHA2OicsIGlwdjY6IGhvc3QgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgKVxufVxuIl0sIm5hbWVzIjpbImRucyIsImRncmFtIiwiRE5TU29ja2V0IiwiY29kZWMiLCJiYXNlNjRVUkwiLCJodHRwcyIsImh0dHAiLCJjb21tb24iLCJmcyIsInBhdGgiLCJCdWZmZXIiLCJBYm9ydEVycm9yIiwiSFRUUFN0YXR1c0Vycm9yIiwiVGltZW91dEVycm9yIiwiVURQNEVuZHBvaW50IiwiVURQNkVuZHBvaW50IiwiVVJMIiwid3JpdGVGaWxlIiwiZGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyIiwicmVhZEZpbGUiLCJvcHRzIiwibWtkaXIiLCJzdGF0Iiwic3RhdHMiLCJmaWxlbmFtZSIsImRlY29kZVVSSSIsInVybCIsInJlcGxhY2UiLCJzZXAiLCJjb250ZW50VHlwZSIsInNvY2tldDQiLCJzb2NrZXQ2IiwiY2xlYXJTb2NrZXRNYXliZSIsInNvY2tldCIsImluZmxpZ2h0IiwiZGVzdHJveSIsIk1BWF8zMkJJVF9JTlQiLCJnZXRTb2NrZXQiLCJwcm90b2NvbCIsInRpbWVvdXQiLCJ0aW1lb3V0Q2hlY2tzIiwicmV0cmllcyIsImNyZWF0ZVNvY2tldCIsInF1ZXJ5RG5zIiwiZW5kcG9pbnQiLCJxdWVyeSIsInNpZ25hbCIsInBrIiwiRXJyb3IiLCJkb25lIiwicmVzIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uQWJvcnQiLCJjbGVhclRpbWVvdXQiLCJ0IiwicmVxdWVzdElkIiwicG9ydCIsImlwdjQiLCJpcHY2Iiwic2V0VGltZW91dCIsIm9uVGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYW5jZWwiLCJyZXF1ZXN0UmF3IiwibWV0aG9kIiwiYm9keSIsImFib3J0U2lnbmFsIiwiaGVhZGVycyIsInRpbWVyIiwiY2xpZW50IiwiZmluaXNoIiwiZXJyb3IiLCJyZXNwb25zZSIsIm9uYWJvcnQiLCJ0YXJnZXQiLCJzZWFyY2giLCJkZWNvZGUiLCJyZXEiLCJyZXF1ZXN0IiwiaG9zdG5hbWUiLCJwYXRobmFtZSIsIm9ucmVzcG9uc2UiLCJvbiIsIm9uZXJyb3IiLCJlbmQiLCJmcm9tIiwicmVzZXRUaW1lb3V0Iiwic3RhdHVzQ29kZSIsInRvU3RyaW5nIiwicmVzdWx0IiwicHVzaCIsIm9uY2xvc2UiLCJjb25jYXQiLCJvbnRpbWVvdXQiLCJwYWNrZXQiLCJBY2NlcHQiLCJieXRlTGVuZ3RoIiwibG9hZENhY2hlIiwiY2FjaGUiLCJjYWNoZVBhdGgiLCJ0aGVuIiwidGltZSIsIm10aW1lIiwiZ2V0VGltZSIsImlzRmlsZSIsIm1heFRpbWUiLCJyYXciLCJKU09OIiwicGFyc2UiLCJjYXRjaCIsIm5vb3AiLCJzdG9yZUNhY2hlIiwiZm9sZGVyIiwibG9hZEpTT04iLCJqb2luIiwibmFtZSIsImNhY2hlZCIsInByb2Nlc3NSZXNvbHZlcnMiLCJyZXNvbHZlcnMiLCJnZXRTZXJ2ZXJzIiwibWFwIiwiaG9zdCIsImluZGV4IiwiZmFtaWx5T2YiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/dns-query/lib.mjs\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/dns-query/resolvers.mjs":
|
|
/*!**********************************************!*\
|
|
!*** ./node_modules/dns-query/resolvers.mjs ***!
|
|
\**********************************************/
|
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ resolvers: () => (/* binding */ resolvers)\n/* harmony export */ });\nconst resolvers = {\n data: [\n {\n name: \"adfree.usableprivacy.net\",\n endpoint: {\n protocol: \"https:\",\n host: \"adfree.usableprivacy.net\"\n },\n description: \"Public updns DoH service with advertising, tracker and malware filters.\\nHosted in Europe by @usableprivacy, details see: https://docs.usableprivacy.com\",\n country: \"Germany\",\n location: {\n lat: 51.2993,\n long: 9.491\n },\n filter: true\n },\n {\n name: \"adguard-dns-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.adguard.com\",\n ipv4: \"94.140.15.15\"\n },\n description: \"Remove ads and protect your computer from malware (over DoH)\",\n country: \"France\",\n location: {\n lat: 48.8582,\n long: 2.3387\n },\n filter: true\n },\n {\n name: \"adguard-dns-family-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns-family.adguard.com\",\n ipv4: \"94.140.15.16\"\n },\n description: \"Adguard DNS with safesearch and adult content blocking (over DoH)\",\n country: \"France\",\n location: {\n lat: 48.8582,\n long: 2.3387\n },\n filter: true\n },\n {\n name: \"adguard-dns-unfiltered-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns-unfiltered.adguard.com\",\n ipv4: \"94.140.14.140\"\n },\n description: \"AdGuard public DNS servers without filters (over DoH)\",\n country: \"France\",\n location: {\n lat: 48.8582,\n long: 2.3387\n }\n },\n {\n name: \"ahadns-doh-chi\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.chi.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in Chicago, USA. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=chi\",\n country: \"United States\",\n location: {\n lat: 41.8483,\n long: -87.6517\n },\n filter: true,\n cors: true\n },\n {\n name: \"ahadns-doh-in\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.in.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in Mumbai, India. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=in\",\n country: \"India\",\n location: {\n lat: 19.0748,\n long: 72.8856\n },\n filter: true,\n cors: true\n },\n {\n name: \"ahadns-doh-la\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.la.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in Los Angeles, USA. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=la\",\n country: \"United States\",\n location: {\n lat: 34.0549,\n long: -118.2578\n },\n filter: true,\n cors: true\n },\n {\n name: \"ahadns-doh-nl\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.nl.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in Amsterdam, Netherlands. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=nl\",\n country: \"Netherlands\",\n location: {\n lat: 52.3824,\n long: 4.8995\n },\n filter: true,\n cors: true\n },\n {\n name: \"ahadns-doh-ny\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.ny.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in New York. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=ny\",\n country: \"United States\",\n location: {\n lat: 40.7308,\n long: -73.9975\n },\n filter: true,\n cors: true\n },\n {\n name: \"ahadns-doh-pl\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.pl.ahadns.net\",\n cors: true\n },\n description: \"A zero logging DNS with support for DNS-over-HTTPS (DoH) & DNS-over-TLS (DoT). Blocks ads, malware, trackers, viruses, ransomware, telemetry and more. No persistent logs. DNSSEC. Hosted in Poland. By https://ahadns.com/\\nServer statistics can be seen at: https://statistics.ahadns.com/?server=pl\",\n country: \"Netherlands\",\n location: {\n lat: 52.3824,\n long: 4.8995\n },\n filter: true,\n cors: true\n },\n {\n name: \"alidns-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.alidns.com\",\n ipv4: \"223.5.5.5\",\n cors: true\n },\n description: \"A public DNS resolver that supports DoH/DoT in mainland China, provided by Alibaba-Cloud.\\nWarning: GFW filtering rules are applied by that resolver.\\nHomepage: https://alidns.com/\",\n country: \"China\",\n location: {\n lat: 34.7725,\n long: 113.7266\n },\n filter: true,\n log: true,\n cors: true\n },\n {\n name: \"ams-ads-doh-nl\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnsnl-noads.alekberg.net\"\n },\n description: \"Resolver in Amsterdam. DoH protocol. Non-logging. Blocks ads, malware and trackers. DNSSEC enabled.\",\n country: \"Romania\",\n location: {\n lat: 45.9968,\n long: 24.997\n },\n filter: true\n },\n {\n name: \"ams-doh-nl\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnsnl.alekberg.net\"\n },\n description: \"Resolver in Amsterdam. DoH protocol. Non-logging, non-filtering, DNSSEC.\",\n country: \"Romania\",\n location: {\n lat: 45.9968,\n long: 24.997\n }\n },\n {\n name: \"att\",\n endpoint: {\n protocol: \"https:\",\n host: \"dohtrial.att.net\"\n },\n description: \"AT&T test DoH server.\",\n log: true\n },\n {\n name: \"bcn-ads-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnses-noads.alekberg.net\"\n },\n description: \"Resolver in Spain. DoH protocol. Non-logging, remove ads and malware, DNSSEC.\",\n country: \"Spain\",\n location: {\n lat: 41.3891,\n long: 2.1611\n },\n filter: true\n },\n {\n name: \"bcn-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnses.alekberg.net\"\n },\n description: \"Resolver in Spain. DoH protocol. Non-logging, non-filtering, DNSSEC.\",\n country: \"Spain\",\n location: {\n lat: 41.3891,\n long: 2.1611\n }\n },\n {\n name: \"brahma-world\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.brahma.world\"\n },\n description: \"DNS-over-HTTPS server. Non Logging, filters ads, trackers and malware. DNSSEC ready, QNAME Minimization, No EDNS Client-Subnet.\\nHosted in Stockholm, Sweden. (https://dns.brahma.world)\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"cisco-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.opendns.com\",\n ipv4: \"146.112.41.2\"\n },\n description: \"Remove your DNS blind spot (DoH protocol)\\nWarning: modifies your queries to include a copy of your network\\naddress when forwarding them to a selection of companies and organizations.\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true,\n log: true\n },\n {\n name: \"cloudflare\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.cloudflare.com\",\n ipv4: \"1.0.0.1\",\n cors: true\n },\n description: \"Cloudflare DNS (anycast) - aka 1.1.1.1 / 1.0.0.1\",\n country: \"Australia\",\n location: {\n lat: -33.494,\n long: 143.2104\n },\n cors: true\n },\n {\n name: \"cloudflare-family\",\n endpoint: {\n protocol: \"https:\",\n host: \"family.cloudflare-dns.com\",\n ipv4: \"1.0.0.3\",\n cors: true\n },\n description: \"Cloudflare DNS (anycast) with malware protection and parental control - aka 1.1.1.3 / 1.0.0.3\",\n country: \"Australia\",\n location: {\n lat: -33.494,\n long: 143.2104\n },\n filter: true,\n cors: true\n },\n {\n name: \"cloudflare-ipv6\",\n endpoint: {\n protocol: \"https:\",\n host: \"1dot1dot1dot1.cloudflare-dns.com\",\n cors: true\n },\n description: \"Cloudflare DNS over IPv6 (anycast)\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n cors: true\n },\n {\n name: \"cloudflare-security\",\n endpoint: {\n protocol: \"https:\",\n host: \"security.cloudflare-dns.com\",\n ipv4: \"1.0.0.2\",\n cors: true\n },\n description: \"Cloudflare DNS (anycast) with malware blocking - aka 1.1.1.2 / 1.0.0.2\",\n country: \"Australia\",\n location: {\n lat: -33.494,\n long: 143.2104\n },\n filter: true,\n cors: true\n },\n {\n name: \"controld-block-malware\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/p1\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis DNS blocks Malware domains.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n },\n filter: true\n },\n {\n name: \"controld-block-malware-ad\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/p2\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis DNS blocks Malware, Ads & Tracking domains.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n },\n filter: true\n },\n {\n name: \"controld-block-malware-ad-social\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/p3\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis DNS blocks Malware, Ads & Tracking and Social Networks domains.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n },\n filter: true\n },\n {\n name: \"controld-family-friendly\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/family\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis DNS blocks Malware, Ads & Tracking, Adult Content and Drugs domains.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n },\n filter: true\n },\n {\n name: \"controld-uncensored\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/uncensored\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis DNS unblocks censored domains from various countries.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n }\n },\n {\n name: \"controld-unfiltered\",\n endpoint: {\n protocol: \"https:\",\n host: \"freedns.controld.com\",\n path: \"/p0\"\n },\n description: \"ControlD Free DNS. Take CONTROL of your Internet. Block unwanted content, bypass geo-restrictions and be more productive. DoH protocol and No logging. - https://controld.com/free-dns\\nThis is a Unfiltered DNS, no DNS record blocking or manipulation here, if you want to block Malware, Ads & Tracking or Social Network domains, use the other ControlD DNS configs.\",\n country: \"Canada\",\n location: {\n lat: 43.6319,\n long: -79.3716\n }\n },\n {\n name: \"dns.digitale-gesellschaft.ch\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.digitale-gesellschaft.ch\"\n },\n description: \"Public DoH resolver operated by the Digital Society (https://www.digitale-gesellschaft.ch).\\nHosted in Zurich, Switzerland.\\nNon-logging, non-filtering, supports DNSSEC.\",\n country: \"Switzerland\",\n location: {\n lat: 47.1449,\n long: 8.1551\n }\n },\n {\n name: \"dns.ryan-palmer\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns1.ryan-palmer.com\"\n },\n description: \"Non-logging, non-filtering, DNSSEC DoH Server. Hosted in the UK.\",\n country: \"United Kingdom\",\n location: {\n lat: 51.5164,\n long: -0.093\n }\n },\n {\n name: \"dns.sb\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.sb\",\n ipv4: \"185.222.222.222\",\n cors: true\n },\n description: \"DNSSEC-enabled DoH server by https://xtom.com/\\nhttps://dns.sb/doh/\",\n country: \"Unknown\",\n location: {\n lat: 47,\n long: 8\n },\n cors: true\n },\n {\n name: \"dns.therifleman.name\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.therifleman.name\"\n },\n description: \"DNS-over-HTTPS DNS forwarder from Mumbai, India. Blocks web and Android trackers and ads.\\nIP addresses are not logged, but queries are logged for 24 hours for debugging.\\nReport issues, send suggestions @ joker349 at protonmail.com.\\nAlso supports DoT (for android) @ dns.therifleman.name and plain DNS @ 172.104.206.174\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"dnsforfamily-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns-doh.dnsforfamily.com\"\n },\n description: \"(DoH Protocol) (Now supports DNSSEC). Block adult websites, gambling websites, malwares and advertisements.\\nIt also enforces safe search in: Google, YouTube, Bing, DuckDuckGo and Yandex.\\nSocial websites like Facebook and Instagram are not blocked. No DNS queries are logged.\\nAs of 26-May-2022 5.9 million websites are blocked and new websites are added to blacklist daily.\\nCompletely free, no ads or any commercial motive. Operating for 4 years now.\\nProvided by: https://dnsforfamily.com\",\n country: \"Finland\",\n location: {\n lat: 60.1758,\n long: 24.9349\n },\n filter: true\n },\n {\n name: \"dnsforfamily-doh-no-safe-search\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns-doh-no-safe-search.dnsforfamily.com\"\n },\n description: \"(DoH Protocol) (Now supports DNSSEC) Block adult websites, gambling websites, malwares and advertisements.\\nUnlike other dnsforfamily servers, this one does not enforces safe search. So Google, YouTube, Bing, DuckDuckGo and Yandex are completely accessible without any restriction.\\nSocial websites like Facebook and Instagram are not blocked. No DNS queries are logged.\\nAs of 26-May-2022 5.9 million websites are blocked and new websites are added to blacklist daily.\\nCompletely free, no ads or any commercial motive. Operating for 4 years now.\\nWarning: This server is incompatible with anonymization.\\nProvided by: https://dnsforfamily.com\",\n country: \"Finland\",\n location: {\n lat: 60.1758,\n long: 24.9349\n },\n filter: true\n },\n {\n name: \"dnsforge.de\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnsforge.de\",\n cors: true\n },\n description: \"Public DoH resolver running with Pihole for Adblocking (https://dnsforge.de).\\nNon-logging, AD-filtering, supports DNSSEC. Hosted in Germany.\",\n country: \"Germany\",\n location: {\n lat: 52.2998,\n long: 9.447\n },\n filter: true,\n cors: true\n },\n {\n name: \"dnshome-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.dnshome.de\"\n },\n description: \"https://www.dnshome.de/ public resolver in Germany\"\n },\n {\n name: \"dnspod-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.pub\",\n cors: true\n },\n description: \"A public DNS resolver in mainland China provided by DNSPod (Tencent Cloud).\\nhttps://www.dnspod.cn/Products/Public.DNS?lang=en\",\n filter: true,\n log: true,\n cors: true\n },\n {\n name: \"dnswarden-asia-adblock-dohv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.asia.dnswarden.com\",\n path: \"/adblock\"\n },\n description: \"Hosted in Singapore. For more information look [here](https://github.com/bhanupratapys/dnswarden) or [here](https://dnswarden.com).\",\n country: \"Singapore\",\n location: {\n lat: 1.2929,\n long: 103.8547\n },\n filter: true\n },\n {\n name: \"dnswarden-asia-adultfilter-dohv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.asia.dnswarden.com\",\n path: \"/adultfilter\"\n },\n description: \"Hosted in Singapore. For more information look [here](https://github.com/bhanupratapys/dnswarden) or [here](https://dnswarden.com).\",\n country: \"Singapore\",\n location: {\n lat: 1.2929,\n long: 103.8547\n },\n filter: true\n },\n {\n name: \"dnswarden-asia-uncensor-dohv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.asia.dnswarden.com\",\n path: \"/uncensored\"\n },\n description: \"Hosted in Singapore. For more information look [here](https://github.com/bhanupratapys/dnswarden) or [here](https://dnswarden.com).\",\n country: \"Singapore\",\n location: {\n lat: 1.2929,\n long: 103.8547\n }\n },\n {\n name: \"dnswarden-eu-adblock-dohv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.eu.dnswarden.com\"\n },\n description: \"Hosted in Germany. For more information look [here](https://github.com/bhanupratapys/dnswarden) or [here](https://dnswarden.com).\",\n country: \"Germany\",\n location: {\n lat: 50.1103,\n long: 8.7147\n },\n filter: true\n },\n {\n name: \"dnswarden-us-adblock-dohv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.us.dnswarden.com\"\n },\n description: \"Hosted in USA (Dallas) . For more information look [here](https://github.com/bhanupratapys/dnswarden) or [here](https://dnswarden.com).\",\n country: \"United States\",\n location: {\n lat: 32.7889,\n long: -96.8021\n },\n filter: true\n },\n {\n name: \"doh-ch-blahdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-ch.blahdns.com\",\n cors: true\n },\n description: \"Blocks ad and Tracking, no Logging, DNSSEC, Hosted in Switzerland. By https://blahdns.com/\",\n country: \"Netherlands\",\n location: {\n lat: 52.3824,\n long: 4.8995\n },\n filter: true,\n cors: true\n },\n {\n name: \"doh-cleanbrowsing-adult\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.cleanbrowsing.org\",\n path: \"/doh/adult-filter/\",\n cors: true\n },\n description: \"Blocks access to all adult, pornographic and explicit sites. It does\\nnot block proxy or VPNs, nor mixed-content sites. Sites like Reddit\\nare allowed. Google and Bing are set to the Safe Mode.\\nBy https://cleanbrowsing.org/\",\n filter: true,\n cors: true\n },\n {\n name: \"doh-cleanbrowsing-family\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.cleanbrowsing.org\",\n path: \"/doh/family-filter/\",\n cors: true\n },\n description: \"Blocks access to all adult, pornographic and explicit sites. It also\\nblocks proxy and VPN domains that are used to bypass the filters.\\nMixed content sites (like Reddit) are also blocked. Google, Bing and\\nYoutube are set to the Safe Mode.\\nBy https://cleanbrowsing.org/\",\n filter: true,\n cors: true\n },\n {\n name: \"doh-cleanbrowsing-security\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.cleanbrowsing.org\",\n path: \"/doh/security-filter/\",\n cors: true\n },\n description: \"Block access to phishing, malware and malicious domains. It does not block adult content.\\nBy https://cleanbrowsing.org/\",\n filter: true,\n cors: true\n },\n {\n name: \"doh-crypto-sx\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.crypto.sx\",\n cors: true\n },\n description: \"DNS-over-HTTPS server. Anycast, no logs, no censorship, DNSSEC.\\nBackend hosted by Scaleway, globally cached via Cloudflare.\\nMaintained by Frank Denis.\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n cors: true\n },\n {\n name: \"doh-crypto-sx-ipv6\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-ipv6.crypto.sx\",\n cors: true\n },\n description: \"DNS-over-HTTPS server accessible over IPv6. Anycast, no logs, no censorship, DNSSEC.\\nBackend hosted by Scaleway, globally cached via Cloudflare.\\nMaintained by Frank Denis.\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n cors: true\n },\n {\n name: \"doh-de-blahdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-de.blahdns.com\",\n cors: true\n },\n description: \"Blocks ad and Tracking, no Logging, DNSSEC, Hosted in Germany. By https://blahdns.com/\",\n country: \"Germany\",\n location: {\n lat: 51.2993,\n long: 9.491\n },\n filter: true,\n cors: true\n },\n {\n name: \"doh-fi-blahdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-fi.blahdns.com\",\n cors: true\n },\n description: \"Blocks ad and Tracking, no Logging, DNSSEC, Hosted in Finland. By https://blahdns.com/\",\n country: \"Finland\",\n location: {\n lat: 60.1758,\n long: 24.9349\n },\n filter: true,\n cors: true\n },\n {\n name: \"doh-ibksturm\",\n endpoint: {\n protocol: \"https:\",\n host: \"ibksturm.synology.me\"\n },\n description: \"DoH & DoT Server, No Logging, No Filters, DNSSEC\\nRunning privately by ibksturm in Thurgau, Switzerland\"\n },\n {\n name: \"doh-jp-blahdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-jp.blahdns.com\",\n cors: true\n },\n description: \"Blocks ad and Tracking, no Logging, DNSSEC, Hosted in Japan. By https://blahdns.com/\",\n country: \"Japan\",\n location: {\n lat: 35.6882,\n long: 139.7532\n },\n filter: true,\n cors: true\n },\n {\n name: \"doh.ffmuc.net\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.ffmuc.net\"\n },\n description: \"An open (non-logging, non-filtering, non-censoring) DoH resolver operated by Freifunk Munich with nodes in DE.\\nhttps://ffmuc.net/\",\n country: \"Germany\",\n location: {\n lat: 51.2993,\n long: 9.491\n }\n },\n {\n name: \"doh.tiarap.org\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.tiarap.org\"\n },\n description: \"Non-Logging DNS-over-HTTPS server, cached via Cloudflare.\\nFilters out ads, trackers and malware, NO ECS, supports DNSSEC.\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"google\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.google\",\n ipv4: \"8.8.8.8\",\n cors: true\n },\n description: \"Google DNS (anycast)\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n log: true,\n cors: true\n },\n {\n name: \"hdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"query.hdns.io\",\n cors: true\n },\n description: \"HDNS is a public DNS resolver that supports Handshake domains.\\nhttps://www.hdns.io\",\n country: \"United States\",\n location: {\n lat: 37.7771,\n long: -122.406\n },\n cors: true\n },\n {\n name: \"he\",\n endpoint: {\n protocol: \"https:\",\n host: \"ordns.he.net\"\n },\n description: \"Hurricane Electric DoH server (anycast)\\nUnknown logging policy.\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n log: true\n },\n {\n name: \"id-gmail-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.tiar.app\"\n },\n description: \"Non-Logging DNS-over-HTTPS server located in Singapore.\\nFilters out ads, trackers and malware, supports DNSSEC, provided by id-gmail.\",\n country: \"Singapore\",\n location: {\n lat: 1.2929,\n long: 103.8547\n },\n filter: true\n },\n {\n name: \"iij\",\n endpoint: {\n protocol: \"https:\",\n host: \"public.dns.iij.jp\"\n },\n description: \"DoH server operated by Internet Initiative Japan in Tokyo.\\nhttps://www.iij.ad.jp/\",\n country: \"Japan\",\n location: {\n lat: 35.69,\n long: 139.69\n },\n log: true\n },\n {\n name: \"iqdns-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"a.passcloud.xyz\"\n },\n description: 'Non-logging DoH service runned by V2EX.com user johnsonwil.\\nReturns \"no such domain\" for anti-Chinese government websites. Supports DNSSEC.\\nFor more information: https://www.v2ex.com/t/785666',\n filter: true\n },\n {\n name: \"jp.tiar.app-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"jp.tiar.app\"\n },\n description: \"Non-Logging, Non-Filtering DNS-over-HTTPS server in Japan.\\nNo ECS, Support DNSSEC\",\n country: \"Japan\",\n location: {\n lat: 35.6882,\n long: 139.7532\n }\n },\n {\n name: \"jp.tiarap.org\",\n endpoint: {\n protocol: \"https:\",\n host: \"jp.tiarap.org\"\n },\n description: \"DNS-over-HTTPS Server. Non-Logging, Non-Filtering, No ECS, Support DNSSEC.\\nCached via Cloudflare.\"\n },\n {\n name: \"libredns\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.libredns.gr\"\n },\n description: \"DoH server in Germany. No logging, but no DNS padding and no DNSSEC support.\\nhttps://libredns.gr/\",\n country: \"Germany\",\n location: {\n lat: 51.2993,\n long: 9.491\n }\n },\n {\n name: \"nextdns\",\n endpoint: {\n protocol: \"https:\",\n host: \"anycsast.dns.nextdns.io\"\n },\n description: \"NextDNS is a cloud-based private DNS service that gives you full control\\nover what is allowed and what is blocked on the Internet.\\nDNSSEC, Anycast, Non-logging, NoFilters\\nhttps://www.nextdns.io/\",\n country: \"Netherlands\",\n location: {\n lat: 52.3891,\n long: 4.6563\n }\n },\n {\n name: \"nextdns-ultralow\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.nextdns.io\",\n path: \"/dnscrypt-proxy\"\n },\n description: 'NextDNS is a cloud-based private DNS service that gives you full control\\nover what is allowed and what is blocked on the Internet.\\nhttps://www.nextdns.io/\\nTo select the server location, the \"-ultralow\" variant relies on bootstrap servers\\ninstead of anycast.'\n },\n {\n name: \"njalla-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.njal.la\",\n cors: true\n },\n description: \"Non-logging DoH server in Sweden operated by Njalla.\\nhttps://dns.njal.la/\",\n country: \"Sweden\",\n location: {\n lat: 59.3247,\n long: 18.056\n },\n cors: true\n },\n {\n name: \"odoh-cloudflare\",\n endpoint: {\n protocol: \"https:\",\n host: \"odoh.cloudflare-dns.com\",\n cors: true\n },\n description: \"Cloudflare ODoH server.\\nhttps://cloudflare.com\",\n cors: true\n },\n {\n name: \"odoh-crypto-sx\",\n endpoint: {\n protocol: \"https:\",\n host: \"odoh.crypto.sx\",\n cors: true\n },\n description: \"ODoH target server. Anycast, no logs.\\nBackend hosted by Scaleway. Maintained by Frank Denis.\",\n cors: true\n },\n {\n name: \"odoh-id-gmail\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.tiar.app\",\n path: \"/odoh\"\n },\n description: \"ODoH target server. Based in Singapore, no logs.\\nFilter ads, trackers and malware.\",\n filter: true\n },\n {\n name: \"odoh-jp.tiar.app\",\n endpoint: {\n protocol: \"https:\",\n host: \"jp.tiar.app\",\n path: \"/odoh\"\n },\n description: \"ODoH target server. no logs.\"\n },\n {\n name: \"odoh-jp.tiarap.org\",\n endpoint: {\n protocol: \"https:\",\n host: \"jp.tiarap.org\",\n path: \"/odoh\"\n },\n description: \"ODoH target server via Cloudflare, no logs.\"\n },\n {\n name: \"odoh-resolver4.dns.openinternet.io\",\n endpoint: {\n protocol: \"https:\",\n host: \"resolver4.dns.openinternet.io\"\n },\n description: \"ODoH target server. no logs, no filter, DNSSEC.\\nRunning on dedicated hardware colocated at Sonic.net in Santa Rosa, CA in the United States.\\nUses Sonic's recusrive DNS servers as upstream resolvers (but is not affiliated with Sonic\\nin any way). Provided by https://openinternet.io\"\n },\n {\n name: \"odoh-tiarap.org\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.tiarap.org\",\n path: \"/odoh\"\n },\n description: \"ODoH target server via Cloudflare, no logs.\\nFilter ads, trackers and malware.\",\n filter: true\n },\n {\n name: \"publicarray-au2-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh-2.seby.io\",\n cors: true\n },\n description: \"DNSSEC • OpenNIC • Non-logging • Uncensored - hosted on ovh.com.au\\nMaintained by publicarray - https://dns.seby.io\",\n country: \"Australia\",\n location: {\n lat: -33.8591,\n long: 151.2002\n },\n cors: true\n },\n {\n name: \"puredns-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"puredns.org\",\n ipv4: \"146.190.6.13\",\n cors: true\n },\n description: \"Public uncensored DNS resolver in Singapore - https://puredns.org\\n** Only available in Indonesia and Singapore **\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n cors: true\n },\n {\n name: \"quad101\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.twnic.tw\",\n cors: true\n },\n description: \"DNSSEC-aware public resolver by the Taiwan Network Information Center (TWNIC)\\nhttps://101.101.101.101/index_en.html\",\n cors: true\n },\n {\n name: \"quad9-doh-ip4-port443-filter-ecs-pri\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns11.quad9.net\",\n ipv4: \"149.112.112.11\"\n },\n description: \"Quad9 (anycast) dnssec/no-log/filter/ecs 9.9.9.11 - 149.112.112.11\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"quad9-doh-ip4-port443-filter-pri\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.quad9.net\",\n ipv4: \"149.112.112.112\"\n },\n description: \"Quad9 (anycast) dnssec/no-log/filter 9.9.9.9 - 149.112.112.9 - 149.112.112.112\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"quad9-doh-ip4-port443-nofilter-ecs-pri\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns12.quad9.net\",\n ipv4: \"9.9.9.12\"\n },\n description: \"Quad9 (anycast) no-dnssec/no-log/no-filter/ecs 9.9.9.12 - 149.112.112.12\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n }\n },\n {\n name: \"quad9-doh-ip4-port443-nofilter-pri\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns10.quad9.net\",\n ipv4: \"149.112.112.10\"\n },\n description: \"Quad9 (anycast) no-dnssec/no-log/no-filter 9.9.9.10 - 149.112.112.10\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n }\n },\n {\n name: \"quad9-doh-ip6-port5053-filter-pri\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns9.quad9.net\"\n },\n description: \"Quad9 (anycast) dnssec/no-log/filter 2620:fe::fe - 2620:fe::9 - 2620:fe::fe:9\",\n country: \"United States\",\n location: {\n lat: 37.751,\n long: -97.822\n },\n filter: true\n },\n {\n name: \"safesurfer-doh\",\n endpoint: {\n protocol: \"https:\",\n host: \"doh.safesurfer.io\"\n },\n description: \"Family safety focused blocklist for over 2 million adult sites, as well as phishing and malware and more.\\nFree to use, paid for customizing blocking for more categories+sites and viewing usage at my.safesurfer.io. Logs taken for viewing\\nusage, data never sold - https://safesurfer.io\",\n filter: true,\n log: true\n },\n {\n name: \"sth-ads-doh-se\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnsse-noads.alekberg.net\"\n },\n description: \"Resolver in Stockholm, Sweden. DoH server. Non-logging, remove ads and malware, DNSSEC.\",\n country: \"Bulgaria\",\n location: {\n lat: 42.696,\n long: 23.332\n },\n filter: true\n },\n {\n name: \"sth-doh-se\",\n endpoint: {\n protocol: \"https:\",\n host: \"dnsse.alekberg.net\"\n },\n description: \"Resolver in Stockholm, Sweden. DoH server. Non-logging, non-filtering, DNSSEC.\",\n country: \"Bulgaria\",\n location: {\n lat: 42.696,\n long: 23.332\n }\n },\n {\n name: \"switch\",\n endpoint: {\n protocol: \"https:\",\n host: \"dns.switch.ch\"\n },\n description: \"Public DoH service provided by SWITCH in Switzerland\\nhttps://www.switch.ch\\nProvides protection against malware, but does not block ads.\",\n filter: true\n },\n {\n name: \"uncensoreddns-dk-ipv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"unicast.uncensoreddns.org\"\n },\n description: \"Also known as censurfridns.\\nDoH, no logs, no filter, DNSSEC, unicast hosted in Denmark - https://blog.uncensoreddns.org\",\n country: \"Denmark\",\n location: {\n lat: 55.7123,\n long: 12.0564\n }\n },\n {\n name: \"uncensoreddns-ipv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"anycast.uncensoreddns.org\"\n },\n description: \"Also known as censurfridns.\\nDoH, no logs, no filter, DNSSEC, anycast - https://blog.uncensoreddns.org\",\n country: \"Denmark\",\n location: {\n lat: 55.7123,\n long: 12.0564\n }\n },\n {\n name: \"v.dnscrypt.uk-doh-ipv4\",\n endpoint: {\n protocol: \"https:\",\n host: \"v.dnscrypt.uk\"\n },\n description: \"DoH, no logs, uncensored, DNSSEC. Hosted in London UK on Digital Ocean\\nhttps://www.dnscrypt.uk\",\n country: \"United Kingdom\",\n location: {\n lat: 51.4964,\n long: -0.1224\n }\n }\n ],\n time: 1654187067783\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvZG5zLXF1ZXJ5L3Jlc29sdmVycy5tanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLE1BQU1BLFlBQVk7SUFDdkJDLE1BQU07UUFDSjtZQUNFQyxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBQyxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTTtZQUNSO1lBQ0FDLFFBQVE7UUFDVjtRQUNBO1lBQ0VULE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtnQkFDTk8sTUFBTTtZQUNSO1lBQ0FOLGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNO1lBQ1I7WUFDQUMsUUFBUTtRQUNWO1FBQ0E7WUFDRVQsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO2dCQUNOTyxNQUFNO1lBQ1I7WUFDQU4sYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtZQUNBQyxRQUFRO1FBQ1Y7UUFDQTtZQUNFVCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05PLE1BQU07WUFDUjtZQUNBTixhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTTtZQUNSO1FBQ0Y7UUFDQTtZQUNFUixNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05RLE1BQU07WUFDUjtZQUNBUCxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7WUFDQUMsUUFBUTtZQUNSRSxNQUFNO1FBQ1I7UUFDQTtZQUNFWCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05RLE1BQU07WUFD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QUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU0sQ0FBQztZQUNUO1lBQ0FDLFFBQVE7UUFDVjtRQUNBO1lBQ0VULE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtnQkFDTlUsTUFBTTtZQUNSO1lBQ0FULGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNLENBQUM7WUFDVDtZQUNBQyxRQUFRO1FBQ1Y7UUFDQTtZQUNFVCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05VLE1BQU07WUFDUjtZQUNBVCxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7WUFDQUMsUUFBUTtRQUNWO1FBQ0E7WUFDRVQsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO2dCQUNOVSxNQUFNO1lBQ1I7WUFDQVQsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU0sQ0FBQztZQUNUO1FBQ0Y7UUFDQTtZQUNFUixNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05VLE1BQU07WUFDUjtZQUNBVCxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7UUFDRjtRQUNBO1lBQ0VSLE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtZQUNSO1lBQ0FDLGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNO1lBQ1I7UUFDRjtRQUNBO1lBQ0VSLE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtZQUNSO1lBQ0FDLGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNLENBQUM7WUFDVDtRQUNGO1FBQ0E7WUFDRVIsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO2dCQUNOTyxNQUFNO2dCQUNOQyxNQUFNO1lBQ1I7WUFDQVAsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtZQUNBRyxNQUFNO1FBQ1I7UUFDQTtZQUNFWCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBQyxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7WUFDQUMsUUFBUTtRQUNWO1FBQ0E7WUFDRVQsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO1lBQ1I7WUFDQUMsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtZQUNBQyxRQUFRO1FBQ1Y7UUFDQTtZQUNFVCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBQyxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTTtZQUNSO1lBQ0FDLFFBQVE7UUFDVjtRQUNBO1lBQ0VULE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtnQkFDTlEsTUFBTTtZQUNSO1lBQ0FQLGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNO1lBQ1I7WUFDQUMsUUFBUTtZQUNSRSxNQUFNO1FBQ1I7UUFDQTtZQUNFWCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBQyxhQUFhO1FBQ2Y7UUFDQTtZQUNFSixNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05RLE1BQU07WUFDUjtZQUNBUCxhQUFhO1lBQ2JLLFFBQVE7WUFDUkcsS0FBSztZQUNMRCxNQUFNO1FBQ1I7UUFDQTtZQUNFWCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07Z0JBQ05VLE1BQU07WUFDUjtZQUNBVCxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTTtZQUNSO1lBQ0FDLFFBQVE7UUFDVjtRQUNBO1lBQ0VULE1BQU07WUFDTkMsVUFBVTtnQkFDUkMsVUFBVTtnQkFDVkMsTUFBTTtnQkFDTlUsTUFBTTtZQUNSO1lBQ0FULGFBQWE7WUFDYkMsU0FBUztZQUNUQyxVQUFVO2dCQUNSQyxLQUFLO2dCQUNMQyxNQUFNO1lBQ1I7WUFDQUMsUUFBUTtRQUNWO1FBQ0E7WUFDRVQsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO2dCQUNOVSxNQUFNO1lBQ1I7WUFDQVQsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtRQUNGO1FBQ0E7WUFDRVIsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO1lBQ1I7WUFDQUMsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtZQUNBQyxRQUFRO1FBQ1Y7UUFDQTtZQUNFVCxNQUFNO1lBQ05DLFVBQVU7Z0JBQ1JDLFVBQVU7Z0JBQ1ZDLE1BQU07WUFDUjtZQUNBQyxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7WUFDQUMsUUFBUTtRQUNWO1FBQ0E7WUFDRVQsTUFBTTtZQUNOQyxVQUFVO2dCQUNSQyxVQUFVO2dCQUNWQyxNQUFNO2dCQUNOUSxNQUFNO1lBQ1I7WUFDQVAsYUFBYTtZQUNiQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JDLEtBQUs7Z0JBQ0xDLE1BQU07WUFDUjtZQUNBQyxRQUFRO1lBQ1JFLE1BQU07UUFDUjtRQUNBO1lBQ0VYLE1BQU07WUFDTkMsVUFBVTtn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WUFDUjtZQUNBQyxhQUFhO1lBQ2JDLFNBQVM7WUFDVEMsVUFBVTtnQkFDUkMsS0FBSztnQkFDTEMsTUFBTSxDQUFDO1lBQ1Q7UUFDRjtLQUNEO0lBQ0RNLE1BQU07QUFDUixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZmx1c2gtbm90ZXMvLi9ub2RlX21vZHVsZXMvZG5zLXF1ZXJ5L3Jlc29sdmVycy5tanM/NWYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVzb2x2ZXJzID0ge1xuICBkYXRhOiBbXG4gICAge1xuICAgICAgbmFtZTogJ2FkZnJlZS51c2FibGVwcml2YWN5Lm5ldCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdhZGZyZWUudXNhYmxlcHJpdmFjeS5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdQdWJsaWMgdXBkbnMgRG9IIHNlcnZpY2Ugd2l0aCBhZHZlcnRpc2luZywgdHJhY2tlciBhbmQgbWFsd2FyZSBmaWx0ZXJzLlxcbkhvc3RlZCBpbiBFdXJvcGUgYnkgQHVzYWJsZXByaXZhY3ksIGRldGFpbHMgc2VlOiBodHRwczovL2RvY3MudXNhYmxlcHJpdmFjeS5jb20nLFxuICAgICAgY291bnRyeTogJ0dlcm1hbnknLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA1MS4yOTkzLFxuICAgICAgICBsb25nOiA5LjQ5MVxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FkZ3VhcmQtZG5zLWRvaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMuYWRndWFyZC5jb20nLFxuICAgICAgICBpcHY0OiAnOTQuMTQwLjE1LjE1J1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVtb3ZlIGFkcyBhbmQgcHJvdGVjdCB5b3VyIGNvbXB1dGVyIGZyb20gbWFsd2FyZSAob3ZlciBEb0gpJyxcbiAgICAgIGNvdW50cnk6ICdGcmFuY2UnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0OC44NTgyLFxuICAgICAgICBsb25nOiAyLjMzODdcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhZGd1YXJkLWRucy1mYW1pbHktZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2Rucy1mYW1pbHkuYWRndWFyZC5jb20nLFxuICAgICAgICBpcHY0OiAnOTQuMTQwLjE1LjE2J1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWRndWFyZCBETlMgd2l0aCBzYWZlc2VhcmNoIGFuZCBhZHVsdCBjb250ZW50IGJsb2NraW5nIChvdmVyIERvSCknLFxuICAgICAgY291bnRyeTogJ0ZyYW5jZScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDQ4Ljg1ODIsXG4gICAgICAgIGxvbmc6IDIuMzM4N1xuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FkZ3VhcmQtZG5zLXVuZmlsdGVyZWQtZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2Rucy11bmZpbHRlcmVkLmFkZ3VhcmQuY29tJyxcbiAgICAgICAgaXB2NDogJzk0LjE0MC4xNC4xNDAnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdBZEd1YXJkIHB1YmxpYyBETlMgc2VydmVycyB3aXRob3V0IGZpbHRlcnMgKG92ZXIgRG9IKScsXG4gICAgICBjb3VudHJ5OiAnRnJhbmNlJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDguODU4MixcbiAgICAgICAgbG9uZzogMi4zMzg3XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYWhhZG5zLWRvaC1jaGknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmNoaS5haGFkbnMubmV0JyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSB6ZXJvIGxvZ2dpbmcgRE5TIHdpdGggc3VwcG9ydCBmb3IgRE5TLW92ZXItSFRUUFMgKERvSCkgJiBETlMtb3Zlci1UTFMgKERvVCkuIEJsb2NrcyBhZHMsIG1hbHdhcmUsIHRyYWNrZXJzLCB2aXJ1c2VzLCByYW5zb213YXJlLCB0ZWxlbWV0cnkgYW5kIG1vcmUuIE5vIHBlcnNpc3RlbnQgbG9ncy4gRE5TU0VDLiBIb3N0ZWQgaW4gQ2hpY2FnbywgVVNBLiBCeSBodHRwczovL2FoYWRucy5jb20vXFxuU2VydmVyIHN0YXRpc3RpY3MgY2FuIGJlIHNlZW4gYXQ6IGh0dHBzOi8vc3RhdGlzdGljcy5haGFkbnMuY29tLz9zZXJ2ZXI9Y2hpJyxcbiAgICAgIGNvdW50cnk6ICdVbml0ZWQgU3RhdGVzJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDEuODQ4MyxcbiAgICAgICAgbG9uZzogLTg3LjY1MTdcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYWhhZG5zLWRvaC1pbicsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2guaW4uYWhhZG5zLm5ldCcsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgemVybyBsb2dnaW5nIEROUyB3aXRoIHN1cHBvcnQgZm9yIEROUy1vdmVyLUhUVFBTIChEb0gpICYgRE5TLW92ZXItVExTIChEb1QpLiBCbG9ja3MgYWRzLCBtYWx3YXJlLCB0cmFja2VycywgdmlydXNlcywgcmFuc29td2FyZSwgdGVsZW1ldHJ5IGFuZCBtb3JlLiBObyBwZXJzaXN0ZW50IGxvZ3MuIEROU1NFQy4gSG9zdGVkIGluIE11bWJhaSwgSW5kaWEuIEJ5IGh0dHBzOi8vYWhhZG5zLmNvbS9cXG5TZXJ2ZXIgc3RhdGlzdGljcyBjYW4gYmUgc2VlbiBhdDogaHR0cHM6Ly9zdGF0aXN0aWNzLmFoYWRucy5jb20vP3NlcnZlcj1pbicsXG4gICAgICBjb3VudHJ5OiAnSW5kaWEnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAxOS4wNzQ4LFxuICAgICAgICBsb25nOiA3Mi44ODU2XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FoYWRucy1kb2gtbGEnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmxhLmFoYWRucy5uZXQnLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdBIHplcm8gbG9nZ2luZyBETlMgd2l0aCBzdXBwb3J0IGZvciBETlMtb3Zlci1IVFRQUyAoRG9IKSAmIEROUy1vdmVyLVRMUyAoRG9UKS4gQmxvY2tzIGFkcywgbWFsd2FyZSwgdHJhY2tlcnMsIHZpcnVzZXMsIHJhbnNvbXdhcmUsIHRlbGVtZXRyeSBhbmQgbW9yZS4gTm8gcGVyc2lzdGVudCBsb2dzLiBETlNTRUMuIEhvc3RlZCBpbiBMb3MgQW5nZWxlcywgVVNBLiBCeSBodHRwczovL2FoYWRucy5jb20vXFxuU2VydmVyIHN0YXRpc3RpY3MgY2FuIGJlIHNlZW4gYXQ6IGh0dHBzOi8vc3RhdGlzdGljcy5haGFkbnMuY29tLz9zZXJ2ZXI9bGEnLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNC4wNTQ5LFxuICAgICAgICBsb25nOiAtMTE4LjI1NzhcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYWhhZG5zLWRvaC1ubCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gubmwuYWhhZG5zLm5ldCcsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgemVybyBsb2dnaW5nIEROUyB3aXRoIHN1cHBvcnQgZm9yIEROUy1vdmVyLUhUVFBTIChEb0gpICYgRE5TLW92ZXItVExTIChEb1QpLiBCbG9ja3MgYWRzLCBtYWx3YXJlLCB0cmFja2VycywgdmlydXNlcywgcmFuc29td2FyZSwgdGVsZW1ldHJ5IGFuZCBtb3JlLiBObyBwZXJzaXN0ZW50IGxvZ3MuIEROU1NFQy4gSG9zdGVkIGluIEFtc3RlcmRhbSwgTmV0aGVybGFuZHMuIEJ5IGh0dHBzOi8vYWhhZG5zLmNvbS9cXG5TZXJ2ZXIgc3RhdGlzdGljcyBjYW4gYmUgc2VlbiBhdDogaHR0cHM6Ly9zdGF0aXN0aWNzLmFoYWRucy5jb20vP3NlcnZlcj1ubCcsXG4gICAgICBjb3VudHJ5OiAnTmV0aGVybGFuZHMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA1Mi4zODI0LFxuICAgICAgICBsb25nOiA0Ljg5OTVcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYWhhZG5zLWRvaC1ueScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gubnkuYWhhZG5zLm5ldCcsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgemVybyBsb2dnaW5nIEROUyB3aXRoIHN1cHBvcnQgZm9yIEROUy1vdmVyLUhUVFBTIChEb0gpICYgRE5TLW92ZXItVExTIChEb1QpLiBCbG9ja3MgYWRzLCBtYWx3YXJlLCB0cmFja2VycywgdmlydXNlcywgcmFuc29td2FyZSwgdGVsZW1ldHJ5IGFuZCBtb3JlLiBObyBwZXJzaXN0ZW50IGxvZ3MuIEROU1NFQy4gSG9zdGVkIGluIE5ldyBZb3JrLiBCeSBodHRwczovL2FoYWRucy5jb20vXFxuU2VydmVyIHN0YXRpc3RpY3MgY2FuIGJlIHNlZW4gYXQ6IGh0dHBzOi8vc3RhdGlzdGljcy5haGFkbnMuY29tLz9zZXJ2ZXI9bnknLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0MC43MzA4LFxuICAgICAgICBsb25nOiAtNzMuOTk3NVxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhaGFkbnMtZG9oLXBsJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC5wbC5haGFkbnMubmV0JyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSB6ZXJvIGxvZ2dpbmcgRE5TIHdpdGggc3VwcG9ydCBmb3IgRE5TLW92ZXItSFRUUFMgKERvSCkgJiBETlMtb3Zlci1UTFMgKERvVCkuIEJsb2NrcyBhZHMsIG1hbHdhcmUsIHRyYWNrZXJzLCB2aXJ1c2VzLCByYW5zb213YXJlLCB0ZWxlbWV0cnkgYW5kIG1vcmUuIE5vIHBlcnNpc3RlbnQgbG9ncy4gRE5TU0VDLiBIb3N0ZWQgaW4gUG9sYW5kLiBCeSBodHRwczovL2FoYWRucy5jb20vXFxuU2VydmVyIHN0YXRpc3RpY3MgY2FuIGJlIHNlZW4gYXQ6IGh0dHBzOi8vc3RhdGlzdGljcy5haGFkbnMuY29tLz9zZXJ2ZXI9cGwnLFxuICAgICAgY291bnRyeTogJ05ldGhlcmxhbmRzJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNTIuMzgyNCxcbiAgICAgICAgbG9uZzogNC44OTk1XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FsaWRucy1kb2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLmFsaWRucy5jb20nLFxuICAgICAgICBpcHY0OiAnMjIzLjUuNS41JyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBwdWJsaWMgRE5TIHJlc29sdmVyIHRoYXQgc3VwcG9ydHMgRG9IL0RvVCBpbiBtYWlubGFuZCBDaGluYSwgcHJvdmlkZWQgYnkgQWxpYmFiYS1DbG91ZC5cXG5XYXJuaW5nOiBHRlcgZmlsdGVyaW5nIHJ1bGVzIGFyZSBhcHBsaWVkIGJ5IHRoYXQgcmVzb2x2ZXIuXFxuSG9tZXBhZ2U6IGh0dHBzOi8vYWxpZG5zLmNvbS8nLFxuICAgICAgY291bnRyeTogJ0NoaW5hJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogMzQuNzcyNSxcbiAgICAgICAgbG9uZzogMTEzLjcyNjZcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBsb2c6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYW1zLWFkcy1kb2gtbmwnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zbmwtbm9hZHMuYWxla2JlcmcubmV0J1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVzb2x2ZXIgaW4gQW1zdGVyZGFtLiBEb0ggcHJvdG9jb2wuIE5vbi1sb2dnaW5nLiBCbG9ja3MgYWRzLCBtYWx3YXJlIGFuZCB0cmFja2Vycy4gRE5TU0VDIGVuYWJsZWQuJyxcbiAgICAgIGNvdW50cnk6ICdSb21hbmlhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDUuOTk2OCxcbiAgICAgICAgbG9uZzogMjQuOTk3XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnYW1zLWRvaC1ubCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnNubC5hbGVrYmVyZy5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdSZXNvbHZlciBpbiBBbXN0ZXJkYW0uIERvSCBwcm90b2NvbC4gTm9uLWxvZ2dpbmcsIG5vbi1maWx0ZXJpbmcsIEROU1NFQy4nLFxuICAgICAgY291bnRyeTogJ1JvbWFuaWEnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0NS45OTY4LFxuICAgICAgICBsb25nOiAyNC45OTdcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhdHQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9odHJpYWwuYXR0Lm5ldCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0FUJlQgdGVzdCBEb0ggc2VydmVyLicsXG4gICAgICBsb2c6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdiY24tYWRzLWRvaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnNlcy1ub2Fkcy5hbGVrYmVyZy5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdSZXNvbHZlciBpbiBTcGFpbi4gRG9IIHByb3RvY29sLiBOb24tbG9nZ2luZywgcmVtb3ZlIGFkcyBhbmQgbWFsd2FyZSwgRE5TU0VDLicsXG4gICAgICBjb3VudHJ5OiAnU3BhaW4nLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0MS4zODkxLFxuICAgICAgICBsb25nOiAyLjE2MTFcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdiY24tZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2Ruc2VzLmFsZWtiZXJnLm5ldCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1Jlc29sdmVyIGluIFNwYWluLiBEb0ggcHJvdG9jb2wuIE5vbi1sb2dnaW5nLCBub24tZmlsdGVyaW5nLCBETlNTRUMuJyxcbiAgICAgIGNvdW50cnk6ICdTcGFpbicsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDQxLjM4OTEsXG4gICAgICAgIGxvbmc6IDIuMTYxMVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2JyYWhtYS13b3JsZCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMuYnJhaG1hLndvcmxkJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRE5TLW92ZXItSFRUUFMgc2VydmVyLiBOb24gTG9nZ2luZywgZmlsdGVycyBhZHMsIHRyYWNrZXJzIGFuZCBtYWx3YXJlLiBETlNTRUMgcmVhZHksIFFOQU1FIE1pbmltaXphdGlvbiwgTm8gRUROUyBDbGllbnQtU3VibmV0Llxcbkhvc3RlZCBpbiBTdG9ja2hvbG0sIFN3ZWRlbi4gKGh0dHBzOi8vZG5zLmJyYWhtYS53b3JsZCknLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjaXNjby1kb2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLm9wZW5kbnMuY29tJyxcbiAgICAgICAgaXB2NDogJzE0Ni4xMTIuNDEuMidcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1JlbW92ZSB5b3VyIEROUyBibGluZCBzcG90IChEb0ggcHJvdG9jb2wpXFxuV2FybmluZzogbW9kaWZpZXMgeW91ciBxdWVyaWVzIHRvIGluY2x1ZGUgYSBjb3B5IG9mIHlvdXIgbmV0d29ya1xcbmFkZHJlc3Mgd2hlbiBmb3J3YXJkaW5nIHRoZW0gdG8gYSBzZWxlY3Rpb24gb2YgY29tcGFuaWVzIGFuZCBvcmdhbml6YXRpb25zLicsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgIGxvZzogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Nsb3VkZmxhcmUnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLmNsb3VkZmxhcmUuY29tJyxcbiAgICAgICAgaXB2NDogJzEuMC4wLjEnLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdDbG91ZGZsYXJlIEROUyAoYW55Y2FzdCkgLSBha2EgMS4xLjEuMSAvIDEuMC4wLjEnLFxuICAgICAgY291bnRyeTogJ0F1c3RyYWxpYScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IC0zMy40OTQsXG4gICAgICAgIGxvbmc6IDE0My4yMTA0XG4gICAgICB9LFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Nsb3VkZmxhcmUtZmFtaWx5JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2ZhbWlseS5jbG91ZGZsYXJlLWRucy5jb20nLFxuICAgICAgICBpcHY0OiAnMS4wLjAuMycsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkZmxhcmUgRE5TIChhbnljYXN0KSB3aXRoIG1hbHdhcmUgcHJvdGVjdGlvbiBhbmQgcGFyZW50YWwgY29udHJvbCAtIGFrYSAxLjEuMS4zIC8gMS4wLjAuMycsXG4gICAgICBjb3VudHJ5OiAnQXVzdHJhbGlhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogLTMzLjQ5NCxcbiAgICAgICAgbG9uZzogMTQzLjIxMDRcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY2xvdWRmbGFyZS1pcHY2JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJzFkb3QxZG90MWRvdDEuY2xvdWRmbGFyZS1kbnMuY29tJyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWRmbGFyZSBETlMgb3ZlciBJUHY2IChhbnljYXN0KScsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjbG91ZGZsYXJlLXNlY3VyaXR5JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ3NlY3VyaXR5LmNsb3VkZmxhcmUtZG5zLmNvbScsXG4gICAgICAgIGlwdjQ6ICcxLjAuMC4yJyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWRmbGFyZSBETlMgKGFueWNhc3QpIHdpdGggbWFsd2FyZSBibG9ja2luZyAtIGFrYSAxLjEuMS4yIC8gMS4wLjAuMicsXG4gICAgICBjb3VudHJ5OiAnQXVzdHJhbGlhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogLTMzLjQ5NCxcbiAgICAgICAgbG9uZzogMTQzLjIxMDRcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29udHJvbGQtYmxvY2stbWFsd2FyZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdmcmVlZG5zLmNvbnRyb2xkLmNvbScsXG4gICAgICAgIHBhdGg6ICcvcDEnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdDb250cm9sRCBGcmVlIEROUy4gVGFrZSBDT05UUk9MIG9mIHlvdXIgSW50ZXJuZXQuIEJsb2NrIHVud2FudGVkIGNvbnRlbnQsIGJ5cGFzcyBnZW8tcmVzdHJpY3Rpb25zIGFuZCBiZSBtb3JlIHByb2R1Y3RpdmUuIERvSCBwcm90b2NvbCBhbmQgTm8gbG9nZ2luZy4gLSBodHRwczovL2NvbnRyb2xkLmNvbS9mcmVlLWRuc1xcblRoaXMgRE5TIGJsb2NrcyBNYWx3YXJlIGRvbWFpbnMuJyxcbiAgICAgIGNvdW50cnk6ICdDYW5hZGEnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0My42MzE5LFxuICAgICAgICBsb25nOiAtNzkuMzcxNlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2NvbnRyb2xkLWJsb2NrLW1hbHdhcmUtYWQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZnJlZWRucy5jb250cm9sZC5jb20nLFxuICAgICAgICBwYXRoOiAnL3AyJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29udHJvbEQgRnJlZSBETlMuIFRha2UgQ09OVFJPTCBvZiB5b3VyIEludGVybmV0LiBCbG9jayB1bndhbnRlZCBjb250ZW50LCBieXBhc3MgZ2VvLXJlc3RyaWN0aW9ucyBhbmQgYmUgbW9yZSBwcm9kdWN0aXZlLiBEb0ggcHJvdG9jb2wgYW5kIE5vIGxvZ2dpbmcuIC0gaHR0cHM6Ly9jb250cm9sZC5jb20vZnJlZS1kbnNcXG5UaGlzIEROUyBibG9ja3MgTWFsd2FyZSwgQWRzICYgVHJhY2tpbmcgZG9tYWlucy4nLFxuICAgICAgY291bnRyeTogJ0NhbmFkYScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDQzLjYzMTksXG4gICAgICAgIGxvbmc6IC03OS4zNzE2XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29udHJvbGQtYmxvY2stbWFsd2FyZS1hZC1zb2NpYWwnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZnJlZWRucy5jb250cm9sZC5jb20nLFxuICAgICAgICBwYXRoOiAnL3AzJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29udHJvbEQgRnJlZSBETlMuIFRha2UgQ09OVFJPTCBvZiB5b3VyIEludGVybmV0LiBCbG9jayB1bndhbnRlZCBjb250ZW50LCBieXBhc3MgZ2VvLXJlc3RyaWN0aW9ucyBhbmQgYmUgbW9yZSBwcm9kdWN0aXZlLiBEb0ggcHJvdG9jb2wgYW5kIE5vIGxvZ2dpbmcuIC0gaHR0cHM6Ly9jb250cm9sZC5jb20vZnJlZS1kbnNcXG5UaGlzIEROUyBibG9ja3MgTWFsd2FyZSwgQWRzICYgVHJhY2tpbmcgYW5kIFNvY2lhbCBOZXR3b3JrcyBkb21haW5zLicsXG4gICAgICBjb3VudHJ5OiAnQ2FuYWRhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDMuNjMxOSxcbiAgICAgICAgbG9uZzogLTc5LjM3MTZcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb250cm9sZC1mYW1pbHktZnJpZW5kbHknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZnJlZWRucy5jb250cm9sZC5jb20nLFxuICAgICAgICBwYXRoOiAnL2ZhbWlseSdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0NvbnRyb2xEIEZyZWUgRE5TLiBUYWtlIENPTlRST0wgb2YgeW91ciBJbnRlcm5ldC4gQmxvY2sgdW53YW50ZWQgY29udGVudCwgYnlwYXNzIGdlby1yZXN0cmljdGlvbnMgYW5kIGJlIG1vcmUgcHJvZHVjdGl2ZS4gRG9IIHByb3RvY29sIGFuZCBObyBsb2dnaW5nLiAtIGh0dHBzOi8vY29udHJvbGQuY29tL2ZyZWUtZG5zXFxuVGhpcyBETlMgYmxvY2tzIE1hbHdhcmUsIEFkcyAmIFRyYWNraW5nLCBBZHVsdCBDb250ZW50IGFuZCBEcnVncyBkb21haW5zLicsXG4gICAgICBjb3VudHJ5OiAnQ2FuYWRhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDMuNjMxOSxcbiAgICAgICAgbG9uZzogLTc5LjM3MTZcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb250cm9sZC11bmNlbnNvcmVkJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2ZyZWVkbnMuY29udHJvbGQuY29tJyxcbiAgICAgICAgcGF0aDogJy91bmNlbnNvcmVkJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29udHJvbEQgRnJlZSBETlMuIFRha2UgQ09OVFJPTCBvZiB5b3VyIEludGVybmV0LiBCbG9jayB1bndhbnRlZCBjb250ZW50LCBieXBhc3MgZ2VvLXJlc3RyaWN0aW9ucyBhbmQgYmUgbW9yZSBwcm9kdWN0aXZlLiBEb0ggcHJvdG9jb2wgYW5kIE5vIGxvZ2dpbmcuIC0gaHR0cHM6Ly9jb250cm9sZC5jb20vZnJlZS1kbnNcXG5UaGlzIEROUyB1bmJsb2NrcyBjZW5zb3JlZCBkb21haW5zIGZyb20gdmFyaW91cyBjb3VudHJpZXMuJyxcbiAgICAgIGNvdW50cnk6ICdDYW5hZGEnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0My42MzE5LFxuICAgICAgICBsb25nOiAtNzkuMzcxNlxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2NvbnRyb2xkLXVuZmlsdGVyZWQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZnJlZWRucy5jb250cm9sZC5jb20nLFxuICAgICAgICBwYXRoOiAnL3AwJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29udHJvbEQgRnJlZSBETlMuIFRha2UgQ09OVFJPTCBvZiB5b3VyIEludGVybmV0LiBCbG9jayB1bndhbnRlZCBjb250ZW50LCBieXBhc3MgZ2VvLXJlc3RyaWN0aW9ucyBhbmQgYmUgbW9yZSBwcm9kdWN0aXZlLiBEb0ggcHJvdG9jb2wgYW5kIE5vIGxvZ2dpbmcuIC0gaHR0cHM6Ly9jb250cm9sZC5jb20vZnJlZS1kbnNcXG5UaGlzIGlzIGEgVW5maWx0ZXJlZCBETlMsIG5vIEROUyByZWNvcmQgYmxvY2tpbmcgb3IgbWFuaXB1bGF0aW9uIGhlcmUsIGlmIHlvdSB3YW50IHRvIGJsb2NrIE1hbHdhcmUsIEFkcyAmIFRyYWNraW5nIG9yIFNvY2lhbCBOZXR3b3JrIGRvbWFpbnMsIHVzZSB0aGUgb3RoZXIgQ29udHJvbEQgRE5TIGNvbmZpZ3MuJyxcbiAgICAgIGNvdW50cnk6ICdDYW5hZGEnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0My42MzE5LFxuICAgICAgICBsb25nOiAtNzkuMzcxNlxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Rucy5kaWdpdGFsZS1nZXNlbGxzY2hhZnQuY2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLmRpZ2l0YWxlLWdlc2VsbHNjaGFmdC5jaCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1B1YmxpYyBEb0ggcmVzb2x2ZXIgb3BlcmF0ZWQgYnkgdGhlIERpZ2l0YWwgU29jaWV0eSAoaHR0cHM6Ly93d3cuZGlnaXRhbGUtZ2VzZWxsc2NoYWZ0LmNoKS5cXG5Ib3N0ZWQgaW4gWnVyaWNoLCBTd2l0emVybGFuZC5cXG5Ob24tbG9nZ2luZywgbm9uLWZpbHRlcmluZywgc3VwcG9ydHMgRE5TU0VDLicsXG4gICAgICBjb3VudHJ5OiAnU3dpdHplcmxhbmQnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0Ny4xNDQ5LFxuICAgICAgICBsb25nOiA4LjE1NTFcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkbnMucnlhbi1wYWxtZXInLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zMS5yeWFuLXBhbG1lci5jb20nXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdOb24tbG9nZ2luZywgbm9uLWZpbHRlcmluZywgRE5TU0VDIERvSCBTZXJ2ZXIuIEhvc3RlZCBpbiB0aGUgVUsuJyxcbiAgICAgIGNvdW50cnk6ICdVbml0ZWQgS2luZ2RvbScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDUxLjUxNjQsXG4gICAgICAgIGxvbmc6IC0wLjA5M1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Rucy5zYicsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2guc2InLFxuICAgICAgICBpcHY0OiAnMTg1LjIyMi4yMjIuMjIyJyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRE5TU0VDLWVuYWJsZWQgRG9IIHNlcnZlciBieSBodHRwczovL3h0b20uY29tL1xcbmh0dHBzOi8vZG5zLnNiL2RvaC8nLFxuICAgICAgY291bnRyeTogJ1Vua25vd24nLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA0NyxcbiAgICAgICAgbG9uZzogOFxuICAgICAgfSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkbnMudGhlcmlmbGVtYW4ubmFtZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMudGhlcmlmbGVtYW4ubmFtZSdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0ROUy1vdmVyLUhUVFBTIEROUyBmb3J3YXJkZXIgZnJvbSBNdW1iYWksIEluZGlhLiBCbG9ja3Mgd2ViIGFuZCBBbmRyb2lkIHRyYWNrZXJzIGFuZCBhZHMuXFxuSVAgYWRkcmVzc2VzIGFyZSBub3QgbG9nZ2VkLCBidXQgcXVlcmllcyBhcmUgbG9nZ2VkIGZvciAyNCBob3VycyBmb3IgZGVidWdnaW5nLlxcblJlcG9ydCBpc3N1ZXMsIHNlbmQgc3VnZ2VzdGlvbnMgQCBqb2tlcjM0OSBhdCBwcm90b25tYWlsLmNvbS5cXG5BbHNvIHN1cHBvcnRzIERvVCAoZm9yIGFuZHJvaWQpIEAgZG5zLnRoZXJpZmxlbWFuLm5hbWUgYW5kIHBsYWluIEROUyBAIDE3Mi4xMDQuMjA2LjE3NCcsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Ruc2ZvcmZhbWlseS1kb2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLWRvaC5kbnNmb3JmYW1pbHkuY29tJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnKERvSCBQcm90b2NvbCkgKE5vdyBzdXBwb3J0cyBETlNTRUMpLiBCbG9jayBhZHVsdCB3ZWJzaXRlcywgZ2FtYmxpbmcgd2Vic2l0ZXMsIG1hbHdhcmVzIGFuZCBhZHZlcnRpc2VtZW50cy5cXG5JdCBhbHNvIGVuZm9yY2VzIHNhZmUgc2VhcmNoIGluOiBHb29nbGUsIFlvdVR1YmUsIEJpbmcsIER1Y2tEdWNrR28gYW5kIFlhbmRleC5cXG5Tb2NpYWwgd2Vic2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQgSW5zdGFncmFtIGFyZSBub3QgYmxvY2tlZC4gTm8gRE5TIHF1ZXJpZXMgYXJlIGxvZ2dlZC5cXG5BcyBvZiAyNi1NYXktMjAyMiA1LjkgbWlsbGlvbiB3ZWJzaXRlcyBhcmUgYmxvY2tlZCBhbmQgbmV3IHdlYnNpdGVzIGFyZSBhZGRlZCB0byBibGFja2xpc3QgZGFpbHkuXFxuQ29tcGxldGVseSBmcmVlLCBubyBhZHMgb3IgYW55IGNvbW1lcmNpYWwgbW90aXZlLiBPcGVyYXRpbmcgZm9yIDQgeWVhcnMgbm93LlxcblByb3ZpZGVkIGJ5OiBodHRwczovL2Ruc2ZvcmZhbWlseS5jb20nLFxuICAgICAgY291bnRyeTogJ0ZpbmxhbmQnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA2MC4xNzU4LFxuICAgICAgICBsb25nOiAyNC45MzQ5XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG5zZm9yZmFtaWx5LWRvaC1uby1zYWZlLXNlYXJjaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMtZG9oLW5vLXNhZmUtc2VhcmNoLmRuc2ZvcmZhbWlseS5jb20nXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICcoRG9IIFByb3RvY29sKSAoTm93IHN1cHBvcnRzIEROU1NFQykgQmxvY2sgYWR1bHQgd2Vic2l0ZXMsIGdhbWJsaW5nIHdlYnNpdGVzLCBtYWx3YXJlcyBhbmQgYWR2ZXJ0aXNlbWVudHMuXFxuVW5saWtlIG90aGVyIGRuc2ZvcmZhbWlseSBzZXJ2ZXJzLCB0aGlzIG9uZSBkb2VzIG5vdCBlbmZvcmNlcyBzYWZlIHNlYXJjaC4gU28gR29vZ2xlLCBZb3VUdWJlLCBCaW5nLCBEdWNrRHVja0dvIGFuZCBZYW5kZXggYXJlIGNvbXBsZXRlbHkgYWNjZXNzaWJsZSB3aXRob3V0IGFueSByZXN0cmljdGlvbi5cXG5Tb2NpYWwgd2Vic2l0ZXMgbGlrZSBGYWNlYm9vayBhbmQgSW5zdGFncmFtIGFyZSBub3QgYmxvY2tlZC4gTm8gRE5TIHF1ZXJpZXMgYXJlIGxvZ2dlZC5cXG5BcyBvZiAyNi1NYXktMjAyMiA1LjkgbWlsbGlvbiB3ZWJzaXRlcyBhcmUgYmxvY2tlZCBhbmQgbmV3IHdlYnNpdGVzIGFyZSBhZGRlZCB0byBibGFja2xpc3QgZGFpbHkuXFxuQ29tcGxldGVseSBmcmVlLCBubyBhZHMgb3IgYW55IGNvbW1lcmNpYWwgbW90aXZlLiBPcGVyYXRpbmcgZm9yIDQgeWVhcnMgbm93Llxcbldhcm5pbmc6IFRoaXMgc2VydmVyIGlzIGluY29tcGF0aWJsZSB3aXRoIGFub255bWl6YXRpb24uXFxuUHJvdmlkZWQgYnk6IGh0dHBzOi8vZG5zZm9yZmFtaWx5LmNvbScsXG4gICAgICBjb3VudHJ5OiAnRmlubGFuZCcsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDYwLjE3NTgsXG4gICAgICAgIGxvbmc6IDI0LjkzNDlcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkbnNmb3JnZS5kZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnNmb3JnZS5kZScsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1B1YmxpYyBEb0ggcmVzb2x2ZXIgcnVubmluZyB3aXRoIFBpaG9sZSBmb3IgQWRibG9ja2luZyAoaHR0cHM6Ly9kbnNmb3JnZS5kZSkuXFxuTm9uLWxvZ2dpbmcsIEFELWZpbHRlcmluZywgc3VwcG9ydHMgRE5TU0VDLiBIb3N0ZWQgaW4gR2VybWFueS4nLFxuICAgICAgY291bnRyeTogJ0dlcm1hbnknLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA1Mi4yOTk4LFxuICAgICAgICBsb25nOiA5LjQ0N1xuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkbnNob21lLWRvaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMuZG5zaG9tZS5kZSdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ2h0dHBzOi8vd3d3LmRuc2hvbWUuZGUvIHB1YmxpYyByZXNvbHZlciBpbiBHZXJtYW55J1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Ruc3BvZC1kb2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLnB1YicsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0EgcHVibGljIEROUyByZXNvbHZlciBpbiBtYWlubGFuZCBDaGluYSBwcm92aWRlZCBieSBETlNQb2QgKFRlbmNlbnQgQ2xvdWQpLlxcbmh0dHBzOi8vd3d3LmRuc3BvZC5jbi9Qcm9kdWN0cy9QdWJsaWMuRE5TP2xhbmc9ZW4nLFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgbG9nOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Ruc3dhcmRlbi1hc2lhLWFkYmxvY2stZG9odjQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmFzaWEuZG5zd2FyZGVuLmNvbScsXG4gICAgICAgIHBhdGg6ICcvYWRibG9jaydcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0hvc3RlZCBpbiBTaW5nYXBvcmUuIEZvciBtb3JlIGluZm9ybWF0aW9uIGxvb2sgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9iaGFudXByYXRhcHlzL2Ruc3dhcmRlbikgb3IgW2hlcmVdKGh0dHBzOi8vZG5zd2FyZGVuLmNvbSkuJyxcbiAgICAgIGNvdW50cnk6ICdTaW5nYXBvcmUnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAxLjI5MjksXG4gICAgICAgIGxvbmc6IDEwMy44NTQ3XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG5zd2FyZGVuLWFzaWEtYWR1bHRmaWx0ZXItZG9odjQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmFzaWEuZG5zd2FyZGVuLmNvbScsXG4gICAgICAgIHBhdGg6ICcvYWR1bHRmaWx0ZXInXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdIb3N0ZWQgaW4gU2luZ2Fwb3JlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBsb29rIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vYmhhbnVwcmF0YXB5cy9kbnN3YXJkZW4pIG9yIFtoZXJlXShodHRwczovL2Ruc3dhcmRlbi5jb20pLicsXG4gICAgICBjb3VudHJ5OiAnU2luZ2Fwb3JlJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogMS4yOTI5LFxuICAgICAgICBsb25nOiAxMDMuODU0N1xuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Ruc3dhcmRlbi1hc2lhLXVuY2Vuc29yLWRvaHY0JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC5hc2lhLmRuc3dhcmRlbi5jb20nLFxuICAgICAgICBwYXRoOiAnL3VuY2Vuc29yZWQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdIb3N0ZWQgaW4gU2luZ2Fwb3JlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBsb29rIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vYmhhbnVwcmF0YXB5cy9kbnN3YXJkZW4pIG9yIFtoZXJlXShodHRwczovL2Ruc3dhcmRlbi5jb20pLicsXG4gICAgICBjb3VudHJ5OiAnU2luZ2Fwb3JlJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogMS4yOTI5LFxuICAgICAgICBsb25nOiAxMDMuODU0N1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2Ruc3dhcmRlbi1ldS1hZGJsb2NrLWRvaHY0JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC5ldS5kbnN3YXJkZW4uY29tJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSG9zdGVkIGluIEdlcm1hbnkuIEZvciBtb3JlIGluZm9ybWF0aW9uIGxvb2sgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9iaGFudXByYXRhcHlzL2Ruc3dhcmRlbikgb3IgW2hlcmVdKGh0dHBzOi8vZG5zd2FyZGVuLmNvbSkuJyxcbiAgICAgIGNvdW50cnk6ICdHZXJtYW55JyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNTAuMTEwMyxcbiAgICAgICAgbG9uZzogOC43MTQ3XG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG5zd2FyZGVuLXVzLWFkYmxvY2stZG9odjQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLnVzLmRuc3dhcmRlbi5jb20nXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdIb3N0ZWQgaW4gVVNBIChEYWxsYXMpIC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gbG9vayBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2JoYW51cHJhdGFweXMvZG5zd2FyZGVuKSBvciBbaGVyZV0oaHR0cHM6Ly9kbnN3YXJkZW4uY29tKS4nLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzMi43ODg5LFxuICAgICAgICBsb25nOiAtOTYuODAyMVxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RvaC1jaC1ibGFoZG5zJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC1jaC5ibGFoZG5zLmNvbScsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0Jsb2NrcyBhZCBhbmQgVHJhY2tpbmcsIG5vIExvZ2dpbmcsIEROU1NFQywgSG9zdGVkIGluIFN3aXR6ZXJsYW5kLiBCeSBodHRwczovL2JsYWhkbnMuY29tLycsXG4gICAgICBjb3VudHJ5OiAnTmV0aGVybGFuZHMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA1Mi4zODI0LFxuICAgICAgICBsb25nOiA0Ljg5OTVcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWNsZWFuYnJvd3NpbmctYWR1bHQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmNsZWFuYnJvd3Npbmcub3JnJyxcbiAgICAgICAgcGF0aDogJy9kb2gvYWR1bHQtZmlsdGVyLycsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0Jsb2NrcyBhY2Nlc3MgdG8gYWxsIGFkdWx0LCBwb3Jub2dyYXBoaWMgYW5kIGV4cGxpY2l0IHNpdGVzLiBJdCBkb2VzXFxubm90IGJsb2NrIHByb3h5IG9yIFZQTnMsIG5vciBtaXhlZC1jb250ZW50IHNpdGVzLiBTaXRlcyBsaWtlIFJlZGRpdFxcbmFyZSBhbGxvd2VkLiBHb29nbGUgYW5kIEJpbmcgYXJlIHNldCB0byB0aGUgU2FmZSBNb2RlLlxcbkJ5IGh0dHBzOi8vY2xlYW5icm93c2luZy5vcmcvJyxcbiAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkb2gtY2xlYW5icm93c2luZy1mYW1pbHknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmNsZWFuYnJvd3Npbmcub3JnJyxcbiAgICAgICAgcGF0aDogJy9kb2gvZmFtaWx5LWZpbHRlci8nLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdCbG9ja3MgYWNjZXNzIHRvIGFsbCBhZHVsdCwgcG9ybm9ncmFwaGljIGFuZCBleHBsaWNpdCBzaXRlcy4gSXQgYWxzb1xcbmJsb2NrcyBwcm94eSBhbmQgVlBOIGRvbWFpbnMgdGhhdCBhcmUgdXNlZCB0byBieXBhc3MgdGhlIGZpbHRlcnMuXFxuTWl4ZWQgY29udGVudCBzaXRlcyAobGlrZSBSZWRkaXQpIGFyZSBhbHNvIGJsb2NrZWQuIEdvb2dsZSwgQmluZyBhbmRcXG5Zb3V0dWJlIGFyZSBzZXQgdG8gdGhlIFNhZmUgTW9kZS5cXG5CeSBodHRwczovL2NsZWFuYnJvd3Npbmcub3JnLycsXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWNsZWFuYnJvd3Npbmctc2VjdXJpdHknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmNsZWFuYnJvd3Npbmcub3JnJyxcbiAgICAgICAgcGF0aDogJy9kb2gvc2VjdXJpdHktZmlsdGVyLycsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0Jsb2NrIGFjY2VzcyB0byBwaGlzaGluZywgbWFsd2FyZSBhbmQgbWFsaWNpb3VzIGRvbWFpbnMuIEl0IGRvZXMgbm90IGJsb2NrIGFkdWx0IGNvbnRlbnQuXFxuQnkgaHR0cHM6Ly9jbGVhbmJyb3dzaW5nLm9yZy8nLFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RvaC1jcnlwdG8tc3gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmNyeXB0by5zeCcsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0ROUy1vdmVyLUhUVFBTIHNlcnZlci4gQW55Y2FzdCwgbm8gbG9ncywgbm8gY2Vuc29yc2hpcCwgRE5TU0VDLlxcbkJhY2tlbmQgaG9zdGVkIGJ5IFNjYWxld2F5LCBnbG9iYWxseSBjYWNoZWQgdmlhIENsb3VkZmxhcmUuXFxuTWFpbnRhaW5lZCBieSBGcmFuayBEZW5pcy4nLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH0sXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWNyeXB0by1zeC1pcHY2JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC1pcHY2LmNyeXB0by5zeCcsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0ROUy1vdmVyLUhUVFBTIHNlcnZlciBhY2Nlc3NpYmxlIG92ZXIgSVB2Ni4gQW55Y2FzdCwgbm8gbG9ncywgbm8gY2Vuc29yc2hpcCwgRE5TU0VDLlxcbkJhY2tlbmQgaG9zdGVkIGJ5IFNjYWxld2F5LCBnbG9iYWxseSBjYWNoZWQgdmlhIENsb3VkZmxhcmUuXFxuTWFpbnRhaW5lZCBieSBGcmFuayBEZW5pcy4nLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH0sXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWRlLWJsYWhkbnMnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLWRlLmJsYWhkbnMuY29tJyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmxvY2tzIGFkIGFuZCBUcmFja2luZywgbm8gTG9nZ2luZywgRE5TU0VDLCBIb3N0ZWQgaW4gR2VybWFueS4gQnkgaHR0cHM6Ly9ibGFoZG5zLmNvbS8nLFxuICAgICAgY291bnRyeTogJ0dlcm1hbnknLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiA1MS4yOTkzLFxuICAgICAgICBsb25nOiA5LjQ5MVxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkb2gtZmktYmxhaGRucycsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gtZmkuYmxhaGRucy5jb20nLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdCbG9ja3MgYWQgYW5kIFRyYWNraW5nLCBubyBMb2dnaW5nLCBETlNTRUMsIEhvc3RlZCBpbiBGaW5sYW5kLiBCeSBodHRwczovL2JsYWhkbnMuY29tLycsXG4gICAgICBjb3VudHJ5OiAnRmlubGFuZCcsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDYwLjE3NTgsXG4gICAgICAgIGxvbmc6IDI0LjkzNDlcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWUsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWlia3N0dXJtJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2lia3N0dXJtLnN5bm9sb2d5Lm1lJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRG9IICYgRG9UIFNlcnZlciwgTm8gTG9nZ2luZywgTm8gRmlsdGVycywgRE5TU0VDXFxuUnVubmluZyBwcml2YXRlbHkgYnkgaWJrc3R1cm0gaW4gVGh1cmdhdSwgU3dpdHplcmxhbmQnXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZG9oLWpwLWJsYWhkbnMnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLWpwLmJsYWhkbnMuY29tJyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmxvY2tzIGFkIGFuZCBUcmFja2luZywgbm8gTG9nZ2luZywgRE5TU0VDLCBIb3N0ZWQgaW4gSmFwYW4uIEJ5IGh0dHBzOi8vYmxhaGRucy5jb20vJyxcbiAgICAgIGNvdW50cnk6ICdKYXBhbicsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM1LjY4ODIsXG4gICAgICAgIGxvbmc6IDEzOS43NTMyXG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RvaC5mZm11Yy5uZXQnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG9oLmZmbXVjLm5ldCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0FuIG9wZW4gKG5vbi1sb2dnaW5nLCBub24tZmlsdGVyaW5nLCBub24tY2Vuc29yaW5nKSBEb0ggcmVzb2x2ZXIgb3BlcmF0ZWQgYnkgRnJlaWZ1bmsgTXVuaWNoIHdpdGggbm9kZXMgaW4gREUuXFxuaHR0cHM6Ly9mZm11Yy5uZXQvJyxcbiAgICAgIGNvdW50cnk6ICdHZXJtYW55JyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNTEuMjk5MyxcbiAgICAgICAgbG9uZzogOS40OTFcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkb2gudGlhcmFwLm9yZycsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gudGlhcmFwLm9yZydcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ05vbi1Mb2dnaW5nIEROUy1vdmVyLUhUVFBTIHNlcnZlciwgY2FjaGVkIHZpYSBDbG91ZGZsYXJlLlxcbkZpbHRlcnMgb3V0IGFkcywgdHJhY2tlcnMgYW5kIG1hbHdhcmUsIE5PIEVDUywgc3VwcG9ydHMgRE5TU0VDLicsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2dvb2dsZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMuZ29vZ2xlJyxcbiAgICAgICAgaXB2NDogJzguOC44LjgnLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdHb29nbGUgRE5TIChhbnljYXN0KScsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGxvZzogdHJ1ZSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdoZG5zJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ3F1ZXJ5LmhkbnMuaW8nLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdIRE5TIGlzIGEgcHVibGljIEROUyByZXNvbHZlciB0aGF0IHN1cHBvcnRzIEhhbmRzaGFrZSBkb21haW5zLlxcbmh0dHBzOi8vd3d3LmhkbnMuaW8nLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NzcxLFxuICAgICAgICBsb25nOiAtMTIyLjQwNlxuICAgICAgfSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdoZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdvcmRucy5oZS5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdIdXJyaWNhbmUgRWxlY3RyaWMgRG9IIHNlcnZlciAoYW55Y2FzdClcXG5Vbmtub3duIGxvZ2dpbmcgcG9saWN5LicsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGxvZzogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2lkLWdtYWlsLWRvaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gudGlhci5hcHAnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdOb24tTG9nZ2luZyBETlMtb3Zlci1IVFRQUyBzZXJ2ZXIgbG9jYXRlZCBpbiBTaW5nYXBvcmUuXFxuRmlsdGVycyBvdXQgYWRzLCB0cmFja2VycyBhbmQgbWFsd2FyZSwgc3VwcG9ydHMgRE5TU0VDLCBwcm92aWRlZCBieSBpZC1nbWFpbC4nLFxuICAgICAgY291bnRyeTogJ1NpbmdhcG9yZScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDEuMjkyOSxcbiAgICAgICAgbG9uZzogMTAzLjg1NDdcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdpaWonLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAncHVibGljLmRucy5paWouanAnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdEb0ggc2VydmVyIG9wZXJhdGVkIGJ5IEludGVybmV0IEluaXRpYXRpdmUgSmFwYW4gaW4gVG9reW8uXFxuaHR0cHM6Ly93d3cuaWlqLmFkLmpwLycsXG4gICAgICBjb3VudHJ5OiAnSmFwYW4nLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNS42OSxcbiAgICAgICAgbG9uZzogMTM5LjY5XG4gICAgICB9LFxuICAgICAgbG9nOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnaXFkbnMtZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2EucGFzc2Nsb3VkLnh5eidcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ05vbi1sb2dnaW5nIERvSCBzZXJ2aWNlIHJ1bm5lZCBieSBWMkVYLmNvbSB1c2VyIGpvaG5zb253aWwuXFxuUmV0dXJucyBcIm5vIHN1Y2ggZG9tYWluXCIgZm9yIGFudGktQ2hpbmVzZSBnb3Zlcm5tZW50IHdlYnNpdGVzLiBTdXBwb3J0cyBETlNTRUMuXFxuRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vd3d3LnYyZXguY29tL3QvNzg1NjY2JyxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2pwLnRpYXIuYXBwLWRvaCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdqcC50aWFyLmFwcCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ05vbi1Mb2dnaW5nLCBOb24tRmlsdGVyaW5nIEROUy1vdmVyLUhUVFBTIHNlcnZlciBpbiBKYXBhbi5cXG5ObyBFQ1MsIFN1cHBvcnQgRE5TU0VDJyxcbiAgICAgIGNvdW50cnk6ICdKYXBhbicsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM1LjY4ODIsXG4gICAgICAgIGxvbmc6IDEzOS43NTMyXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnanAudGlhcmFwLm9yZycsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdqcC50aWFyYXAub3JnJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRE5TLW92ZXItSFRUUFMgU2VydmVyLiBOb24tTG9nZ2luZywgTm9uLUZpbHRlcmluZywgTm8gRUNTLCBTdXBwb3J0IEROU1NFQy5cXG5DYWNoZWQgdmlhIENsb3VkZmxhcmUuJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2xpYnJlZG5zJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC5saWJyZWRucy5ncidcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ0RvSCBzZXJ2ZXIgaW4gR2VybWFueS4gTm8gbG9nZ2luZywgYnV0IG5vIEROUyBwYWRkaW5nIGFuZCBubyBETlNTRUMgc3VwcG9ydC5cXG5odHRwczovL2xpYnJlZG5zLmdyLycsXG4gICAgICBjb3VudHJ5OiAnR2VybWFueScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDUxLjI5OTMsXG4gICAgICAgIGxvbmc6IDkuNDkxXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV4dGRucycsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdhbnljc2FzdC5kbnMubmV4dGRucy5pbydcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ05leHRETlMgaXMgYSBjbG91ZC1iYXNlZCBwcml2YXRlIEROUyBzZXJ2aWNlIHRoYXQgZ2l2ZXMgeW91IGZ1bGwgY29udHJvbFxcbm92ZXIgd2hhdCBpcyBhbGxvd2VkIGFuZCB3aGF0IGlzIGJsb2NrZWQgb24gdGhlIEludGVybmV0LlxcbkROU1NFQywgQW55Y2FzdCwgTm9uLWxvZ2dpbmcsIE5vRmlsdGVyc1xcbmh0dHBzOi8vd3d3Lm5leHRkbnMuaW8vJyxcbiAgICAgIGNvdW50cnk6ICdOZXRoZXJsYW5kcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDUyLjM4OTEsXG4gICAgICAgIGxvbmc6IDQuNjU2M1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25leHRkbnMtdWx0cmFsb3cnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLm5leHRkbnMuaW8nLFxuICAgICAgICBwYXRoOiAnL2Ruc2NyeXB0LXByb3h5J1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTmV4dEROUyBpcyBhIGNsb3VkLWJhc2VkIHByaXZhdGUgRE5TIHNlcnZpY2UgdGhhdCBnaXZlcyB5b3UgZnVsbCBjb250cm9sXFxub3ZlciB3aGF0IGlzIGFsbG93ZWQgYW5kIHdoYXQgaXMgYmxvY2tlZCBvbiB0aGUgSW50ZXJuZXQuXFxuaHR0cHM6Ly93d3cubmV4dGRucy5pby9cXG5UbyBzZWxlY3QgdGhlIHNlcnZlciBsb2NhdGlvbiwgdGhlIFwiLXVsdHJhbG93XCIgdmFyaWFudCByZWxpZXMgb24gYm9vdHN0cmFwIHNlcnZlcnNcXG5pbnN0ZWFkIG9mIGFueWNhc3QuJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25qYWxsYS1kb2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLm5qYWwubGEnLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdOb24tbG9nZ2luZyBEb0ggc2VydmVyIGluIFN3ZWRlbiBvcGVyYXRlZCBieSBOamFsbGEuXFxuaHR0cHM6Ly9kbnMubmphbC5sYS8nLFxuICAgICAgY291bnRyeTogJ1N3ZWRlbicsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDU5LjMyNDcsXG4gICAgICAgIGxvbmc6IDE4LjA1NlxuICAgICAgfSxcbiAgICAgIGNvcnM6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvZG9oLWNsb3VkZmxhcmUnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnb2RvaC5jbG91ZGZsYXJlLWRucy5jb20nLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdDbG91ZGZsYXJlIE9Eb0ggc2VydmVyLlxcbmh0dHBzOi8vY2xvdWRmbGFyZS5jb20nLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ29kb2gtY3J5cHRvLXN4JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ29kb2guY3J5cHRvLnN4JyxcbiAgICAgICAgY29yczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnT0RvSCB0YXJnZXQgc2VydmVyLiBBbnljYXN0LCBubyBsb2dzLlxcbkJhY2tlbmQgaG9zdGVkIGJ5IFNjYWxld2F5LiBNYWludGFpbmVkIGJ5IEZyYW5rIERlbmlzLicsXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb2RvaC1pZC1nbWFpbCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkb2gudGlhci5hcHAnLFxuICAgICAgICBwYXRoOiAnL29kb2gnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdPRG9IIHRhcmdldCBzZXJ2ZXIuIEJhc2VkIGluIFNpbmdhcG9yZSwgbm8gbG9ncy5cXG5GaWx0ZXIgYWRzLCB0cmFja2VycyBhbmQgbWFsd2FyZS4nLFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb2RvaC1qcC50aWFyLmFwcCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdqcC50aWFyLmFwcCcsXG4gICAgICAgIHBhdGg6ICcvb2RvaCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ09Eb0ggdGFyZ2V0IHNlcnZlci4gbm8gbG9ncy4nXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb2RvaC1qcC50aWFyYXAub3JnJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2pwLnRpYXJhcC5vcmcnLFxuICAgICAgICBwYXRoOiAnL29kb2gnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdPRG9IIHRhcmdldCBzZXJ2ZXIgdmlhIENsb3VkZmxhcmUsIG5vIGxvZ3MuJ1xuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ29kb2gtcmVzb2x2ZXI0LmRucy5vcGVuaW50ZXJuZXQuaW8nLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAncmVzb2x2ZXI0LmRucy5vcGVuaW50ZXJuZXQuaW8nXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IFwiT0RvSCB0YXJnZXQgc2VydmVyLiBubyBsb2dzLCBubyBmaWx0ZXIsIEROU1NFQy5cXG5SdW5uaW5nIG9uIGRlZGljYXRlZCBoYXJkd2FyZSBjb2xvY2F0ZWQgYXQgU29uaWMubmV0IGluIFNhbnRhIFJvc2EsIENBIGluIHRoZSBVbml0ZWQgU3RhdGVzLlxcblVzZXMgU29uaWMncyByZWN1c3JpdmUgRE5TIHNlcnZlcnMgYXMgdXBzdHJlYW0gcmVzb2x2ZXJzIChidXQgaXMgbm90IGFmZmlsaWF0ZWQgd2l0aCBTb25pY1xcbmluIGFueSB3YXkpLiBQcm92aWRlZCBieSBodHRwczovL29wZW5pbnRlcm5ldC5pb1wiXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb2RvaC10aWFyYXAub3JnJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC50aWFyYXAub3JnJyxcbiAgICAgICAgcGF0aDogJy9vZG9oJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnT0RvSCB0YXJnZXQgc2VydmVyIHZpYSBDbG91ZGZsYXJlLCBubyBsb2dzLlxcbkZpbHRlciBhZHMsIHRyYWNrZXJzIGFuZCBtYWx3YXJlLicsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdwdWJsaWNhcnJheS1hdTItZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC0yLnNlYnkuaW8nLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdETlNTRUMg4oCiIE9wZW5OSUMg4oCiIE5vbi1sb2dnaW5nIOKAoiBVbmNlbnNvcmVkIC0gaG9zdGVkIG9uIG92aC5jb20uYXVcXG5NYWludGFpbmVkIGJ5IHB1YmxpY2FycmF5IC0gaHR0cHM6Ly9kbnMuc2VieS5pbycsXG4gICAgICBjb3VudHJ5OiAnQXVzdHJhbGlhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogLTMzLjg1OTEsXG4gICAgICAgIGxvbmc6IDE1MS4yMDAyXG4gICAgICB9LFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3B1cmVkbnMtZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ3B1cmVkbnMub3JnJyxcbiAgICAgICAgaXB2NDogJzE0Ni4xOTAuNi4xMycsXG4gICAgICAgIGNvcnM6IHRydWVcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1B1YmxpYyB1bmNlbnNvcmVkIEROUyByZXNvbHZlciBpbiBTaW5nYXBvcmUgLSBodHRwczovL3B1cmVkbnMub3JnXFxuKiogT25seSBhdmFpbGFibGUgaW4gSW5kb25lc2lhIGFuZCBTaW5nYXBvcmUgKionLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH0sXG4gICAgICBjb3JzOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncXVhZDEwMScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMudHduaWMudHcnLFxuICAgICAgICBjb3JzOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdETlNTRUMtYXdhcmUgcHVibGljIHJlc29sdmVyIGJ5IHRoZSBUYWl3YW4gTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIgKFRXTklDKVxcbmh0dHBzOi8vMTAxLjEwMS4xMDEuMTAxL2luZGV4X2VuLmh0bWwnLFxuICAgICAgY29yczogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3F1YWQ5LWRvaC1pcDQtcG9ydDQ0My1maWx0ZXItZWNzLXByaScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMxMS5xdWFkOS5uZXQnLFxuICAgICAgICBpcHY0OiAnMTQ5LjExMi4xMTIuMTEnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdRdWFkOSAoYW55Y2FzdCkgZG5zc2VjL25vLWxvZy9maWx0ZXIvZWNzIDkuOS45LjExIC0gMTQ5LjExMi4xMTIuMTEnLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdxdWFkOS1kb2gtaXA0LXBvcnQ0NDMtZmlsdGVyLXByaScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnMucXVhZDkubmV0JyxcbiAgICAgICAgaXB2NDogJzE0OS4xMTIuMTEyLjExMidcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1F1YWQ5IChhbnljYXN0KSBkbnNzZWMvbm8tbG9nL2ZpbHRlciA5LjkuOS45IC0gMTQ5LjExMi4xMTIuOSAtIDE0OS4xMTIuMTEyLjExMicsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3F1YWQ5LWRvaC1pcDQtcG9ydDQ0My1ub2ZpbHRlci1lY3MtcHJpJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RuczEyLnF1YWQ5Lm5ldCcsXG4gICAgICAgIGlwdjQ6ICc5LjkuOS4xMidcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1F1YWQ5IChhbnljYXN0KSBuby1kbnNzZWMvbm8tbG9nL25vLWZpbHRlci9lY3MgOS45LjkuMTIgLSAxNDkuMTEyLjExMi4xMicsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3F1YWQ5LWRvaC1pcDQtcG9ydDQ0My1ub2ZpbHRlci1wcmknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zMTAucXVhZDkubmV0JyxcbiAgICAgICAgaXB2NDogJzE0OS4xMTIuMTEyLjEwJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUXVhZDkgKGFueWNhc3QpIG5vLWRuc3NlYy9uby1sb2cvbm8tZmlsdGVyIDkuOS45LjEwIC0gMTQ5LjExMi4xMTIuMTAnLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBTdGF0ZXMnLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgbGF0OiAzNy43NTEsXG4gICAgICAgIGxvbmc6IC05Ny44MjJcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdxdWFkOS1kb2gtaXA2LXBvcnQ1MDUzLWZpbHRlci1wcmknLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zOS5xdWFkOS5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdRdWFkOSAoYW55Y2FzdCkgZG5zc2VjL25vLWxvZy9maWx0ZXIgMjYyMDpmZTo6ZmUgLSAyNjIwOmZlOjo5IC0gMjYyMDpmZTo6ZmU6OScsXG4gICAgICBjb3VudHJ5OiAnVW5pdGVkIFN0YXRlcycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDM3Ljc1MSxcbiAgICAgICAgbG9uZzogLTk3LjgyMlxuICAgICAgfSxcbiAgICAgIGZpbHRlcjogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3NhZmVzdXJmZXItZG9oJyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ2RvaC5zYWZlc3VyZmVyLmlvJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmFtaWx5IHNhZmV0eSBmb2N1c2VkIGJsb2NrbGlzdCBmb3Igb3ZlciAyIG1pbGxpb24gYWR1bHQgc2l0ZXMsIGFzIHdlbGwgYXMgcGhpc2hpbmcgYW5kIG1hbHdhcmUgYW5kIG1vcmUuXFxuRnJlZSB0byB1c2UsIHBhaWQgZm9yIGN1c3RvbWl6aW5nIGJsb2NraW5nIGZvciBtb3JlIGNhdGVnb3JpZXMrc2l0ZXMgYW5kIHZpZXdpbmcgdXNhZ2UgYXQgbXkuc2FmZXN1cmZlci5pby4gTG9ncyB0YWtlbiBmb3Igdmlld2luZ1xcbnVzYWdlLCBkYXRhIG5ldmVyIHNvbGQgLSBodHRwczovL3NhZmVzdXJmZXIuaW8nLFxuICAgICAgZmlsdGVyOiB0cnVlLFxuICAgICAgbG9nOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3RoLWFkcy1kb2gtc2UnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zc2Utbm9hZHMuYWxla2JlcmcubmV0J1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVzb2x2ZXIgaW4gU3RvY2tob2xtLCBTd2VkZW4uIERvSCBzZXJ2ZXIuIE5vbi1sb2dnaW5nLCByZW1vdmUgYWRzIGFuZCBtYWx3YXJlLCBETlNTRUMuJyxcbiAgICAgIGNvdW50cnk6ICdCdWxnYXJpYScsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDQyLjY5NixcbiAgICAgICAgbG9uZzogMjMuMzMyXG4gICAgICB9LFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3RoLWRvaC1zZScsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdkbnNzZS5hbGVrYmVyZy5uZXQnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdSZXNvbHZlciBpbiBTdG9ja2hvbG0sIFN3ZWRlbi4gRG9IIHNlcnZlci4gTm9uLWxvZ2dpbmcsIG5vbi1maWx0ZXJpbmcsIEROU1NFQy4nLFxuICAgICAgY291bnRyeTogJ0J1bGdhcmlhJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNDIuNjk2LFxuICAgICAgICBsb25nOiAyMy4zMzJcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzd2l0Y2gnLFxuICAgICAgZW5kcG9pbnQ6IHtcbiAgICAgICAgcHJvdG9jb2w6ICdodHRwczonLFxuICAgICAgICBob3N0OiAnZG5zLnN3aXRjaC5jaCdcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjogJ1B1YmxpYyBEb0ggc2VydmljZSBwcm92aWRlZCBieSBTV0lUQ0ggaW4gU3dpdHplcmxhbmRcXG5odHRwczovL3d3dy5zd2l0Y2guY2hcXG5Qcm92aWRlcyBwcm90ZWN0aW9uIGFnYWluc3QgbWFsd2FyZSwgYnV0IGRvZXMgbm90IGJsb2NrIGFkcy4nLFxuICAgICAgZmlsdGVyOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAndW5jZW5zb3JlZGRucy1kay1pcHY0JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ3VuaWNhc3QudW5jZW5zb3JlZGRucy5vcmcnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdBbHNvIGtub3duIGFzIGNlbnN1cmZyaWRucy5cXG5Eb0gsIG5vIGxvZ3MsIG5vIGZpbHRlciwgRE5TU0VDLCB1bmljYXN0IGhvc3RlZCBpbiBEZW5tYXJrIC0gaHR0cHM6Ly9ibG9nLnVuY2Vuc29yZWRkbnMub3JnJyxcbiAgICAgIGNvdW50cnk6ICdEZW5tYXJrJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNTUuNzEyMyxcbiAgICAgICAgbG9uZzogMTIuMDU2NFxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3VuY2Vuc29yZWRkbnMtaXB2NCcsXG4gICAgICBlbmRwb2ludDoge1xuICAgICAgICBwcm90b2NvbDogJ2h0dHBzOicsXG4gICAgICAgIGhvc3Q6ICdhbnljYXN0LnVuY2Vuc29yZWRkbnMub3JnJ1xuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQWxzbyBrbm93biBhcyBjZW5zdXJmcmlkbnMuXFxuRG9ILCBubyBsb2dzLCBubyBmaWx0ZXIsIEROU1NFQywgYW55Y2FzdCAtIGh0dHBzOi8vYmxvZy51bmNlbnNvcmVkZG5zLm9yZycsXG4gICAgICBjb3VudHJ5OiAnRGVubWFyaycsXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBsYXQ6IDU1LjcxMjMsXG4gICAgICAgIGxvbmc6IDEyLjA1NjRcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd2LmRuc2NyeXB0LnVrLWRvaC1pcHY0JyxcbiAgICAgIGVuZHBvaW50OiB7XG4gICAgICAgIHByb3RvY29sOiAnaHR0cHM6JyxcbiAgICAgICAgaG9zdDogJ3YuZG5zY3J5cHQudWsnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246ICdEb0gsIG5vIGxvZ3MsIHVuY2Vuc29yZWQsIEROU1NFQy4gSG9zdGVkIGluIExvbmRvbiBVSyBvbiBEaWdpdGFsIE9jZWFuXFxuaHR0cHM6Ly93d3cuZG5zY3J5cHQudWsnLFxuICAgICAgY291bnRyeTogJ1VuaXRlZCBLaW5nZG9tJyxcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGxhdDogNTEuNDk2NCxcbiAgICAgICAgbG9uZzogLTAuMTIyNFxuICAgICAgfVxuICAgIH1cbiAgXSxcbiAgdGltZTogMTY1NDE4NzA2Nzc4M1xufVxuIl0sIm5hbWVzIjpbInJlc29sdmVycyIsImRhdGEiLCJuYW1lIiwiZW5kcG9pbnQiLCJwcm90b2NvbCIsImhvc3QiLCJkZXNjcmlwdGlvbiIsImNvdW50cnkiLCJsb2NhdGlvbiIsImxhdCIsImxvbmciLCJmaWx0ZXIiLCJpcHY0IiwiY29ycyIsImxvZyIsInBhdGgiLCJ0aW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/dns-query/resolvers.mjs\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |